- 新增「简记memo」一体化小程序产品原型设计文档 - 新增简记memo完整版UI视觉设计规范和界面细节 - 添加IDEA项目配置文件.gitignore - 创建404页面HTML文件,包含响应式布局和错误提示 - 添加关于页面HTML文件,展示品牌介绍和团队信息 - 实现AES加解密工具函数,支持请求体加密 - 添加用户协议页面基础框架
1110 lines
44 KiB
Markdown
1110 lines
44 KiB
Markdown
# 简记 Memo - 项目重构规划文档
|
||
|
||
> 本文档面向前后端开发人员,统一规划「复盘、心情、待办、账单」四大核心模块的业务功能、接口定义与 UI 设计规范。
|
||
> 版本:v2.0
|
||
> 日期:2026-07-28
|
||
|
||
---
|
||
|
||
## 一、项目概述与现状分析
|
||
|
||
### 1.1 产品定位
|
||
「简记 Memo」是一款轻量级个人生活记录小程序,聚焦每日四大维度:**待办事项、账单收支、心情记录、每日复盘**。通过 AI 智能识别降低记录门槛,结合成长激励体系提升用户粘性。
|
||
|
||
### 1.2 现有架构问题
|
||
|
||
| 问题类别 | 具体表现 | 影响 |
|
||
|---------|---------|------|
|
||
| **数据层** | 复盘模块仅使用本地 `uni.setStorageSync`,未接入后端 | 数据无法跨设备同步,易丢失 |
|
||
| **接口层** | 首页需并发调用 3+ 接口获取当日数据 | 加载慢、代码冗余 |
|
||
| **UI 层** | 四个核心页面头部、卡片、按钮、弹窗样式均不统一 | 体验割裂,维护成本高 |
|
||
| **交互层** | 日历组件在首页/复盘/待办中重复实现 | 代码冗余,行为不一致 |
|
||
| **交互层** | 列表滑动操作在待办和账单中实现方式不同 | 用户学习成本高 |
|
||
|
||
### 1.3 重构目标
|
||
1. **数据统一**:复盘模块全面接入后端,四模块数据全部云端同步
|
||
2. **接口聚合**:提供首页聚合接口,减少请求次数
|
||
3. **UI 统一**:制定设计规范,四模块页面风格、布局、交互高度一致
|
||
4. **组件复用**:抽取公共组件(日历、列表项、筛选器、模态框、空状态)
|
||
5. **操作丝滑**:统一动画曲线、过渡时长、触摸反馈
|
||
|
||
---
|
||
|
||
## 二、四大模块业务功能定义
|
||
|
||
### 2.1 模块总览
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────────────┐
|
||
│ 首页 (Dashboard) │
|
||
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
|
||
│ │ 待办 │ │ 账单 │ │ 心情 │ │ 复盘 │ 快捷入口 │
|
||
│ │ 3/5 │ │ +120 │ │ 😊 │ │ 已记录 │ │
|
||
│ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │
|
||
│ ───────────────────────────────────────────────────────── │
|
||
│ AI 智能输入框:"开会花了50块,下午要写周报,心情不错" │
|
||
│ ───────────────────────────────────────────────────────── │
|
||
│ 今日概览:完成进度环 + 最近待办 + 最近账单 │
|
||
└─────────────────────────────────────────────────────────────┘
|
||
│
|
||
┌─────────┬─────────┼─────────┬─────────┐
|
||
▼ ▼ ▼ ▼ ▼
|
||
┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐
|
||
│ 待办 │ │ 心情 │ │ 账单 │ │ 复盘 │ │ 我的 │
|
||
│ 列表 │ │ 记录 │ │ 明细 │ │ 编辑 │ │ 中心 │
|
||
└──────┘ └──────┘ └──────┘ └──────┘ └──────┘
|
||
```
|
||
|
||
### 2.2 待办模块(Todo)
|
||
|
||
**核心功能**:
|
||
- 按日期创建、编辑、删除待办事项
|
||
- 支持优先级(高/中/低)、分类(工作/生活/学习)、时间段设置
|
||
- 支持批量选择与批量操作(完成/删除)
|
||
- 按时间范围筛选(今日/本周/本月/自定义)
|
||
- 按状态筛选(全部/待办/已完成)
|
||
- 日历视图展示任务分布(有无任务、完成状态标记)
|
||
- 关键词搜索
|
||
|
||
**新增功能规划**:
|
||
- 待办重复规则(每日/每周/每月重复)
|
||
- 待办提醒推送(依赖服务端定时任务)
|
||
|
||
### 2.3 心情模块(Mood)
|
||
|
||
**核心功能**:
|
||
- 每日选择心情 emoji(20 种表情)
|
||
- 文字记录当日心情与感悟(200 字以内)
|
||
- AI 心语小笺:根据心情生成治愈文案并生成分享卡片
|
||
- 心情日历:按月查看心情分布(已有 `moodCalendar` 页面)
|
||
|
||
**新增功能规划**:
|
||
- 心情周报/月报统计(情绪趋势曲线 + 高频心情标签)
|
||
- 心情标签词云
|
||
|
||
### 2.4 账单模块(Bill)
|
||
|
||
**核心功能**:
|
||
- 记录支出/收入账单(金额、分类、渠道、备注、日期)
|
||
- 分类管理(预设 23 个分类 + 自定义分类)
|
||
- 月度预算设置与进度追踪
|
||
- 多维度筛选(时间:今日/本周/本月/上月/本年/自定义;类型:全部/支出/收入)
|
||
- 分类统计(支出/收入占比、横向滚动卡片)
|
||
- 账单导出
|
||
|
||
**新增功能规划**:
|
||
- 年度收支趋势图
|
||
- 自定义分类支持图标与颜色完整自定义
|
||
|
||
### 2.5 复盘模块(Review)
|
||
|
||
**核心功能**:
|
||
- 按日期进行每日复盘
|
||
- 采用 **KPT 复盘法**:Keep(保持)、Problem(问题)、Try(尝试)
|
||
- 复盘历史列表查看
|
||
- 复盘内容搜索
|
||
|
||
> **设计决策**:仅保留 KPT 一种复盘方法。理由:KPT 更简洁实用,3 个维度覆盖日常复盘需求,填写门槛低,适合小程序场景。GRAI 法(4 维度)更适合企业级项目复盘,个人日记场景偏重。
|
||
|
||
**重要改造点**:
|
||
- 当前复盘数据仅保存在本地 Storage,**已全面接入后端接口**
|
||
- 新增复盘历史列表页
|
||
- API 响应兼容嵌套格式 `{kpt: {keep, problem, try}}` 和扁平格式 `{keep, problem, try}`
|
||
|
||
---
|
||
|
||
## 三、接口文档
|
||
|
||
### 3.1 接口设计原则
|
||
1. 统一请求方式:`POST`
|
||
2. 统一响应格式:
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"message": "success",
|
||
"data": { ... }
|
||
}
|
||
```
|
||
3. 日期格式:`YYYY-MM-DD`
|
||
4. 月份格式:`YYYY-MM`
|
||
|
||
### 3.2 现有接口保留清单
|
||
|
||
以下接口已稳定运行,本次规划**完全保留**,仅做部分参数优化建议:
|
||
|
||
#### 用户模块
|
||
| 接口 | 路径 | 说明 |
|
||
|-----|------|------|
|
||
| 微信登录 | `POST /user/login` | 保留 |
|
||
| 获取用户信息 | `POST /user/info` | 保留 |
|
||
| 更新用户信息 | `POST /user/edit` | 保留 |
|
||
| 退出登录 | `POST /user/logout` | 保留 |
|
||
| 获取用户配置 | `POST /user/config/info` | 保留 |
|
||
| 编辑用户配置 | `POST /user/config/edit` | 保留 |
|
||
| 获取头像列表 | `POST /user/avatar/list` | 保留 |
|
||
|
||
#### 待办模块
|
||
| 接口 | 路径 | 说明 |
|
||
|-----|------|------|
|
||
| 添加待办 | `POST /todo/add` | 保留 |
|
||
| 获取待办列表 | `POST /todo/list` | 保留,建议支持 `start_date` + `end_date` 范围查询 |
|
||
| 删除待办 | `POST /todo/delete` | 保留 |
|
||
| 完成/取消完成 | `POST /todo/done` | 保留 |
|
||
| 编辑待办 | `POST /todo/edit` | 保留 |
|
||
|
||
#### 账单模块
|
||
| 接口 | 路径 | 说明 |
|
||
|-----|------|------|
|
||
| 添加账单 | `POST /bill/add` | 保留 |
|
||
| 编辑账单 | `POST /bill/edit` | 保留 |
|
||
| 获取账单列表 | `POST /bill/list` | 保留,建议支持 `start_time` + `end_time` |
|
||
| 删除账单 | `POST /bill/delete` | 保留 |
|
||
| 获取月度统计 | `POST /bill/stat/month` | 保留 |
|
||
| 获取分类统计 | `POST /bill/stat/category` | 保留 |
|
||
| 导出账单 | `POST /bill/export` | 保留 |
|
||
|
||
#### 预算模块
|
||
| 接口 | 路径 | 说明 |
|
||
|-----|------|------|
|
||
| 获取月度预算 | `POST /budget/get` | 保留 |
|
||
| 设置月度预算 | `POST /budget/set` | 保留 |
|
||
| 删除月度预算 | `POST /budget/delete` | 保留 |
|
||
|
||
#### 分类管理模块
|
||
| 接口 | 路径 | 说明 |
|
||
|-----|------|------|
|
||
| 获取自定义分类 | `POST /category/list` | 保留 |
|
||
| 添加自定义分类 | `POST /category/add` | 保留 |
|
||
| 删除自定义分类 | `POST /category/delete` | 保留 |
|
||
|
||
#### 心情模块
|
||
| 接口 | 路径 | 说明 |
|
||
|-----|------|------|
|
||
| 获取某天心情 | `POST /mood/get` | 保留 |
|
||
| 保存心情 | `POST /mood/save` | 保留 |
|
||
| 获取心情列表 | `POST /mood/list` | 保留 |
|
||
| 删除心情 | `POST /mood/delete` | 保留 |
|
||
| 获取 AI 心情结果 | `POST /ai/mood/result` | 保留 |
|
||
| 重新生成 AI 心情 | `POST /ai/mood/regenerate` | 保留 |
|
||
|
||
#### 成长系统模块
|
||
| 接口 | 路径 | 说明 |
|
||
|-----|------|------|
|
||
| 获取成长信息 | `POST /growth/info` | 保留 |
|
||
| 获取成就列表 | `POST /growth/achievements` | 保留 |
|
||
| 获取成长规则 | `POST /growth/rules` | 保留 |
|
||
|
||
#### AI 模块
|
||
| 接口 | 路径 | 说明 |
|
||
|-----|------|------|
|
||
| AI 智能分类 | `POST /ai/classify` | 保留 |
|
||
|
||
#### 邮箱/安全模块
|
||
| 接口 | 路径 | 说明 |
|
||
|-----|------|------|
|
||
| 获取图形验证码 | `POST /captcha/digit` | 保留 |
|
||
| 发送邮箱验证码 | `POST /user/email/code` | 保留 |
|
||
| 设置/修改邮箱 | `POST /user/email/set` | 保留 |
|
||
| 邮箱登录 | `POST /user/email/login` | 保留 |
|
||
| 注册 | `POST /user/register` | 保留 |
|
||
| 重置密码 | `POST /user/reset-password` | 保留 |
|
||
| 修改密码 | `POST /user/change-password` | 保留 |
|
||
| 检查邮箱存在 | `POST /user/email/exists` | 保留 |
|
||
| 绑定微信 | `POST /user/bind-wechat` | 保留 |
|
||
| 检查微信绑定 | `POST /user/check-wechat` | 保留 |
|
||
|
||
---
|
||
|
||
### 3.3 复盘模块接口(已全面接入后端)
|
||
|
||
复盘模块已从本地 `uni.setStorageSync` 迁移至后端接口。前端同时兼容嵌套格式和扁平格式的响应数据。
|
||
|
||
#### 3.3.1 保存复盘
|
||
```http
|
||
POST /review/save
|
||
```
|
||
**请求参数**:
|
||
| 字段 | 类型 | 必填 | 说明 |
|
||
|-----|------|------|------|
|
||
| date | string | 是 | 日期 YYYY-MM-DD |
|
||
| method | string | 是 | 复盘方法:固定为 `kpt` |
|
||
| kpt | object | 是 | KPT 数据 |
|
||
| kpt.keep | string | 否 | 保持 |
|
||
| kpt.problem | string | 否 | 问题 |
|
||
| kpt.try | string | 否 | 尝试 |
|
||
|
||
> 注:GRAI 法已移除,method 固定传 `kpt`。后端保留 `grai` 字段兼容历史数据。
|
||
|
||
**响应数据**:
|
||
```json
|
||
{
|
||
"id": "review_123",
|
||
"date": "2026-07-28",
|
||
"method": "kpt",
|
||
"kpt": {
|
||
"keep": "今天按时完成了所有待办",
|
||
"problem": "下午注意力不集中",
|
||
"try": "明天尝试番茄工作法"
|
||
},
|
||
"created_at": "2026-07-28T22:00:00Z",
|
||
"updated_at": "2026-07-28T22:00:00Z"
|
||
}
|
||
```
|
||
|
||
> **兼容说明**:前端同时支持后端返回嵌套格式 `{kpt: {keep, problem, try}}` 和扁平格式 `{keep, problem, try}`,确保接口对接顺畅。
|
||
|
||
#### 3.3.2 获取单日复盘
|
||
```http
|
||
POST /review/get
|
||
```
|
||
**请求参数**:
|
||
| 字段 | 类型 | 必填 | 说明 |
|
||
|-----|------|------|------|
|
||
| date | string | 是 | 日期 YYYY-MM-DD |
|
||
|
||
**响应数据**:同保存复盘响应,无数据时返回 `null`
|
||
|
||
#### 3.3.3 获取复盘列表
|
||
```http
|
||
POST /review/list
|
||
```
|
||
**请求参数**:
|
||
| 字段 | 类型 | 必填 | 说明 |
|
||
|-----|------|------|------|
|
||
| startDate | string | 否 | 开始日期 YYYY-MM-DD |
|
||
| endDate | string | 否 | 结束日期 YYYY-MM-DD |
|
||
| method | string | 否 | 筛选方法:`kpt`(历史可能含 `grai` 数据) |
|
||
| keyword | string | 否 | 搜索关键词(搜索 keep/problem/try/goal 等字段) |
|
||
| page | number | 否 | 页码,默认 1 |
|
||
| pageSize | number | 否 | 每页条数,默认 20 |
|
||
|
||
**响应数据**:
|
||
```json
|
||
{
|
||
"list": [
|
||
{
|
||
"id": "review_123",
|
||
"date": "2026-07-28",
|
||
"method": "kpt",
|
||
"summary": "今天按时完成了所有待办...",
|
||
"created_at": "2026-07-28T22:00:00Z"
|
||
}
|
||
],
|
||
"total": 100,
|
||
"page": 1,
|
||
"pageSize": 20
|
||
}
|
||
```
|
||
|
||
#### 3.3.4 删除复盘
|
||
```http
|
||
POST /review/delete
|
||
```
|
||
**请求参数**:
|
||
| 字段 | 类型 | 必填 | 说明 |
|
||
|-----|------|------|------|
|
||
| id | string | 是 | 复盘 ID |
|
||
|
||
---
|
||
|
||
### 3.4 新增接口
|
||
|
||
#### 3.4.1 首页聚合数据接口(推荐优先实现)
|
||
|
||
**目的**:替代首页并发请求 `getTodoList` + `getBillList` + `getMoodByDate`,一接口返回当日全部概况。
|
||
|
||
```http
|
||
POST /dashboard/daily
|
||
```
|
||
|
||
**请求参数**:
|
||
| 字段 | 类型 | 必填 | 说明 |
|
||
|-----|------|------|------|
|
||
| date | string | 是 | 日期 YYYY-MM-DD,不传默认今天 |
|
||
|
||
**响应数据**:
|
||
```json
|
||
{
|
||
"date": "2026-07-28",
|
||
"todo": {
|
||
"total": 5,
|
||
"done": 3,
|
||
"undone": 2,
|
||
"list": [
|
||
{ "id": "1", "title": "写周报", "done": 0, "priority": 1, "category": "work" }
|
||
]
|
||
},
|
||
"bill": {
|
||
"expend": 128.5,
|
||
"income": 0,
|
||
"balance": -128.5,
|
||
"list": [
|
||
{ "id": "1", "type": 1, "money": 28.5, "cate": "food", "note": "午餐" }
|
||
]
|
||
},
|
||
"mood": {
|
||
"recorded": true,
|
||
"emoji": "😊",
|
||
"content": "今天心情不错,工作顺利",
|
||
"ai_generated": true,
|
||
"ai_text": "阳光正好,微风不燥..."
|
||
},
|
||
"review": {
|
||
"recorded": true,
|
||
"method": "kpt"
|
||
},
|
||
"growth": {
|
||
"todayExp": 45,
|
||
"maxDailyExp": 120,
|
||
"streakDays": 7
|
||
}
|
||
}
|
||
```
|
||
|
||
#### 3.4.2 待办统计接口
|
||
|
||
```http
|
||
POST /todo/stat
|
||
```
|
||
|
||
**请求参数**:
|
||
| 字段 | 类型 | 必填 | 说明 |
|
||
|-----|------|------|------|
|
||
| start_date | string | 是 | 开始日期 |
|
||
| end_date | string | 是 | 结束日期 |
|
||
|
||
**响应数据**:
|
||
```json
|
||
{
|
||
"total": 50,
|
||
"done": 42,
|
||
"undone": 8,
|
||
"completion_rate": 84.0,
|
||
"by_category": {
|
||
"work": { "total": 20, "done": 18 },
|
||
"life": { "total": 20, "done": 16 },
|
||
"study": { "total": 10, "done": 8 }
|
||
},
|
||
"by_priority": {
|
||
"1": { "total": 10, "done": 9 },
|
||
"2": { "total": 25, "done": 21 },
|
||
"3": { "total": 15, "done": 12 }
|
||
}
|
||
}
|
||
```
|
||
|
||
#### 3.4.3 心情统计接口
|
||
|
||
```http
|
||
POST /mood/stat
|
||
```
|
||
|
||
**请求参数**:
|
||
| 字段 | 类型 | 必填 | 说明 |
|
||
|-----|------|------|------|
|
||
| month | string | 是 | 月份 YYYY-MM |
|
||
|
||
**响应数据**:
|
||
```json
|
||
{
|
||
"month": "2026-07",
|
||
"total_days": 28,
|
||
"recorded_days": 25,
|
||
"mood_distribution": {
|
||
"😊": 10,
|
||
"😌": 8,
|
||
"😔": 4,
|
||
"😤": 2,
|
||
"😴": 1
|
||
},
|
||
"weekly_trend": [
|
||
{ "week": "W1", "avg_score": 4.2 },
|
||
{ "week": "W2", "avg_score": 3.8 },
|
||
{ "week": "W3", "avg_score": 4.5 },
|
||
{ "week": "W4", "avg_score": 4.0 }
|
||
],
|
||
"top_phrases": ["开心", "平静", "工作顺利"]
|
||
}
|
||
```
|
||
|
||
#### 3.4.4 账单聚合统计接口(整合现有接口)
|
||
|
||
**目的**:将 `getMonthStat` + `getCateStat` 整合为一个更灵活的统计接口。
|
||
|
||
```http
|
||
POST /bill/stat/aggregate
|
||
```
|
||
|
||
**请求参数**:
|
||
| 字段 | 类型 | 必填 | 说明 |
|
||
|-----|------|------|------|
|
||
| start_date | string | 是 | 开始日期 |
|
||
| end_date | string | 是 | 结束日期 |
|
||
| type | number | 否 | 类型筛选 1-支出 2-收入,不传则全部 |
|
||
|
||
**响应数据**:
|
||
```json
|
||
{
|
||
"total_expend": 3250.5,
|
||
"total_income": 8000.0,
|
||
"balance": 4749.5,
|
||
"budget": {
|
||
"amount": 5000,
|
||
"used": 3250.5,
|
||
"remaining": 1749.5,
|
||
"progress": 65.0
|
||
},
|
||
"by_category": [
|
||
{
|
||
"cate": "food",
|
||
"label": "餐饮",
|
||
"icon": "🍚",
|
||
"color": "#ff6b6b",
|
||
"expend": 1200,
|
||
"income": 0,
|
||
"expend_rate": 36.9,
|
||
"income_rate": 0
|
||
}
|
||
],
|
||
"by_channel": [
|
||
{ "channel": "wechat", "label": "微信", "amount": 2000 }
|
||
],
|
||
"daily_trend": [
|
||
{ "date": "2026-07-01", "expend": 100, "income": 0 },
|
||
{ "date": "2026-07-02", "expend": 50, "income": 8000 }
|
||
]
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 3.5 接口整合与废弃建议
|
||
|
||
| 现有接口 | 建议 | 说明 |
|
||
|---------|------|------|
|
||
| `POST /bill/stat/month` | **保留但标记为兼容** | 建议前端逐步迁移到 `/bill/stat/aggregate` |
|
||
| `POST /bill/stat/category` | **保留但标记为兼容** | 同上 |
|
||
| `POST /review/save` | **修复接入** | 后端需确保接口可用,前端需替换本地存储逻辑 |
|
||
| `POST /review/get` | **修复接入** | 同上 |
|
||
| `POST /review/list` | **修复接入** | 同上,前端需新增复盘列表页 |
|
||
| `POST /review/delete` | **修复接入** | 同上 |
|
||
|
||
---
|
||
|
||
## 四、统一 UI 设计规范
|
||
|
||
### 4.1 设计原则
|
||
|
||
1. **温暖自然**:沿用现有暖陶/抹茶/暮蓝等主题色系,保持低饱和度、手作感
|
||
2. **统一间距**:建立 4rpx 基栅格,所有间距为 4 的倍数
|
||
3. **统一圆角**:卡片 20rpx,按钮 14rpx,标签 12rpx,头像/图标 16rpx
|
||
4. **统一阴影**:仅卡片使用阴影 `0 8rpx 24rpx ${shadowLight}`,避免过度层级
|
||
5. **操作反馈**:所有可点击元素添加 `:active` 态,缩放 0.96-0.98,过渡 0.2s
|
||
|
||
### 4.2 页面布局骨架(四模块统一)
|
||
|
||
所有核心模块页面采用统一的 **三段式布局**:
|
||
|
||
```
|
||
┌─────────────────────────────────────┐
|
||
│ Page Header (固定高度 ~120rpx) │
|
||
│ ┌──────┬──────────────┬────────┐ │
|
||
│ │ 返回 │ 标题+日期 │ 操作Btn │ │
|
||
│ └──────┴──────────────┴────────┘ │
|
||
├─────────────────────────────────────┤
|
||
│ Filter Bar (可选,固定或吸顶) │
|
||
│ [全部][今日][本周][本月] ... │
|
||
├─────────────────────────────────────┤
|
||
│ │
|
||
│ Main Content (scroll-view) │
|
||
│ ┌─────────────────────────────┐ │
|
||
│ │ Stat Cards 统计卡片 │ │
|
||
│ └─────────────────────────────┘ │
|
||
│ ┌─────────────────────────────┐ │
|
||
│ │ Content List / Form │ │
|
||
│ └─────────────────────────────┘ │
|
||
│ │
|
||
├─────────────────────────────────────┤
|
||
│ Footer Action (固定底部) │
|
||
│ ┌─────────────────────────────┐ │
|
||
│ │ [ 保存 / 添加 / 提交 ] │ │
|
||
│ └─────────────────────────────┘ │
|
||
└─────────────────────────────────────┘
|
||
```
|
||
|
||
### 4.3 色彩规范(基于现有主题系统)
|
||
|
||
沿用 `utils/theme.js` 中的 `THEME_PRESETS`,确保所有页面 100% 使用 `themeConfig` 绑定,禁止硬编码颜色。
|
||
|
||
| 用途 | 主题变量 | 默认值(暖陶) |
|
||
|-----|---------|--------------|
|
||
| 页面背景 | `themeConfig.bgColor` | `#FAF6F0` |
|
||
| 卡片背景 | `themeConfig.cardBgColor` | `#FFFCF8` |
|
||
| 主文本 | `themeConfig.textPrimary` | `#3D3630` |
|
||
| 次要文本 | `themeConfig.textSecondary` | `#7A7066` |
|
||
| 禁用文本 | `themeConfig.textDisabled` | `#B0A89E` |
|
||
| 主题色 | `themeConfig.primaryColor` | `#C68E3F` |
|
||
| 辅助色 | `themeConfig.secondaryColor` | `#4A9E7F` |
|
||
| 成功/收入 | `themeConfig.successColor` | `#5B9E6E` |
|
||
| 危险/支出 | `themeConfig.dangerColor` | `#C75B4A` |
|
||
| 警告 | `themeConfig.warningColor` | `#D4A24A` |
|
||
| 边框 | `themeConfig.borderColor` | `#E8E2DA` |
|
||
| 轻边框 | `themeConfig.borderLight` | `#F2EDE6` |
|
||
| 渐变按钮 | `themeConfig.gradientSoft` | `linear-gradient(135deg, #C68E3F, #D4AA60)` |
|
||
| 阴影轻 | `themeConfig.shadowLight` | `rgba(61,54,48,0.04)` |
|
||
|
||
### 4.4 字体规范
|
||
|
||
| 元素 | 字号 | 字重 | 行高 |
|
||
|-----|------|------|------|
|
||
| 页面大标题 | 36rpx | 700 | 1.2 |
|
||
| 页面副标题/日期 | 24rpx | 500 | 1.4 |
|
||
| 卡片标题 | 30rpx | 700 | 1.3 |
|
||
| 正文内容 | 28rpx | 400 | 1.6 |
|
||
| 标签/辅助文字 | 22rpx | 500 | 1.4 |
|
||
| 金额数字 | 34rpx | 700 | 1.0 |
|
||
| 按钮文字 | 32rpx | 600 | 1.0 |
|
||
|
||
### 4.5 公共组件规范
|
||
|
||
#### 4.5.1 页面头部(PageHeader)
|
||
|
||
```vue
|
||
<!-- 统一组件 props -->
|
||
<PageHeader
|
||
title="待办清单"
|
||
subtitle="高效规划每一天"
|
||
:showBack="true"
|
||
:date="currentDate"
|
||
@dateChange="onDateChange"
|
||
>
|
||
<template #right>
|
||
<view class="header-btn" @click="toggleBatch">
|
||
<FaIcon icon="bars" />
|
||
</view>
|
||
</template>
|
||
</PageHeader>
|
||
```
|
||
|
||
**样式规范**:
|
||
- 高度:自适应,内边距 `24rpx 36rpx`
|
||
- 顶部安全区:`padding-top: calc(24rpx + env(safe-area-inset-top))`
|
||
- 标题字号:36rpx,700
|
||
- 副标题字号:24rpx,500
|
||
- 右侧按钮:68rpx × 68rpx,圆角 20rpx,背景 `cardBgColor`
|
||
- 按钮点击态:`transform: scale(0.93); transition: all 0.25s ease`
|
||
|
||
#### 4.5.2 统一卡片(AppCard)
|
||
|
||
```vue
|
||
<AppCard :padding="24" :radius="20">
|
||
<!-- 内容 -->
|
||
</AppCard>
|
||
```
|
||
|
||
**样式规范**:
|
||
- 背景:`themeConfig.cardBgColor`
|
||
- 圆角:20rpx
|
||
- 内边距:24rpx(可根据内容调整 20-32rpx)
|
||
- 阴影:`0 8rpx 24rpx ${themeConfig.shadowLight}`
|
||
- 边框:2rpx solid transparent(仅作为占位,实际靠阴影区分层级)
|
||
|
||
#### 4.5.3 统一按钮
|
||
|
||
**主按钮(底部固定)**:
|
||
- 宽度:100%(减去左右边距)
|
||
- 高度:108rpx
|
||
- 圆角:100rpx(全圆角胶囊)
|
||
- 背景:`themeConfig.gradientVibrant`
|
||
- 文字:32rpx,#fff,600
|
||
- 阴影:`0 12rpx 36rpx ${themeConfig.shadowColor}`
|
||
- 禁用态:`opacity: 0.5; pointer-events: none`
|
||
|
||
**次要按钮(模态框内)**:
|
||
- 高度:88rpx-96rpx
|
||
- 圆角:14rpx
|
||
- 取消按钮:背景 `rgba(0,0,0,0.05)`,文字 `textSecondary`
|
||
- 确认按钮:背景 `gradientSoft`,文字 #fff
|
||
|
||
**胶囊筛选标签**:
|
||
- 内边距:10rpx 24rpx
|
||
- 圆角:22rpx
|
||
- 默认态:背景 `borderColor`,文字 `textSecondary`
|
||
- 激活态:背景 `primaryColor`,文字 #fff
|
||
- 过渡:`all 0.25s ease`
|
||
|
||
#### 4.5.4 统一模态框(BottomSheet / CenterModal)
|
||
|
||
**底部弹出(用于新增/编辑)**:
|
||
- 宽度:100%
|
||
- 圆角:顶部 24rpx
|
||
- 背景:`cardBgColor`
|
||
- 动画:`slideUp 0.3s ease`
|
||
- 最大高度:85vh
|
||
- 底部安全区:`padding-bottom: calc(24rpx + env(safe-area-inset-bottom))`
|
||
|
||
**居中弹窗(用于确认/设置)**:
|
||
- 宽度:600rpx
|
||
- 圆角:20rpx
|
||
- 背景:`cardBgColor`
|
||
- 动画:`popUp 0.25s ease`
|
||
|
||
#### 4.5.5 统一日历组件(InlineCalendar)
|
||
|
||
当前首页、复盘页各自实现了一套日历。**必须抽取为统一组件**。
|
||
|
||
**组件能力**:
|
||
- 月份切换(上一月/下一月)
|
||
- 日期选择回调
|
||
- 标记日期(传入有数据的日期数组)
|
||
- 今日高亮
|
||
- 选中态高亮(背景 `gradientSoft`,文字 #fff)
|
||
|
||
**样式规范**:
|
||
- 背景:`cardBgColor`
|
||
- 圆角:20rpx
|
||
- 内边距:24rpx
|
||
- 星期标题:20rpx,600,`textSecondary`
|
||
- 日期格子:72rpx × 72rpx,圆角 10rpx
|
||
- 非当月日期:`opacity: 0.25`
|
||
- 数据标记点:8rpx 圆点,`primaryColor`
|
||
|
||
#### 4.5.6 统一列表项(SwipeableItem)
|
||
|
||
当前待办和账单的滑动删除/编辑逻辑各自实现,需统一。
|
||
|
||
**组件能力**:
|
||
- 左滑/右滑露出操作按钮
|
||
- 支持多个操作按钮(编辑、删除、完成)
|
||
- 点击主区域收起滑动菜单
|
||
- 同时只允许一项展开
|
||
|
||
**样式规范**:
|
||
- 滑动按钮宽度:80rpx/个
|
||
- 按钮高度:100%
|
||
- 编辑按钮:`primaryColor`
|
||
- 删除按钮:`dangerColor`
|
||
- 完成按钮:`successColor`
|
||
- 文字:24rpx,#fff
|
||
- 滑动过渡:`transform 0.3s ease`
|
||
|
||
#### 4.5.7 统一空状态(EmptyState)
|
||
|
||
当前已存在 `components/EmptyState.vue`,**所有列表页面强制使用**。
|
||
|
||
**规范**:
|
||
- 图标:48rpx emoji 或 FaIcon
|
||
- 标题:26rpx,600,`textSecondary`
|
||
- 描述:22rpx,`textDisabled`
|
||
- 操作按钮(可选):主按钮样式 mini 版
|
||
|
||
---
|
||
|
||
## 五、各模块页面详细设计
|
||
|
||
### 5.1 首页(pages/index/index)
|
||
|
||
**定位**:今日 Dashboard,聚合展示 + AI 快速录入。
|
||
|
||
**布局调整**:
|
||
1. **顶部问候区**:保留现有头像 + 问候语 + 日期显示,统一样式
|
||
2. **AI 智能记录卡片**:
|
||
- 优化为更明显的录入入口
|
||
- 快捷标签横向滚动(替代当前换行)
|
||
- 结果提示条动画优化
|
||
3. **快捷入口四宫格**:
|
||
- 统一为 AppCard 样式
|
||
- 图标背景色使用各模块主题色 + 15% 透明度
|
||
- 待办显示 `待完成/总数`,账单显示 `今日收支`,心情显示 `今日emoji或未记录`,复盘显示 `已完成/未记录`
|
||
4. **今日概览卡片**:
|
||
- 保留完成进度环
|
||
- 增加「复盘状态」行:今日是否已复盘
|
||
- 最近待办列表最多展示 3 条(当前 2 条)
|
||
- 增加「最近账单」3 条预览(新增)
|
||
|
||
**数据加载优化**:
|
||
- 优先调用新增接口 `POST /dashboard/daily`
|
||
- 失败时降级为现有并发请求
|
||
|
||
---
|
||
|
||
### 5.2 待办模块(pages/todo/todo)
|
||
|
||
**定位**:任务管理中心,强调高效规划与批量操作。
|
||
|
||
**布局重构**:
|
||
|
||
```
|
||
┌─────────────────────────────────────┐
|
||
│ Header: 待办清单 / 高效规划每一天 │
|
||
│ [批量模式Btn] │
|
||
├─────────────────────────────────────┤
|
||
│ SearchBar: 🔍 搜索待办 │
|
||
├─────────────────────────────────────┤
|
||
│ FilterRow1: [今日][本周][本月][自定义]│
|
||
│ FilterRow2: [全部][待办][已完成] │
|
||
├─────────────────────────────────────┤
|
||
│ InlineCalendar(时间筛非今日时显示) │
|
||
├─────────────────────────────────────┤
|
||
│ ListHeader: ● 任务列表 12项 │
|
||
├─────────────────────────────────────┤
|
||
│ ┌─────────────────────────────┐ │
|
||
│ │ ☐ 🔴 写周报 14:00 │ │
|
||
│ │ 工作 · 今天 │ │
|
||
│ └─────────────────────────────┘ │
|
||
│ ┌─────────────────────────────┐ │
|
||
│ │ ☑ 🟡 买咖啡豆 │ │
|
||
│ │ 生活 · 今天 [已完成] │ │
|
||
│ └─────────────────────────────┘ │
|
||
├─────────────────────────────────────┤
|
||
│ EmptyState(无数据时) │
|
||
├─────────────────────────────────────┤
|
||
│ [+] 悬浮添加按钮 │
|
||
└─────────────────────────────────────┘
|
||
```
|
||
|
||
**样式统一**:
|
||
- 页面背景:`bgColor`
|
||
- 所有卡片使用 AppCard 规范
|
||
- 任务列表项使用 SwipeableItem 组件
|
||
- 优先级标识统一为圆形徽章(🔴🟡🟢 或 FaIcon),尺寸 40rpx
|
||
- 批量操作底部栏:固定底部,背景 `cardBgColor`,阴影 `shadowMedium`
|
||
|
||
**交互优化**:
|
||
- 任务完成动画:点击后 checkbox 缩放弹跳 `cubic-bezier(0.34, 1.56, 0.64, 1)`
|
||
- 新增/编辑弹窗统一为 BottomSheet,字段分区:标题 > 日期/优先级 > 时间段 > 分类 > 备注
|
||
|
||
---
|
||
|
||
### 5.3 心情模块(pages/mood/mood)
|
||
|
||
**定位**:情绪记录与治愈空间,强调温暖与仪式感。
|
||
|
||
**布局重构**:
|
||
|
||
```
|
||
┌─────────────────────────────────────┐
|
||
│ Header: 记录心情 / 7月28日 │
|
||
│ [心情日历Btn] │
|
||
├─────────────────────────────────────┤
|
||
│ Hero区域: │
|
||
│ ┌─────────────────────────────┐ │
|
||
│ │ 今天心情如何? │ │
|
||
│ │ 选择最贴合此刻感受的... │ │
|
||
│ └─────────────────────────────┘ │
|
||
├─────────────────────────────────────┤
|
||
│ MoodSelector(5列网格) │
|
||
│ 😊 😌 😔 😤 😴 │
|
||
│ 😰 😄 🤔 😢 😎 │
|
||
│ ... │
|
||
├─────────────────────────────────────┤
|
||
│ SelectedBanner(选中后展示) │
|
||
│ ┌─────────────────────────────┐ │
|
||
│ │ 😊 开心 │ │
|
||
│ │ 今天是开心的一天 │ │
|
||
│ └─────────────────────────────┘ │
|
||
├─────────────────────────────────────┤
|
||
│ InputCard: 想对自己说 │
|
||
│ ┌─────────────────────────────┐ │
|
||
│ │ 记录此刻的心情与感悟... │ │
|
||
│ │ ─────────── 0/200 │ │
|
||
│ └─────────────────────────────┘ │
|
||
├─────────────────────────────────────┤
|
||
│ QuickPhrases: 快捷短语流式布局 │
|
||
│ [今天很棒!] [工作很累] [加油呀] ... │
|
||
├─────────────────────────────────────┤
|
||
│ [ 发送心情 ✨ ] │
|
||
└─────────────────────────────────────┘
|
||
```
|
||
|
||
**样式统一**:
|
||
- 心情选项卡片:110rpx × 110rpx,圆形,背景 `cardBgColor`
|
||
- 选中态:缩放 1.15,背景 `primaryColor + 12%`,边框 `primaryColor`
|
||
- 过渡动画:`all 0.35s cubic-bezier(0.34, 1.56, 0.64, 1)`
|
||
- 文字输入区:AppCard 样式,内边距 28rpx
|
||
- 进度条:10rpx 高度,圆角 100rpx,背景 `borderLight`,填充 `gradientSoft`
|
||
|
||
**交互优化**:
|
||
- 心情选中后,banner 区域淡入上移
|
||
- 保存成功后触发 AI 生成,弹窗使用居中 Modal,展示加载/成功/失败状态
|
||
- AI 结果卡片支持「换一换」和「保存图片」
|
||
|
||
---
|
||
|
||
### 5.4 账单模块(pages/bill/bill)
|
||
|
||
**定位**:收支明细与财务概览,强调数据清晰与预算控制。
|
||
|
||
**布局重构**:
|
||
|
||
```
|
||
┌─────────────────────────────────────┐
|
||
│ Header: 记账 / 记录每一笔收支 │
|
||
│ [预算设置Btn] │
|
||
├─────────────────────────────────────┤
|
||
│ SearchBar: 🔍 搜索备注/分类 │
|
||
├─────────────────────────────────────┤
|
||
│ FilterRow1: [全部][支出][收入] │
|
||
│ FilterRow2: [今日][本周][本月][上月]..│
|
||
├─────────────────────────────────────┤
|
||
│ BudgetCard(本月/上月预算进度,可选) │
|
||
│ 本月预算 ¥5000 [========>--] 65% │
|
||
├─────────────────────────────────────┤
|
||
│ StatGrid(4宫格统计卡片) │
|
||
│ ┌──────┐┌──────┐┌──────┐┌──────┐ │
|
||
│ │总支出 ││总收入 ││周期结余││累计结余│ │
|
||
│ │¥3250 ││¥8000 ││+¥4749││+¥4749│ │
|
||
│ └──────┘└──────┘└──────┘└──────┘ │
|
||
├─────────────────────────────────────┤
|
||
│ CateStat(分类统计) │
|
||
│ [餐饮¥1200] [交通¥300] [购物¥800]... │
|
||
├─────────────────────────────────────┤
|
||
│ BillList(账单列表) │
|
||
│ ┌─────────────────────────────┐ │
|
||
│ │ 🍚 餐饮 午餐 -¥28.5 │ │
|
||
│ │ 微信 · 07/28 │ │
|
||
│ └─────────────────────────────┘ │
|
||
├─────────────────────────────────────┤
|
||
│ [+] 悬浮添加按钮 │
|
||
└─────────────────────────────────────┘
|
||
```
|
||
|
||
**样式统一**:
|
||
- 统计 4 宫格:每个格子为 AppCard,内部图标 48rpx,金额 26rpx 700,标签 20rpx
|
||
- 分类统计:≤2 个时纵向满宽卡片,>2 个时横向滚动卡片(宽度 200rpx)
|
||
- 分类图标:56rpx × 56rpx,圆角 16rpx,白色图标文字
|
||
- 账单列表项:高度 140rpx,使用 SwipeableItem,左滑显示编辑+删除
|
||
- 金额颜色:支出 `dangerColor`,收入 `successColor`
|
||
|
||
**交互优化**:
|
||
- 分类统计卡片点击后筛选对应分类,列表实时过滤
|
||
- 记账弹窗(BottomSheet)分区:类型切换(支出/收入大按钮)> 金额输入(大字号)> 快捷金额 > 分类网格 > 渠道选择 > 备注 > 日期 > 底部按钮
|
||
- 金额输入框获得焦点时自动弹出数字键盘
|
||
|
||
---
|
||
|
||
### 5.5 复盘模块(pages/review/review + 新增 reviewList)
|
||
|
||
**定位**:每日反思与成长记录,强调结构化思考。
|
||
|
||
**重大改造**:
|
||
1. 现有 `review.vue` 改为**复盘编辑页**
|
||
2. 新增 `pages/review/reviewList.vue` 为**复盘历史列表页**
|
||
3. 所有数据从本地 Storage 迁移到后端接口
|
||
4. **仅保留 KPT 复盘法**,移除 GRAI 方法切换
|
||
|
||
#### 5.5.1 复盘编辑页(review.vue)
|
||
|
||
```
|
||
┌─────────────────────────────────────┐
|
||
│ Header: 今日复盘 / 7月28日 │
|
||
│ [日历Btn] [历史Btn] │
|
||
├─────────────────────────────────────┤
|
||
│ IntroCard: 💡 KPT复盘法 │
|
||
│ 通过记录做得好的、遇到的问题... │
|
||
├─────────────────────────────────────┤
|
||
│ Card 1: Keep(保持) │
|
||
│ ┌─────────────────────────────┐ │
|
||
│ │ 💡 做得好的地方 │ │
|
||
│ │ ─────────────────────────── │ │
|
||
│ │ 今天按时完成了所有待办... │ │
|
||
│ │ ─────────── 45/500 │ │
|
||
│ └─────────────────────────────┘ │
|
||
│ Card 2: Problem(问题) │
|
||
│ ┌─────────────────────────────┐ │
|
||
│ │ ⚠️ 遇到的挑战 │ │
|
||
│ │ ─────────────────────────── │ │
|
||
│ │ 下午注意力不集中... │ │
|
||
│ │ ─────────── 12/500 │ │
|
||
│ └─────────────────────────────┘ │
|
||
│ Card 3: Try(尝试) │
|
||
│ ┌─────────────────────────────┐ │
|
||
│ │ 🚀 改进方向 │ │
|
||
│ │ ─────────────────────────── │ │
|
||
│ │ 明天尝试番茄工作法... │ │
|
||
│ │ ─────────── 28/500 │ │
|
||
│ └─────────────────────────────┘ │
|
||
├─────────────────────────────────────┤
|
||
│ [ 保存复盘 ✨ ] │
|
||
└─────────────────────────────────────┘
|
||
```
|
||
|
||
**样式统一**:
|
||
- 介绍卡片:AppCard,左侧图标 56rpx,圆角 16rpx
|
||
- 输入卡片:AppCard,内边距 26rpx
|
||
- 卡片头部:图标 wrap 60rpx + 标题 30rpx 700 + 副标题 24rpx
|
||
- 输入框:min-height 160rpx,28rpx,行高 1.8
|
||
- 底部进度条:8rpx 高度 + 字数统计
|
||
|
||
**交互优化**:
|
||
- 日期切换使用 InlineCalendar 组件
|
||
- 离开页面时自动保存草稿到本地 Storage
|
||
|
||
#### 5.5.2 复盘历史列表页(新增 reviewList.vue)
|
||
|
||
**路由**:`pages/review/reviewList`
|
||
|
||
```
|
||
┌─────────────────────────────────────┐
|
||
│ Header: 复盘历史 / 回顾与成长 │
|
||
├─────────────────────────────────────┤
|
||
│ Filter: 🔍搜索 │
|
||
├─────────────────────────────────────┤
|
||
│ ┌─────────────────────────────┐ │
|
||
│ │ 07月28日 周一 │ │
|
||
│ │ 保持:今天按时完成了所有待办... │ │
|
||
│ └─────────────────────────────┘ │
|
||
│ ┌─────────────────────────────┐ │
|
||
│ │ 07月27日 周日 │ │
|
||
│ │ 保持:专注度很高... │ │
|
||
│ └─────────────────────────────┘ │
|
||
└─────────────────────────────────────┘
|
||
```
|
||
|
||
- 列表项使用 AppCard,点击后进入复盘编辑页查看详情
|
||
- 支持按日期范围筛选
|
||
|
||
---
|
||
|
||
### 5.6 我的心情日历(pages/moodCalendar/moodCalendar)
|
||
|
||
**定位**:月度心情可视化回顾。
|
||
|
||
**布局优化**:
|
||
- 顶部月份切换器统一样式(与 InlineCalendar 一致)
|
||
- 日历格子内展示当日心情 emoji(28rpx)
|
||
- 底部增加「本月心情统计」卡片:
|
||
- 心情分布横向条形图
|
||
- 高频词汇标签
|
||
- 平均心情评分
|
||
|
||
---
|
||
|
||
## 六、公共组件开发清单
|
||
|
||
| 组件名 | 路径 | 用途 | 优先级 |
|
||
|-------|------|------|--------|
|
||
| `PageHeader` | `components/PageHeader.vue` | 统一页面头部 | 高 |
|
||
| `AppCard` | `components/AppCard.vue` | 统一卡片容器 | 高 |
|
||
| `InlineCalendar` | `components/InlineCalendar.vue` | 内联日历(选择/展示) | 高 |
|
||
| `SwipeableItem` | `components/SwipeableItem.vue` | 滑动列表项 | 高 |
|
||
| `CapsuleFilter` | `components/CapsuleFilter.vue` | 胶囊筛选标签组 | 高 |
|
||
| `BottomSheet` | `components/BottomSheet.vue` | 底部弹出模态框 | 高 |
|
||
| `CenterModal` | `components/CenterModal.vue` | 居中模态框 | 高 |
|
||
| `StatCard` | `components/StatCard.vue` | 统计数字卡片 | 中 |
|
||
| `ProgressBar` | `components/ProgressBar.vue` | 进度条(预算/经验等) | 中 |
|
||
| `EmptyState` | `components/EmptyState.vue` | 空状态(已存在,需推广到所有页面) | 高 |
|
||
|
||
---
|
||
|
||
## 七、数据结构定义
|
||
|
||
### 7.1 待办项(TodoItem)
|
||
```typescript
|
||
interface TodoItem {
|
||
id: string;
|
||
title: string;
|
||
date: string; // YYYY-MM-DD
|
||
done: number; // 0-未完成 1-已完成
|
||
priority: number; // 1-高 2-中 3-低
|
||
category: string; // work / life / study
|
||
start_time?: string; // HH:MM
|
||
end_time?: string; // HH:MM
|
||
remark?: string;
|
||
repeat_type?: number; // 0-不重复 1-每日 2-每周 3-每月
|
||
created_at: string;
|
||
updated_at: string;
|
||
}
|
||
```
|
||
|
||
### 7.2 账单项(BillItem)
|
||
```typescript
|
||
interface BillItem {
|
||
id: string;
|
||
type: number; // 1-支出 2-收入
|
||
money: string; // 金额字符串,保留两位小数
|
||
cate: string; // 分类 value
|
||
channel?: string; // 支付渠道
|
||
note?: string;
|
||
date: string; // YYYY-MM-DD
|
||
created_at: string;
|
||
}
|
||
```
|
||
|
||
### 7.3 心情项(MoodItem)
|
||
```typescript
|
||
interface MoodItem {
|
||
id: string;
|
||
date: string; // YYYY-MM-DD
|
||
emoji: string; // emoji 字符
|
||
content?: string; // 文字内容
|
||
ai_text?: string; // AI 生成文案
|
||
ai_image_url?: string;
|
||
generate_count?: number;
|
||
created_at: string;
|
||
}
|
||
```
|
||
|
||
### 7.4 复盘项(ReviewItem)
|
||
```typescript
|
||
interface ReviewItem {
|
||
id: string;
|
||
date: string; // YYYY-MM-DD
|
||
method: 'kpt'; // 固定为 kpt(历史数据可能含 'grai')
|
||
kpt?: {
|
||
keep: string;
|
||
problem: string;
|
||
try: string;
|
||
};
|
||
created_at: string;
|
||
updated_at: string;
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 八、开发顺序建议
|
||
|
||
### 第一阶段:基础设施 ✅ 已完成
|
||
1. ✅ 开发公共组件:`AppCard`、`PageHeader`、`CapsuleFilter`、`BottomSheet`、`CenterModal`
|
||
2. ✅ 开发 `InlineCalendar`、`SwipeableItem`、`ProgressBar`、`SkeletonScreen` 组件
|
||
3. ✅ 开发 `themeMixin`、`growthModalMixin`、`moodMixin` 混入
|
||
4. ✅ 实现请求缓存(`apiCache.js`)和请求去重机制
|
||
|
||
### 第二阶段:接口对接 ✅ 已完成
|
||
1. ✅ 前端复盘模块全面接入后端 API(`saveReview`、`getReviewByDate`、`getReviewList`、`deleteReview`)
|
||
2. ✅ 新增聚合接口 `getDashboardDaily`(首页 3 合 1)
|
||
3. ✅ 新增统计接口 `getTodoStat`、`getMoodStat`、`getBillAggregateStat`
|
||
4. ✅ 移除复盘模块本地 Storage 逻辑(保留草稿自动保存)
|
||
5. ✅ 修复字体加载 ERR_CACHE_MISS(移除 CSS @font-face 本地路径)
|
||
|
||
### 第三阶段:页面重构 ✅ 已完成
|
||
1. ✅ 重构 `pages/review/review.vue`,接入后端 + 统一 UI + 仅保留 KPT 法
|
||
2. ✅ 新增 `pages/review/reviewList.vue` 复盘历史列表
|
||
3. ✅ 重构 `pages/todo/todo.vue`,接入公共组件
|
||
4. ✅ 重构 `pages/mood/mood.vue`,接入公共组件
|
||
5. ✅ 重构 `pages/bill/bill.vue`,接入公共组件
|
||
6. ✅ 优化 `pages/index/index.vue`,接入聚合接口
|
||
|
||
### 第四阶段:体验优化 ✅ 已完成
|
||
1. ✅ 统一所有页面过渡动画(pageFadeIn、cardEnter、theme-transition)
|
||
2. ✅ 优化列表加载骨架屏(SkeletonScreen 组件,支持 list/card/stats/dashboard/form 布局)
|
||
3. ✅ 空状态全覆盖(EmptyState 组件)
|
||
4. ✅ 请求缓存与去重(apiCache.js + request.js cache 选项)
|
||
|
||
---
|
||
|
||
## 九、注意事项
|
||
|
||
1. **复盘数据迁移**:复盘由本地改为云端,老用户本地数据需考虑提示「历史数据将保留在本地,新复盘将同步到云端」,或在版本更新时提供一次性上传引导。
|
||
2. **接口兼容性**:`POST /todo/list` 现有参数为 `date`,建议后端同时支持 `start_date` + `end_date` 以适配日历范围查询,保持向后兼容。
|
||
3. **主题一致性**:所有重构页面必须 100% 使用 `themeConfig` 变量,禁止任何硬编码颜色值。
|
||
4. **安全区适配**:所有固定底部操作栏必须添加 `env(safe-area-inset-bottom)` 适配。
|
||
5. **性能优化**:列表页使用虚拟滚动或分页加载,避免一次性渲染大量数据。
|
||
6. **字体加载**:微信小程序中字体仅通过 JS `uni.loadFontFace()` + base64 加载,CSS `@font-face` 本地路径会导致 ERR_CACHE_MISS,已移除。
|
||
7. **复盘方法简化**:仅保留 KPT 复盘法,GRAI 法已移除。历史数据可能包含 GRAI 记录,列表页兼容展示。
|
||
|
||
---
|
||
|
||
*文档结束。如有疑问请在开发群中沟通确认。*
|