文件
hyb-oa/.trellis/tasks/08-04-reimbursement-small-team-form-validation/implement.md
T
wangsli 3aebfc5e04
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
chore(reimbursement-small-team-form-validation): 恢复任务继续部署
2026-08-04 23:48:03 +08:00

70 行
4.8 KiB
Markdown
原始文件 Blame 文件历史

此文件含有模棱两可的 Unicode 字符
此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。
# 小团队报销填报与校验完善:实施计划
## 1. Backend contracts and focused tests
- [ ] 在配置层增加并测试 `REIMBURSEMENT_MAX_AGE_DAYS=180|365`,默认 365,非法配置启动失败。
- [ ] 在报销预检服务增加证据摘要、时效检查和资产提示,复用 date-only/金额工具。
- [ ] 为默认期限、180 天、阈值边界、跨年度、未关联发票、整单附件和 `assets` 类别补单测。
## 2. Authoritative amount validation
- [ ] 收紧手工 item POST/PATCH:金额必须大于零,返回可定位错误。
- [ ] submit 行锁事务读取明细,拒绝空明细和非正金额明细。
- [ ] submit 在预算与审批规则前重新汇总并使用权威总额。
- [ ] 补充空单、零金额模板草稿、修改后提交、陈旧总额修复和审批金额选择回归测试。
## 3. Shared frontend API and header editing
- [ ] 扩展 reimbursement API 类型与通用 PATCH 函数。
- [ ] PC 草稿/驳回详情增加报销事由和日期编辑。
- [ ] 手机草稿/驳回详情增加适合小屏的同等编辑能力。
- [ ] 保存后刷新 detail/list/precheck,并验证非编辑状态和无权限用户只读。
## 4. Totals, evidence and asset hints
- [ ] PC 明细表尾增加条数与报销总额,概况标签改为“报销总额”。
- [ ] 手机明细列表尾增加条数与报销总额。
- [ ] PC/手机展示明细发票关联状态、整单附件数、时效警告和资产人工建卡提醒。
- [ ] 资产入口沿用现有权限;打印页合计不回归。
## 5. Validation and review gates
- [ ] `cd server && npm run prisma:validate`
- [ ] `cd server && node --check src/config.js && node --check src/services/feeControl.js && node --check src/routes/reimbursements.js`
- [ ] 运行本任务新增的后端 Vitest 及现有 reimbursement detail/create/expense-standard 聚焦回归。
- [ ] `cd client && npm run typecheck && npm run build`
- [ ] 运行 PC 与 mobile/wecom 报销详情 E2E,覆盖合计、编辑、时效、证据和资产提醒。
- [ ] 运行 `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`
- [ ] 因提交校验和跨层预检发生变化,实施后进行一次只读 review,重点检查金额竞争、模板兼容和权限边界。
## 6. Documentation, deployment and rollback
- [ ] 仅在形成稳定规则时更新现有报销事实源或 Trellis spec,不新建平行文档。
- [ ] 记录环境配置默认值、生产取值和回滚方式,不记录 Secret 或真实票据。
- [ ] 用户批准后启动任务;实现、检查、必要 spec 更新完成后使用中文 commit,并引用任务名。
- [ ] 若需用户线上测试,完成部署、公网健康检查和合成数据关键路径冒烟后再通知。
## Rollback points
- 配置/预检字段为第一回滚点:可独立移除,不影响数据库。
- 正金额提交门禁为第二回滚点:若发现合法流程被误阻断,先回滚该提交校验,不绕过发票/权限门禁。
- 前端编辑与提示为第三回滚点:可回滚 UI,服务端新增字段保持向后兼容。
## 执行记录(2026-08-04)
- 服务端聚焦回归 9 个文件、86 个用例全部通过;Prisma 与所改 Node 文件语法检查通过。
- 前端 `typecheck`、生产构建通过;R102 合成 API 浏览器回归覆盖 PC/手机合计、事由日期编辑和材料提示,原 5 个用例通过,新增/修正用例单独复跑通过。
- 任务、环境契约、流程合同、文档注册、Trellis 治理、敏感内容和 `git diff --check` 均通过;文档注册保留既有 22 个未注册文件 warning,无新增错误。
- 全量后端 1228 个用例中 1224 个通过;3 个既有付款 BIFF8 导出用例因本机未安装 `server/requirements/payment-order-biff8.txt` 固定 Python 依赖失败,另 1 个本任务引起的环境键计数已修正并复跑通过。
- 已完成主会话只读复核,修正“已完成报销不显示资产提醒”和“超期且跨年只显示一个提示”两处跨层遗漏。
- 未执行生产部署、生产配置写入或公网数据操作;如需线上测试,须按项目规则另行取得明确部署授权。
## 部署续办(2026-08-04,已授权)
- [ ] 确认工作提交已发布到部署入口要求的上游分支,并执行已有部署只读预检。
- [ ] 按 `deploy-existing.sh` 发布已批准提交,不同步或覆盖生产 `.env`,不执行真实业务写入。
- [ ] 验证活动服务 build、`/ready`、公网只读 smoke、PC/手机关键页面及 180/365 配置生效状态。
- [ ] 记录脱敏结果与回滚边界;如应用发布成功但备份合同刷新失败,按既有部分成功分类处理,不重复部署应用。