Files
diary-system/REQUIREMENTS.md

305 lines
8.6 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 | ✅ 已实现 |
| F-005 | 查看历史日记 | P0 | ✅ 已实现 |
| F-006 | 日历视图展示 | P0 | ✅ 已实现 |
| F-007 | 日记内容包含:完成任务、学到的东西、问题、反思、进步、计划 | P0 | ✅ 已实现 |
### 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_