一个家庭日报系统
This commit is contained in:
197
.trae/documents/家庭日报系统设计与实现.md
Normal file
197
.trae/documents/家庭日报系统设计与实现.md
Normal file
@@ -0,0 +1,197 @@
|
||||
# 家庭日报系统设计与实现(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报告的邮件
|
||||
|
||||
系统设计简洁易用,适合家庭日常使用,注重生活化和个性化体验。
|
||||
Reference in New Issue
Block a user