# 家庭日报系统设计与实现(Django 5.1.4) ## 系统概述 一个轻量化的家庭日报系统,用于自动汇总昨日信息(阅读、收获),生成今日计划,注重生活化、个性化和低门槛使用。支持上传文件或视频作为附加内容,并可生成PDF报告定时发送至邮箱。 ## 技术栈 - **Python 3.9+**:核心开发语言 - **Django 5.1.4**:Web框架 - **SQLite**:轻量化数据库 - **loguru**:日志记录 - **Bootstrap 5**:前端样式 - **Chart.js**:数据可视化 - **WeasyPrint**:PDF生成 - **Celery**:定时任务 - **Redis**:消息队列(用于Celery) - **django-celery-beat**:定时任务管理 ## 项目结构 ``` diary-family/ ├── diary_family/ # Django项目目录 │ ├── settings.py # 项目配置 │ ├── urls.py # 路由配置 │ └── wsgi.py # WSGI配置 ├── core/ # 核心应用 │ ├── migrations/ # 数据库迁移 │ ├── models.py # 数据模型 │ ├── views.py # 视图函数 │ ├── forms.py # 表单定义 │ ├── templates/ # 模板文件 │ ├── static/ # 静态文件 │ ├── tasks.py # Celery任务 │ └── apps.py # 应用配置 ├── media/ # 媒体文件存储 ├── logs/ # 日志目录 ├── reports/ # PDF报告存储 ├── manage.py # Django管理脚本 └── requirements.txt # 依赖文件 ``` ## 核心功能模块 ### 1. 数据模型设计 #### 1.1 阅读记录表 (ReadingRecord) - 日期、类型(书籍/文章/视频)、标题、来源、进度、上传文件 #### 1.2 感悟记录表 (InsightRecord) - 日期、内容、上传文件 #### 1.3 家庭事项表 (FamilyTask) - 类型(采购/家务)、内容、优先级、状态、截止日期 #### 1.4 今日计划表 (TodayPlan) - 日期、内容、优先级、类型、状态 #### 1.5 系统配置表 (SystemConfig) - 邮箱设置(SMTP服务器、端口、用户名、密码) - 报告发送时间 - 收件人邮箱 ### 2. 核心功能 #### 2.1 昨日记录 - 阅读记录(支持多类型) - 感悟记录 - 支持文件/视频上传 #### 2.2 家庭事项管理 - 事项添加、编辑、删除 - 按类型、状态筛选 #### 2.3 今日计划生成 - 基于昨日状态和待处理事项自动生成 - 支持手动调整 - 完成状态标记 #### 2.4 报告生成 - 整合昨日阅读、感悟和今日计划 - 可视化统计 - 支持生成PDF格式 - 支持查看历史报告 #### 2.5 定时邮件发送 - 配置每日发送时间 - 自动生成并发送PDF报告到指定邮箱 - 支持手动触发发送 ### 3. 文件上传功能 - 支持上传图片、文档、视频等多种格式 - 自动生成访问链接 - 支持预览和下载 ## 实现步骤 ### 1. 项目初始化 - 创建Django项目 - 创建核心应用 - 配置数据库和媒体文件路径 - 安装依赖包 ### 2. 数据模型实现 - 定义模型类 - 生成并执行数据库迁移 - 创建超级用户 ### 3. 功能实现 - 实现昨日记录表单和视图 - 实现家庭事项管理功能 - 实现今日计划生成和管理 - 实现报告生成功能 - 实现PDF报告生成 - 实现文件上传功能 - 配置Celery和定时任务 - 实现邮件发送功能 ### 4. 模板设计 - 基础模板(导航栏、页脚) - 昨日记录页面 - 家庭事项页面 - 今日计划页面 - 报告页面 - 系统配置页面 - PDF报告模板 ### 5. 日志配置 - 使用loguru配置日志 - 记录关键操作和错误信息 ## 运行方式 1. **安装依赖**: ```bash pip install -r requirements.txt ``` 2. **启动Redis服务**: ```bash redis-server ``` 3. **数据库迁移**: ```bash python manage.py migrate ``` 4. **启动Django开发服务器**: ```bash python manage.py runserver ``` 5. **启动Celery worker**: ```bash celery -A diary_family worker --loglevel=info ``` 6. **启动Celery beat**: ```bash celery -A diary_family beat --loglevel=info ``` 7. **访问系统**: - 浏览器打开 http://localhost:8000 - 支持移动端访问 ## 系统特点 - **轻量化**:使用SQLite,部署简单 - **低门槛**:界面简洁,易于使用 - **生活化**:专注家庭场景 - **个性化**:支持自定义记录和计划 - **文件支持**:支持上传多种格式文件 - **可视化**:提供数据统计图表 - **响应式**:适配移动端和桌面端 - **PDF报告**:支持生成PDF格式报告 - **定时邮件**:自动发送报告到指定邮箱 ## 预期效果 用户可以通过手机或电脑轻松完成: 1. 记录昨日阅读内容和感悟,可上传相关文件 2. 管理家庭事项 3. 生成并查看今日计划 4. 查看自动生成的可视化报告,支持PDF下载 5. 配置系统参数,设置邮件发送 6. 每日自动收到包含PDF报告的邮件 系统设计简洁易用,适合家庭日常使用,注重生活化和个性化体验。