Files
diary-system/REQUIREMENTS.md

322 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 日记系统 - 软件需求规格说明书
_文档状态**进行中**
最后更新2026-04-15
版本v1.0_
---
## 📋 目录
1. [项目概述](#1-项目概述)
2. [功能需求](#2-功能需求)
3. [非功能需求](#3-非功能需求)
4. [技术架构](#4-技术架构)
5. [数据模型](#5-数据模型)
6. [开发计划](#6-开发计划)
7. [变更日志](#7-变更日志)
---
## 1. 项目概述
### 1.1 项目目标
构建一个个人日记系统,用于:
- 记录每日工作、学习和成长
- 追踪任务进度
- 积累经验教训
- 形成个人知识库
### 1.2 目标用户
- **主要用户**码神AI 助手)
- **次要用户**:北极星(人类用户)
### 1.3 核心价值
- **持续性**:每天记录,形成连续性
- **反思性**:定期回顾,提取经验
- **可追溯**:按日期快速查找历史
- **结构化**:分类整理,便于检索
---
## 2. 功能需求
### 2.1 日记管理 ✅
| ID | 需求 | 优先级 | 状态 | 验收标准 |
|----|------|--------|------|----------|
| F-001 | 创建日记条目 | P0 | ✅ 已实现 | 能创建包含日期和内容的日记 |
| F-002 | 编辑日记内容 | P0 | ✅ 已实现 | 能修改已有日记 |
| F-003 | 删除日记 | P1 | ⏳ 待实现 | - |
| F-004 | 查看今日日记 | P0 | ✅ 已实现 | API `/api/entries/today/` 返回今天日记 |
| F-005 | 查看历史日记 | P0 | ✅ 已实现 | API `/api/entries/recent/` 返回最近 7 天 |
| F-006 | **日历视图展示** | P0 | ✅ 已实现 | **详见 2.1.1 日历组件详细需求** |
| F-007 | 日记内容字段 | P0 | ✅ 已实现 | 包含完成任务、学到的东西、问题、反思、进步、计划 |
#### 2.1.1 日历组件详细需求 ⭐ **核心功能,必须测试**
| ID | 功能点 | 详细描述 | 验收方法 |
|----|--------|----------|----------|
| F-006-01 | 月历视图 | 显示完整的月历,包含上月/下月的部分日期 | 页面加载后显示当前月份的日历 |
| F-006-02 | 星期标题 | 日历顶部显示 日、一、二、三、四、五、六 | 第一行显示 7 个星期标题 |
| F-006-03 | 日期高亮 - 今天 | 今天的日期用特殊样式高亮(背景色) | 今天的格子有 `.today` 类 |
| F-006-04 | 日期标记 - 有日记 | 有日记的日期显示 📝 图标 | 调用 API 获取所有日记日期,有日记的格子有 `.has-diary` 类 |
| F-006-05 | 点击日期 | 点击任意日期,下方显示当天的日记详情 | 点击后触发 `selectDate()` 函数,显示日记内容 |
| F-006-06 | 日记详情展示 | 显示选中日期的所有字段(完成任务、学到的东西等) | 详情区域显示完整的日记内容 |
| F-006-07 | 无日记提示 | 点击没有日记的日期,显示"这一天还没有日记" | 显示友好的空状态提示 |
| F-006-08 | 上月切换 | 点击"上月"按钮,显示上个月的日历 | 调用 `prevMonth()`,日历刷新 |
| F-006-09 | 下月切换 | 点击"下月"按钮,显示下个月的日历 | 调用 `nextMonth()`,日历刷新 |
| F-006-10 | 非当月日期 | 上月/下月的日期用灰色显示,不可点击 | 有 `.other-month` 类,样式灰色 |
**⚠️ 此组件为日记系统的核心功能,任何前端修改后必须手动验证以上 10 个功能点!**
### 2.2 经验总结 ✅
| ID | 需求 | 优先级 | 状态 |
|----|------|--------|------|
| F-010 | 创建经验总结 | P0 | ✅ 已实现 |
| F-011 | 经验分类(部署/开发/数据库/权限/网络/其他) | P0 | ✅ 已实现 |
| F-012 | 记录问题描述 | P0 | ✅ 已实现 |
| F-013 | 记录解决方案 | P0 | ✅ 已实现 |
| F-014 | 记录经验教训 | P1 | ✅ 已实现 |
| F-015 | 按类别查看经验 | P1 | ✅ 已实现 |
| F-016 | 经验总结搜索 | P2 | ⏳ 待实现 |
### 2.3 任务管理 ✅
| ID | 需求 | 优先级 | 状态 |
|----|------|--------|------|
| F-020 | 创建任务 | P0 | ✅ 已实现 |
| F-021 | 任务关联到日记 | P0 | ✅ 已实现 |
| F-022 | 任务状态追踪(进行中/已完成) | P0 | ✅ 已实现 |
| F-023 | 任务完成率统计 | P0 | ✅ 已实现 |
| F-024 | 任务优先级 | P2 | ⏳ 待实现 |
### 2.4 统计面板 ✅
| ID | 需求 | 优先级 | 状态 |
|----|------|--------|------|
| F-030 | 总日记数统计 | P0 | ✅ 已实现 |
| F-031 | 总任务数统计 | P0 | ✅ 已实现 |
| F-032 | 进行中任务数 | P0 | ✅ 已实现 |
| F-033 | 已完成任务数 | P0 | ✅ 已实现 |
| F-034 | 任务完成率 | P0 | ✅ 已实现 |
| F-035 | 经验总结数 | P0 | ✅ 已实现 |
### 2.5 搜索与筛选 ⏳
| ID | 需求 | 优先级 | 状态 |
|----|------|--------|------|
| F-040 | 按日期范围筛选日记 | P1 | ⏳ 待实现 |
| F-041 | 按关键词搜索日记内容 | P1 | ⏳ 待实现 |
| F-042 | 按类别筛选经验总结 | P1 | ⏳ 待实现 |
| F-043 | 高级搜索(组合条件) | P2 | ⏳ 待实现 |
### 2.6 数据导出 ⏳
| ID | 需求 | 优先级 | 状态 |
|----|------|--------|------|
| F-050 | 导出日记为 Markdown | P1 | ⏳ 待实现 |
| F-051 | 导出经验总结 | P1 | ⏳ 待实现 |
| F-052 | 全量数据备份 | P0 | ⏳ 待实现 |
| F-053 | 定期自动备份 | P1 | ⏳ 待实现 |
### 2.7 用户认证 ⏳
| ID | 需求 | 优先级 | 状态 |
|----|------|--------|------|
| F-060 | 用户登录 | P2 | ⏳ 待实现 |
| F-061 | 权限控制 | P2 | ⏳ 待实现 |
| F-062 | 多用户支持 | P3 | ⏳ 待实现 |
---
## 3. 非功能需求
### 3.1 性能
| ID | 需求 | 优先级 | 状态 |
|----|------|--------|------|
| N-001 | 页面加载时间 < 2 秒 | P0 | ✅ 已满足 |
| N-002 | API 响应时间 < 500ms | P0 | ✅ 已满足 |
| N-003 | 支持 1000+ 日记条目 | P1 | ✅ 已满足 |
### 3.2 可用性
| ID | 需求 | 优先级 | 状态 |
|----|------|--------|------|
| N-010 | 7x24 小时可用 | P0 | ✅ 已满足 |
| N-011 | 数据持久化 | P0 | ✅ 已满足 |
| N-012 | 支持离线访问 | P2 | ⏳ 待实现 |
### 3.3 安全性
| ID | 需求 | 优先级 | 状态 |
|----|------|--------|------|
| N-020 | 防止 SQL 注入 | P0 | ✅ 已满足 |
| N-021 | 防止 XSS 攻击 | P0 | ✅ 已满足 |
| N-022 | 敏感数据加密 | P1 | ⏳ 待实现 |
### 3.4 可维护性
| ID | 需求 | 优先级 | 状态 |
|----|------|--------|------|
| N-030 | 代码有文档注释 | P0 | ✅ 已满足 |
| N-031 | 有功能清单文档 | P0 | ✅ 已满足 |
| N-032 | 有开发规范文档 | P0 | ✅ 已满足 |
| N-033 | 有 Git 版本控制 | P0 | ✅ 已满足 |
---
## 4. 技术架构
### 4.1 技术栈
| 层级 | 技术 | 版本 | 说明 |
|------|------|------|------|
| 后端 | Django | 4.2+ | Web 框架 |
| API | Django REST Framework | 3.14+ | RESTful API |
| 前端 | 原生 HTML/JS | - | 轻量级实现 |
| 数据库 (本地) | PostgreSQL | 14+ | 内网数据库 |
| 数据库 (云) | SQLite | 3.x | 本地文件 |
| Web 服务器 | Nginx | 1.24+ | 反向代理 |
| 应用服务器 | Gunicorn | 25.x | WSGI 服务器 |
### 4.2 部署架构
```
用户 → Nginx(8001) → Gunicorn(8002) → Django → 数据库
```
### 4.3 目录结构
```
diary-system/
├── backend/ # Django 后端
│ ├── diary/ # 日记应用
│ │ ├── models.py # 数据模型
│ │ ├── views.py # API 视图
│ │ ├── serializers.py
│ │ └── urls.py
│ ├── diary_system/ # 项目配置
│ └── manage.py
├── frontend/ # 前端页面
│ └── index.html
├── FEATURES.md # 功能清单
├── DEV_GUIDE.md # 开发规范
├── REQUIREMENTS.md # 本文档
└── README.md
```
---
## 5. 数据模型
### 5.1 DiaryEntry日记条目
```python
class DiaryEntry(models.Model):
date = DateField(unique=True) # 日期
title = CharField(max_length=200) # 标题
completed_tasks = TextField() # 完成的任务
learned = TextField() # 学到的东西
problems = TextField() # 遇到的问题
reflections = TextField() # 想法和反思
improvements = TextField() # 进步点
plans = TextField() # 明日计划
created_at = DateTimeField() # 创建时间
updated_at = DateTimeField() # 更新时间
```
### 5.2 Experience经验总结
```python
class Experience(models.Model):
title = CharField(max_length=200) # 标题
category = CharField(choices=CATEGORY_CHOICES) # 类别
problem = TextField() # 问题描述
solution = TextField() # 解决方案
lesson_learned = TextField() # 经验教训
date = DateField() # 日期
created_at = DateTimeField() # 创建时间
```
### 5.3 DailyProgress任务进度
```python
class DailyProgress(models.Model):
entry = ForeignKey(DiaryEntry) # 关联日记
category = CharField(max_length=50) # 类别
description = TextField() # 描述
progress_percent = IntegerField() # 进度百分比
created_at = DateTimeField() # 创建时间
```
---
## 6. 开发计划
### 6.1 已完成 (v1.0) ✅
- [x] 日记 CRUD 功能
- [x] 经验总结功能
- [x] 任务管理功能
- [x] 统计面板
- [x] 日历组件
- [x] 云服务器部署
- [x] 文档完善(功能清单、开发规范)
### 6.2 进行中 (v1.1) 🚧
- [ ] 搜索功能
- [ ] 数据导出
- [ ] 自动备份
### 6.3 计划中 (v2.0) 📅
- [ ] 用户认证
- [ ] 多用户支持
- [ ] 数据可视化(图表)
- [ ] 移动端优化
### 6.4 未来规划 (v3.0) 🔮
- [ ] AI 辅助写日记
- [ ] 智能标签
- [ ] 情感分析
- [ ] 年度报告生成
---
## 7. 变更日志
### v1.0 (2026-04-15)
- ✅ 初始版本发布
- ✅ 日记管理功能
- ✅ 经验总结功能
- ✅ 任务管理功能
- ✅ 日历组件
- ✅ 统计面板
- ✅ 云服务器部署
### v0.2 (2026-04-14)
- ✅ 添加经验总结模块
- ✅ 添加分类管理
- ✅ 前端展示优化
### v0.1 (2026-04-14)
- ✅ 项目初始化
- ✅ 基础日记功能
- ✅ Django 后端搭建
---
## 📝 需求变更流程
1. **提出需求** - 在 GitHub Issues 或对话中提出
2. **评估优先级** - 确定 P0/P1/P2/P3
3. **更新文档** - 修改本需求文档
4. **开发实现** - 按开发规范执行
5. **测试验证** - 验证功能正常
6. **更新状态** - 标记为"已实现"
---
_本文档由码神维护,每次需求变更后必须更新并提交 git_