d495a2b798
- 待办事项(支持优先级、截止日期) - 每日记录(上午/下午/晚上分条目) - Go后端 + Gin + GORM + MySQL - React前端 + TailwindCSS
109 lines
3.2 KiB
Markdown
109 lines
3.2 KiB
Markdown
# 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 管理进程
|