R7E-16E/R7E-16F 高风险操作确认统一
这个提交包含在:
+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 的变更口径收口。
|
||||
|
||||
## 历史恢复
|
||||
|
||||
|
||||
+4
-3
@@ -137,7 +137,8 @@ MIA7 之后,移动 OA 的信息架构以“一级入口少、任务摘要轻
|
||||
|
||||
- 标题显示业务编号或摘要,例如“报销单 BX20260506001”。
|
||||
- 状态、金额、申请人、更新时间作为摘要条。
|
||||
- 主流程操作固定在页头或底部操作区,危险或终局动作必须二次确认;审批动作按钮保持“通过 / 驳回 / 退回”短文案,具体后果放在确认弹窗中说明。
|
||||
- 主流程操作固定在页头或底部操作区,高风险动作必须二次确认;审批动作按钮保持“通过 / 驳回 / 退回”短文案,具体后果放在确认弹窗中说明。
|
||||
- 高风险动作包括提交审批、通过、驳回、退回、转审、撤回、删除、归档、启用/停用、批量处理、财务复核/付款、重复票据例外、功能开关批量执行、敏感数据导出、通知测试或重发;普通保存草稿、筛选、分页、查看、预览、取消编辑和非敏感导航不强制确认。
|
||||
- 审批流、附件、发票和日志分区展示,避免混在一个长表单里。
|
||||
- 审批、财务和管理员视角可以展示更多审计信息,但普通员工主视角只展示与下一步动作有关的信息。
|
||||
|
||||
@@ -145,7 +146,7 @@ MIA7 之后,移动 OA 的信息架构以“一级入口少、任务摘要轻
|
||||
|
||||
- 表单先收集必要字段,非必要字段折叠或后置。
|
||||
- 发票、附件上传使用自定义中文控件,不暴露浏览器原生 `Choose File` 文案。
|
||||
- 弹窗只承担单一任务,不在弹窗里解释整个业务流程。
|
||||
- 弹窗只承担单一任务,不在弹窗里解释整个业务流程;确认弹窗统一使用 OA 内组件,不使用浏览器原生 `window.confirm` 或类似原生阻塞弹窗。
|
||||
|
||||
## 移动统一页面范式
|
||||
|
||||
@@ -159,7 +160,7 @@ MIA7 之后,移动 OA 的信息架构以“一级入口少、任务摘要轻
|
||||
- 移动首页一级快捷入口使用图标宫格:图标在上、短标题在下,4 项等宽,辅助说明不在小屏常驻展示,避免图标和文字挤压;标题单行省略,不允许逐字换行。
|
||||
- 移动端页面边距、卡片间距、底部导航高度和吸底操作高度使用统一 token;不通过 viewport 缩放字体解决拥挤问题。
|
||||
- 次级入口和信息字段可按最小宽度自动从两列变一列;核心操作按钮必须保持明确可点,不得被内容、安全区或底部栏遮挡。
|
||||
- 报销详情、审批详情等深层 Push 页隐藏底部导航,使用顶部返回和上下文吸底操作,避免底部 Tab 在深层页面假选中;审批详情的通过、驳回、退回等主操作放在底部操作区并先确认。
|
||||
- 报销详情、审批详情等深层 Push 页隐藏底部导航,使用顶部返回和上下文吸底操作,避免底部 Tab 在深层页面假选中;审批详情的通过、驳回、退回等主操作放在底部操作区并先确认。PC 端保持工作台和详情页高密度布局,不强制把所有操作移到底部,但高风险动作同样必须先确认。
|
||||
- 企业微信个人应用消息 deeplink 应直达移动待办或业务详情;首次进入如需点击进入工作台,应保持后续可直接回到目标页。
|
||||
- 首页最近通知只展示事件消息,不能重复完整待办卡片;如果某条待办已在首页待处理摘要出现,通知区域不再重复显示同一待办内容。
|
||||
- 移动列表使用卡片和状态标签,首屏优先展示“谁提交、什么事项、金额/天数、当前状态和下一步”。
|
||||
|
||||
@@ -228,6 +228,8 @@
|
||||
|
||||
审批动作按钮使用短文案 `通过 / 驳回 / 退回`,不得在按钮内堆叠长说明。PC 和移动端执行这些动作前必须二次确认,在确认弹窗中解释后果:通过会进入下一审批节点或完成审批并写入历史;驳回会终止当前流程或进入驳回态,申请人通常需要复制或重新发起;退回会回到申请人修改态,保留原单号和审批历史,申请人修改后可重新提交。驳回和退回都必须填写可理解意见。
|
||||
|
||||
R7E 后,全站高风险操作沿用同一确认模式:提交审批、撤回、删除、归档、启用/停用、批量处理、财务复核/付款、重复票据例外、敏感数据导出和通知测试/重发都必须使用 OA 内二次确认弹窗;普通保存草稿、筛选、分页、查看、预览和取消编辑不强制确认,避免确认疲劳。PC 端确认由 Playwright 自动化覆盖,企业微信真机只保留消息、免登录、WebView 文件选择器等真实环境差异项。
|
||||
|
||||
### 6.1 自审与转审约束
|
||||
|
||||
- 自审默认禁止,不因申请人同时拥有 `admin`、`manager`、`ceo`、`finance` 或其他角色而放开。
|
||||
|
||||
在新工单中引用
屏蔽一个用户