feat(报告系统): 添加汇总记录功能

新增汇总记录模型、表单、视图和模板,支持在报告中显示昨日汇总记录
This commit is contained in:
2026-01-24 19:48:40 +08:00
parent 6ef03ee63a
commit ab24c120e1
7 changed files with 248 additions and 1 deletions

View File

@@ -37,14 +37,17 @@ def is_weasyprint_available():
from .models import (
ReadingRecord,
InsightRecord,
Summary,
FamilyTask,
TodayPlan,
SystemConfig,
FamilyMember
FamilyMember,
SummaryCategory
)
from .forms import (
ReadingRecordForm,
InsightRecordForm,
SummaryForm,
FamilyTaskForm,
TodayPlanForm,
SystemConfigForm
@@ -304,6 +307,69 @@ def delete_today_insight(request, pk):
context = {'insight': insight}
return render(request, 'core/delete_insight.html', context)
# 汇总记录视图
def summaries(request):
"""汇总记录"""
logger.info("用户访问汇总记录页面")
today = timezone.now().date()
yesterday = today - timedelta(days=1)
summary_records = Summary.objects.filter(date=yesterday)
context = {
'yesterday': yesterday,
'summary_records': summary_records,
}
return render(request, 'core/summaries.html', context)
# 添加汇总记录
def add_summary(request):
"""添加汇总记录"""
family_members = FamilyMember.objects.all()
categories = SummaryCategory.objects.all()
if request.method == 'POST':
form = SummaryForm(request.POST, request.FILES)
if form.is_valid():
form.save()
logger.info(f"添加汇总记录: {form.cleaned_data['content'][:20]}...")
return redirect('summaries')
else:
form = SummaryForm()
context = {'form': form, 'family_members': family_members, 'categories': categories}
return render(request, 'core/add_summary.html', context)
# 编辑汇总记录
def edit_summary(request, pk):
"""编辑汇总记录"""
summary = get_object_or_404(Summary, pk=pk)
family_members = FamilyMember.objects.all()
categories = SummaryCategory.objects.all()
if request.method == 'POST':
form = SummaryForm(request.POST, request.FILES, instance=summary)
if form.is_valid():
form.save()
logger.info(f"编辑汇总记录: {form.cleaned_data['content'][:20]}...")
return redirect('summaries')
else:
form = SummaryForm(instance=summary)
context = {'form': form, 'summary': summary, 'family_members': family_members, 'categories': categories}
return render(request, 'core/edit_summary.html', context)
# 删除汇总记录
def delete_summary(request, pk):
"""删除汇总记录"""
summary = get_object_or_404(Summary, pk=pk)
if request.method == 'POST':
summary.delete()
logger.info(f"删除汇总记录: {summary.content[:20]}...")
return redirect('summaries')
context = {'summary': summary}
return render(request, 'core/delete_summary.html', context)
# 家庭事项视图
def family_tasks(request):
"""家庭事项"""
@@ -445,6 +511,7 @@ def generate_report(request):
# 获取昨日记录
yesterday_reading = ReadingRecord.objects.filter(date=yesterday)
yesterday_insight = InsightRecord.objects.filter(date=yesterday)
yesterday_summary = Summary.objects.filter(date=yesterday)
# 获取今日计划
today_plan = TodayPlan.objects.filter(date=today)
@@ -478,6 +545,7 @@ def generate_report(request):
'yesterday': yesterday,
'yesterday_reading': yesterday_reading,
'yesterday_insight': yesterday_insight,
'yesterday_summary': yesterday_summary,
'today_plan': today_plan,
'family_task_stats': family_task_stats,
'historical_dates': historical_dates,
@@ -496,6 +564,7 @@ def view_report(request, date):
# 获取指定日期的记录
yesterday_reading = ReadingRecord.objects.filter(date=yesterday)
yesterday_insight = InsightRecord.objects.filter(date=yesterday)
yesterday_summary = Summary.objects.filter(date=yesterday)
today_plan = TodayPlan.objects.filter(date=report_date)
# 获取家庭事项统计
@@ -506,6 +575,7 @@ def view_report(request, date):
'yesterday': yesterday,
'yesterday_reading': yesterday_reading,
'yesterday_insight': yesterday_insight,
'yesterday_summary': yesterday_summary,
'today_plan': today_plan,
'family_task_stats': family_task_stats,
}
@@ -528,6 +598,7 @@ def generate_pdf_report(request, date):
# 获取指定日期的记录
yesterday_reading = ReadingRecord.objects.filter(date=yesterday)
yesterday_insight = InsightRecord.objects.filter(date=yesterday)
yesterday_summary = Summary.objects.filter(date=yesterday)
today_plan = TodayPlan.objects.filter(date=report_date)
# 获取家庭事项统计
@@ -538,6 +609,7 @@ def generate_pdf_report(request, date):
'yesterday': yesterday,
'yesterday_reading': yesterday_reading,
'yesterday_insight': yesterday_insight,
'yesterday_summary': yesterday_summary,
'today_plan': today_plan,
'family_task_stats': family_task_stats,
}
@@ -579,6 +651,7 @@ def preview_pdf_report(request, date):
# 获取指定日期的记录
yesterday_reading = ReadingRecord.objects.filter(date=yesterday)
yesterday_insight = InsightRecord.objects.filter(date=yesterday)
yesterday_summary = Summary.objects.filter(date=yesterday)
today_plan = TodayPlan.objects.filter(date=report_date)
# 获取家庭事项统计
@@ -589,6 +662,7 @@ def preview_pdf_report(request, date):
'yesterday': yesterday,
'yesterday_reading': yesterday_reading,
'yesterday_insight': yesterday_insight,
'yesterday_summary': yesterday_summary,
'today_plan': today_plan,
'family_task_stats': family_task_stats,
}
@@ -641,6 +715,7 @@ def send_email_view(request):
yesterday_reading = ReadingRecord.objects.filter(date=yesterday)
yesterday_insight = InsightRecord.objects.filter(date=yesterday)
yesterday_summary = Summary.objects.filter(date=yesterday)
today_plan = TodayPlan.objects.filter(date=report_date)
family_task_stats = FamilyTask.objects.values('type').annotate(count=Count('id'))
@@ -649,6 +724,7 @@ def send_email_view(request):
'yesterday': yesterday,
'yesterday_reading': yesterday_reading,
'yesterday_insight': yesterday_insight,
'yesterday_summary': yesterday_summary,
'today_plan': today_plan,
'family_task_stats': family_task_stats,
}