# LifeLog 项目设计文档 ## 1. 项目概述 - **项目名**:LifeLog - **定位**:个人日志与待办管理工具 - **核心功能**: 1. 待办事项管理(增删改查,完成标记) 2. 每日三时段记录(上午/下午/晚上) - **目标用户**:个人使用,简约高效 ## 2. 技术栈 | 层 | 技术 | |----|------| | 后端 | Go + Gin 框架 | | 前端 | React + Vite + TailwindCSS | | 数据库 | MySQL (`rhett_claw`) | | 部署 | 独立项目,端口 17010 | ## 3. 数据库设计 ### 表:todos(待办事项) | 字段 | 类型 | 说明 | |------|------|------| | id | BIGINT UNSIGNED AUTO_INCREMENT | 主键 | | title | VARCHAR(255) NOT NULL | 事项标题 | | done | TINYINT(1) NOT NULL DEFAULT 0 | 是否完成(0否 1是) | | priority | TINYINT(1) NOT NULL DEFAULT 2 | 优先级(1高 2中 3低) | | created_at | DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP | 创建时间 | | updated_at | DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 | ### 表:daily_logs(每日记录) | 字段 | 类型 | 说明 | |------|------|------| | id | BIGINT UNSIGNED AUTO_INCREMENT | 主键 | | date | DATE NOT NULL UNIQUE | 日期(格式:2024-07-24) | | morning | TEXT | 上午记录 | | afternoon | TEXT | 下午记录 | | evening | TEXT | 晚上记录 | | created_at | DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP | 创建时间 | | updated_at | DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 | ## 4. API 设计 ### 待办事项(/api/todos) | 方法 | 路径 | 说明 | |------|------|------| | GET | /api/todos | 获取所有待办 | | POST | /api/todos | 新增待办 | | PUT | /api/todos/:id | 更新待办 | | PATCH | /api/todos/:id/done | 标记完成/未完成 | | DELETE | /api/todos/:id | 删除待办 | ### 每日记录(/api/logs) | 方法 | 路径 | 说明 | |------|------|------| | GET | /api/logs/:date | 获取某日记录(date格式:2024-07-24) | | GET | /api/logs | 获取最近N条记录 | | PUT | /api/logs/:date | 创建或更新某日记录 | ## 5. 前端页面 ### 页面一:待办事项(/) - 顶部:标题 + 添加按钮 - 中部:待办列表(显示优先级、完成状态、标题) - 支持:勾选完成、删除、筛选 ### 页面二:每日记录(/logs) - 日期选择器(顶部) - 三个文本区域:上午 / 下午 / 晚上 - 自动保存(输入后延迟保存) ## 6. 项目结构 ``` /var/www/lifelog/ ├── cmd/ │ └── server/ │ └── main.go # 入口 ├── internal/ │ ├── handler/ # HTTP handlers │ ├── model/ # 数据模型 │ ├── repository/ # 数据库操作 │ └── service/ # 业务逻辑 ├── web/ # 前端 React │ ├── src/ │ │ ├── components/ │ │ ├── pages/ │ │ └── App.tsx │ ├── index.html │ └── vite.config.ts ├── docs/ │ └── plans/ ├── go.mod ├── go.sum └── Makefile ``` ## 7. 部署 - 后端端口:**17010** - 数据库:使用已有的 `rhett_claw`(MySQL) - PM2 管理进程