文件
hyb-oa/.trellis/tasks/09-18-local-concurrency-product-fixes/prd.md
T
wangsli 1f8d5b658a 完善借款、编号、付款与预算并发及验收(09-06-release-gate-integrity)
汇总已落盘的借款本金与还款、兼容历史编号的周期化编号、付款责任与回单核验、报销进度和排序、PWA/采购事务、错误原因与日期校验及ERP退役。
统一共享预算池锁序和锁后判断,恢复差旅原预算选择,补原因码固定夹具及反向完整性检查。
纳入配套迁移、测试、受管QA、分层验收合同、规约及任务记录;原始证据留在ignored artifacts。

关联任务:09-17-company-loan-principal-repayment、09-17-erp-exclusive-retirement、09-18-reimbursement-periodic-numbering、09-08-reimbursement-payment-closeout、09-18-local-concurrency-product-fixes、09-19-budget-pool-concurrency、09-05-error-explainability-payment-readiness。
预算补审由Claude定向验证2文件928项通过,原4446/28及r6结果仍仅对应各自历史输入;本轮未重跑测试。
完整新候选门禁、R1真实入口接入与12项公网义务仍开放。生产编号未启用、差旅仍冻结;不推送、不部署,不宣称发布资格。
2026-09-19 13:11:04 +08:00

4.7 KiB
原始文件 Blame 文件历史

PWA 更新事件与本地并发产品缺陷最小修复

来源与批准范围

用户已批准按余项连续推进,未规划内容先落方案。09-06 G18两次同样的四文件4-worker并发验证复现采购500及PWA45秒不收敛;环境与输入/清理PASS。此task拥有两个在用产品缺陷的最小本地修复,09-06仍拥有完整覆盖合同。不能改变R2/R1或自动取得真实操作与发布授权。

Goal

修复已复现的 PWA 更新后页面不收敛和采购创建事务过期,在原并发、预算与业务规则下完成本地验证。

Scope

  • PWA:页面已经受A控制,B worker安装/激活并接管后,当前普通业务页自动收敛到B。新版本监听须在异步注册前建立,不能只依赖Workbox注册完成后的updatefound/activated。首次安装不重复刷新;登录/改密/找回/重置密码页保留输入并使用既有更新提示,用户选择后才刷新;前台版本提示原合同不变。

  • 不在更新过程中删除刚安装的Workbox precache;旧独有预缓存由worker激活清理。运行时缓存清理与显式登出/人工刷新清理区分,保留后者原行为。

  • 采购创建:写事务只创建草稿及其审计,最小字段返回后提交,再按相同详情select读响应。权限、切换控制、默认字段、成功响应、审计内容和二者原子性不变;不提高5000ms事务预算或绕过任何审计。

  • G20续修:资产创建的关系详情读取移至原业务写事务提交后,保留事务内校验、编号、资产与领用写入及原异步审计语义。

  • G20续修:单个账号创建的原cost12哈希移至事务开始前,保留权限/引用校验、账号/角色/审计原子性及原提交后同步;不改批量导入哈希位置。

  • P9:修复本地已复现的报销提交事务超时。先核事务步骤耗时/数据库等待及已编号提交路径,再定稿最小优化;保持FOR UPDATE、权限、票据金额、预算、审批历史和审计的同事务一致性,不提高5000ms预算或增加重试。

  • P10:g20-full-r5暴露采购PATCH保存草稿P2028(6529/5000ms),沿用已批准的在用缺陷最小修复范围:保留锁、所有权/状态、主数据、项目关联、明细替换、金额/两次父记录更新顺序及审计同事务,只把响应详情投影移至提交后,不增加重试或超时。

Out of Scope

保留现有差异及旧冻结包。仅本地合成、禁止外联/真实配置密钥备份/生产ARM/恢复/通知付款/提交推送部署归档。

Acceptance

  • P1:本地 production 构建 A→B同profile,原45秒窗口、无测试刷新/清缓存,B文档/active控制器/worker摘要/实际新资源及旧缓存清理共同成立,零页面/静态404/登录回退/重载循环。

  • P2:可执行生命周期回归覆盖注册Promise未完成时控制器已切换、首次安装、重复事件、worker未激活/失效、认证页延后刷新;已有前台提示与登出缓存清理合同保持。

  • P3:正式采购路由回归证明草稿/审计同事务、失败不返回成功,详情仅提交后读取、完整响应保持;原采购提交/附件/审批及预算回归不退化。

  • P4:不带预载观察器的原四文件4-worker/零重试/原预算运行通过;仅证明该组,不能关闭旧full-r2或全负载可靠性。

  • P5:前端typecheck/build、Prisma/受影响语法、任务治理和保护检查通过;2026-09-19代码/治理验证保持通过,但新增一处旧WebKit派生registry保护异常未恢复,故此合取项保持开放;只读独立review仍按inline限制单列PENDING,不虚报。

  • P6:资产原响应/可选领用/异步审计语义与提交前后失败边界通过;原资产整链原配置重验。

  • P7:单个账号原cost12在事务前完成,账号/角色/审计保持同事务;原写入/敏感角色/导入回归及R75完整文件通过。

  • P8:续修后的完整候选从static重新执行并如实记录,不用旧定向证据抵扣完整验收。

  • P9:报销提交的重复读取/无效事务开销按证据优化,确定性边界回归和真实合成R75通知原整文件通过;已编号提交不重新取号,失败事务不遗留部分审批/预算写入。

  • P10:保存草稿写入/审计仍原子,完整响应投影只在提交后读取;写入/明细/审计/commit失败不读取、不假成功,提交后详情失败不得宣称回滚或自动重试。原采购主链原预算重验。

Test Plan

使用现有server Vitest与浏览器专用tsc;复用受管retained-local四文件命令。精确命令/结果落implement与本轮独占证据,不读取真实输入、不联网安装依赖。