3.2 KiB
3.2 KiB
实施清单:取消报销资产事前批准强制
1. 规划与候选边界
- PRD、design、implement 经用户审查并明确批准实施。
- 确认当前生产仍运行
0f9f403,0017 尚未退回;0016 可由真实财务并行推进,不把真人单据用于本轮 smoke。
2. 服务端纠偏
- 删除明细创建、编辑和提交三处 assets 批准依据强制错误。
- 同步修复被原校验遮蔽的两处空值解引用:create 使用
body.assetPriorApprovalBasis?.trim() || null,patch 使用targetApprovalBasis?.trim() || null。 - 规范创建/编辑字段语义:create omitted/空白落 null;patch 现值为 null 且 omitted 保持 null、有值且 omitted 保留、显式空清除、切换非 assets 清除。
- 保留 Prisma 列、请求 schema、详情响应和 API 兼容字段,不新增 migration。
3. PC 与移动端纠偏
- PC editor 移除输入、状态、初始值、保存 payload 和 disabled 条件;详情表格移除展示。
- 移动端移除 ItemFormState 字段、新建/编辑映射、保存 payload、输入、disabled 条件和卡片展示。
- 四处 2,000 元提示统一删除“并填写事前批准依据”,保留原触发函数和提示级语义。
4. 主数据、文档与规约
- 更新三个启用 assets seed description 为资产登记导向,确认 update/create 分支均落地且不写 account code。
- 更新
docs/产品口径.md和 reimbursement spec,删除不存在的强制审批制度与错误矩阵。 - 在 reimbursement spec 记录:取消必填校验时必须检查下游依赖的非空/类型/状态假设,并覆盖真实空值路径,不能只删除前置校验。
- 不修改既有 migration;migration 单测继续验证 nullable 与无破坏性操作。
5. 测试
- 后端路由测试覆盖 assets 无依据可提交,以及创建 omitted→null、patch null+omitted→null、patch 有值+omitted→保留、显式清空、切换非 assets 清空;全部不得出现 500,B2 门禁不回退。
- seed 测试断言三个 description 不含批准措辞且包含资产登记信息。
- r111 E2E 覆盖 PC/移动无输入、无展示、可保存和四处新提示;明确关联与免票合同继续通过。
- 运行
cd server && npm run prisma:validate和聚焦 Vitest。 - 运行
cd client && npm run typecheck && npm run build及聚焦 Playwright。 - 运行 Trellis governance、process contract、docs registry、敏感信息检查和
git diff --check。
6. 复核、提交与部署门禁
- 实施后执行只读专项 review,重点核权限/提交门禁未误删、API 兼容和 seed 文案一致性。
- 用户审查通过后,以中文 commit 引用 task 名,push 与部署分别取得授权。
- 无 migration 部署仍显式记录 pre/post pending=none、init/seed 退出码 0、三条 description、B2 global on、
/ready和 bundle marker。 - 公网合成 assets 草稿 PC/移动验证通过并清理后,才由真实财务按已批准理由退回 0017。
7. 回滚
- 应用或 seed 验收失败时停止 0017,回滚应用到
0f9f403;不回滚数据库列、不清历史值、不改 B2 关联数据。