文件
hyb-oa/issues/2026-05-10_12-39-37-release-readiness-live-smoke.csv
T

9.5 KiB

1IDTitleDescriptionAcceptanceTest_MethodToolsDev_StatusReview1_StatusRegression_StatusFilesDependenciesNotes
2R1发布候选证据整理固定首轮主线 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|manualDONEDONEDONEdocs/trialrun/release-readiness-checklist.md|issues/2026-05-10_12-39-37-release-readiness-live-smoke.csv[]已固定 RC=537e608;公网、企业微信真机、真实 OCR 未在本轮执行,必须等 R4/R5 条件满足后补测;回滚优先回到上一稳定提交或恢复上次部署包。
3R2本地门禁与 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|manualDONEDONEDONEdocs/trialrun-runbook.md|docs/trialrun/live-smoke-readiness.md|docs/文档索引.md["R1"]仅补文档和清单;测试 FIELD_ENCRYPTION_KEY 只能用于本地回归,生产必须使用安全密钥且不得提交。
4R3权限直连审计在部署前用员工、主管、财务、管理员账号直连主路径和备用路径,确认导航隐藏没有掩盖服务端授权缺口。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|manualDONEDONEDONEclient/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 仍未执行。
5R4部署预检检查生产/公网环境变量、数据库迁移状态、备份、回滚命令、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|manualDONEDONEDONEdeploy/*|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 仍未执行。
6R5公网企业微信和真实 OCR live smoke在 R4 预检通过且真实测试账号、企业微信配置和真实 OCR 样票齐备后,执行公网登录、企业微信入口、移动审批、报销/OCR 上传和通知 deeplink。1) LIVE_SMOKE_* 从缺失变为可执行;2) 企业微信 config、OAuth 跳转和手机入口可验证;3) 真实 OCR 样票上传能进入可解释终态;4) 缺配置时继续 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;人工真机:手机企业微信工作台打开海音达工作台 -> deeplink 回 OA 审批或详情页 -> 记录结果。node|bash|playwright|manualDOINGTODOTODOscripts/qa/*|docs/trialrun/live-smoke-readiness.md|docs/trialrun/real-device-public-checklist.md["R4"]R5 smoke 密码重置合同 issues/2026-05-10_17-10-42-r5-smoke-password-reset-and-live-smoke.csv 已完成 K1-K5;SMOKE001/SMOKE002 已重置为仓库外安全凭据,登录标识按公网 auth 契约使用 smoke 邮箱;check-live-smoke-env --strict 通过;run-live-smoke-readiness.sh 通过,证据目录 artifacts/qa-flow/live-smoke-readiness-20260510-172421,公网 bundle findings=0,live smoke 3 passed,真实 OCR 样票不再 SKIP 且终态为重复发票/ocr_failed 可解释;pending OCR 辅助扫描因缺 DATABASE_URL 继续 SKIP;K4 审计 authSessions 555->572、auditLogs 258->263,发票/报销数量未新增;本轮 R5 真机反馈与正式运行口径代码收口已完成:issues/2026-05-10_17-47-39-r5-real-device-feedback-mobile-ux.csv M1-M5 DONE,后端禁止自审/admin-only 审批,移动底部 Tab 改为报销,头像中文首字;审批规约与正式组织口径文档同步已完成:issues/2026-05-10_19-24-06-approval-governance-doc-sync.csv G1-G5 DONE;O2 正式组织配置已完成并部署最新 RC,C2/C3 R4 复检通过;C4 自动化 live smoke/真实 OCR 再次通过,证据 artifacts/qa-flow/live-smoke-readiness-20260510-201403,SMOKE002 请假待办已确认分配给 majianyong。主 R5 仍保持 DOING/TODO/TODO:缺企业微信真机正式矩阵截图/录屏,缺 majianyong 实际审批、wangshunli 二审或主管本人申请人工验收;R6 保持 TODO。 S 合同 issues/2026-05-10_20-33-04-formal-smoke-test-accounts.csv 已完成 S1-S3:为避免真实负责人/主管/财务参与验收,已创建/更新 SMOKE101 测试主管、SMOKE201 测试负责人、SMOKE301 测试财务、SMOKE302 测试财务主管、SMOKE401 测试 HR;SMOKE002 已改挂 SMOKE101,SMOKE001 仅测试管理员且 admin 不代表业务审批权;后续 R5/O3 必须使用测试替身账号链路和企业微信测试成员,缺测试成员则企业微信原生身份验收 BLOCKED,R6 继续 TODO。 S4 已完成自动化收口:公网 live smoke/真实 OCR 再次通过,证据 artifacts/qa-flow/live-smoke-readiness-20260510-205136;测试替身正式链路已覆盖 SMOKE002->SMOKE101、SMOKE101->SMOKE201、SMOKE201 自身阻断、SMOKE001 admin-only 403、小额 finance 与大额 ceo/finance_mgr;主 R5 仍 DOING/TODO/TODO:缺企业微信测试成员真机工作台、移动审批、报销详情、通知 deeplink 截图/录屏记录;R6 继续 TODO。 R5 updated 2026-05-10:企业微信真机提交人与主管链路阶段性通过:oa_smoke_01->SMOKE002 绑定/免登录/提交通过,oa_smoke_02->SMOKE101 绑定/审批待办/审批详情结果通过;发现移动底部导航和报销详情深层页在 iPhone 11/Redmi K60 下不稳定,以及发票上传需 PDF-only 收口。已通过 issues/2026-05-10_22-44-06-r5-mobile-viewport-pdf-invoice.csv 在本地修复并验证,但尚未部署公网,R5 继续 DOING/TODO/TODO;部署、R4 复检、公网 live smoke、PDF 样票真实 OCR、企业微信真机复测和负责人/财务替身矩阵完成前不得进入 R6。
7R6小范围试运行公网和真机 smoke 通过后,只开放 2-3 个内部用户按清单试运行报销、请假、采购、审批、企业微信移动入口、付款和导出;反馈转新 Issue。1) 试运行名单、角色、时间窗口和回滚联系人明确;2) 员工提交、审批人审批、财务付款/导出、企业微信 deeplink 回 OA 均有记录;3) 每日问题只登记和分级,不现场扩大 P2 功能范围;4) 试运行结束形成继续/回滚/修复判断。流程级验证:员工提交报销/请假/采购 -> 主管或财务审批 -> 财务付款或导出 -> 企业微信通知 deeplink 回 OA -> 管理员检查审计和状态;人工记录问题、截图和处理结论。manual|playwrightTODOTODOTODOdocs/trialrun/release-readiness-checklist.md|docs/trialrun/manual-trialrun-report.md|issues/*.csv["R5"]小范围试运行前不得扩 P2 预算、ERP、AI、完整差旅、复杂 BPM;反馈必须进入新 Issue CSV。