文件
hyb-oa/.trellis/tasks/05-28-attachment-governance-deploy-smoke/prd.md
T

4.7 KiB
原始文件 Blame 文件历史

附件治理部署与公网烟测

Goal

将已提交的“业务附件受控入库 V1”安全部署到公网 OA,并完成迁移、健康检查、公网 smoke 和关键业务验证,确认报销附件、采购附件、付款回单附件的治理字段、下载用途和审计留痕在公网可用。

What I Already Know

  • 本轮待部署工作提交为 52e5284,任务已归档提交为 fef5966。
  • 业务附件 V1 包含 Prisma migration:20260528162000_business_attachment_governance_v1。
  • 部署入口为 SYNC_ENV=0 bash deploy/trialrun/deploy.sh,默认不覆盖远端 .env。
  • 部署脚本会在远端执行 npm run prisma:migrate:deploy、seed:config、seed:trialrun、npx prisma migrate status、/ready、external deps smoke 和 runtime smoke。
  • 部署后还需执行公网 live smoke 和面向附件治理的关键路径检查。
  • 生产部署、远端配置修改、数据库迁移和公网真实数据写入都需要明确批准。

Scope

  • 部署前本地静态门禁:部署环境契约、Prisma validate、前端 typecheck/build、Trellis governance。
  • 部署前确认迁移影响和回滚口径:新增列/索引,不重置数据库、不改写历史迁移、不覆盖远端 .env。
  • 获得明确批准后执行公网部署。
  • 部署后检查:
    • /ready
    • npx prisma migrate status
    • external deps smoke
    • runtime smoke
    • live smoke readiness
    • 公网前端资源文案扫描
    • 付款回单下载用途弹窗和审计日志
    • 报销/采购附件治理标签展示

Out Of Scope

  • 不迁移历史附件文件,不接 COS,不改存储驱动。
  • 不覆盖远端 .env,除非另行明确批准 SYNC_ENV=1。
  • 不执行真实付款、不导入银行流水、不写 ERP、不写企业微信。
  • 不使用真实敏感票据、合同正文、银行材料或完整账号做自动化证据。
  • 不做数据库 reset、迁移漂移修复或迁移历史重写。

Requirements

  • R1:部署前必须确认本地工作区干净,当前 commit 可追溯。
  • R2:部署前必须跑本地静态门禁和 Trellis governance,失败则不部署。
  • R3:部署必须使用 SYNC_ENV=0,保持远端 .env 原状。
  • R4:部署脚本执行远端迁移后必须确认 migrate status 通过。
  • R5:公网 smoke 失败时,停止并保留错误摘要,不继续宣称可以测试。
  • R6:附件治理专项验收必须覆盖付款回单下载用途、审计日志、报销/采购附件治理标签。
  • R7:报告不得输出 Secret、密码、完整账号、完整本地路径、附件原文或原始 payload。

Acceptance Criteria

  • 部署前静态门禁通过。
  • 获得明确“批准部署”后执行公网部署。
  • 部署脚本完成,远端 /ready 通过。
  • 远端 Prisma migration status 通过。
  • 公网 live smoke 或 readiness 按规则输出 PASS/SKIP/FINDINGS,结论清晰。
  • 业务附件专项验证通过或记录阻断项。
  • Trellis task validate、governance gate、git diff --check 通过。

Test Plan

  • node deploy/trialrun/validate-env-contract.js
  • cd server && npm run prisma:validate
  • cd client && npm run typecheck && npm run build
  • python3 ./.trellis/scripts/task.py validate 05-28-attachment-governance-deploy-smoke
  • node scripts/qa/check-trellis-governance.mjs
  • git diff --check
  • 获批后:SYNC_ENV=0 bash deploy/trialrun/deploy.sh
  • 部署后:LIVE_SMOKE_BASE_URL=https://oa.hyinda.com bash scripts/qa/run-live-smoke-readiness.sh

Technical Notes

  • 参考规范:.trellis/spec/hyb-oa/deployment-trialrun.md、.trellis/spec/hyb-oa/backend-fastify-prisma.md、.trellis/spec/hyb-oa/security-privacy.md。
  • 参考手册:docs/试运行与自动化验证手册.md。
  • 用户已明确批准部署;部署使用 SYNC_ENV=0,未覆盖远端 .env。
  • 首次部署应用迁移 20260528162000_business_attachment_governance_v1 成功;二次部署显示 no pending migrations,migrate status 为 up to date。
  • live readiness 结论 PASS;OCR 样本为可解释的 duplicate_or_same_invoice 类结果,readiness 脚本判定通过。
  • 专项抽查:付款回单附件返回 approved/confidential/receipt/reason_required,无用途下载 400,带用途下载 200,审计日志命中 PAYMENT_BATCH_RECEIPT_DOWNLOADED 且包含治理元数据。
  • 页面抽查:付款批次回单卡片显示“已通过 / 回单 / 保密 / 需填用途”,点击下载会弹出“填写下载用途”对话框,继续下载产生浏览器 download 事件。
  • 报销/采购公网现有数据未找到附件样本;本轮未为补样本创建真实业务单据。报销详情 select 缺失治理字段的问题已在 33b1232 修复并完成二次部署,采购详情 select 已包含治理字段。