文件
hyb-oa/.trellis/tasks/08-29-r102-reimbursement-fixture-debt/prd.md
T

3.0 KiB
原始文件 Blame 文件历史

修复 r102 普通报销编辑夹具

Goal

恢复 r102 中“普通报销可编辑报销事由和日期”用例的真实业务前提,让回归重新验证普通报销头部编辑合同,而不是因夹具被识别成差旅报销后通过改选择器制造假绿。

Confirmed Facts

  • r102-reimbursement-main-flow.spec.ts 的详情夹具把唯一明细费用类型设为 category: "travel"。
  • isTravelReimbursement 只要命中 travelSummary.isTravel、linkedTravelRequestId 或任一明细 category === "travel" 即判定为差旅。
  • 差旅详情向 ReimbursementHeaderEditor 传入 showDescription=false,按钮显示“编辑报销日期”,且“报销事由”输入框不渲染。
  • 既有失败与已上线的非参与人只读投影无关;只修改按钮选择器无法恢复用例原本要验证的行为。

Scope

  • 仅调整 r102-reimbursement-main-flow.spec.ts 中普通报销编辑场景的合成夹具及必要断言。
  • 复跑完整 r102 和差旅识别相关聚焦回归,确认普通报销与差旅报销合同同时成立。

Requirements

  • 把该用例的合成报销整体改为可信的普通报销场景,费用类型、事由、明细说明和预期文案必须语义一致。
  • 不通过只改 category、只改按钮名称或取消“报销事由”断言制造假绿。
  • 保留差旅识别规则和差旅详情不重复展示普通“报销事由”的现有产品合同。
  • 不修改生产业务代码、费用类型种子、权限、状态机或服务端 API。

Acceptance Criteria

  • 夹具不再命中 isTravelReimbursement 的任一条件,且内容能解释为普通报销。
  • 用例仍点击“编辑”、修改“报销事由”和报销日期,并断言保存后的展示结果。
  • 完整 r102-reimbursement-main-flow.spec.ts 通过,不再保留既有 5/6 基线。
  • 差旅识别和差旅头部展示合同未改;完整 r102 中普通报销和管理员只读场景均通过。
  • 前端 typecheck、相关 Playwright、Trellis governance 与 git diff --check 通过。

Out of Scope

  • 调整 isTravelReimbursement 判定、差旅页面字段或按钮文案。
  • Task B 的费用类型重命名、票据关联和金额门禁。
  • 生产部署或生产数据写入。

Test Plan

  • cd client && npx playwright test tests/e2e/r102-reimbursement-main-flow.spec.ts --workers=1 --reporter=list
  • 运行现有差旅识别/详情聚焦测试;若仓库没有独立文件,至少由 r102 夹具断言普通报销路径,并核对相关既有套件。
  • cd client && npm run typecheck
  • node scripts/qa/check-trellis-governance.mjs
  • git diff --check

Validation Result

  • npm run typecheck:PASS。
  • E2E_BASE_URL=http://127.0.0.1:5173 npx playwright test tests/e2e/r102-reimbursement-main-flow.spec.ts --workers=1 --reporter=list:6/6 PASS。
  • 首次未启动本地服务的运行因 6 个 ERR_CONNECTION_REFUSED 失败;启动 Vite 后按相同测试命令复跑全绿,属于测试环境问题,不是产品断言失败。