文件
hyb-oa/issues/2026-05-13_17-30-00-qaops8-test-release-ops.csv
T

23 行
20 KiB
CSV

ID,Title,Description,Acceptance,Test_Method,Tools,Dev_Status,Review1_Status,Regression_Status,Files,Dependencies,Notes
QAOPS8-0,QAOPS8 连续合同建档,"建立 QAOPS8 测试发布运维连续型合同,把测试覆盖、发布门禁、备份恢复、SLO 和上线准备放入同一 CSV。","1) 本 CSV 校验通过;2) 不改业务代码;3) 不启动部署或真实试运行;4) 后续任务不拆散到一次性 CSV;5) R7E 人工确认闸门不被绕过。","流程级验证:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-13_17-30-00-qaops8-test-release-ops.csv;人工核对仅 QAOPS8-0 为 DONE。",python3|manual,DONE,DONE,DONE,issues/2026-05-13_17-30-00-qaops8-test-release-ops.csv,[],参考 DORA 指标、Google SRE SLO、Azure safe deployment、GB/T 8566-2022 和 GB/T 22239-2019;本合同只建立工程治理任务,不声明标准合规。
QAOPS8-1,当前测试门禁台账,"盘点当前测试规约、试运行手册、脚本和历史证据,形成 QAOPS8 的当前门禁台账。","1) 列出本地、公网匿名、带凭据、企业微信真机四类门禁;2) 明确哪些是当前硬门禁;3) 明确哪些是历史证据;4) 不把 SKIP 解释为 PASS。","流程级验证:rg -n '最小回归|公网匿名|带凭据|真机|SKIP|门禁' docs/测试规约与回归门禁.md docs/试运行与自动化验证手册.md docs/trialrun/人工试运行报告.md。",rg|manual,DONE,DONE,DONE,docs/测试规约与回归门禁.md|docs/试运行与自动化验证手册.md|docs/trialrun/人工试运行报告.md,"[""QAOPS8-0""]",rg 复核通过;docs/测试规约与回归门禁.md 已明确本地、公网匿名、带凭据、企业微信真机四类门禁;SKIP 不等于 PASS。
QAOPS8-2,历史 E2E 专项归类,"把历史 E2E、移动视觉、R108/R109、R6/MUD6/WCM6、MIF7/MIF7T 等专项归类为当前门禁、历史证据或待修测试初始化。","1) 每类专项有当前状态;2) 历史专项不直接派工;3) 待修专项有后续归属;4) 当前门禁仍能被复现。","流程级验证:rg -n 'R108|R109|MUD6|WCM6|MIF7|MIF7T|历史证据|当前门禁' docs/测试规约与回归门禁.md docs/trialrun/人工试运行报告.md issues/*.csv。",rg,DONE,DONE,DONE,docs/测试规约与回归门禁.md|docs/trialrun/人工试运行报告.md|issues/*.csv,"[""QAOPS8-1""]",rg 复核通过;R108/R109 归为历史证据和待修测试初始化;R6/MUD6/WCM6 作为当前移动基础回归;MIF7/MIF7T 作为已收口证据。
QAOPS8-3,业务流分段稳定化,"稳定核心业务流分段执行策略,降低长组合回归在工具会话中的不稳定性。","1) reimbursement、approval、leave、procurement、governance 分组清楚;2) 分段 PASS 可作为组合证据;3) 失败时能定位到分组;4) 不降低业务流程验收口径。","流程级验证:BUSINESS_FLOW_GROUPS=reimbursement,approval,leave,procurement,governance bash scripts/qa/run-business-flow-gates.sh local;若环境不满足则记录 SKIP 条件和分段命令。",bash|manual,DONE,DONE,DONE,scripts/qa/run-business-flow-gates.sh|artifacts/qa-flow,"[""QAOPS8-1""]","QA_ISSUE_ID=QAOPS8-3 QA_DB_PREFIX=hyb_oa_qaops8 BUSINESS_FLOW_GROUPS=reimbursement,approval,leave,procurement,governance bash scripts/qa/run-business-flow-gates.sh local 通过;报告 artifacts/qa-flow/business-flow-20260513-174606/summary.txt;五组 PASS。"
QAOPS8-4,Playwright 初始化稳定化,"复核 Playwright 初始化、登录态、seed 数据和测试隔离,减少视觉和流程 E2E 假失败。","1) 初始化失败可分类为代码、测试桩、环境或数据问题;2) 不用重试掩盖缺陷;3) 截图和 trace 路径稳定;4) 移动矩阵能按视口复跑。","流程级验证:cd client && npx playwright test tests/e2e/dg7-mobile-information-dedupe.spec.ts --workers=1 --reporter=list;无法执行时记录前置条件。",playwright|manual,DONE,DONE,DONE,client/tests/e2e|output/playwright,"[""QAOPS8-2""]",E2E_BASE_URL=http://127.0.0.1:5173 npx playwright test tests/e2e/dg7-mobile-information-dedupe.spec.ts --workers=1 --reporter=list 通过;5 passed;Vite 临时服务已关闭。
QAOPS8-5,公网匿名门禁脚本复核,"复核公网匿名健康、public bundle 和匿名页面门禁脚本,避免把本地通过误认为公网可用。","1) /ready 与 public bundle 分开记录;2) 匿名检查不依赖凭据;3) 失败不进入试运行;4) 结果写入报告或证据路径。","流程级验证:curl -fsS https://oa.hyinda.com/ready;PUBLIC_BASE_URL=https://oa.hyinda.com node scripts/qa/check-public-bundle-copy.mjs。",curl|node,DONE,DONE,DONE,scripts/qa/check-public-bundle-copy.mjs|docs/trialrun/人工试运行报告.md,"[""QAOPS8-1""]",curl /ready 返回 ok=true;public bundle scanned=57 focused=4 findings=0;匿名检查未使用凭据。
QAOPS8-6,带凭据 live readiness 稳定化,"稳定带凭据 live smoke、真实 OCR 和角色账号检查的执行边界。","1) 带凭据门禁与匿名门禁分离;2) 缺凭据时标 SKIP;3) 不打印 token、密码或隐私;4) 真实 OCR 与 pending OCR 结论分开。","流程级验证:LIVE_SMOKE_BASE_URL=https://oa.hyinda.com QA_ISSUE_ID=QAOPS8 bash scripts/qa/run-live-smoke-readiness.sh;无凭据则记录 SKIP。",bash|manual,DONE,DONE,DONE,scripts/qa/run-live-smoke-readiness.sh|docs/trialrun/公网LiveSmoke准备清单.md,"[""QAOPS8-5""]",LIVE_SMOKE_BASE_URL=https://oa.hyinda.com QA_ISSUE_ID=QAOPS8 bash scripts/qa/run-live-smoke-readiness.sh 完成;报告 artifacts/qa-flow/live-smoke-readiness-20260513-180330;公网和企业微信配置探测正常;pending OCR、live smoke、真实 OCR 因缺少 DATABASE_URL、凭据或样票按规则 SKIP。
QAOPS8-7,真实 OCR 测试策略,"定义真实 OCR 测试的数据授权、样票脱敏、provider 判定、pending OCR 和失败重试策略。","1) mock 与真实 provider 结论分离;2) 样票有授权或脱敏;3) pending OCR 可解释;4) 失败不阻塞无关流程但不得写 PASS。","流程级验证:node scripts/qa/check-live-smoke-env.mjs;node scripts/qa/check-pending-ocr.mjs --thresholds=2,5,10;缺环境时记录 SKIP。",node|manual,DONE,DONE,DONE,scripts/qa/check-live-smoke-env.mjs|scripts/qa/check-pending-ocr.mjs|docs/报销发票附件规则.md,"[""QAOPS8-6""]","LIVE_SMOKE_BASE_URL=https://oa.hyinda.com node scripts/qa/check-live-smoke-env.mjs 通过公网和企业微信配置探测;node scripts/qa/check-pending-ocr.mjs --thresholds=2,5,10 因缺 DATABASE_URL 按规则 SKIP;真实 OCR 执行仍需授权 PDF 样票和凭据。"
QAOPS8-8,移动矩阵回归策略,"把移动浏览器和企业微信 WebView 视口矩阵固定为上线前可复跑策略。","1) 覆盖 320、360、375、390、393、414、430 关键宽度;2) 企业微信 UA 与真机确认分离;3) 截图路径明确;4) 新增移动页必须进入矩阵。","流程级验证:cd client && npx playwright test tests/e2e/dg7-mobile-information-dedupe.spec.ts --workers=1 --reporter=list;人工核对真机清单。",playwright|manual,DONE,DONE,DONE,client/tests/e2e|docs/trialrun/真机公网测试清单.md|output/playwright,"[""QAOPS8-4""]",复用 QAOPS8-4 Playwright 证据 5 passed;output/playwright/mobile-ia-flow-remediation 当前有 22 个截图文件;真机清单已明确自动化不能替代未来 R7E 真机验收。
QAOPS8-9,证据归档规范,"定义 QAOPS8 证据路径、命名、保留和引用规则,避免报告、截图、日志散落。","1) 自动化报告、截图、命令输出和人工结论有稳定路径;2) 不提交大体积临时产物;3) Issue Notes 可追溯证据;4) 隐私和密钥不入库。","流程级验证:rg -n 'output/playwright|artifacts/qa-flow|证据|截图|trace|日志' docs/测试规约与回归门禁.md docs/试运行与自动化验证手册.md issues/2026-05-13_17-30-00-qaops8-test-release-ops.csv。",rg|manual,DONE,DONE,DONE,docs/测试规约与回归门禁.md|docs/试运行与自动化验证手册.md|artifacts|output,"[""QAOPS8-1""]",rg 复核通过;.gitignore 已忽略 artifacts、output、client/test-results 和 client/playwright-report;证据只在 Issue Notes 引用路径。
QAOPS8-10,备份策略,"收敛上线前备份策略,包括数据库、上传附件、配置、部署包和恢复责任。","1) 备份对象清楚;2) 频率和保留期清楚;3) 密钥和配置备份不入库;4) 备份成功有可验证证据。","流程级验证:人工核对 docs/trialrun/OPS7运维交接Runbook.md 与 docs/ops/非功能基线.md;不得执行生产备份命令。",manual|rg,DONE,DONE,DONE,docs/trialrun/OPS7运维交接Runbook.md|docs/ops/非功能基线.md,"[""QAOPS8-0""]",已在 OPS7 Runbook 增加 QAOPS8 备份策略基线;覆盖数据库、附件、运行配置、部署包、触发频率、保留口径、验证方式和仓库记录规则;未执行生产备份命令。
QAOPS8-11,恢复演练方案,"设计恢复演练方案,明确 RTO、RPO、演练窗口、验证步骤和回滚边界。","1) 演练目标和范围明确;2) 不在未确认时改生产;3) 恢复验证步骤可复现;4) 失败有停止条件。","流程级验证:人工核对恢复演练步骤;必要时在隔离环境演练并记录证据。",manual,DONE,DONE,DONE,docs/trialrun/OPS7运维交接Runbook.md|docs/ops/非功能基线.md,"[""QAOPS8-10""]",已在 OPS7 Runbook 增加 QAOPS8 恢复演练方案;执行前必须确认窗口、负责人、回滚联系人和停止条件;RTO/RPO 先记录演练实测值,不承诺正式 SLA。
QAOPS8-12,SLO 和错误预算,"建立 OA MVP 当前可用性、接口成功率、关键业务流成功率和错误预算口径。","1) SLI、SLO、统计窗口和错误预算清楚;2) 不承诺无法监控的指标;3) 与用户体验和试运行风险对应;4) 违反预算有动作。","流程级验证:rg -n 'SLO|错误预算|SLI|可用性|延迟|成功率' docs/ops/SLO错误预算.md docs/测试规约与回归门禁.md。",rg|manual,DONE,DONE,DONE,docs/ops/SLO错误预算.md|docs/测试规约与回归门禁.md,"[""QAOPS8-1""]",已在 SLO 错误预算文档补 QAOPS8 关键业务流门禁成功率 SLI 和 SLO-D;作为上线门禁口径,不替代正式线上 SLA。
QAOPS8-13,DORA 交付指标基线,"建立部署频率、变更前置时间、变更失败率和恢复时间的轻量采集口径。","1) 四项指标定义清楚;2) 能从 git、Issue、部署记录或事故记录追溯;3) 不为指标牺牲交付质量;4) 只做轻量统计。","流程级验证:rg -n 'DORA|部署频率|前置时间|变更失败率|恢复时间|CFR|MTTR' docs/ops/DORA指标.md docs/开发交付与变更管理规约.md。",rg|manual,DONE,DONE,DONE,docs/ops/DORA指标.md|docs/开发交付与变更管理规约.md,"[""QAOPS8-1""]",已在 DORA 指标文档补部署频率、变更前置时间、变更失败率、服务恢复时间四指标;当前轻量追溯 git、Issue、部署记录和事故记录。
QAOPS8-14,安全发布前检查,"建立发布前安全检查,包括权限、敏感信息、日志、配置、依赖和等保相关底线。","1) 不泄露 token、密码、票据和个人隐私;2) 权限直连审计有证据;3) 日志不记录敏感明文;4) 高风险项进入 Go/No-Go。","流程级验证:node scripts/qa/audit-docs.mjs --check-links;rg -n 'password|token|secret|密钥|权限直连|敏感' docs scripts issues。",node|rg|manual,DONE,DONE,DONE,scripts/qa/audit-docs.mjs|docs|scripts|issues,"[""QAOPS8-9""]",node scripts/qa/audit-docs.mjs --check-links 为 errors=0 warnings=0;全量 audit-docs 为 errors=0 warnings=8;已知 QA 脚本本地测试哨兵值和未登记 docs 作为 Go/No-Go 复核项,不声明等保测评完成。
QAOPS8-15,发布 Runbook 收敛,"把发布前检查、部署步骤、验证步骤、暂停条件和沟通责任收敛到现有 Runbook。","1) 发布步骤可按顺序执行;2) 预检、部署、验证、暂停、回滚边界清楚;3) 不新增冲突文档;4) 用户可审计。","流程级验证:rg -n '发布|预检|部署|验证|暂停|回滚|Runbook' docs/trialrun/发布试运行准备清单.md docs/trialrun/OPS7运维交接Runbook.md docs/试运行与自动化验证手册.md。",rg|manual,DONE,DONE,DONE,docs/trialrun/发布试运行准备清单.md|docs/trialrun/OPS7运维交接Runbook.md|docs/试运行与自动化验证手册.md,"[""QAOPS8-5"",""QAOPS8-6"",""QAOPS8-10""]",rg 复核通过;发布前检查、部署步骤、部署后验证、暂停条件、回滚边界和责任记录均在现有 Runbook 中;未新增冲突文档。
QAOPS8-16,回滚演练窗口,"确认回滚演练窗口、负责人、触发条件、数据保护和恢复验证步骤。","1) 窗口和负责人确认;2) 回滚脚本或步骤有只读预检;3) 数据保护优先;4) 演练结果可追溯。","流程级验证:人工确认回滚窗口;必要时先在非生产环境执行。",manual,DONE,DONE,DONE,docs/trialrun/OPS7运维交接Runbook.md,"[""QAOPS8-11"",""QAOPS8-15""]",完成:按用户授权采用推荐方案;窗口暂定 2026-05-14 19:30-20:30 Asia/Shanghai 即 R7E 首日每日收口后;负责人和暂停回滚决策人 wangshunli;范围为非生产恢复演练优先 生产只读回滚 dry run;步骤为备份清单核对 隔离库恢复 /ready 登录核心流程只读验证 生产回滚步骤只读复盘;触发条件为 P0 数据损坏 发布阻断或公网关键门禁失败;停止条件为备份不完整 权限不明确 影响生产或责任人不在线;本行只确认窗口和边界 未执行数据库恢复 生产回滚 服务切换或破坏性命令;真实恢复或生产回滚执行前仍需再次明确批准。
QAOPS8-17,上线 Go No-Go 清单,"建立上线或扩大试运行 Go/No-Go 清单,统一本地、公网匿名、带凭据、企业微信真机和人工验收结论。","1) Go、No-Go、Pause 条件明确;2) 阻断问题为 0 或有明确延期;3) R7E 人工验收不被自动化替代;4) 结论写入 Issue 和报告。","流程级验证:人工核对 R7E 结论、QAOPS8 门禁、发布清单和问题清单。",manual,DONE,DONE,DONE,docs/trialrun/发布试运行准备清单.md|docs/trialrun/人工试运行报告.md|issues/*.csv,"[""QAOPS8-15"",""QAOPS8-16""]",当前清单已形成:2026-05-14 最新代码 4b14c92 已部署到试运行环境且 R7E-8 完成;本轮无人工自动化补测结果为公网 /ready 通过 public bundle findings=0 live smoke env ready 授权 PDF 可读,R7E preflight 通过 报销 BX-20260514-0016 创建上传提交审批通过 请假通过 采购 CG-20260514-0005 含附件 PC/移动通过 移动浏览器通过 WeCom UA 模拟通过;审批边界 approval-boundary 通过,申请人和 admin-only 审批接口均被拒绝且经理正常收尾;财务 finance-closeout 诊断为 AP/payment-batches 功能门禁 payment_batch_v1_disabled / flag_force_off,未执行付款闭环;dg7-mobile-information-dedupe 启动 Vite 后 5 passed,前次 127.0.0.1:3000 失败确认为前置问题;2026-05-14 22:05 已追加部署修复提交 5491e92,deploy.sh 远端 build/migration status 通过,public bundle 首次短暂 502 后复核 /ready 200 首页 200 public bundle findings=0,external deps smoke 和 runtime smoke 通过,live readiness 3 passed,真实 OCR 样票 1 passed,DG7+R124 公网移动矩阵 6 passed,R7E mobile/finance-closeout/wecom-ua 分段通过或按 flag_force_off 可解释 SKIP;R7E-14 已按用户确认的付款批次延期到 P2 口径收口;2026-05-15 用户确认代表设备企业微信消息 deeplink 可免登录进入对应详情 WF8-11 和 R7E-9 已关闭;2026-05-15 19:31 二次修复 f945c0b 已部署 deploy.sh 远端构建 init migration ready external deps smoke runtime smoke public bundle 均通过 部署后 /ready 通过 public bundle findings=0 live smoke env ready DG7+R124 公网移动矩阵 6 passed;用户确认 R7E-16C 审批状态/详情按钮/返回间距和 BIZ8-12B 财务入口定位真机通过;2026-05-15 21:46 R7E-16D 96488d8 已部署 deploy.sh 远端构建 init migration ready external deps smoke runtime smoke public bundle 均通过 部署后 /ready ok public bundle findings=0 live smoke env ready DG7+R124 公网移动矩阵复跑 6 passed 审批确认专项 5 passed;BIZ8-13 权限回归和 BIZ8-CLOSE 已完成;2026-05-15 R7E-16E/R7E-16F 本地完成全站高风险确认统一和 PC 自动化验收口径:client typecheck/build 通过 rg window.confirm/window.prompt 无结果 system-action-confirmation 2 passed system-action-confirmation+workflow-action-confirm-ui 4 passed DG7+R124 移动矩阵 6 passed project-wide-visual-local 1 passed;PC 端高风险动作改由 Playwright 和视觉门禁验收 不再安排人工 PC 点击;2026-05-15 23:18 CST bf791d7 已部署到 https://oa.hyinda.com 且 SYNC_ENV=0 未覆盖远端 .env,deploy.sh 远端构建 init migration status ready external deps smoke runtime smoke public bundle 扫描通过;部署后 /ready ok public bundle findings=0 live smoke env ready;公网 PC 高风险确认与审批确认 4 passed,DG7+R124 公网移动矩阵 6 passed;2026-05-15 23:35 CST 用户明确确认阶段验收通过,R7E-18 已关闭;Go/No-Go 结论为 Go,P0/P1 阻断为 0,付款批次 图片 OCR Android 系统选择器等已接受为 P2 延期或平台限制。
QAOPS8-18,只读审计和排障边界,"明确公网、数据库、日志和 MCP 只读审计边界,避免排障时误写生产或泄露敏感信息。","1) 只读查询边界明确;2) 禁止 INSERT、UPDATE、DELETE;3) 敏感字段脱敏;4) 排障证据只记录摘要和路径。","流程级验证:rg -n 'audit-readonly|只读|INSERT|UPDATE|DELETE|MCP|PostgreSQL' AGENTS.md docs/mcp-tools.md docs/开发交付与变更管理规约.md。",rg|manual,DONE,DONE,DONE,AGENTS.md|docs/mcp-tools.md|docs/开发交付与变更管理规约.md,"[""QAOPS8-14""]",rg 复核通过;AGENTS 限定 audit-readonly 和 PostgreSQL MCP 只读查询;docs/mcp-tools 限定 SELECT 和禁止写操作;开发交付规约已补日志和证据摘要脱敏边界;未执行生产查询或启用新 MCP。
QAOPS8-19,R7E 后上线硬化收口,"在 R7E 真实反馈后集中收口上线硬化,更新门禁缺口、问题分流和后续治理优先级。","1) R7E 结论已记录;2) QAOPS8 未完成项有归属;3) 阻断问题有 owner;4) 后续 ORG8、WF8、BIZ8、QAOPS8 顺序可解释。","流程级验证:人工核对 R7E-18、R7E-19、QAOPS8 当前状态和问题清单。",manual,DONE,DONE,DONE,issues/2026-05-13_17-11-44-r7e-human-trialrun.csv|issues/2026-05-13_17-30-00-qaops8-test-release-ops.csv,"[""QAOPS8-17""]",2026-05-16 已根据 R7E-18 阶段验收通过和 R7E-19 P2 分流完成上线硬化收口:Go/No-Go 结论为 Go,当前 P0/P1 阻断为 0;后续建议新建 QAOPS9 或等价连续合同承载公网业务流测试数据、live smoke 账号链路、恢复演练窗口设计和 SLO/Go-No-Go 自动化增强;不得执行生产恢复、重置数据库、打印远端 env 或用重试掩盖缺陷。
QAOPS8-20,QAOPS8 收口,"完成 QAOPS8 状态回填、验证摘要、证据索引和中文提交。","1) CSV 校验通过;2) 所有 DONE 有命令或人工证据;3) 文档索引和状态矩阵一致;4) git diff --check 通过;5) 中文提交引用 QAOPS8。","流程级验证:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-13_17-30-00-qaops8-test-release-ops.csv;node scripts/qa/audit-docs.mjs --check-registry;git diff --check。",python3|node|git|manual,DONE,DONE,DONE,issues/2026-05-13_17-30-00-qaops8-test-release-ops.csv|docs/文档索引.md|docs/文档事实源状态矩阵.md,"[""QAOPS8-19""]",2026-05-16 QAOPS8 阶段收口完成:QAOPS8-19 已完成硬化缺口和后续治理分流;本轮只回写 CSV 和既有文档,不改业务代码、不部署,公网状态不变;验证以 QAOPS8 CSV 校验、audit-docs registry、关键词 rg 和 git diff --check 为准。