- 删除已落地的 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 微调服务配置
7.7 KiB
7.7 KiB
报销草稿分支动作收口 概念文档
更新时间:2026-06-23
功能一句话
当用户发起报销且系统命中可继续的报销草稿时,只提供“查看草稿、继续关联草稿、独立新建报销单”三个明确入口,让用户能看详情、补附件/说明,或确认另起一张新草稿。
背景与问题
- 当前现状:AI 工作台和报销助手在“我要报销”后会先查询可继续报销草稿;命中草稿时,当前按钮把“继续草稿”和“打开详情”混在一起,并把跳过草稿描述成“关联申请单新建报销单”。
- 用户痛点:按钮语义不清,用户无法判断点击“继续草稿”是打开详情、继续补附件,还是进入申请单关联。
- 业务影响:报销草稿与新建报销单的路径混杂,容易造成重复草稿、附件归集错误或用户误以为已继续处理。
- 为什么现在需要做:截图中的草稿分支是报销入口的第一屏决策,需要先把按钮数量、文案和后续状态固定下来,再继续开发。
目标与非目标
目标
- [G1] 命中可继续报销草稿时,快捷按钮固定为三个:查看草稿、继续关联草稿、独立新建报销单。
- [G2] “查看草稿”只负责跳转详情页,不承担继续上传或新建逻辑。
- [G3] “继续关联草稿”只负责把当前会话切到“等待上传附件或补充说明”的状态,并锁定目标草稿。
- [G4] “独立新建报销单”先提示用户确认是否新建草稿单据,再进入新草稿创建流程。
非目标
- [NG1] 本轮不改后端草稿保存、附件 OCR、风险审核和审批流规则。
- [NG2] 本轮不改变申请单关联命中时的“选择申请单 / 单独新建报销单”逻辑。
- [NG3] 本轮不重做报销助手整体 UI,只收口草稿命中态的按钮和动作流。
用户与场景
- 目标用户:普通员工在个人工作台 AI 模式或报销助手中发起报销。
- 使用入口:快捷操作“发起报销”、输入“我要报销 / 发起报销 / 新建报销”。
- 核心场景:
- 系统查到可继续报销草稿,展示草稿卡片和三个按钮。
- 用户点击“查看草稿”,打开对应单据详情页。
- 用户点击“继续关联草稿”,系统提示上传相关附件或补充说明。
- 用户点击“独立新建报销单”,系统询问是否新建草稿单据。
- 异常场景:
- 草稿缺少
claim_id时,“查看草稿”和“继续关联草稿”不能提交无目标动作。 - 历史会话里的旧动作仍可兼容处理,不影响新生成提示。
- 草稿缺少
功能能力
- [C1] 输入能力:读取报销草稿候选单据,识别
claim_id、claim_no、状态、金额、时间和事由。 - [C2] 处理能力:将草稿命中态动作拆成查看、继续关联、独立新建三条互斥分支。
- [C3] 输出能力:输出固定三按钮,并在点击后生成明确的用户回显和助手提示。
- [C4] 状态与权限:继续关联时记录目标草稿,后续上传附件或补充说明应围绕该草稿继续。
- [C5] 边界与降级:保留旧
skip_reimbursement_draft_check动作兼容,避免历史会话按钮失效。
方案设计
前端
- 页面/组件:
travelReimbursementAssociationGateModel.js负责生成草稿命中态文案和三个动作。useWorkbenchAiActionRouter.js负责个人工作台 AI 模式的动作分流。useWorkbenchAiExpenseFlow.js负责个人工作台中的继续关联提示和独立新建确认提示。useTravelReimbursementSuggestedActions.js负责报销助手页面中的相同动作分流。
- 交互状态:
- 查看草稿:沿用
open_application_detail,只跳转详情。 - 继续关联草稿:新增动作类型,点击后提示“请上传相关附件,或补充说明”,并记录目标草稿。
- 独立新建报销单:新增动作类型,点击后提示“是否新建草稿单据”,确认后进入现有单独新建流程。
- 查看草稿:沿用
- 展示规则:
- 草稿命中态只显示三个按钮,不再出现“继续草稿”或“不用草稿,关联申请单新建报销单”。
- 按钮文案携带草稿编号,方便用户辨认目标。
- 降级处理:
- 历史旧动作仍走原有分支。
- 缺少草稿 ID 时给出 toast,不继续进入无目标关联。
后端
- 接口/服务:当前不新增接口。
- 权限与校验:沿用现有详情页与草稿操作权限。
- 持久化:当前不改后端持久化结构。
- 降级处理:后续上传附件或保存草稿仍使用现有 orchestrator 与附件归集能力。
算法与规则
- 输入:已筛选出的报销草稿候选。
- 流程:按更新时间排序后取首个草稿作为三按钮默认目标;草稿卡片仍展示候选详情。
- 输出:三个动作对象及后续提示文案。
- 解释:本轮不是匹配算法改造,只是草稿命中后的动作语义收口。
数据与契约
- 核心字段:
claim_id、claim_no、original_message、draft_claim_id、selected_claim_no。 - 状态枚举:新增前端动作类型
continue_reimbursement_draft_association、create_standalone_reimbursement_draft、cancel_standalone_reimbursement_draft。 - 兼容策略:保留
open_application_detail和旧跳过动作分支。 - 版本/审计:通过前端测试锁定动作数量、文案和路由行为。
算法与公式
当前功能不涉及显式数学公式。
测试方案
后端:
- 当前不新增后端测试;本轮没有修改后端服务或接口。
前端:
- 扩展
workbench-ai-reimbursement-association-gate.test.mjs,验证草稿命中态只输出三个动作和新文案。 - 扩展
workbench-ai-action-router.test.mjs,验证继续关联、独立新建确认的路由行为。 - 扩展
travel-reimbursement-guided-flow.test.mjs或既有报销助手动作测试,验证旧报销助手使用相同动作语义。
集成:
- 运行相关 Node 测试,确认 AI 工作台和报销助手入口没有回退到旧按钮。
手工验证:
- 在个人工作台 AI 模式输入“我要报销”,命中草稿后检查按钮数量和点击行为。
指标与验收
- [A1] 功能验收:草稿命中态固定显示三个按钮,且第一个按钮跳详情,第二个按钮提示上传附件/说明,第三个按钮提示是否新建草稿单据。
- [A2] 性能指标:不增加额外接口查询;仍复用一次单据列表查询。
- [A3] 质量指标:定向前端测试通过,旧动作兼容测试不失效。
- [A4] 安全/权限指标:不绕过详情页和草稿操作原有权限。
- [A5] 可观测性:对话消息中能看到用户选择了哪个分支。
风险与开放问题
- 风险:多个草稿同时命中时,三个按钮默认指向最新草稿;用户如需其他草稿,可先通过卡片查看信息后进入详情页处理。
- 风险:全量
code-size-limits当前仍会被既有TopBar.vue:824阻断;本轮新增和修改的文件均已控制在 800 行内。 - 已处理依赖:复用现有详情页跳转、报销场景选择和草稿保存链路。
- 待确认:后续是否要在草稿卡片内为每张草稿提供独立按钮;本轮先按截图中的三按钮入口收口。
- 降级策略:旧历史会话按钮保持可点击,不强制迁移旧消息。
本轮实现记录
- 2026-06-23:先落本文档和 TODO,再按测试驱动修改前端草稿分支动作。
- 2026-06-23:新增
travelReimbursementDraftBranchModel.js承载草稿三分支动作,避免继续放大travelReimbursementAssociationGateModel.js。 - 2026-06-23:个人工作台和报销助手页面均已接入“继续关联草稿”和“独立新建报销单”的后续提示。