文件
hyb-oa/.trellis/tasks/archive/2026-10/09-19-budget-pool-concurrency/implement.md
T
wangsli和Claude Opus 5.5 b85ff6a9bf 归档 11 个已上线 Trellis 任务并补收口记录(09-17-company-loan-principal-repayment 任务整理)
- 报销一页式审批工作台父任务及 B-2a/B-2b/只读一致性子任务(AC11 依用户 2026-09-27 确认)
- 报销详情材料预览修复及其部署子任务(由候选 59dc5f6 发布覆盖,原步骤未执行,记录保留)
- 资产事前批准纠偏、Trellis 流程对齐、ERP 遗留精简、预算池并发、采购提交超时
- 各任务 prd 顶部新增收口记录,实现均包含于生产 4a5cd8f2;原未勾清单保留不补勾
- B 组与有真实待办的任务保持进行中

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-11 10:19:21 +08:00

8.2 KiB
原始文件 Blame 文件历史

2026-09-19 定向测试及独立补审通过(最新)

已读取 Claude 的 claude-result-20260919T044304Z.md、unit.log 与 exit-code.txt,并在回填记录前实算核对补丁manifest的before/after各10份全部一致,原审查报告SHA一致。Claude执行两份指定测试:2文件928项通过、0跳过、退出0、8.47秒(差旅54、原因码874);主会话未重跑测试。红例927→绿例928的差值1来自新增固定夹具的正向用例,其他用例没有增减。

两项必修均关闭:差旅预算池原口径恢复且锁定保留;budget.pool_changed固定夹具与反向完整性检查补齐。结合首批锁/事务/证据审查,预算补丁本地修复及独立复核完成;B7勾选,B6发布完整门禁保留延期,因此任务状态仍in_progress,不归档、不提交、不推送、不部署,不借本轮928抵扣旧4446/28所属输入。

无需再安排同范围Claude复核或测试。接收回执:review-fixes-20260919/claude-result-reception.json。回填仅改变任务记录,受测产品/测试文件未变;原manifest/报告/日志均未覆盖。真实PG差旅提交并发、真实认证与外部业务范围仍未验证,冻结和已披露例外保持。

2026-09-19 Claude 复核接回及最小修复计划(修正前记录)

报告 budget-pool-claude-review-20260919T043257Z.txt 已实读。独立静态/哈希复核确认锁、事务与证据归属,但有两项必修;不登记整体独立 PASS。

本轮在已批准“保持原预算池选择”的范围内修复:删除差旅提交预算上下文新增的 departmentId,保持公司/成本中心/业务日及 forUpdate 锁定;收紧上下文断言,并用部门池与全局池并存的合成路由用例验证原归属。新增 budget.pool_changed 的固定夹具文字,并反向核验全部 audience=user 注册码都有夹具,不从实现动态生成期望文本。

仅这两份测试需要验证:travel-request.errors.test.js、error-reason-client.test.js。主会话在用户明确分工前已运行红例:4失败/923通过(2文件),证明新增断言能抓到当前差旅上下文变化与夹具遗漏。用户随后明确要求测试交给Claude;修复后的测试由Claude执行,主会话不再运行。不重跑数据库全套、浏览器或全量门禁。保留差旅提交真实PG并发未测的范围说明。此前30文件交审包与运行日志原样保留;新证据独占 review-fixes-20260919 子目录。代码和测试已修改;绿例尚未执行,不记验证通过。交 Claude 执行两份定向测试并复核这两项增量,无需全量或浏览器。交接入口:review-fixes-20260919/claude-test-request.md。

预算池并发修复执行清单

首批修复验证状态(两项补审修正前,历史)

2026-09-19:用户已批准并完成本轮代码修复;真实隔离 PG 最终 28/28、受影响 Vitest 33 文件 526 项通过。后端全量225文件4446项及8个启用服务回归组也已通过;依用户对重复全量的反馈停止剩余浏览器验收。实际补丁独立只读复核待完成,发布前完整门禁仍待执行,不记整体任务完成或具备发布资格。证据根:artifacts/qa-governance/budget-pool-concurrency-20260919。

  • 核对独立报告、四处读改写及 HEAD 归因,确认采购事务外权威预检也须修复。
  • 写明并批准 PRD/design;官方 task 启动,3074 路径及旧 dirty 内容保存在 baseline.json 与 before/。
  • 完成调用者锁图:已有实体/工作流锁 → 稳定顺序预算池锁 → 最新判定与用量/流水;公务卡退款先锁授权记录再更新预算,消除反向依赖。
  • 保留原实现真实 PG 红例及单测红例,不覆盖中间失败。
  • 实施事务级 FOR NO KEY UPDATE、锁后重读/候选变化拒绝、四处写入保护和提交事务内权威判断;保留 P9 单次实体读取、原开关/金额/幂等/审计回滚。
  • 最终真实 PG 28/28、相关 Vitest 33 文件 526 项通过;错误注册表/锁序定向 4 文件 885 项通过(有重叠,不能相加)。
  • 在已有 backend-fastify-prisma.md 沉淀共享预算池锁序、锁后判定与事务客户端约定。
  • task/process/docs/governance/diff、22份改动脚本语法及 Prisma/frontend 静态检查完成;原有 docs22未登记提示保留。旧材料保护结果见 final-protection.json。
  • 新候选从 static 开始运行,输入冻结;已完成阶段如实保留,按用户反馈中止剩余浏览器;不重跑已完成阶段。
  • 准备正式发布候选时统一完成剩余完整门禁;本补丁阶段延期,原分层/预算/并发/零重试合同不降低。
  • 制作本轮 before/ → 最终输入增量及 claude-review-request.md;inline 不派 implement/check 代理、不自称独立通过。
  • 接回独立意见、修复两项必修并由Claude完成928项定向验证与只读补审;提交、发布、公网、编号与真实业务仍按原授权边界。

已完成验证与限制

  • pg-red.log:原实现 4 个真实并发失败、1 个回滚通过;unit-red.log 保留 helper 缺失时的预期红例。
  • pg-original-final-fixture.log:22 场景版 fixture 对原源码快照运行,3 通过/19 失败;其中包含新增 helper 缺失,不能把 19 全称为业务缺陷复现,也不是最终 28 场景版红跑。
  • pg-final-r2.log:最终 28/28;真实 Prisma service/实际 Fastify handler、73 个已有迁移、受管隔离 PG 和精确 owner 清理通过。并发靠观察真实锁等待,不用任意 sleep 推测。
  • unit-final.log:33 文件、526 项通过;unit-lock-order.log:4 文件、885 项通过。两者范围不同且重叠。
  • 覆盖新旧预检开关、显式/自动池、报销/采购交叉 block/warn、额度等待后降低、候选停用、重复调用、多池锁序、独立池、归零和流水/工作流历史/代理审计失败回滚。
  • 金额判断使用 Decimal,补验 0.10 + 0.20 = 0.30;Prisma 7.8.0 事务客户端允许嵌套 $transaction,以根客户端 $connect 防误用。公务卡授权/冲正实体→池顺序已用真实 PG 验证。
  • HTTP fixture 使用合成授权身份;不是生产认证证明。冻结差旅只作受管服务/合成 handler 验证,未恢复应用入口或冻结浏览器用例。
  • 浏览器使用物理独占缓存副本,710 个文件复制 SHA 一致,没有下载浏览器。旧 WebKit 派生 registry baseline FAIL 和历史 CSV 校验工具 NOT_RUN 继续保留。
  • 当前无提交、推送、部署、生产/ARM/真实配置密钥备份读取、真实通知付款或旧恢复重跑。

本轮完整门禁中止与测试成本控制

budget-full-r1:static PASS;full-local 前11阶段 PASS,包括后端225文件4446项通过/1原条件跳过、审批动作、8个启用服务回归组(7个原关闭组不计通过)、Prisma及前端typecheck/build。后端全量用时512.855秒。用户指出重复完整浏览器测试浪费后,主会话向本轮受管环境发SIGINT,停止浏览器;29通过、4中断、339未运行,零重试,无产品断言失败,但整轮不是通过。

原始回执保留 FAIL/exit130,localChecksPassed=false;不将中断解释为产品修复失败,也不伪造372/372。受管环境PASS,sourceUnchanged/repositoryUnchanged=true,owner容器及scratch均已清理。发现386=372本地+12公网+2冻结不变;33页/7组本轮未完成,不借旧结果冒充。

本次将后端共享事务修复直接扩展为所有页面重跑,成本控制不足。今后修复过程中按改动风险选择定向验证,批次稳定且准备发布时集中完整验收;任务记录、证据和未触及代码的说明更新不触发业务重跑。本轮已完成PG实际接口/事务检查、受影响单测及全量后端/服务回归,暂未发现追加浏览器检查的必要性,因此不再新开一轮。

停止后仅回填任务记录及ignored交审材料;最终输入与运行冻结输入的对应关系见 final-summary.json / final-protection.json。Claude需复核本轮实际预算补丁,不需要重新审核知识精简;完整请求位于同证据根 claude-review-request.md。独立发现BUDGET-LOST-UPDATE-01保持待复核关闭,生产历史用量未检查或回填。