8.9 KiB
8.9 KiB
| 1 | ID | Title | Description | Acceptance | Test_Method | Tools | Dev_Status | Review1_Status | Regression_Status | Files | Dependencies | Notes |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2 | R1 | 发布候选证据整理 | 固定首轮主线 release candidate,汇总 A1-A8 提交、已通过门禁、SKIP 原因、未部署状态和回滚口径;本 Issue 不改业务代码。 | 1) 明确 release candidate commit;2) A1-A8 与 B1-B5 状态可追溯;3) 本地已通过门禁和 live smoke 缺项清晰;4) 不写入真实账号、密钥或样票路径。 | 流程级验证:人工核对 git log、主 CSV、批次 CSV 和发布准备清单;命令:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-10_12-39-37-release-readiness-live-smoke.csv;命令:rg -n '537e608|liveSmokeReady=false|liveOcrReady=false|未部署|SKIP' docs/trialrun/release-readiness-checklist.md issues/2026-05-10_12-39-37-release-readiness-live-smoke.csv。 | git|python3|rg|manual | DONE | DONE | DONE | docs/trialrun/release-readiness-checklist.md|issues/2026-05-10_12-39-37-release-readiness-live-smoke.csv | [] | 已固定 RC=537e608;公网、企业微信真机、真实 OCR 未在本轮执行,必须等 R4/R5 条件满足后补测;回滚优先回到上一稳定提交或恢复上次部署包。 |
| 3 | R2 | 本地门禁与 Runbook 补强 | 把 A8 本地回归真实需要的本地服务参数、命令顺序、live smoke 检查和 SKIP 规则写入当前操作手册,避免后续误判。 | 1) Runbook 写明 SERVE_CLIENT_DIST、OCR_PROVIDER、IM_NOTIFIER_ENABLED、FIELD_ENCRYPTION_KEY 和项目 feature env 的本地门禁用途;2) live smoke 清单链接到发布准备清单;3) 不新增业务 API、数据库迁移或部署操作。 | 流程级验证:人工阅读 Runbook 能复现 A8 本地门禁准备;命令:rg -n '发布候选|SERVE_CLIENT_DIST|OCR_PROVIDER|IM_NOTIFIER_ENABLED|FIELD_ENCRYPTION_KEY|PROJECT_DOMAIN_ENABLED|release-readiness-checklist' docs/trialrun-runbook.md docs/trialrun/live-smoke-readiness.md docs/文档索引.md。 | rg|manual | DONE | DONE | DONE | docs/trialrun-runbook.md|docs/trialrun/live-smoke-readiness.md|docs/文档索引.md | ["R1"] | 仅补文档和清单;测试 FIELD_ENCRYPTION_KEY 只能用于本地回归,生产必须使用安全密钥且不得提交。 |
| 4 | R3 | 权限直连审计 | 在部署前用员工、主管、财务、管理员账号直连主路径和备用路径,确认导航隐藏没有掩盖服务端授权缺口。 | 1) 形成角色 x 路径允许/拒绝矩阵;2) 普通员工直连预算、AP、ERP、完整差旅、票据中心、合同台账、付款批次等备用路径不得获得越权数据;3) 若发现服务端权限缺口,先拆独立修复 Issue,不进入部署。 | 流程级验证:分别登录员工、主管、财务、管理员账号 -> 直连 /budgets、/ap、/system/integrations/erp、/travel-requests、/invoice-pool、/contracts-registry、/payment-batches 和对应 API -> 记录 HTTP 状态、页面提示和是否泄露数据;命令:cd client && npm run test:e2e -- permission-direct-access.spec.ts settings-governance.spec.ts login-portal-ux.spec.ts --workers=1。 | playwright|curl|manual | DONE | DONE | DONE | client/tests/e2e/permission-direct-access.spec.ts|docs/trialrun/permission-direct-access-audit.md|docs/trialrun/release-readiness-checklist.md|issues/2026-05-10_12-39-37-release-readiness-live-smoke.csv | ["R2"] | R3 已完成:新增权限直连 E2E 和审计记录;首次 E2E 因 127.0.0.1:3000 未启动失败,启动本地 OA 服务后重跑通过 10 passed;typecheck/build/CSV/diff check 通过;未发现权限泄漏,未改业务代码,R4 仍未执行。 |
| 5 | R4 | 部署预检 | 检查生产/公网环境变量、数据库迁移状态、备份、回滚命令、Caddy/systemd 状态、/ready 和前端资源版本;未经批准不部署。 | 1) 生产环境变量缺项和敏感项不打印;2) 数据库迁移状态明确且有备份/回滚路径;3) Caddy/systemd 或既有部署方式健康;4) /ready 与前端资源版本可核对;5) 若需要修改生产配置,必须先获得确认。 | 流程级验证:只读检查部署目录、服务状态和 /ready;命令:node scripts/qa/check-live-smoke-env.mjs;命令:LIVE_SMOKE_BASE_URL=https://oa.hyinda.com bash scripts/qa/run-live-smoke-readiness.sh;生产变更前必须停止等待批准。 | ssh|bash|node|manual | DONE | DONE | DONE | deploy/*|scripts/qa/*|docs/trialrun/release-readiness-checklist.md | ["R3"] | R4 完成:先发现远端运行时代码未对齐,后续按治理合同完成部署前备份、D3 受控同步和 D4 只读复检;远端关键运行时文件哈希已对齐,本机/公网 /ready 200,Prisma up to date,Caddy 正常,企业微信 config 不含 secret,公网 bundle 扫描 0 findings;R5 仍未执行。 |
| 6 | R5 | 公网企业微信和真实 OCR live smoke | 在 R4 预检通过且真实测试账号、企业微信配置和真实 OCR 样票齐备后,执行公网登录、企业微信入口、移动审批、报销/OCR 上传和通知 deeplink。 | 1) LIVE_SMOKE_* 从缺失变为可执行;2) 企业微信 config、OAuth 跳转和手机入口可验证;3) 真实 PDF OCR 样票上传能进入可解释终态;4) PC/自动化审批链证明 SMOKE002->SMOKE101->SMOKE201->SMOKE302/SMOKE301、自审禁止和 admin-only 不能审批;5) 企业微信移动体验验证入口、绑定、免登录、移动待办、报销详情、PDF 上传、底部导航和 deeplink;6) 缺配置时继续 SKIP,不得宣称真机或真实 OCR 通过。 | 流程级验证:node scripts/qa/check-live-smoke-env.mjs --strict;命令:LIVE_SMOKE_BASE_URL=https://oa.hyinda.com bash scripts/qa/run-live-smoke-readiness.sh;PC 审批链:公网 PC 登录 SMOKE002/SMOKE101/SMOKE201/SMOKE301/SMOKE302 或复用自动化证据验证正式链路;人工真机:手机企业微信工作台打开海音达工作台 -> 免登录 -> 移动待办/报销详情/PDF 上传/deeplink -> 记录结果。 | node|bash|playwright|manual | DONE | DONE | DONE | scripts/qa/*|docs/trialrun/live-smoke-readiness.md|docs/trialrun/real-device-public-checklist.md | ["R4"] | R5 completed 2026-05-11:最新 RC 795e976 已部署并完成 R4 只读复检;公网 live smoke 3 passed,真实 PDF OCR 不再 SKIP,终态为 ocr_failed/该发票已用于报销不能重复添加,证据 artifacts/qa-flow/live-smoke-readiness-20260511-001603;O3 PC/自动化审批链已完成并回填 DONE;公网自动移动视觉通过,截图 output/playwright/r5-live-mobile-wecom-visual/;用户确认真实企业微信工作台入口和免登录通过;站内通知与移动 deeplink 自动视觉通过,截图 output/playwright/r5-notification-deeplink-live/。2026-05-11 追加:b1ae41f 已部署,R4 复检通过;通知渠道切换为 R5-WECOM-APP-PERSONAL/wecom_app_message,旧 R50-MOCK-007334 已停用;strict 准入通过,live smoke 报告 artifacts/qa-flow/live-smoke-readiness-20260511-092236;SMOKE002->SMOKE101 新待办 936362d8-c4e0-454f-a589-9c9653bcbfda 的 delivery=wecom_app_sent/errcode=0/无 invaliduser,企业微信 UA 自动视觉通过,截图 output/playwright/r5-wecom-app-message-live/。用户已确认 oa_smoke_02 手机企业微信收到“海音达工作台”个人应用消息,标题正确;点击后首次进入提示进入工作台,进入后可看到移动审批,后续再次进入可直接看到移动审批;有消息通知但未观察到系统弹窗。主 R5 已回填 DONE/DONE/DONE;R6 继续 TODO,需单独规划和批准。 |
| 7 | R6 | 小范围试运行 | 公网和真机 smoke 通过后,只开放 2-3 个内部用户按清单试运行报销、请假、采购、审批、企业微信移动入口、付款和导出;反馈转新 Issue。 | 1) 试运行名单、角色、时间窗口和回滚联系人明确;2) 员工提交、审批人审批、财务付款/导出、企业微信 deeplink 回 OA 均有记录;3) 每日问题只登记和分级,不现场扩大 P2 功能范围;4) 试运行结束形成继续/回滚/修复判断。 | 流程级验证:员工提交报销/请假/采购 -> 主管或财务审批 -> 财务付款或导出 -> 企业微信通知 deeplink 回 OA -> 管理员检查审计和状态;人工记录问题、截图和处理结论。 | manual|playwright | TODO | TODO | TODO | docs/trialrun/release-readiness-checklist.md|docs/trialrun/manual-trialrun-report.md|issues/*.csv | ["R5"] | R6 准备合同已创建:issues/2026-05-11_10-23-41-r6-small-trialrun-prep.csv;R6-2 已固定 SMOKE002、SMOKE101、wangzhiling、wangshunli、默认窗口和回滚/问题负责人;R6-3 自动检查已通过,报告 artifacts/qa-flow/live-smoke-readiness-20260512-001722,通知渠道 wecom_app_message enabled,旧 mock disabled,备份可追溯。WZ6 已创建并只读核验 wangzhiling 真实财务候选账号为 active,角色 employee,finance,一次性密码仅保存在仓库外安全文件。主 R6 继续 TODO/TODO/TODO,因为 R6-4 到 R6-6 的真实小范围流程、每日收口和结论尚未执行;小范围试运行前不得扩 P2 预算、ERP、AI、完整差旅、复杂 BPM,反馈必须进入新 Issue CSV。 |