R7E-16E/R7E-16F 高风险操作确认统一

这个提交包含在:
2026-05-15 22:55:00 +08:00
父节点 5c38d810c1
当前提交 bf791d7a67
共修改 18 个文件,包含 979 行新增和 68 行删除
+21 -7
查看文件
@@ -282,32 +282,46 @@ R7EP 历史结论:公网、live smoke/OCR、移动矩阵、核心业务流、
`R7E-16D` 已于 2026-05-15 21:46 CST 部署到 `https://oa.hyinda.com`,部署基线为 `96488d8 R7E-16D 审批动作二次确认`,`SYNC_ENV=0`,未覆盖远端 `.env`。部署脚本内置远端构建、init、Prisma migration status、`/ready`、external deps smoke、runtime smoke 和公网 bundle 扫描均通过。部署后补充验证:`curl -fsS https://oa.hyinda.com/ready` 通过,`PUBLIC_BASE_URL=https://oa.hyinda.com node scripts/qa/check-public-bundle-copy.mjs` findings=0,live smoke env readiness 显示公网、企业微信和真实 OCR 条件 ready,`cd client && E2E_BASE_URL=https://oa.hyinda.com npx playwright test tests/e2e/dg7-mobile-information-dedupe.spec.ts tests/e2e/r124-mobile-entry-matrix.spec.ts --workers=1 --reporter=list` 复跑 6 passed,`cd client && E2E_BASE_URL=https://oa.hyinda.com npx playwright test tests/e2e/workflow-action-confirm-ui.spec.ts tests/e2e/r89-mobile-login-navigation.spec.ts --workers=1 --reporter=list` 5 passed。审批动作二次确认仍需代表真机复测后才能关闭 `R7E-15/R7E-17/R7E-18`。
## R7E 全站高风险操作确认统一
执行时间:2026-05-15。根据用户确认,将 `R7E-16D` 的审批二次确认模式推广到全站高风险动作,但不覆盖普通保存、筛选、分页、查看、预览或非敏感导航,避免确认疲劳。
| 检查项 | 结果 | 证据和结论 |
| --- | --- | --- |
| 高风险确认统一 | 通过 | 新增 `ActionConfirmDialog` 和确认文案 helper;报销删除、敏感导出、付款批次执行、采购/差旅预检、头像/合同删除、票据判重例外、流程定义发布/归档等入口改为 OA 内确认弹窗 |
| 原生确认框清理 | 通过 | `rg -n 'window\.(confirm\|prompt)' client/src` 无结果;不再使用浏览器原生阻塞弹窗作为业务确认 |
| PC 自动化替代人工 | 通过 | `system-action-confirmation.spec.ts` 覆盖取消不调用接口、确认后才调用接口;`workflow-action-confirm-ui.spec.ts` 覆盖审批确认;PC 端不再安排人工点击验收 |
| 移动和视觉矩阵 | 通过 | `DG7+R124` 本地移动矩阵 6 passed;`project-wide-visual-local` 通过 1 passed,并由脚本自动准备临时数据库和种子数据 |
| 公网状态 | 未部署 | 本节改动目前只完成本地验证和回填,尚未部署到 `https://oa.hyinda.com`;部署后需复跑 `/ready`、public bundle、PC mock 自动化和移动矩阵 |
补充说明:曾直接把 `project-wide-visual.spec.ts` 挂到裸 Vite 服务运行,因默认 E2E 用户和后端种子前置不足触发登录 API `HTTP_500`。已改用项目标准门禁 `QA_SKIP_CLIENT_BUILD=1 bash scripts/qa/run-web-gates.sh project-wide-visual-local`,该门禁会准备临时库、写入种子并启动本地服务,结果通过;前述失败归类为测试前置问题,不作为业务回归。
`BIZ8-13/BIZ8-CLOSE` 已完成权限回归和阶段收口:`cd server && npm run prisma:validate` 通过;`cd server && npm test -- tests/unit/routes/exports.apOperations.test.js tests/unit/routes/paymentBatches.reimbursement.test.js tests/unit/routes/purchase.project-link.test.js tests/unit/routes/projects.test.js tests/unit/routes/workflow.permissions.test.js tests/unit/services/financeLedger.test.js` 6 files / 27 tests passed;`cd client && E2E_BASE_URL=https://oa.hyinda.com npx playwright test tests/e2e/biz8-ap-ledger-project.spec.ts --workers=1 --reporter=list` 1 passed。付款批次仍按 P2 延期,不作为当前 R7E 阻断。
## QAOPS8 Go/No-Go 当前结论
执行时间:2026-05-15。
`QAOPS8-17` 当前结论为 `Pause`,原因不是自动化基础门禁失败,也不是 WF8 deeplink 阻断;R7E-16D 已部署并通过公网自动化,剩余门禁是 R7E-16D 代表真机复测和最终人工验收结论。该结论用于防止把自动化或单台代表设备证据误解释为正式上线 `Go`。
`QAOPS8-17` 当前结论为 `Pause`,原因不是自动化基础门禁失败,也不是 WF8 deeplink 阻断;R7E-16D 已部署、自动化通过且代表真机确认。剩余门禁是 R7E-16E/R7E-16F 尚未部署到公网复核,以及最终人工验收结论。该结论用于防止把本地自动化证据误解释为正式上线 `Go`。
| 检查项 | 当前状态 | 处理 |
| --- | --- | --- |
| QAOPS8 发布、备份、回滚和 SLO 基线 | 已形成 | 可作为 R7E 启动前准备证据 |
| R7E-1..7 人工启动确认 | 已确认 | 可以进入启动当天公网健康复核 |
| R7E-8 公网健康复核 | 已完成 | 最新代码 `96488d8` 已部署;`/ready`、public bundle、远端 migration 状态、live readiness、公网移动矩阵和审批确认专项通过 |
| R7E-9..15 真实业务和真机流程 | 部分完成 | 浏览器业务线已关闭报销、审批边界、请假、采购;`R7E-9` 入口、免登录和消息 deeplink 已按代表设备关闭;`R7E-14` 按付款批次延期到 P2 口径收口;`R7E-15` 等待 R7E-16D 审批二次确认代表设备真机反馈 |
| R7E-16..18 每日问题和验收结论 | 未完成 | 需试运行窗口内记录 |
| R7E-9..15 真实业务和真机流程 | 已完成 | 浏览器业务线已关闭报销、审批边界、请假、采购;`R7E-9` 入口、免登录和消息 deeplink 已按代表设备关闭;`R7E-14` 按付款批次延期到 P2 口径收口;`R7E-15` 审批二次确认代表真机反馈已确认 |
| R7E-16..18 每日问题和验收结论 | 部分完成 | `R7E-16E/R7E-16F` 本地完成但尚未部署公网;`R7E-18` 仍需最终人工验收结论 |
| WF8-11 通知 deeplink 回 OA | 已完成 | 2026-05-15 代表设备企业微信消息点击可免登录进入目标审批详情;WF8 可阶段关闭 |
| BIZ8-12/13 移动业务入口和权限回归 | 已完成 | `wangzhiling` 已确认财务入口定位和付款未启用空态;财务/项目权限回归通过,BIZ8 可阶段关闭 |
保持 `Pause` 的剩余门禁:
- `SMOKE101` 或 `wangshunli` 复测企业微信审批消息或 `/mobile/approvals` 详情:确认 `通过 / 驳回 / 退回` 位于底部操作区,点击后先出现二次确认且文案可理解。
- `SMOKE101` 在 PC 审批详情和待办列表快捷通过抽查:未确认前不执行审批,确认后才执行。
- `SMOKE002` 可抽查移动报销/通知/详情返回,确认部署后仍无 PC 外壳、无横向滚动。
- 部署 R7E-16E/R7E-16F 后复跑 `/ready`、public bundle、PC mock 自动化和移动矩阵。
- PC 高风险动作确认由 Playwright 和视觉门禁验收,不再安排人工 PC 点击。
- 企业微信真机后续只保留消息、免登录、WebView 文件选择器和系统选择器这类真实环境差异项。
- 付款批次闭环已延期到 P2,不作为当前 R7E 阻断。
结论:当前可以关闭 `WF8-11`、`R7E-9` 和 BIZ8 阶段流,但不能给正式上线 `Go`,也不能关闭 `R7E-15`、`R7E-17`、`R7E-18` 或 QAOPS8 后续收口项。`R7E-14` 已按付款批次延期到 P2 的变更口径收口。
结论:当前可以关闭 `WF8-11`、`R7E-9`、`R7E-15` 和 BIZ8 阶段流,但不能给正式上线 `Go`,也不能关闭 `R7E-17`、`R7E-18` 或 QAOPS8 后续收口项。`R7E-14` 已按付款批次延期到 P2 的变更口径收口。
## 历史恢复