文件
hyb-oa/.trellis/tasks/08-28-reimbursement-detail-material-preview-deploy/prd.md
T

4.6 KiB

报销详情修复部署与公网验证

Goal

在 Task A 与非参与人只读投影修复都完成后,冻结新的已发布候选,执行受控生产部署、显式迁移状态校验、角色化公网检查和固定回滚验证。

Current Planning Gate

  • 原候选 174cb7a 只包含撤回投影与 EXIF 尺寸修复,未覆盖已确认的非参与人草稿/驳回维护动作和服务端解绑资格问题,因此不再作为最终部署基线。
  • 本任务保持 planning,阻塞于 08-28-reimbursement-nonparticipant-readonly-projection 的实施、只读权限复核和工作提交。
  • 阻塞解除后再补齐正式 Requirements、Acceptance Criteria、design.md 与 implement.md,并把新的候选 SHA、回滚到 f178aa0 的触发条件/动作、迁移 pre/post status、公网角色和材料预览检查写死后交付审查。
  • 当前未经批准不得推送、部署、写生产或归档 Task A。

Scope

  • 在 P0 只读投影修复完成并提交后,冻结包含两轮报销修复的候选 SHA;候选必须进入远端上游并通过来源校验。
  • 使用现有 deploy/trialrun/deploy-existing.sh 完成生产只读 preflight、existing 模式部署、init、迁移状态复核、运行时 smoke、构建标识和备份合同刷新。
  • 部署后核验财务/管理员非参与人只读视图、owner 维护/撤回合同和材料合并预览;不把真实票据内容写入证据。
  • 固定回滚基线为 f178aa0;部署切换后的任一必需门禁失败时执行同一正式入口回滚应用代码,不回退数据库 migration。

Requirements

  • 部署前必须显式复核候选提交范围、上游包含关系、生产身份、existing 数据目录、待迁移清单和回滚窗口;来源未发布、工作区不干净或身份不唯一时停止。
  • 即使候选没有新增 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

  • 非参与人只读投影修复已实施、复核和提交,新的部署候选 SHA 已冻结。
  • 完整部署 PRD、设计、实施和回滚清单经用户审查批准。
  • 最终候选已发布且 /ready、bundle marker、迁移状态、runtime/external smoke 和备份合同刷新全部通过。
  • 财务/管理员非参与人无报销人维护动作,owner 既有维护合同正常,材料合并预览可打开且页序和比例正常。
  • 任一必需门禁失败时已按固定动作回滚到 f178aa0 并完成回滚后复核,未临场选择其他基线。
  • 公网检查通过后才报告可测试并归档相关任务。

Out of Scope

  • 在部署任务内继续修改报销业务代码、权限、状态机、schema、migration 或生产配置。
  • 处理 BX-20260828-0017 票面差额、退回、付款、重传或任何其他真实单据写入。
  • Task B 产品改造、r102 测试债、企业微信写入、真实付款、数据库 reset 或附件清理。
  • 为 pdf-v2 执行缓存迁移或清理;缓存仅存在进程内。

Test Plan

  • 部署前:候选范围/上游来源、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。