6.4 KiB
6.4 KiB
报销详情修复部署与公网验证
Goal
在 Task A 与非参与人只读投影修复都完成后,冻结新的已发布候选,执行受控生产部署、显式迁移状态校验、角色化公网检查和固定回滚验证。
Current Planning Gate
- 原候选
174cb7a只包含撤回投影与 EXIF 尺寸修复,未覆盖已确认的非参与人草稿/驳回维护动作和服务端解绑资格问题,因此不再作为最终部署基线。 08-28-reimbursement-nonparticipant-readonly-projection已实施、只读复核并形成业务提交e8d6766;部署工具只能以干净工作区的当前HEAD作为来源,因此旧口径8c28e15作候选失效。- 本次 PRD 修订提交完成后,以当时最终
HEAD冻结候选,并在外部审批记录中写死完整/短 SHA;冻结后到部署收口前不得再产生任何提交(包括文档提交)、untracked 文件或工作区修改。若 HEAD 或工作区变化,原审批失效,必须重新冻结和审查。 - Requirements、Acceptance Criteria、
design.md与implement.md已写明回滚到f178aa0的触发条件/动作、迁移 pre/post status、公网角色和材料预览检查;本任务继续保持planning,等待用户先审查候选并单独批准推送,再单独批准生产部署。 - 当前未经批准不得推送、部署、写生产或归档 Task A。
Scope
- 在 P0 只读投影修复完成并提交后,以最终干净
HEAD冻结包含两轮报销修复的候选 SHA;候选冻结后禁止任何仓库变化。 - 推送是独立、显式授权的发布门:取得单独推送批准后,只推送已冻结候选所在分支,再确认 upstream 包含该 SHA 且 provenance 未使用 unpublished override。推送成功不等于批准部署。
- 使用现有
deploy/trialrun/deploy-existing.sh完成生产只读 preflight、existing 模式部署、init、迁移状态复核、运行时 smoke、构建标识和备份合同刷新。 - 部署后核验财务/管理员非参与人只读视图、owner 维护/撤回合同和材料合并预览;不把真实票据内容写入证据。
- 固定回滚基线为
f178aa0;部署切换后的任一必需门禁失败时执行同一正式入口回滚应用代码,不回退数据库 migration。
Requirements
- 候选冻结时必须确认工作区完全干净,以当前分支
HEAD作为唯一候选并记录 SHA;之后任何提交、tracked/untracked 变化或 HEAD 漂移都使候选失效。 - 推送必须另行获得明确批准。推送后必须确认当前分支有 upstream、候选是 upstream 的祖先,并以默认严格模式通过
check-source-provenance.mjs;不得使用allowUnpublished或接受overrideUsed: true。 - 只有候选已推送且来源校验通过后,才可请求另一项独立的生产部署批准。部署批准不得从 PRD 审批或推送批准中推定。
- 部署前必须显式复核候选提交范围、生产身份、existing 数据目录、待迁移清单和回滚窗口;来源未发布、工作区不干净、HEAD 不等于已批准候选或身份不唯一时停止。
- 即使候选没有新增 migration,init 后仍必须显式运行并记录 Prisma migration status;不得因“无 schema 变更”跳过。
SYNC_ENV=0,不覆盖生产环境文件;不 reset 数据库、不覆盖 DB/附件目录、不清理pdf-v2进程内缓存,应用重启自然失效。- 公网
/ready和前端 bundle marker 必须等于最终候选短 SHA;迁移、runtime/external smoke、备份合同刷新和角色化检查全部为必需门禁。 - 非参与人只读检查不得写业务数据。owner 撤回成功只能使用专用合成单据并在最终部署授权中单列生产测试写入;没有合格合成单据时该项保持阻断,不得操作真实报销。
- 切换前门禁失败只中止部署;切换后必需门禁失败则回滚到
f178aa0,再复核该基线/ready、bundle、migration status、runtime smoke 和数据挂载连续性。 - 公网检查全部通过前不告知用户可以测试;通过后先归档部署子任务,再按真实完成证据归档 Task A。
Acceptance Criteria
- 非参与人只读投影修复已实施、复核并提交为
e8d6766。 - 本次 PRD 修订提交完成后的最终干净
HEAD已冻结,具体 SHA 已在外部审批记录中写死,且冻结后无任何仓库变化。 - 完整部署 PRD、设计、实施和回滚清单经用户审查;用户已单独批准推送冻结候选。
- 推送完成,upstream 包含冻结候选,严格 provenance 通过且
overrideUsed不为 true。 - 用户在来源校验通过后另行明确批准生产部署。
- 最终候选的
/ready、bundle marker、迁移状态、runtime/external smoke 和备份合同刷新全部通过。 - 财务/管理员非参与人无报销人维护动作,owner 既有维护合同正常,材料合并预览可打开且页序和比例正常。
- 任一必需门禁失败时已按固定动作回滚到
f178aa0并完成回滚后复核,未临场选择其他基线。 - 公网检查通过后才报告可测试并归档相关任务。
Out of Scope
- 在部署任务内继续修改报销业务代码、权限、状态机、schema、migration 或生产配置。
- 处理
BX-20260828-0017票面差额、退回、付款、重传或任何其他真实单据写入。 - Task B 产品改造、r102 测试债、企业微信写入、真实付款、数据库 reset 或附件清理。
- 为
pdf-v2执行缓存迁移或清理;缓存仅存在进程内。
Test Plan
- 冻结与推送:干净工作区、当前分支
HEAD、外部审批记录中的固定 SHA、独立 push 批准、upstream 祖先关系和严格 provenance(禁止 unpublished override)。 - 部署前:独立部署批准、候选范围/上游来源、
check-existing-deployment.sh、production identity/preflight、期望待迁移清单和回滚窗口。 - 部署入口:
deploy-existing.sh的 existing 模式、SYNC_ENV=0、init、pre/post Prisma status、runtime/external smoke、/ready、bundle marker 和合同 refresh。 - 公网角色:财务/管理员非参与人只读、owner 维护/撤回、材料合并预览与原件降级;只保留脱敏结论。
- 回滚演练:从受控干净来源发布
f178aa0,复核构建标识、迁移状态、运行 smoke、挂载和公网入口。 - 治理:task validate、Trellis governance、敏感检查和
git diff --check。