文件
hyb-oa/.trellis/tasks/archive/2026-08/08-28-reimbursement-review-routing-copy/prd.md
T

6.6 KiB

报销规范核查与审批文案优化

Goal

核查 majianyong 于 2026-08-28 提交的 4 笔报销是否满足当前报销、发票和附件规范,并将“负责人本人申请兜底:finance”这类内部审批路由说明替换为用户能直接理解的财务处理文案,同时保持禁止自审和历史审批事实不变。

Background

  • 用户反馈 majianyong 当前提交了 4 笔填写不够规范的报销,并提供了其中 BX-20260828-0018 的详情截图。
  • 截图可确认该单为办公用品报销:整单事由与唯一明细说明均为泛化的“办公用品采购”,未关联项目;5 张发票自动归入 1 条总额明细,材料对应区提示“待关联发票或补充无票说明”。
  • 当前正式组织口径是 majianyong 为公司负责人 ceo、不配置直属主管且不得自审;负责人本人提交报销时由唯一 active 非本人 finance 处理。
  • 后端在生成负责人本人兜底步骤时把内部原因和角色代码拼为 负责人本人申请兜底:finance,报销详情的处理进度投影把它当作可读节点名,因而在“下一步”“当前处理”和时间线中直接展示。
  • 现有稳定规约已经规定审批投影不得暴露角色代码或技术标识,finance|finance_mgr 应显示为“财务复核”。

Scope

  • 生产 4 笔报销的最小字段只读核查与脱敏结论。
  • 负责人本人财务兜底步骤的新记录业务命名。
  • 报销详情、PC/移动审批任务等用户入口对历史兜底步骤名的只读显示投影。
  • 聚焦后端回归、前端构建与报销详情页面验证;不包含公网部署。

Requirements

R1 生产报销只读核查

  • 只读定位 majianyong 在 2026-08-28 提交的 4 笔报销;若实际结果不恰好为 4 笔,应停止逐笔结论并报告范围漂移。
  • 仅读取核查所需的最小字段:业务编号、状态、报销日期、事由、项目关联、费用类型、明细日期/金额/说明、发票与明细关联状态、补充附件类型/说明、材料完整性提示和审批节点摘要。
  • 按当前事实源检查:事由和明细说明是否能说明购买/支出内容及业务用途;费用类型和日期是否准确;项目性费用是否关联项目;多张发票是否合理拆分或能与明细对应;发票是否逐条关联;支付截图、订单或情况说明等补充材料是否足以支撑实付与用途。
  • 输出逐笔脱敏问题清单,区分“应退回补正”“建议补充”“仅需财务核对”;不得在任务文件、仓库或聊天中记录完整发票号码、附件原文、原始 payload、账号、凭据或存储路径。
  • 本任务不替用户编辑、撤回、审批或付款,不写生产数据库,不写企业微信。

R2 用户可见审批文案

  • owner_self_fallback 继续作为内部路由/审计语义,仍须保持 active 非本人财务处理和禁止自审。
  • 报销详情中该节点统一显示为 财务复核;“当前处理”按现有结构显示 财务复核 · <实际处理人姓名>,不显示内部角色代码;“下一步”显示 待财务复核处理。
  • 处理进度时间线对当前和历史负责人本人兜底快照均显示 财务复核,不得要求迁移或重写历史 workflow_steps_snapshot。
  • 新提交报销生成的业务步骤名使用可读文案,内部兜底原因保留在稳定步骤 ID/路由逻辑中,不能因文案调整丢失自审保护或审批人解析依据。
  • 聚焦核对待办/移动审批等直接使用任务步骤名的用户入口;如它们会继续暴露该内部文案,应复用同一服务端显示语义或确保新任务不再生成内部文案。不得进行通用工作流 UI 重构。

Acceptance Criteria

  • 生产只读结果恰好覆盖 majianyong 于 2026-08-28 提交的 4 笔报销,并形成不含敏感原文的逐笔规范性结论。
  • 每笔结论至少覆盖事由、项目、明细拆分/说明、日期与金额、发票对应、补充材料六类检查,并给出明确处理建议。
  • BX-20260828-0018 不再把 5 张发票仅以泛化“办公用品采购”视为充分说明;结论明确指出其明细对应和用途证据缺口。
  • 负责人本人申请仍只由 active 非本人 finance 处理,不产生自审、不改变普通员工审批链。
  • 报销详情的“当前处理”“下一步”和处理进度不再显示 负责人本人申请兜底、finance 或其他内部步骤标识,分别使用“财务复核 · 处理人”“待财务复核处理”和“财务复核”。
  • 已存在的历史兜底快照无需数据迁移即可得到同样的用户可读投影;新提交记录不再生成内部原因作为用户可见步骤名。
  • 后端聚焦测试覆盖历史步骤名、新步骤名、普通财务节点、非财务节点与禁止自审回归;相关前端类型检查、构建和报销详情 Playwright 通过。
  • 审批/workflow 变更完成后进行一次只读代码复核,确认权限、状态机、快照和审批规则语义未扩大。
  • 未经另行批准不部署公网;部署并通过公网只读检查前,不告知用户线上可测试。

Out of Scope

  • 修改、撤回、驳回、通过这 4 笔真实报销,或替员工补录材料。
  • 修改审批角色、负责人直属主管、审批金额档、生产审批规则或历史快照。
  • 执行真实付款、付款批次操作、附件下载、企业微信写入或数据库迁移。
  • 新增通用 BPM、重构全部业务域审批文案或改变现有页面布局。

Risks and Constraints

  • 生产数据可能已发生状态变化;只读查询必须冻结查询时间并以业务编号为结论锚点。
  • 发票 PDF 和支付证明需要人工看原件才能判断真实性;本轮自动/字段核查只能判断材料结构与对应关系,不能替代财务验真。
  • 历史快照是审批事实,文案修复必须在显示投影层兼容,不得回写历史数据。

Test Plan

  • 聚焦后端:cd server && npx vitest run tests/unit/utils/workflow.test.js tests/unit/routes/reimbursements.detail.test.js。
  • 基础后端:cd server && npm run prisma:validate,修改的 JavaScript 文件执行 node --check。
  • 前端:cd client && npm run typecheck && npm run build;运行覆盖 PC 报销详情的聚焦 Playwright。
  • 流程治理:node scripts/qa/check-process-contract.mjs --baseline --json、node scripts/qa/audit-docs.mjs --check-registry、node scripts/qa/check-trellis-governance.mjs、git diff --check。
  • 人工只读复核:检查 diff 未改变审批资格、任务推进、历史快照持久化或生产数据。