Files
diary-system/REQUIREMENTS.md

10 KiB
Raw Blame History

日记系统 - 软件需求规格说明书

文档状态:进行中
最后更新2026-04-15
版本v1.0


📋 目录

  1. 项目概述
  2. 功能需求
  3. 非功能需求
  4. 技术架构
  5. 数据模型
  6. 开发计划
  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日记条目

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经验总结

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任务进度

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)

  • 日记 CRUD 功能
  • 经验总结功能
  • 任务管理功能
  • 统计面板
  • 日历组件
  • 云服务器部署
  • 文档完善(功能清单、开发规范)

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