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个潜在问题
This commit is contained in:
2026-06-10 17:30:36 +08:00
parent 5df910c9f1
commit 31f6487d61
36 changed files with 4162 additions and 64 deletions

View File

@@ -0,0 +1,53 @@
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: 成功