Files
X-Financial/document/development/reimbursement-draft-action-branching/TODO.md
caoxiaozhu f9553a6a1a docs: 清理过期计划文档并补全 work-log 与开发/用户文档
- 删除已落地的 improvement-roadmap、superpowers 计划与 ui-mockups 参考稿,删除早期 work-log(2026-05-06~08)
- 新增 2026-05-23 起的 work-log 与 attachment-association-background-job、reimbursement-draft-action-branching 等开发文档及用户文档
- docker-compose(.full).yml 微调服务配置
2026-06-24 10:42:57 +08:00

74 lines
5.3 KiB
Markdown
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.
# 报销草稿分支动作收口 开发 TODO
更新时间2026-06-23
## 使用规则
- 每个 TODO 必须对应 `CONCEPT.md` 中的目标、能力、方案或验收点。
- 只有完成并验证后,才能把 `[ ]` 改成 `[x]`
- 勾选时在任务后补充简短证据,例如文件、接口、命令或验证结果。
- 如果需求发生变化,先更新 `CONCEPT.md`,再调整本 TODO。
## 1. 调研与边界
- [x] [CONCEPT: 背景与问题] 阅读相关页面、动作模型和测试,确认当前“继续草稿”实际走详情打开,“不用草稿”走申请单关联。
证据:`travelReimbursementAssociationGateModel.js``useWorkbenchAiActionRouter.js``useWorkbenchAiExpenseFlow.js``workbench-ai-reimbursement-association-gate.test.mjs`
- [x] [CONCEPT: 目标与非目标] 确认本轮只改草稿命中态按钮与点击流,不改后端草稿保存和风险审核。
证据:`CONCEPT.md` 的目标与非目标章节。
- [x] [CONCEPT: 风险与开放问题] 标记多草稿命中时默认指向最新草稿,历史旧动作保留兼容。
证据:`CONCEPT.md` 的风险与开放问题章节。
## 2. 契约与设计
- [x] [CONCEPT: 功能能力] 定义三个动作分支:查看草稿、继续关联草稿、独立新建报销单。
证据:`CONCEPT.md` 的功能能力和方案设计章节。
- [x] [CONCEPT: 方案设计] 明确个人工作台 AI 模式与报销助手页面共用动作模型,但分别在各自 action router 中处理点击。
证据:`CONCEPT.md` 的前端方案设计章节。
- [x] [CONCEPT: 算法与公式] 明确本轮不涉及显式数学公式。
证据:`CONCEPT.md` 的算法与公式章节。
- [x] [CONCEPT: 指标与验收] 把验收标准拆成按钮数量、按钮文案、点击后提示和旧动作兼容。
证据:`CONCEPT.md` 的指标与验收章节。
## 3. 后端实现
- [x] [CONCEPT: 后端] 本轮不新增后端 schema、service、endpoint、权限和持久化逻辑。
证据:`CONCEPT.md` 明确当前不新增接口。
- [x] [CONCEPT: 数据与契约] 后端响应结构不变,新增内容仅为前端动作类型。
证据:`CONCEPT.md` 的数据与契约章节。
## 4. 算法/规则实现
- [x] [CONCEPT: 算法与规则] 本轮不改候选单据筛选算法,只改命中后的动作分支。
证据:`CONCEPT.md` 的算法与规则章节。
- [x] [CONCEPT: 功能能力] 明确旧动作保留兼容,不删除历史会话能力。
证据:`CONCEPT.md` 的边界与降级说明。
## 5. 前端实现
- [x] [CONCEPT: 前端] 在草稿分支模型中新增动作类型和三按钮生成逻辑。
证据:`travelReimbursementDraftBranchModel.js` 定义 `CONTINUE_REIMBURSEMENT_DRAFT_ACTION``CREATE_STANDALONE_REIMBURSEMENT_DRAFT_ACTION` 和三按钮构造;`travelReimbursementAssociationGateModel.js` re-export 保持兼容。
- [x] [CONCEPT: 前端] 在个人工作台 AI 模式中处理继续关联草稿、独立新建确认和取消新建。
证据:`useWorkbenchAiActionRouter.js` 分流新动作;`useWorkbenchAiExpenseFlow.js` 追加上传附件/说明提示和新建草稿确认提示。
- [x] [CONCEPT: 前端] 在报销助手页面中处理同一批新动作,保持与工作台一致。
证据:`useTravelReimbursementSuggestedActions.js` 接入继续关联、独立新建确认和取消新建;`TravelReimbursementCreateView.js` 传入 `draftClaimId``composerUploadIntent`
- [x] [CONCEPT: 前端] 保留旧动作兼容,不破坏历史会话按钮。
证据:`SKIP_REIMBURSEMENT_DRAFT_CHECK_ACTION``SKIP_REQUIRED_APPLICATION_LINK_ACTION` 仍由原路径处理;相关旧链路测试通过。
## 6. 测试与验证
- [x] [CONCEPT: 测试方案] 先补充失败的前端单元测试,覆盖三按钮生成和路由行为。
证据RED 阶段 `workbench-ai-reimbursement-association-gate.test.mjs``workbench-ai-action-router.test.mjs` 因缺少 `CONTINUE_REIMBURSEMENT_DRAFT_ACTION` 导出失败。
- [x] [CONCEPT: 测试方案] 实现后运行定向前端测试,记录通过结果。
证据:`node --test web/tests/workbench-ai-reimbursement-association-gate.test.mjs``node --test web/tests/workbench-ai-action-router.test.mjs``node --test web/tests/travel-reimbursement-guided-flow.test.mjs``node --test web/tests/travel-reimbursement-review-drawer-switch.test.mjs``node --test web/tests/expense-attachment-draft-selection.test.mjs``node --test web/tests/attachment-association-confirmation.test.mjs` 均通过。
- [x] [CONCEPT: 指标与验收] 回看验收点,确认没有旧文案继续出现在新草稿命中态。
证据:`workbench-ai-reimbursement-association-gate.test.mjs` 断言新草稿命中态有且仅有三个动作,并不再出现“跳过草稿后再关联申请单”。
## 7. 文档收尾
- [x] [CONCEPT: 指标与验收] 实现完成后更新本 TODO 的证据。
证据:本 TODO 已回填实现文件和测试命令。
- [x] [CONCEPT: 风险与开放问题] 根据实现结果更新剩余风险。
证据:`CONCEPT.md` 已记录全量 `code-size-limits` 仍被既有 `TopBar.vue:824` 阻断;本轮文件行数为 `travelReimbursementAssociationGateModel.js:714``travelReimbursementDraftBranchModel.js:143`
- [x] [CONCEPT: 功能一句话] 确认最终实现没有偏离原始目标。
证据:新草稿命中态固定为查看草稿、继续关联草稿、独立新建报销单三个入口。