Files
xiaocai/docs/sequence-diagram.mermaid
wangxiaogang 31f6487d61 feat: 前后端功能对齐 - 实现8个对齐差距
P0-1: 分类拖拽排序 - category-manage 添加拖拽 UI
P1-1: 反馈回复展示 - 新增 GET /feedback/mine + 前端我的反馈Tab
P1-2: 备份管理页面 - 新增下载端点 + backup-manage 页面
P2-1: 统计年度/周视图 - stats 支持 period 参数 + 前端维度切换器
P2-2: 数据导入 - 新增 POST /import 端点 + data-import 页面
P2-3: 数据导出服务端化 - 新增 GET /export 流式端点
P3-1: 健康检查展示 - health 移到 auth 前 + admin 状态卡片
P3-2~4: 交易标签系统 - tags CRUD + 交易关联 + 按标签筛选统计

后端: 新增 tag.ts/export.ts 路由, 改造 feedback/backup/transaction/stats
前端: 新增 DragSortList 组件, 3个新页面, 改造 7 个现有页面
QA 修复: 5个严重Bug + 4个潜在问题
2026-06-10 17:30:36 +08:00

54 lines
1.9 KiB
Plaintext
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.
sequenceDiagram
participant U as 用户
participant P as category-manage
participant D as DragSortList
participant S as categoryStore
participant A as sortCategories API
participant B as PUT /categories/sort
U->>P: 长按分类项进入排序模式
P->>P: showSortMode = true
P->>D: 渲染 DragSortList (items=currentCategories)
U->>D: touchstart (记录起始位置)
U->>D: touchmove (计算偏移, 交换元素位置)
D->>D: 实时更新 items 数组顺序
U->>D: touchend (拖拽结束)
D->>P: @change事件 (新顺序ids)
P->>S: sortCategories(newIds)
S->>A: sortCategories(ids)
A->>B: PUT /categories/sort { ids }
B-->>A: { code: 0 }
A-->>S: 成功
S->>S: fetchCategories() 刷新
%% 数据导入流程
U->>P2 as data-import: 选择 JSON 文件
P2->>P2: uni.chooseFile / 读取文件内容
P2->>P2: 解析 JSON显示预览(条数、日期范围)
U->>P2: 确认导入
P2->>A2 as transaction API: importTransactions(items)
A2->>S2 as POST /transactions/import: POST { items }
S2->>S2: 校验每条记录格式
S2->>DB as MySQL: 查询已有记录 (去重比对)
S2->>DB: 批量 INSERT (每批100条)
S2->>DB: 写入 transaction_tags (如有 tag_names)
S2-->>A2: { total, imported, skipped, errors }
A2-->>P2: 导入结果
P2->>U: 显示导入结果(成功X条, 跳过Y条)
%% 标签关联交易流程
U->>P3 as add/index: 点击"添加标签"
P3->>P3: 显示标签选择面板(已有标签 + 新建入口)
U->>P3: 选择标签(最多5个)
P3->>P3: selectedTagIds 更新
U->>P3: 保存交易
P3->>A3 as transaction API: createTransaction({...data, tagIds})
A3->>S3 as POST /transactions: POST { amount, type, ..., tagIds }
S3->>S3: 校验 tagIds (≤5, 属于当前用户)
S3->>DB: INSERT INTO transactions
S3->>DB: INSERT INTO transaction_tags (批量)
S3-->>A3: { id }
A3-->>P3: 成功