R7E 部署最新修复并回填试运行证据 WF8-11 BIZ8-12 QAOPS8-17

这个提交包含在:
2026-05-14 22:18:52 +08:00
父节点 5491e922e6
当前提交 f49cbb24b1
共修改 8 个文件,包含 52 行新增和 36 行删除
+28 -12
查看文件
@@ -12,7 +12,7 @@ DCL7 已删除本文件中 R70-R91 的长流水历史,避免旧环境、旧开
- 2026-05-13 用户完成 iPhone 12、iPhone 14、Redmi K60 企业微信代表性真机主流程复测,`ME6-3` 已按主流程门禁关闭;iPhone 12 图文上下间距偏紧按非阻断观察项记录。
- MIF7-1..7 与 MIF7T 已完成本地整改、公网部署、公网匿名复检和带凭据 live smoke/OCR 复检;2026-05-13 已将包含 `cf2bba0` 的 MIF7T 代码部署到 `https://oa.hyinda.com`。
- MIF7TD 收口报告为 `artifacts/qa-flow/live-smoke-readiness-20260513-115455/`:公网 live smoke `3 passed`,真实 OCR `1 passed`,样票为重复发票可解释终态;`pending OCR` 因本地未注入 `DATABASE_URL` 记录 `SKIP`,不作为 MIF7-7 硬阻断。
- R7/OPS7/DOC7 是准备材料;R7EP 自动门禁和 OPS8 只读检查已完成,可进入 R7E 人工确认环节;真实 R7 仍未启动,需用户确认人员、窗口、回滚联系人、问题登记负责人和每日收口节奏。
- R7/OPS7/DOC7 是准备材料;R7EP 自动门禁和 OPS8 只读检查已完成;R7E 已完成参与人、窗口、回滚联系人、问题登记负责人和每日收口节奏确认,并已进入试运行收口阶段。
- 2026-05-13 后续计划调整直接回写现有 R7EP、OPS8、QAF8、UX8、P2T 合同,不新建专门调整 Issue;调整后 R7EP 门禁可并行执行,OPS8-1/2/4 纳入 R7EP Go/No-Go,UX8 和 P2T 候选按真实反馈并行推进。
- ORG8 组织账号与权限主数据已完成本地代表性角色验收和阶段收口;该结论只覆盖本地自动化/只读/注入验证,不代表 R7E 真实人工试运行已启动或完成。
@@ -44,7 +44,7 @@ DCL7 已删除本文件中 R70-R91 的长流水历史,避免旧环境、旧开
| 企业微信个人应用消息 | 正式通知通道 | 企业微信只做入口、身份、消息和 deeplink |
| `ME6-3` 真机抽查 | 已关闭 | 2026-05-13 用户确认 iPhone 12、iPhone 14、Redmi K60 企业微信主流程通过;iPhone 12 间距偏紧为非阻断观察项 |
| MIF7-7 | 已关闭 | MIF7T 已部署;公网 `/ready`、public bundle、公网 MIF7 移动矩阵、带凭据 live smoke/OCR 均通过 |
| R7 真实执行 | 未启动 | 草案不等于启动 |
| R7E 真实执行 | 当前执行 | 浏览器业务线已通过,`5491e92` 已部署;企业微信消息 deeplink、移动真机反馈和最终验收结论仍待关闭 |
## R7EP / OPS8 / QAF8 / UX8 / P2T 预检推进
@@ -62,7 +62,7 @@ DCL7 已删除本文件中 R70-R91 的长流水历史,避免旧环境、旧开
| UX8 反馈池 | 阶段性收口 | 本轮未新增 UX8 代码实现;iPhone 12 间距、详情扫读性、财务摘要、移动采购创建和列表卡片反馈继续按真实反馈进入后续项 |
| P2T 候选盘点 | 已补文档 | `docs/海音达OA-MVP需求规格说明书.md` 已补 P2T 候选优先级:组织账号主数据、审批通知扩展、OCR/票据增强、费用预算项目轻量增强、运维上线增强;冻结项继续不进入当前实现 |
R7E 结论:公网、live smoke/OCR、移动矩阵、核心业务流、账号角色只读核验和 OPS8 远端只读状态检查均已通过,可进入 R7E 人工确认环节;但真实 R7 仍未启动。启动前仍需用户最终确认参与名单、时间窗口、回滚联系人、问题登记负责人、每日收口节奏和暂停/回滚决策人。
R7EP 历史结论:公网、live smoke/OCR、移动矩阵、核心业务流、账号角色只读核验和 OPS8 远端只读状态检查均已通过,可进入 R7E 人工确认环节。后续用户已确认参与名单、时间窗口、回滚联系人、问题登记负责人、每日收口节奏和暂停/回滚决策人,R7E 已按本报告后续章节推进。
## ORG8 组织账号与权限主数据验收
@@ -138,7 +138,7 @@ R7E 结论:公网、live smoke/OCR、移动矩阵、核心业务流、账号
| 真实 OCR | 通过 | 同一报告目录;`live-ocr.txt` 不含 `SKIP`,用例 `1 passed`;样票命中“该发票已用于报销,不能重复添加”,为重复发票可解释终态 |
| pending OCR 辅助扫描 | 非阻断跳过 | `pending-ocr.txt` 因本地未注入 `DATABASE_URL` 记录 `SKIP`,不作为 MIF7-7 硬阻断 |
结论:`MIF7-7` 已完成 `DONE/DONE/DONE`。公网当前可用于企业微信和浏览器复测 MIF7T 移动体验;R7 仍未启动,必须另建 R7E 执行合同后再进入真实扩大试运行。
历史结论:`MIF7-7` 已完成 `DONE/DONE/DONE`。公网当时可用于企业微信和浏览器复测 MIF7T 移动体验;真实扩大试运行随后已另建 R7E 执行合同推进。
## R7E 人工启动确认
@@ -214,18 +214,18 @@ R7E 结论:公网、live smoke/OCR、移动矩阵、核心业务流、账号
| 审批 | 员工、管理员、审批人 | `BX-20260514-0016`、`CG-20260514-0005`、请假单 `a22e45f8-b3d6-4862-97f2-30cbe4815e09`、审批边界请假单 `b0cd3e00-2e67-4f51-9aaf-63aa2c53b47e` | 报销、采购、请假均完成待办处理并可回看历史;申请人本人和 admin-only 对真实待办调用审批接口均被拒绝,经理正常通过收尾 | N/A | - | 通过;`R7E-11` 可关闭 |
| 请假 | 员工、审批人 | `a22e45f8-b3d6-4862-97f2-30cbe4815e09` | 员工提交未来工作日请假;审批人通过;员工 PC 回看已通过 | `/mobile/leave` 记录页可见且无横向滚动 | - | 通过 |
| 采购 | 员工、审批人 | `CG-20260514-0005` | PC 创建、明细、无敏感测试附件上传、提交、审批、状态和审批历史回看通过 | 移动采购列表、详情和附件可见且无横向滚动 | - | 通过 |
| 财务 | 财务 | `BX-20260514-0016` | 报销状态为 `approved`;`/api/ap-operations/reimbursement-ledger` 和 `/api/payment-batches` 均返回 `payment_batch_v1_disabled / flag_force_off`,未创建付款批次、未复核、未执行付款、未验证导出 | N/A | R7E-ISSUE-BROWSER-005 | 暂停,分流 `R7E-14`/`R7E-16` |
| 财务 | 财务 | `BX-20260514-0016` | 报销状态为 `approved`;`/api/ap-operations/reimbursement-ledger` 和 `/api/payment-batches` 均返回 `payment_batch_v1_disabled / flag_force_off`,未创建付款批次、未复核、未执行付款、未验证导出 | N/A | R7E-ISSUE-BROWSER-005 | 当时暂停;后续按用户确认的“付款批次延期到 P2”口径收口 `R7E-14` |
| 移动通用 | 员工、审批人、财务 | N/A | N/A | `/mobile`、移动报销、请假、审批、通知、采购入口通过;无 PC 壳和横向滚动 | - | 通过 |
| 企业微信 UA 模拟 | 匿名 | N/A | N/A | 登录入口、企业微信配置和 OAuth 边界可达 | - | 通过;不代表真机验收 |
| 补充移动矩阵 | 本地 mock 前置 | N/A | N/A | 启动 Vite `http://127.0.0.1:5173` 后重跑 `dg7-mobile-information-dedupe`,5 passed;临时服务已关闭 | - | 通过;前次 `127.0.0.1:3000` 失败确认为前置服务未启动 |
本轮新增测试辅助:`r7e-browser-business-trialrun.spec.ts` 支持 `R7E_BROWSER_FLOW=preflight|reimbursement-finance|leave|purchase-attachment|mobile|wecom-ua|finance-closeout|approval-boundary|all` 分段执行;移动 flow 使用浏览器 storage state 注入登录态并写入匹配的 device fingerprint,避免反复 UI 登录触发限流。
阶段结论:无人工自动化已完成公网健康、报销提交审批、请假、采购附件、审批边界、移动浏览器、企业微信 UA 模拟和本地移动矩阵前置修正。`R7E-10`、`R7E-11`、`R7E-12`、`R7E-13` 可按浏览器业务线证据关闭;`R7E-14` 因公网 AP/payment-batches 功能门禁 `flag_force_off` 保持 `DOING`;`R7E-9`、`R7E-15`、`R7E-18` 仍需真实企业微信和人工验收,不由本轮自动化替代。
阶段结论:无人工自动化已完成公网健康、报销提交审批、请假、采购附件、审批边界、移动浏览器、企业微信 UA 模拟和本地移动矩阵前置修正。`R7E-10`、`R7E-11`、`R7E-12`、`R7E-13` 已按浏览器业务线证据关闭;`R7E-14` 后续按用户确认的付款批次延期到 P2 口径收口;`R7E-9`、`R7E-15`、`R7E-18` 仍需真实企业微信和人工验收,不由本轮自动化替代。
## R7E 真机反馈修复记录
执行时间:2026-05-14。用户已完成代表设备人工反馈,本轮只在本地代码和现有 Issue 流中处理,不自动部署。
执行时间:2026-05-14。用户已完成代表设备人工反馈,本轮先在本地代码和现有 Issue 流中处理,随后按受控部署步骤发布到试运行环境。
| 反馈项 | 级别 | 归属 | 本轮处理 |
| --- | --- | --- | --- |
@@ -235,7 +235,23 @@ R7E 结论:公网、live smoke/OCR、移动矩阵、核心业务流、账号
| 通知卡片和待审批卡片右侧状态只显示首字 | MEDIUM | `R7E-16A` | 修复移动状态槽样式并加入 Playwright 遮挡断言 |
| 财务移动入口和付款未启用状态不清楚 | MEDIUM | `BIZ8-12A` | 增加 `/mobile/me` 财务入口;付款批次关闭时显示未启用空态 |
部署状态:本节对应修复尚未部署到 `https://oa.hyinda.com`。用户真机复测需等待后续受控部署和公网 `/ready`、public bundle、移动矩阵检查通过。
部署状态:本节对应修复已在 2026-05-14 22:05 左右部署到 `https://oa.hyinda.com`,公网 `/ready`、public bundle、live readiness、真实 OCR 样票、移动矩阵和 R7E 分段自动化前置均已复核通过。企业微信消息点击、WebView 文件选择器和代表设备渲染仍需人工真机复测。
## R7E 真机反馈修复部署复核
执行时间:2026-05-14。部署基线为 `5491e92 修复 R7E 真机反馈回流与移动入口 WF8-11A R7E-16A R7E-16B BIZ8-12A`。
| 检查项 | 结果 | 证据和结论 |
| --- | --- | --- |
| 部署前本地门禁 | 通过 | `cd client && npm run typecheck`;`cd client && npm run build`;`cd server && node --check src/routes/auth.js src/services/notifications/detailUrl.js src/routes/portal.js`;`cd server && npm test -- tests/unit/services/imEnqueue.test.js tests/unit/services/notificationDispatcher.test.js tests/unit/routes/auth.login.test.js tests/unit/routes/wecomAuth.test.js`,4 files / 29 tests passed |
| 受控部署 | 通过,含瞬时扫描失败 | `bash deploy/trialrun/deploy.sh` 默认 `SYNC_ENV=0`;远端 build、server 重建、init、migration status 均通过;脚本末尾 public bundle 首次扫描遇到短暂 `GET / failed: 502`,随后公网复核恢复正常 |
| 远端 runtime smoke | 通过 | 手动补跑 `smoke-external-deps.js` 和 `smoke-trialrun-runtime.js`;企业微信、OCR、消息桥接、Prisma、功能开关和导航构建均通过 |
| 公网匿名复核 | 通过 | `curl -fsS https://oa.hyinda.com/ready` 返回 `ok=true`;首页 200;`PUBLIC_BASE_URL=https://oa.hyinda.com node scripts/qa/check-public-bundle-copy.mjs`:`scanned=57 focused=4 findings=0` |
| 公网 live readiness | 通过,含非阻断 SKIP | 报告 `artifacts/qa-flow/live-smoke-readiness-20260514-220617/`;live smoke 3 passed;真实 OCR 样票 1 passed,重复发票为可解释终态;pending OCR 因本地无 `DATABASE_URL` 记录 `SKIP` |
| 公网移动矩阵 | 通过 | `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 |
| R7E 分段自动化前置 | 通过或可解释跳过 | `R7E_BROWSER_FLOW=mobile` 通过,员工/审批人/财务移动入口可见且无横向滚动;`R7E_BROWSER_FLOW=wecom-ua` 通过;`R7E_BROWSER_FLOW=finance-closeout` 通过但 AP/payment-batches 按 `payment_batch_v1_disabled / flag_force_off` 记录 SKIP |
阶段结论:最新修复现在可以进入企业微信代表设备复测。`R7E-14` 按用户确认的“付款批次先不启用,延期到 P2”口径收口;该结论不代表付款批次已启用或付款闭环已完成。
## QAOPS8 Go/No-Go 当前结论
@@ -247,8 +263,8 @@ R7E 结论:公网、live smoke/OCR、移动矩阵、核心业务流、账号
| --- | --- | --- |
| QAOPS8 发布、备份、回滚和 SLO 基线 | 已形成 | 可作为 R7E 启动前准备证据 |
| R7E-1..7 人工启动确认 | 已确认 | 可以进入启动当天公网健康复核 |
| R7E-8 公网健康复核 | 已完成 | 最新代码 `4b14c92` 已部署;`/ready`、public bundle、远端 migration 状态和公网移动矩阵通过 |
| R7E-9..15 真实业务和真机流程 | 部分完成 | 浏览器业务线已关闭报销、审批边界、请假、采购;企业微信专属线和财务付款闭环仍需后补 |
| R7E-8 公网健康复核 | 已完成 | 最新代码 `5491e92` 已部署;`/ready`、public bundle、远端 migration 状态、live readiness 和公网移动矩阵通过 |
| R7E-9..15 真实业务和真机流程 | 部分完成 | 浏览器业务线已关闭报销、审批边界、请假、采购;`R7E-14` 按付款批次延期到 P2 口径收口;企业微信专属线仍需后补 |
| R7E-16..18 每日问题和验收结论 | 未完成 | 需试运行窗口内记录 |
| WF8-11 通知 deeplink 回 OA | 未完成 | 需企业微信或代表性真机验证 |
| BIZ8-12 移动业务入口评估 | 暂停收口 | 自动化截图已有,仍需代表性真机和角色反馈 |
@@ -258,10 +274,10 @@ R7E 结论:公网、live smoke/OCR、移动矩阵、核心业务流、账号
- `SMOKE002` 企业微信工作台进入 `/mobile` 后确认无 PC 外壳,底部导航和业务入口正常。
- `SMOKE002` 补充企业微信 WebView 内的移动报销详情和 PDF 上传确认,不能被图片拍照入口误导。
- `SMOKE101` 完成移动审批和通知 deeplink 回 OA 的确认。
- 财务角色完成 AP 台账、付款、导出或可解释财务路径确认;当前自动化发现公网 AP/payment-batches 功能门禁为 `payment_batch_v1_disabled / flag_force_off`。
- 财务角色完成人工复核移动入口和付款批次未启用空态;付款批次闭环已延期到 P2,不作为当前 R7E 阻断。
- `SMOKE301` / `SMOKE302` 尚未启用且没有企业微信,不能作为企业微信真机证据。
结论:当前可以按最新代码继续 R7E 浏览器业务和后续人工真机试运行,但不能给正式上线 `Go`,也不能关闭 `R7E-9`、`R7E-14`、`R7E-15`、`R7E-18`、`WF8-11`、`BIZ8-12` 或 QAOPS8 后续收口项。
结论:当前可以按最新代码继续 R7E 浏览器业务和后续人工真机试运行,但不能给正式上线 `Go`,也不能关闭 `R7E-9`、`R7E-15`、`R7E-18`、`WF8-11`、`BIZ8-12` 或 QAOPS8 后续收口项。`R7E-14` 已按付款批次延期到 P2 的变更口径收口。
## 历史恢复
+5 -5
查看文件
@@ -3,7 +3,7 @@
**文档状态**:当前操作手册,用于首轮主线发布候选、live smoke 和小范围试运行准备。
**适用范围**:`hyb-oa` MVP 首轮主线 A1-A8 之后,部署前和部署后试运行前。
**当前状态(2026-05-13 / MIF7TD)**:本清单保留 A1-A8、R5 和 R6 的历史证据,但当前事实已经推进到 R6 已通过,PC6/PA6/FL6/AP6/RI6/LP6/ME6/QG6/DG7/MIA7 已完成相应收口。`ME6-3` 代表性企业微信真机门禁已关闭;MIF7/MIF7T 已完成本地整改、公网部署、公网匿名复检和带凭据 live smoke/OCR 复检。R7 未真实启动,R7/OPS7/DOC7 只是准备材料,不代表已启动或已上线。
**当前状态(2026-05-14 / R7E)**:本清单保留 A1-A8、R5、R6 和 MIF7TD 的历史证据;当前事实已经推进到 R7E,`5491e92` 真机反馈修复已部署到试运行环境。R7E 浏览器业务线已通过,企业微信消息 deeplink、移动真机反馈和最终验收结论仍未关闭。
本文不替代 PRD、模块规约或 Issue CSV;它只回答“当前是否可以从本地可回归进入公网/企业微信/真实 OCR 验收”。
@@ -200,15 +200,15 @@ R5 已完成。R6 准备合同已创建:`issues/2026-05-11_10-23-41-r6-small-t
| 本地和公网自动化 | 已有通过证据 | MIF7TD、QAOPS8-5、QAOPS8-6、QAOPS8-8 的历史证据可作为启动前基础门禁,但 R7E 启动当天仍需复核公网健康 |
| 备份、恢复和回滚边界 | 已确认方案 | QAOPS8-10..16 已记录备份策略、恢复演练方案、SLO/DORA、发布 Runbook、回滚演练窗口;真实恢复或生产回滚执行前仍需单独批准 |
| R7E 启动确认 | 已确认 R7E-1..7 | 参与人、窗口、回滚联系人、问题登记负责人和暂停决策人已确认 |
| R7E 启动当天公网健康 | 未完成 | `R7E-8` 需在 2026-05-14 启动当天复核 `/ready` 和 public bundle 后才能关闭 |
| 企业微信入口和 deeplink 真机 | 未完成 | `R7E-9`、`WF8-11` 需要 `SMOKE002`、`SMOKE101` 等真实企业微信或真机反馈;`SMOKE301`、`SMOKE302` 当前未启用且没有企业微信 |
| 真实业务流程试运行 | 未完成 | `R7E-10..15` 仍需人工执行报销、审批、请假、采购、财务付款导出和移动端反馈 |
| R7E 启动当天公网健康 | 已完成 | `4b14c92` 已完成 R7E-8;2026-05-14 22:05 追加部署 `5491e92` 真机反馈修复,`/ready`、public bundle、live readiness、真实 OCR 样票和公网移动矩阵通过 |
| 企业微信入口和 deeplink 真机 | 未完成 | `R7E-9`、`WF8-11` 需要 `SMOKE002`、`SMOKE101` 等真实企业微信或真机点击新消息回目标页;`SMOKE301`、`SMOKE302` 当前未启用且没有企业微信 |
| 真实业务流程试运行 | 部分完成 | `R7E-10..13` 浏览器业务线已通过;`R7E-14` 按付款批次延期到 P2 口径收口;`R7E-15` 仍需移动真机反馈 |
| 问题清单和验收结论 | 未完成 | `R7E-16..18` 仍需每日问题收口、阻断分流和最终验收结论 |
| 移动业务入口扩展反馈 | 未完成 | `BIZ8-12` 自动化已有代表性截图证据,但仍需真机和角色反馈后才能关闭 |
Go 条件:
- `R7E-8..18` 均有当天或试运行窗口内证据,并且阻断问题为 0。
- `R7E-8..18` 均有当天或试运行窗口内证据,并且阻断问题为 0;`R7E-14` 按已确认的付款批次延期到 P2 口径验收,不要求当前启用 `payment_batch_v1`。
- 企业微信入口、通知 deeplink 和移动主流程至少有代表性真机确认,且没有未解释的权限、审批链或财务数据问题。
- 备份和回滚联系人在线;若进入真实恢复或生产回滚,必须另行获得明确批准。
+6 -6
查看文件
@@ -30,10 +30,10 @@
| `GOV8` | `issues/2026-05-13_16-31-09-gov8-system-governance.csv` | `EVIDENCE` | 连续型 Issue 治理、文档台账、流程模板和审计脚本,已收口 |
| `DG8` | `issues/2026-05-13_22-56-49-design-ui-governance.csv` | `EVIDENCE` | 设计治理主参考系统收口;飞书工作台/飞书审批为唯一主 UI/布局参考,不代表页面已整改 |
| `DG9` | `issues/2026-05-13_23-30-00-dg9-ui-layout-rollout.csv` | `EVIDENCE` | 全站 UI/布局样板迁移已收口;最新代码已作为 R7E 基线部署到公网,不替代 WF8/UX8/BIZ8 |
| `R7E` | `issues/2026-05-13_17-11-44-r7e-human-trialrun.csv` | `CURRENT` | 真实扩大试运行人工确认已完成;最新代码已部署并完成 R7E-8,待 R7E-9..18 人工流程和真机反馈 |
| `R7E` | `issues/2026-05-13_17-11-44-r7e-human-trialrun.csv` | `CURRENT` | 真实扩大试运行人工确认已完成;`5491e92` 已部署并完成自动化前置,待 R7E-9/R7E-15/R7E-18 企业微信与真机反馈 |
| `ORG8` | `issues/2026-05-13_18-23-51-org8-master-data-permission.csv` | `EVIDENCE` | 组织账号和权限主数据治理已阶段收口;本地代表性角色验收通过,不替代 R7E 真实人工试运行 |
| `WF8` | `issues/2026-05-13_18-23-52-wf8-approval-notification.csv` | `CURRENT` | 审批与通知增强;移动审批历史展示方案批准后继续执行 |
| `BIZ8` | `issues/2026-05-13_18-23-53-biz8-finance-ocr-project.csv` | `CURRENT` | 报销/OCR/财务/项目轻量增强;采购项目关联加性迁移已随最新部署应用,移动入口和权限回归仍待收口 |
| `WF8` | `issues/2026-05-13_18-23-52-wf8-approval-notification.csv` | `CURRENT` | 审批与通知增强;deeplink 过期修复已部署,待企业微信真机点击回 OA 验证 |
| `BIZ8` | `issues/2026-05-13_18-23-53-biz8-finance-ocr-project.csv` | `CURRENT` | 报销/OCR/财务/项目轻量增强;财务移动入口修复已部署,真机复核和权限回归仍待收口 |
| `QAOPS8` | `issues/2026-05-13_17-30-00-qaops8-test-release-ops.csv` | `CURRENT` | 测试、发布、运维和上线准备;与 R7E 并行贯穿,不替代 R7E 人工确认 |
旧 Issue CSV 保留为历史审计证据:不删除、不批量回写、不移动到 `docs/archive/` 或其他归档目录。新连续合同如替代旧合同,只在新合同 `Notes` 或文档索引中说明 supersedes。
@@ -59,7 +59,7 @@
| `RUNBOOK-TRIAL` | `docs/试运行与自动化验证手册.md` | 操作手册 | 试运行验证手册 | `CURRENT` | qa/ops | `R7E,QAOPS8` | live readiness | none | 2026-05-13 | `rg` | medium | 本地、公网、企业微信和真实 OCR 验证 |
| `MANUAL-ADMIN` | `docs/管理员手册.md` | 操作手册 | 管理员手册 | `CURRENT` | ops/admin | `ORG8,R7E` | 人工验收 | none | 2026-05-13 | `rg` | medium | 管理员上线和配置 |
| `MANUAL-EMPLOYEE` | `docs/员工快速上手.md` | 操作手册 | 员工手册 | `CURRENT` | product | `R7E` | 人工验收 | none | 2026-05-13 | `rg` | low | 员工侧使用说明 |
| `R7-DRAFT` | `docs/trialrun/R7扩大试运行草案.md` | 草案 | R7 准备材料 | `DRAFT` | product/qa | `R7E` | R7EP 报告 | none | 2026-05-13 | `rg` | medium | 不代表真实 R7 已启动 |
| `R7-DRAFT` | `docs/trialrun/R7扩大试运行草案.md` | 草案 | R7 准备材料 | `DRAFT` | product/qa | `R7E` | R7EP 报告 | none | 2026-05-13 | `rg` | medium | 不代表当前 R7E 执行状态 |
| `OPS-RUNBOOK` | `docs/trialrun/OPS7运维交接Runbook.md` | 运维草案 | OPS 准备材料 | `DRAFT` | ops | `OPS8,QAOPS8` | 只读检查 | none | 2026-05-13 | `rg` | medium | 不代表恢复演练已执行 |
| `TRIAL-REPORT` | `docs/trialrun/人工试运行报告.md` | 证据材料 | 试运行证据入口 | `EVIDENCE` | qa | `R7EP,OPS8,QAF8` | artifacts/qa-flow | none | 2026-05-13 | `rg` | medium | 只证明发生过,不直接派工 |
| `HISTORY-MATRIX` | `docs/历史功能状态矩阵.md` | 历史材料 | 历史功能索引 | `HISTORICAL` | product | `DCL7` | git 历史 | none | 2026-05-13 | `rg` | low | 只追溯历史 |
@@ -103,7 +103,7 @@
| 路径 | 分类 | 当前口径 |
| --- | --- | --- |
| `docs/trialrun/R7扩大试运行草案.md` | 草案 | R7 未真实启动 |
| `docs/trialrun/R7扩大试运行草案.md` | 草案 | 当前执行状态以 R7E CSV 为准 |
| `docs/trialrun/OPS7运维交接Runbook.md` | 草案 | 不代表已执行生产配置或恢复演练 |
| `docs/trialrun/R7用户手册与FAQ.md` | 草案 | 不承诺未实现能力 |
| `docs/历史功能状态矩阵.md` | 历史证据 | 轻量索引,旧大表从 git 历史恢复 |
@@ -146,4 +146,4 @@
- `ME6-3` 代表性企业微信真机门禁已关闭。
- MIF7-1..7 与 MIF7T 已完成本地整改、公网部署、公网匿名复检和带凭据 live smoke/OCR 复检。
- R7 真实扩大试运行尚未启动。
- R7E 真实扩大试运行已启动并完成浏览器业务线和最新修复部署;企业微信消息 deeplink、移动真机反馈和最终验收结论仍未关闭。
+5 -5
查看文件
@@ -27,7 +27,7 @@ R6 -> PC6 -> PA6 -> FL6 -> AP6 -> RI6 -> LP6 -> ME6/QG6 -> DG7/MRF7 -> MIA7 -> M
- MIA7 已完成移动信息架构、视觉和流程审查;MIF7-1..7 与 MIF7T 已完成本地整改、公网部署、公网匿名复检和带凭据 live smoke/OCR 复检。
- DG8 已完成设计治理主参考系统收口:飞书工作台/飞书审批是唯一主 UI/布局参考;本结论只更新设计事实源,不代表已做页面整改。
- DG9 承接 DG8 后的页面整改:按 A/B/C 页面分层和 DG9 样板统一 PC、移动和企业微信入口布局;最新代码已作为 R7E 试运行基线部署到公网,不替代 WF8、UX8 或 BIZ8 业务验收。
- R7/OPS7/DOC7 是准备材料,不代表已上线或已启动真实 R7。
- R7/OPS7/DOC7 是准备材料,不代表已上线;真实执行以当前 `R7E` 连续合同和人工试运行报告为准。
## 当前活跃治理流
@@ -38,10 +38,10 @@ R6 -> PC6 -> PA6 -> FL6 -> AP6 -> RI6 -> LP6 -> ME6/QG6 -> DG7/MRF7 -> MIA7 -> M
| `GOV8` | `issues/2026-05-13_16-31-09-gov8-system-governance.csv` | 已收口 | 文档分类、台账、流程模板、审计脚本、需求冻结、变更控制 | 不改业务代码、不部署 |
| `DG8` | `issues/2026-05-13_22-56-49-design-ui-governance.csv` | 已收口:设计事实源主参考系统更新 | 主 UI/布局参考层级、外部参考降级、Agent/Skill 设计入口、设计检查门禁 | 不改业务页面、不部署、不接入飞书 |
| `DG9` | `issues/2026-05-13_23-30-00-dg9-ui-layout-rollout.csv` | 已收口;最新代码已随 R7E 部署到试运行环境 | A/B/C 页面分层、共享工作台骨架、移动槽位、审批/报销/首页/通知样板、设计门禁 | 不替代 WF8、UX8 或 BIZ8 业务验收 |
| `R7E` | `issues/2026-05-13_17-11-44-r7e-human-trialrun.csv` | 当前执行:最新代码已部署,待真实流程和真机反馈 | 人工确认、真实试运行、每日问题收口、验收结论 | 不新增 P2 能力 |
| `R7E` | `issues/2026-05-13_17-11-44-r7e-human-trialrun.csv` | 当前执行:`5491e92` 已部署,待企业微信消息 deeplink 和真机反馈 | 人工确认、真实试运行、每日问题收口、验收结论 | 不新增 P2 能力;付款批次延期到 P2 |
| `ORG8` | `issues/2026-05-13_18-23-51-org8-master-data-permission.csv` | 已收口:本地代表性角色验收通过 | 组织、账号、直属主管、停用、角色、企业微信绑定、权限边界 | 不做审批流程增强;不替代 R7E 真实人工试运行 |
| `WF8` | `issues/2026-05-13_18-23-52-wf8-approval-notification.csv` | 当前执行:待移动审批历史方案批准 | 转审、通知、催办、邮件通道决策、三渠道验收 | 不做复杂 BPM 或审批设计器 |
| `BIZ8` | `issues/2026-05-13_18-23-53-biz8-finance-ocr-project.csv` | 当前执行:采购项目关联加性迁移已随最新部署应用,待移动入口和权限回归收口 | OCR、票据、财务、费用提示、项目关联 | 不做 ERP 实时集成或重预算 |
| `WF8` | `issues/2026-05-13_18-23-52-wf8-approval-notification.csv` | 当前执行:deeplink 修复已部署,待企业微信真机点击回 OA 验证 | 转审、通知、催办、邮件通道决策、三渠道验收 | 不做复杂 BPM 或审批设计器 |
| `BIZ8` | `issues/2026-05-13_18-23-53-biz8-finance-ocr-project.csv` | 当前执行:财务移动入口修复已部署,待真机复核和权限回归收口 | OCR、票据、财务、费用提示、项目关联 | 不做 ERP 实时集成或重预算 |
| `QAOPS8` | `issues/2026-05-13_17-30-00-qaops8-test-release-ops.csv` | 当前执行:贯穿治理 | 回归稳定、测试覆盖、上线门禁、备份恢复、SLO | 不改业务需求 |
旧 Issue CSV 不删除、不批量回写、不移动到归档目录。若新治理流替代旧合同,只在新 CSV 的 `Notes` 或本索引说明 supersedes,旧文件保留历史审计语义。
@@ -94,7 +94,7 @@ R6 -> PC6 -> PA6 -> FL6 -> AP6 -> RI6 -> LP6 -> ME6/QG6 -> DG7/MRF7 -> MIA7 -> M
| 文档 | 边界 |
| --- | --- |
| [R7 扩大试运行草案](./trialrun/R7扩大试运行草案.md) | 只做 R7 准备;真实 R7 未启动 |
| [R7 扩大试运行草案](./trialrun/R7扩大试运行草案.md) | 只做 R7 准备草案;真实执行看 R7E 连续合同 |
| [OPS7 运维交接 Runbook](./trialrun/OPS7运维交接Runbook.md) | 不代表已执行生产配置变更、恢复演练或回滚 |
| [R7 用户手册与 FAQ](./trialrun/R7用户手册与FAQ.md) | 只描述已实现能力,不承诺预算、ERP、AI、完整差旅或复杂 BPM |
@@ -7,15 +7,15 @@ R7E-4,回滚联系人确认,"确认 R7E 回滚联系人、联系方式存放位
R7E-5,问题登记负责人确认,"确认 R7E 问题登记负责人、问题分级规则、记录位置和每日 closeout 责任。","1) 问题 owner 确认;2) 阻断/高/中/低分级明确;3) 问题记录位置明确;4) 每日 closeout 责任明确。","流程级验证:人工确认问题登记规则;试运行中所有问题进入本 CSV Notes、报告或后续连续治理流。",manual,DONE,DONE,DONE,docs/trialrun/人工试运行报告.md,"[""R7E-3""]",问题登记负责人为 wangshunli;可审计摘要写入 docs/trialrun/人工试运行报告.md 和本 CSV;按阻断 高 中 低分级;需开发的分流到 R7E ORG8 WF8 BIZ8 QAOPS8。
R7E-6,每日收口节奏确认,"确认 R7E 每日收口节奏,包括当天问题、阻断判定、是否继续、是否回滚和次日计划。","1) 每日收口模板确认;2) 阻断问题处理规则明确;3) 是否继续/暂停/回滚有决策人;4) 收口证据可追溯。","流程级验证:人工确认每日收口模板;首日试运行后按模板记录。",manual,DONE,DONE,DONE,docs/trialrun/人工试运行报告.md,"[""R7E-5""]",每日 17:30 收口;记录当天流程结果 问题级别 继续或暂停或回滚判断 次日动作和证据路径;不在仓库记录密码 token 私密联系方式或未授权票据原件。
R7E-7,暂停和回滚决策人确认,"确认 R7E 试运行中触发暂停、回滚或继续推进的最终决策人。","1) 决策人角色确认;2) 决策条件确认;3) 与回滚联系人不冲突;4) 未确认不得执行真实 R7。","流程级验证:人工确认暂停/回滚/继续决策人。",manual,DONE,DONE,DONE,docs/trialrun/人工试运行报告.md,"[""R7E-4"",""R7E-6""]",最终决策人为 wangshunli;触发条件包括 P0 阻断 权限泄漏 财务数据错误 审批链错误 无法登录或无法回 OA 或两个以上高优先级问题当天无法解释清楚;R7E-8 可进入。
R7E-8,公网健康复核,"在真实 R7E 启动当天复核公网匿名健康和 public bundle。","1) /ready 返回 ok=true;2) public bundle findings=0;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,docs/trialrun/人工试运行报告.md,"[""R7E-7""]",2026-05-14 按最新代码 4b14c92 完成受控部署;部署前 client typecheck/build 通过;部署中发现既有 BIZ8 加性 migration 未应用 先创建 DB 备份 hyb-oa-db-20260514_011940.dump 和附件备份 hyb-oa-storage-20260514_011940.tar.gz 后执行 prisma migrate deploy;复跑 deploy.sh 通过且远端 migration up to date;公网 /ready ok=true;public bundle scanned=57 focused=4 findings=0;公网移动矩阵 dg7-mobile-information-dedupe 5 passed。
R7E-9,企业微信入口复核,"在真实 R7E 启动前复核企业微信入口、绑定状态、免登或账号密码兜底、deeplink 回 OA。","1) 企业微信入口可达;2) 绑定用户可进入移动端;3) 未绑定有明确兜底;4) deeplink 回 OA 正确。","流程级验证:代表性真机或企业微信 WebView 人工复核;必要时补 Playwright WeCom UA。",manual|playwright,TODO,TODO,TODO,docs/trialrun/人工试运行报告.md|output/playwright,"[""R7E-8""]",2026-05-14 自动化 WeCom UA 模拟通过登录入口 企业微信配置和 OAuth 边界可达;用户真机确认所有设备可企业微信免登录进入 OA 但个人应用消息点击均提示 requestid tokenexpired 或深链已过期 归属 WF8-11A;消息送达 deeplink WebView 文件选择器和代表设备反馈仍需修复后人工确认 故本行不提前 DONE。
R7E-8,公网健康复核,"在真实 R7E 启动当天复核公网匿名健康和 public bundle。","1) /ready 返回 ok=true;2) public bundle findings=0;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,docs/trialrun/人工试运行报告.md,"[""R7E-7""]",2026-05-14 01:19 按最新代码 4b14c92 完成受控部署;部署前 client typecheck/build 通过;部署中发现既有 BIZ8 加性 migration 未应用 先创建 DB 备份 hyb-oa-db-20260514_011940.dump 和附件备份 hyb-oa-storage-20260514_011940.tar.gz 后执行 prisma migrate deploy;复跑 deploy.sh 通过且远端 migration up to date;公网 /ready ok=true;public bundle scanned=57 focused=4 findings=0;公网移动矩阵 dg7-mobile-information-dedupe 5 passed。2026-05-14 22:05 追加部署本地最新修复 5491e92;deploy.sh 远端 build 和 migration status 通过,脚本末尾 public bundle 首次扫描遇到短暂 502,随后复核 /ready 200、首页 200、public bundle scanned=57 focused=4 findings=0,并手动补跑 external deps smoke、runtime smoke、live readiness 3 passed、真实 OCR 样票 1 passed 且重复发票为可解释终态、DG7+R124 公网移动矩阵 6 passed。
R7E-9,企业微信入口复核,"在真实 R7E 启动前复核企业微信入口、绑定状态、免登或账号密码兜底、deeplink 回 OA。","1) 企业微信入口可达;2) 绑定用户可进入移动端;3) 未绑定有明确兜底;4) deeplink 回 OA 正确。","流程级验证:代表性真机或企业微信 WebView 人工复核;必要时补 Playwright WeCom UA。",manual|playwright,TODO,TODO,TODO,docs/trialrun/人工试运行报告.md|output/playwright,"[""R7E-8""]",2026-05-14 自动化 WeCom UA 模拟通过登录入口 企业微信配置和 OAuth 边界可达;用户真机确认所有设备可企业微信免登录进入 OA 但个人应用消息点击均提示 requestid tokenexpired 或深链已过期 归属 WF8-11A;2026-05-14 22:09 最新修复 5491e92 已部署,R7E_BROWSER_FLOW=wecom-ua 通过,企业微信 UA 模拟登录入口 配置和 OAuth 边界可达;消息送达 deeplink WebView 文件选择器和代表设备反馈仍需人工确认 故本行不提前 DONE。
R7E-10,报销流程试运行,"员工按真实路径提交报销或复核已有样例,覆盖发票/OCR/附件/审批/财务查看。","1) 员工可提交或查看报销;2) OCR/PDF-only 口径清晰;3) 审批链可追溯;4) 财务可复核;5) 问题进入登记清单。","流程级验证:员工进入报销 -> 上传/选择材料 -> 提交 -> 审批 -> 财务复核;记录结果和问题。",manual|playwright,DONE,DONE,DONE,docs/trialrun/人工试运行报告.md|client/tests/e2e/manual/r7e-browser-business-trialrun.spec.ts,"[""R7E-8""]",2026-05-14 无人工自动化补测:员工创建并提交报销 40876ef3-0652-4972-aa14-1aad1a855ae0 / BX-20260514-0016;授权 PDF 样票上传成功并绑定票据 188b076e-07cc-4058-aac9-02b5161a188a;审批人处理通过后申请人回看状态 approved 和审批历史;复用该单进入财务验证时 AP 台账筛选为空,财务付款闭环另记 R7E-14/R7E-16;证据 artifacts/r7e/browser-business-trialrun/report-reimbursement-finance.md 和 output/playwright/r7e-browser-business-trialrun。
R7E-11,审批流程试运行,"审批人按真实路径处理待办,员工查看进度,验证通知和审批历史一致。","1) 审批人可处理待办;2) 申请人可看进度;3) 审批历史一致;4) 自审和越权被拒绝。","流程级验证:提交申请 -> 审批人处理 -> 申请人查看状态 -> 审计/历史可追溯。",manual|playwright,DONE,DONE,DONE,docs/trialrun/人工试运行报告.md|client/tests/e2e/manual/r7e-browser-business-trialrun.spec.ts,"[""R7E-8""]",2026-05-14 无人工自动化补测:报销 BX-20260514-0016 请假 a22e45f8-b3d6-4862-97f2-30cbe4815e09 采购 CG-20260514-0005 均完成真实浏览器或 API 待办审批并可申请人回看状态和历史;补跑 approval-boundary 创建请假 b0cd3e00-2e67-4f51-9aaf-63aa2c53b47e / task 2cf30190-f569-4cce-ac9e-a0fe183bd460,申请人本人和 admin-only 审批接口均被 PERM_002 拒绝,经理正常通过;server workflow 单元测试 2 files 14 tests passed;证据 report-approval-boundary.md。
R7E-12,请假流程试运行,"员工提交请假,审批人审批,员工和团队视角查看状态。","1) 请假提交成功;2) 审批处理成功;3) 移动/PC 状态一致;4) 团队状态或日历口径可解释。","流程级验证:员工提交请假 -> 审批通过/驳回 -> 查看进度和团队状态。",manual|playwright,DONE,DONE,DONE,docs/trialrun/人工试运行报告.md|client/tests/e2e/manual/r7e-browser-business-trialrun.spec.ts,"[""R7E-8""]",2026-05-14 无人工自动化补测:员工创建未来工作日请假并提交;审批人处理通过;申请人 PC 回看已通过且 /mobile/leave 记录页可见无横向滚动;测试单据 a22e45f8-b3d6-4862-97f2-30cbe4815e09;证据 artifacts/r7e/browser-business-trialrun/report-leave.md。
R7E-13,采购流程试运行,"员工提交或查看采购申请,审批人处理,状态和附件可追溯。","1) 采购申请路径可用;2) 审批处理可用;3) 附件和状态可追溯;4) 移动采购创建如缺失则记录为后续 UX/P2。","流程级验证:员工提交/查看采购 -> 审批处理 -> 查看状态和附件。",manual|playwright,DONE,DONE,DONE,docs/trialrun/人工试运行报告.md|client/tests/e2e/manual/r7e-browser-business-trialrun.spec.ts,"[""R7E-8""]",2026-05-14 无人工自动化补测:采购 CG-20260514-0005 完成 PC 创建 明细 无敏感测试附件上传 提交 审批 状态和审批历史回看;移动采购列表 详情和附件可见且无横向滚动;证据 artifacts/r7e/browser-business-trialrun/report-purchase-attachment.md。
R7E-14,财务付款和导出试运行,"财务按真实路径复核报销、标记付款、查看台账或导出。","1) 财务角色入口正确;2) 付款标记或台账查看可用;3) 导出权限边界清楚;4) 管理员不自动获得财务能力。","流程级验证:财务进入台账 -> 复核/付款/导出 -> 检查权限和审计。",manual|playwright,DOING,TODO,TODO,docs/trialrun/人工试运行报告.md|client/tests/e2e/manual/r7e-browser-business-trialrun.spec.ts,"[""R7E-8""]",2026-05-14 finance-closeout 诊断:报销 40876ef3-0652-4972-aa14-1aad1a855ae0 / BX-20260514-0016 状态 approved;/api/ap-operations/reimbursement-ledger 和 /api/payment-batches 均返回 payment_batch_v1_disabled / flag_force_off;未创建付款批次 未复核 未执行付款 未验证导出;本行保持 DOING 并分流 R7E-16,待公网功能门禁开启或财务路径确认后复测。
R7E-15,移动端和真机反馈,"收集 R7E 参与者在移动浏览器和企业微信中的真实体验反馈。","1) 至少覆盖代表性 iPhone/Android 或企业微信设备;2) 记录页面、视口、角色和问题级别;3) 阻断问题进入修复分流;4) 体验优化进入 UX8。","流程级验证:按真机公网测试清单人工复核;必要时补 Playwright 截图。",manual|playwright,TODO,TODO,TODO,docs/trialrun/人工试运行报告.md|output/playwright,"[""R7E-9""]",2026-05-14 自动化移动浏览器员工 审批人 财务核心入口通过且无横向滚动;用户真机补充:所有设备没有 PC 壳和横向滚动 但通知卡片和待审批卡片右侧状态只露第一个字 归属 R7E-16A;iOS 只能上传 PDF Android 企业微信选择器仍显示拍照和选择文件 归属 R7E-16B;企业微信 UA 模拟不能替代修复后的 iPhone/Android 真机复测。
R7E-16,每日问题清单,"R7E 期间每天登记问题、级别、归属治理流、处理状态和证据路径。","1) 问题均有级别;2) 阻断问题当天决策;3) 新需求不混入即时修复;4) 每日 closeout 可追溯。","流程级验证:每日人工 closeout;问题分流到 R7E/UX8/ORG8/WF8/BIZ8/QAOPS8。",manual,DOING,TODO,TODO,docs/trialrun/人工试运行报告.md,"[""R7E-10"",""R7E-11"",""R7E-12"",""R7E-13"",""R7E-14"",""R7E-15""]",2026-05-14 用户真机反馈分流:免登录通过;企业微信消息 deeplink 全设备提示 requestid tokenexpired/深链已过期 为 HIGH 归属 WF8-11A;通知和待审批卡片右侧状态只露首字 为 MEDIUM 归属 R7E-16A;Android 企业微信 PDF 上传系统选择器仍显示拍照和选择文件 为 MEDIUM 归属 R7E-16B;财务移动入口和付款未启用空态不清楚 为 MEDIUM 归属 BIZ8-12A;财务付款闭环仍因 payment_batch_v1_disabled / flag_force_off 保持 R7E-14 DOING。
R7E-14,财务审批和付款延期试运行,"财务按真实路径复核到财务审批的报销单;本轮不启用 payment_batch_v1,不追付款批次闭环,付款批次作为 P2 单独窗口处理。","1) 财务角色入口正确;2) 到财务审批的报销单可查看;3) payment_batch_v1 关闭时有明确空态或错误契约;4) 管理员不自动获得财务能力;5) 不执行真实付款批次。","流程级验证:财务进入移动入口或台账 -> 查看到财务审批的报销单或付款批次未启用提示 -> 检查管理员无财务执行能力 -> 记录付款批次延期到 P2。",manual|playwright,DONE,DONE,DONE,docs/trialrun/人工试运行报告.md|client/tests/e2e/manual/r7e-browser-business-trialrun.spec.ts,"[""R7E-8""]",2026-05-14 finance-closeout 诊断:报销 40876ef3-0652-4972-aa14-1aad1a855ae0 / BX-20260514-0016 状态 approved;/api/ap-operations/reimbursement-ledger 和 /api/payment-batches 均返回 payment_batch_v1_disabled / flag_force_off;未创建付款批次 未复核 未执行付款 未验证导出。2026-05-14 用户确认 R7E 财务付款策略为先不启用,付款批次延期到 P2;22:08 最新部署后 R7E_BROWSER_FLOW=finance-closeout 通过但 AP API 按 flag_force_off SKIP,R7E_BROWSER_FLOW=mobile 通过并确认员工 审批人 财务移动入口可见且无横向滚动;本行按延期口径收口,不代表付款批次已启用。
R7E-15,移动端和真机反馈,"收集 R7E 参与者在移动浏览器和企业微信中的真实体验反馈。","1) 至少覆盖代表性 iPhone/Android 或企业微信设备;2) 记录页面、视口、角色和问题级别;3) 阻断问题进入修复分流;4) 体验优化进入 UX8。","流程级验证:按真机公网测试清单人工复核;必要时补 Playwright 截图。",manual|playwright,TODO,TODO,TODO,docs/trialrun/人工试运行报告.md|output/playwright,"[""R7E-9""]",2026-05-14 自动化移动浏览器员工 审批人 财务核心入口通过且无横向滚动;用户真机补充:所有设备没有 PC 壳和横向滚动 但通知卡片和待审批卡片右侧状态只露第一个字 归属 R7E-16A;iOS 只能上传 PDF Android 企业微信选择器仍显示拍照和选择文件 归属 R7E-16B;2026-05-14 22:09 最新修复 5491e92 已部署,DG7+R124 公网移动矩阵 6 passed,R7E_BROWSER_FLOW=mobile 通过;企业微信 UA 模拟和移动浏览器不能替代修复后的 iPhone/Android 真机复测。
R7E-16,每日问题清单,"R7E 期间每天登记问题、级别、归属治理流、处理状态和证据路径。","1) 问题均有级别;2) 阻断问题当天决策;3) 新需求不混入即时修复;4) 每日 closeout 可追溯。","流程级验证:每日人工 closeout;问题分流到 R7E/UX8/ORG8/WF8/BIZ8/QAOPS8。",manual,DOING,TODO,TODO,docs/trialrun/人工试运行报告.md,"[""R7E-10"",""R7E-11"",""R7E-12"",""R7E-13"",""R7E-14"",""R7E-15""]",2026-05-14 用户真机反馈分流:免登录通过;企业微信消息 deeplink 全设备提示 requestid tokenexpired/深链已过期 为 HIGH 归属 WF8-11A;通知和待审批卡片右侧状态只露首字 为 MEDIUM 归属 R7E-16A;Android 企业微信 PDF 上传系统选择器仍显示拍照和选择文件 为 MEDIUM 归属 R7E-16B;财务移动入口和付款未启用空态不清楚 为 MEDIUM 归属 BIZ8-12A;2026-05-14 22:05 最新修复 5491e92 已部署并通过 /ready public bundle live readiness DG7+R124 mobile R7E mobile/wecom-ua 自动化前置;财务付款闭环按用户确认延期到 P2,R7E-14 已按不启用付款批次口径收口;本行继续等待企业微信消息 deeplink 和代表设备真机复测结果。
R7E-16A,移动通知和待审批状态槽修复,"修复移动通知卡片和待审批卡片右侧状态徽标只显示第一个字的问题,保持无 PC 壳和无横向滚动。","1) 未读 已读 审批中 已处理等状态在 320/360/390/430px 可完整显示;2) 通知和审批卡片标题仍可省略但不挤压状态;3) 页面 scrollWidth 不超过视口;4) Playwright 移动矩阵通过。","流程级验证:cd client && npm run typecheck && npm run build;cd client && npx playwright test tests/e2e/dg7-mobile-information-dedupe.spec.ts tests/e2e/r124-mobile-entry-matrix.spec.ts --workers=1 --reporter=list。",npm|playwright,DONE,DONE,DONE,client/src/styles/mobile-touch.css|client/src/pages/MobilePortalPage.tsx|client/src/pages/MobileNotificationsPage.tsx|client/src/pages/MobileApprovalsPage.tsx|client/tests/e2e,"[""R7E-16""]",回滚路径:恢复 mobile-status-slot 旧样式和相关测试断言;不改变业务数据或路由。
R7E-16B,Android PDF 上传兜底校验,"补强移动发票上传的前端 PDF 过滤,记录 Android 企业微信系统选择器可能仍显示拍照和选择文件但 OA 不接收非 PDF 发票。","1) PDF 上传入口 accept 为 .pdf,application/pdf 且无 capture;2) 选择非 PDF 时前端拒绝并提示;3) 不把图片 OCR 误报为支持;4) 既有 PDF 上传测试通过。","流程级验证:cd client && npm run typecheck && npm run build;cd client && npx playwright test tests/e2e/r111-invoice-reimbursement-guard.spec.ts tests/e2e/r124-mobile-entry-matrix.spec.ts --workers=1 --reporter=list。",npm|playwright,DONE,DONE,DONE,client/src/lib/pdfFiles.ts|client/src/pages/MobileCapturePage.tsx|client/src/pages/MobileReimbursementDetailPage.tsx|client/src/pages/ReimbursementDetailPage.tsx|client/src/pages/invoice-pool/InvoiceUploadCard.tsx|client/tests/e2e,"[""R7E-16""]",Android WebView 文件选择器 UI 受系统和企业微信控制;本轮只保证 OA 端 PDF-only 校验和可解释提示 不新增图片 OCR。
R7E-17,阻断问题修复分流,"根据每日问题清单把阻断问题分流到当前 R7E 修复或后续连续治理流。","1) 阻断问题有 owner;2) 能在 R7E 内修的有方案和验证;3) 范围外问题进入 UX8/ORG8/WF8/BIZ8/QAOPS8;4) 不顺手扩大。","流程级验证:人工核对问题清单和分流结果;必要时创建后续连续 CSV。",manual,TODO,TODO,TODO,issues/*.csv|docs/trialrun/人工试运行报告.md,"[""R7E-16""]",涉及代码修复时必须先方案批准。
1 ID Title Description Acceptance Test_Method Tools Dev_Status Review1_Status Regression_Status Files Dependencies Notes
7 R7E-5 问题登记负责人确认 确认 R7E 问题登记负责人、问题分级规则、记录位置和每日 closeout 责任。 1) 问题 owner 确认;2) 阻断/高/中/低分级明确;3) 问题记录位置明确;4) 每日 closeout 责任明确。 流程级验证:人工确认问题登记规则;试运行中所有问题进入本 CSV Notes、报告或后续连续治理流。 manual DONE DONE DONE docs/trialrun/人工试运行报告.md ["R7E-3"] 问题登记负责人为 wangshunli;可审计摘要写入 docs/trialrun/人工试运行报告.md 和本 CSV;按阻断 高 中 低分级;需开发的分流到 R7E ORG8 WF8 BIZ8 QAOPS8。
8 R7E-6 每日收口节奏确认 确认 R7E 每日收口节奏,包括当天问题、阻断判定、是否继续、是否回滚和次日计划。 1) 每日收口模板确认;2) 阻断问题处理规则明确;3) 是否继续/暂停/回滚有决策人;4) 收口证据可追溯。 流程级验证:人工确认每日收口模板;首日试运行后按模板记录。 manual DONE DONE DONE docs/trialrun/人工试运行报告.md ["R7E-5"] 每日 17:30 收口;记录当天流程结果 问题级别 继续或暂停或回滚判断 次日动作和证据路径;不在仓库记录密码 token 私密联系方式或未授权票据原件。
9 R7E-7 暂停和回滚决策人确认 确认 R7E 试运行中触发暂停、回滚或继续推进的最终决策人。 1) 决策人角色确认;2) 决策条件确认;3) 与回滚联系人不冲突;4) 未确认不得执行真实 R7。 流程级验证:人工确认暂停/回滚/继续决策人。 manual DONE DONE DONE docs/trialrun/人工试运行报告.md ["R7E-4","R7E-6"] 最终决策人为 wangshunli;触发条件包括 P0 阻断 权限泄漏 财务数据错误 审批链错误 无法登录或无法回 OA 或两个以上高优先级问题当天无法解释清楚;R7E-8 可进入。
10 R7E-8 公网健康复核 在真实 R7E 启动当天复核公网匿名健康和 public bundle。 1) /ready 返回 ok=true;2) public bundle findings=0;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 docs/trialrun/人工试运行报告.md ["R7E-7"] 2026-05-14 按最新代码 4b14c92 完成受控部署;部署前 client typecheck/build 通过;部署中发现既有 BIZ8 加性 migration 未应用 先创建 DB 备份 hyb-oa-db-20260514_011940.dump 和附件备份 hyb-oa-storage-20260514_011940.tar.gz 后执行 prisma migrate deploy;复跑 deploy.sh 通过且远端 migration up to date;公网 /ready ok=true;public bundle scanned=57 focused=4 findings=0;公网移动矩阵 dg7-mobile-information-dedupe 5 passed。 2026-05-14 01:19 按最新代码 4b14c92 完成受控部署;部署前 client typecheck/build 通过;部署中发现既有 BIZ8 加性 migration 未应用 先创建 DB 备份 hyb-oa-db-20260514_011940.dump 和附件备份 hyb-oa-storage-20260514_011940.tar.gz 后执行 prisma migrate deploy;复跑 deploy.sh 通过且远端 migration up to date;公网 /ready ok=true;public bundle scanned=57 focused=4 findings=0;公网移动矩阵 dg7-mobile-information-dedupe 5 passed。2026-05-14 22:05 追加部署本地最新修复 5491e92;deploy.sh 远端 build 和 migration status 通过,脚本末尾 public bundle 首次扫描遇到短暂 502,随后复核 /ready 200、首页 200、public bundle scanned=57 focused=4 findings=0,并手动补跑 external deps smoke、runtime smoke、live readiness 3 passed、真实 OCR 样票 1 passed 且重复发票为可解释终态、DG7+R124 公网移动矩阵 6 passed。
11 R7E-9 企业微信入口复核 在真实 R7E 启动前复核企业微信入口、绑定状态、免登或账号密码兜底、deeplink 回 OA。 1) 企业微信入口可达;2) 绑定用户可进入移动端;3) 未绑定有明确兜底;4) deeplink 回 OA 正确。 流程级验证:代表性真机或企业微信 WebView 人工复核;必要时补 Playwright WeCom UA。 manual|playwright TODO TODO TODO docs/trialrun/人工试运行报告.md|output/playwright ["R7E-8"] 2026-05-14 自动化 WeCom UA 模拟通过登录入口 企业微信配置和 OAuth 边界可达;用户真机确认所有设备可企业微信免登录进入 OA 但个人应用消息点击均提示 requestid tokenexpired 或深链已过期 归属 WF8-11A;消息送达 deeplink WebView 文件选择器和代表设备反馈仍需修复后人工确认 故本行不提前 DONE。 2026-05-14 自动化 WeCom UA 模拟通过登录入口 企业微信配置和 OAuth 边界可达;用户真机确认所有设备可企业微信免登录进入 OA 但个人应用消息点击均提示 requestid tokenexpired 或深链已过期 归属 WF8-11A;2026-05-14 22:09 最新修复 5491e92 已部署,R7E_BROWSER_FLOW=wecom-ua 通过,企业微信 UA 模拟登录入口 配置和 OAuth 边界可达;消息送达 deeplink WebView 文件选择器和代表设备反馈仍需人工确认 故本行不提前 DONE。
12 R7E-10 报销流程试运行 员工按真实路径提交报销或复核已有样例,覆盖发票/OCR/附件/审批/财务查看。 1) 员工可提交或查看报销;2) OCR/PDF-only 口径清晰;3) 审批链可追溯;4) 财务可复核;5) 问题进入登记清单。 流程级验证:员工进入报销 -> 上传/选择材料 -> 提交 -> 审批 -> 财务复核;记录结果和问题。 manual|playwright DONE DONE DONE docs/trialrun/人工试运行报告.md|client/tests/e2e/manual/r7e-browser-business-trialrun.spec.ts ["R7E-8"] 2026-05-14 无人工自动化补测:员工创建并提交报销 40876ef3-0652-4972-aa14-1aad1a855ae0 / BX-20260514-0016;授权 PDF 样票上传成功并绑定票据 188b076e-07cc-4058-aac9-02b5161a188a;审批人处理通过后申请人回看状态 approved 和审批历史;复用该单进入财务验证时 AP 台账筛选为空,财务付款闭环另记 R7E-14/R7E-16;证据 artifacts/r7e/browser-business-trialrun/report-reimbursement-finance.md 和 output/playwright/r7e-browser-business-trialrun。
13 R7E-11 审批流程试运行 审批人按真实路径处理待办,员工查看进度,验证通知和审批历史一致。 1) 审批人可处理待办;2) 申请人可看进度;3) 审批历史一致;4) 自审和越权被拒绝。 流程级验证:提交申请 -> 审批人处理 -> 申请人查看状态 -> 审计/历史可追溯。 manual|playwright DONE DONE DONE docs/trialrun/人工试运行报告.md|client/tests/e2e/manual/r7e-browser-business-trialrun.spec.ts ["R7E-8"] 2026-05-14 无人工自动化补测:报销 BX-20260514-0016 请假 a22e45f8-b3d6-4862-97f2-30cbe4815e09 采购 CG-20260514-0005 均完成真实浏览器或 API 待办审批并可申请人回看状态和历史;补跑 approval-boundary 创建请假 b0cd3e00-2e67-4f51-9aaf-63aa2c53b47e / task 2cf30190-f569-4cce-ac9e-a0fe183bd460,申请人本人和 admin-only 审批接口均被 PERM_002 拒绝,经理正常通过;server workflow 单元测试 2 files 14 tests passed;证据 report-approval-boundary.md。
14 R7E-12 请假流程试运行 员工提交请假,审批人审批,员工和团队视角查看状态。 1) 请假提交成功;2) 审批处理成功;3) 移动/PC 状态一致;4) 团队状态或日历口径可解释。 流程级验证:员工提交请假 -> 审批通过/驳回 -> 查看进度和团队状态。 manual|playwright DONE DONE DONE docs/trialrun/人工试运行报告.md|client/tests/e2e/manual/r7e-browser-business-trialrun.spec.ts ["R7E-8"] 2026-05-14 无人工自动化补测:员工创建未来工作日请假并提交;审批人处理通过;申请人 PC 回看已通过且 /mobile/leave 记录页可见无横向滚动;测试单据 a22e45f8-b3d6-4862-97f2-30cbe4815e09;证据 artifacts/r7e/browser-business-trialrun/report-leave.md。
15 R7E-13 采购流程试运行 员工提交或查看采购申请,审批人处理,状态和附件可追溯。 1) 采购申请路径可用;2) 审批处理可用;3) 附件和状态可追溯;4) 移动采购创建如缺失则记录为后续 UX/P2。 流程级验证:员工提交/查看采购 -> 审批处理 -> 查看状态和附件。 manual|playwright DONE DONE DONE docs/trialrun/人工试运行报告.md|client/tests/e2e/manual/r7e-browser-business-trialrun.spec.ts ["R7E-8"] 2026-05-14 无人工自动化补测:采购 CG-20260514-0005 完成 PC 创建 明细 无敏感测试附件上传 提交 审批 状态和审批历史回看;移动采购列表 详情和附件可见且无横向滚动;证据 artifacts/r7e/browser-business-trialrun/report-purchase-attachment.md。
16 R7E-14 财务付款和导出试运行 财务审批和付款延期试运行 财务按真实路径复核报销、标记付款、查看台账或导出。 财务按真实路径复核到财务审批的报销单;本轮不启用 payment_batch_v1,不追付款批次闭环,付款批次作为 P2 单独窗口处理。 1) 财务角色入口正确;2) 付款标记或台账查看可用;3) 导出权限边界清楚;4) 管理员不自动获得财务能力。 1) 财务角色入口正确;2) 到财务审批的报销单可查看;3) payment_batch_v1 关闭时有明确空态或错误契约;4) 管理员不自动获得财务能力;5) 不执行真实付款批次。 流程级验证:财务进入台账 -> 复核/付款/导出 -> 检查权限和审计。 流程级验证:财务进入移动入口或台账 -> 查看到财务审批的报销单或付款批次未启用提示 -> 检查管理员无财务执行能力 -> 记录付款批次延期到 P2。 manual|playwright DOING DONE TODO DONE TODO DONE docs/trialrun/人工试运行报告.md|client/tests/e2e/manual/r7e-browser-business-trialrun.spec.ts ["R7E-8"] 2026-05-14 finance-closeout 诊断:报销 40876ef3-0652-4972-aa14-1aad1a855ae0 / BX-20260514-0016 状态 approved;/api/ap-operations/reimbursement-ledger 和 /api/payment-batches 均返回 payment_batch_v1_disabled / flag_force_off;未创建付款批次 未复核 未执行付款 未验证导出;本行保持 DOING 并分流 R7E-16,待公网功能门禁开启或财务路径确认后复测。 2026-05-14 finance-closeout 诊断:报销 40876ef3-0652-4972-aa14-1aad1a855ae0 / BX-20260514-0016 状态 approved;/api/ap-operations/reimbursement-ledger 和 /api/payment-batches 均返回 payment_batch_v1_disabled / flag_force_off;未创建付款批次 未复核 未执行付款 未验证导出。2026-05-14 用户确认 R7E 财务付款策略为先不启用,付款批次延期到 P2;22:08 最新部署后 R7E_BROWSER_FLOW=finance-closeout 通过但 AP API 按 flag_force_off SKIP,R7E_BROWSER_FLOW=mobile 通过并确认员工 审批人 财务移动入口可见且无横向滚动;本行按延期口径收口,不代表付款批次已启用。
17 R7E-15 移动端和真机反馈 收集 R7E 参与者在移动浏览器和企业微信中的真实体验反馈。 1) 至少覆盖代表性 iPhone/Android 或企业微信设备;2) 记录页面、视口、角色和问题级别;3) 阻断问题进入修复分流;4) 体验优化进入 UX8。 流程级验证:按真机公网测试清单人工复核;必要时补 Playwright 截图。 manual|playwright TODO TODO TODO docs/trialrun/人工试运行报告.md|output/playwright ["R7E-9"] 2026-05-14 自动化移动浏览器员工 审批人 财务核心入口通过且无横向滚动;用户真机补充:所有设备没有 PC 壳和横向滚动 但通知卡片和待审批卡片右侧状态只露第一个字 归属 R7E-16A;iOS 只能上传 PDF Android 企业微信选择器仍显示拍照和选择文件 归属 R7E-16B;企业微信 UA 模拟不能替代修复后的 iPhone/Android 真机复测。 2026-05-14 自动化移动浏览器员工 审批人 财务核心入口通过且无横向滚动;用户真机补充:所有设备没有 PC 壳和横向滚动 但通知卡片和待审批卡片右侧状态只露第一个字 归属 R7E-16A;iOS 只能上传 PDF Android 企业微信选择器仍显示拍照和选择文件 归属 R7E-16B;2026-05-14 22:09 最新修复 5491e92 已部署,DG7+R124 公网移动矩阵 6 passed,R7E_BROWSER_FLOW=mobile 通过;企业微信 UA 模拟和移动浏览器不能替代修复后的 iPhone/Android 真机复测。
18 R7E-16 每日问题清单 R7E 期间每天登记问题、级别、归属治理流、处理状态和证据路径。 1) 问题均有级别;2) 阻断问题当天决策;3) 新需求不混入即时修复;4) 每日 closeout 可追溯。 流程级验证:每日人工 closeout;问题分流到 R7E/UX8/ORG8/WF8/BIZ8/QAOPS8。 manual DOING TODO TODO docs/trialrun/人工试运行报告.md ["R7E-10","R7E-11","R7E-12","R7E-13","R7E-14","R7E-15"] 2026-05-14 用户真机反馈分流:免登录通过;企业微信消息 deeplink 全设备提示 requestid tokenexpired/深链已过期 为 HIGH 归属 WF8-11A;通知和待审批卡片右侧状态只露首字 为 MEDIUM 归属 R7E-16A;Android 企业微信 PDF 上传系统选择器仍显示拍照和选择文件 为 MEDIUM 归属 R7E-16B;财务移动入口和付款未启用空态不清楚 为 MEDIUM 归属 BIZ8-12A;财务付款闭环仍因 payment_batch_v1_disabled / flag_force_off 保持 R7E-14 DOING。 2026-05-14 用户真机反馈分流:免登录通过;企业微信消息 deeplink 全设备提示 requestid tokenexpired/深链已过期 为 HIGH 归属 WF8-11A;通知和待审批卡片右侧状态只露首字 为 MEDIUM 归属 R7E-16A;Android 企业微信 PDF 上传系统选择器仍显示拍照和选择文件 为 MEDIUM 归属 R7E-16B;财务移动入口和付款未启用空态不清楚 为 MEDIUM 归属 BIZ8-12A;2026-05-14 22:05 最新修复 5491e92 已部署并通过 /ready public bundle live readiness DG7+R124 mobile R7E mobile/wecom-ua 自动化前置;财务付款闭环按用户确认延期到 P2,R7E-14 已按不启用付款批次口径收口;本行继续等待企业微信消息 deeplink 和代表设备真机复测结果。
19 R7E-16A 移动通知和待审批状态槽修复 修复移动通知卡片和待审批卡片右侧状态徽标只显示第一个字的问题,保持无 PC 壳和无横向滚动。 1) 未读 已读 审批中 已处理等状态在 320/360/390/430px 可完整显示;2) 通知和审批卡片标题仍可省略但不挤压状态;3) 页面 scrollWidth 不超过视口;4) Playwright 移动矩阵通过。 流程级验证:cd client && npm run typecheck && npm run build;cd client && npx playwright test tests/e2e/dg7-mobile-information-dedupe.spec.ts tests/e2e/r124-mobile-entry-matrix.spec.ts --workers=1 --reporter=list。 npm|playwright DONE DONE DONE client/src/styles/mobile-touch.css|client/src/pages/MobilePortalPage.tsx|client/src/pages/MobileNotificationsPage.tsx|client/src/pages/MobileApprovalsPage.tsx|client/tests/e2e ["R7E-16"] 回滚路径:恢复 mobile-status-slot 旧样式和相关测试断言;不改变业务数据或路由。
20 R7E-16B Android PDF 上传兜底校验 补强移动发票上传的前端 PDF 过滤,记录 Android 企业微信系统选择器可能仍显示拍照和选择文件但 OA 不接收非 PDF 发票。 1) PDF 上传入口 accept 为 .pdf,application/pdf 且无 capture;2) 选择非 PDF 时前端拒绝并提示;3) 不把图片 OCR 误报为支持;4) 既有 PDF 上传测试通过。 流程级验证:cd client && npm run typecheck && npm run build;cd client && npx playwright test tests/e2e/r111-invoice-reimbursement-guard.spec.ts tests/e2e/r124-mobile-entry-matrix.spec.ts --workers=1 --reporter=list。 npm|playwright DONE DONE DONE client/src/lib/pdfFiles.ts|client/src/pages/MobileCapturePage.tsx|client/src/pages/MobileReimbursementDetailPage.tsx|client/src/pages/ReimbursementDetailPage.tsx|client/src/pages/invoice-pool/InvoiceUploadCard.tsx|client/tests/e2e ["R7E-16"] Android WebView 文件选择器 UI 受系统和企业微信控制;本轮只保证 OA 端 PDF-only 校验和可解释提示 不新增图片 OCR。
21 R7E-17 阻断问题修复分流 根据每日问题清单把阻断问题分流到当前 R7E 修复或后续连续治理流。 1) 阻断问题有 owner;2) 能在 R7E 内修的有方案和验证;3) 范围外问题进入 UX8/ORG8/WF8/BIZ8/QAOPS8;4) 不顺手扩大。 流程级验证:人工核对问题清单和分流结果;必要时创建后续连续 CSV。 manual TODO TODO TODO issues/*.csv|docs/trialrun/人工试运行报告.md ["R7E-16"] 涉及代码修复时必须先方案批准。
@@ -16,7 +16,7 @@ QAOPS8-13,DORA 交付指标基线,"建立部署频率、变更前置时间、变
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,DOING,TODO,TODO,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 失败确认为前置问题;企业微信专属线仍为免登录 消息 deeplink WebView 文件选择器和真机渲染后补门禁;明确 R7E 人工验收不被自动化替代;因 R7E-9 R7E-14 R7E-15 R7E-18 WF8-11 BIZ8-12 仍未完成,本行不标 DONE。
QAOPS8-17,上线 Go No-Go 清单,"建立上线或扩大试运行 Go/No-Go 清单,统一本地、公网匿名、带凭据、企业微信真机和人工验收结论。","1) Go、No-Go、Pause 条件明确;2) 阻断问题为 0 或有明确延期;3) R7E 人工验收不被自动化替代;4) 结论写入 Issue 和报告。","流程级验证:人工核对 R7E 结论、QAOPS8 门禁、发布清单和问题清单。",manual,DOING,TODO,TODO,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 口径收口;企业微信专属线仍为消息 deeplink WebView 文件选择器和真机渲染后补门禁;明确 R7E 人工验收不被自动化替代;因 R7E-9 R7E-15 R7E-18 WF8-11 BIZ8-12 仍未完成,本行不标 DONE。
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,TODO,TODO,TODO,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""]",依赖 R7E 人工试运行结论;当前不能提前完成。
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,TODO,TODO,TODO,issues/2026-05-13_17-30-00-qaops8-test-release-ops.csv|docs/文档索引.md|docs/文档事实源状态矩阵.md,"[""QAOPS8-19""]",所有执行行完成后才能收口。
1 ID Title Description Acceptance Test_Method Tools Dev_Status Review1_Status Regression_Status Files Dependencies Notes
16 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 复核项,不声明等保测评完成。
17 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 中;未新增冲突文档。
18 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 数据损坏 发布阻断或公网关键门禁失败;停止条件为备份不完整 权限不明确 影响生产或责任人不在线;本行只确认窗口和边界 未执行数据库恢复 生产回滚 服务切换或破坏性命令;真实恢复或生产回滚执行前仍需再次明确批准。
19 QAOPS8-17 上线 Go No-Go 清单 建立上线或扩大试运行 Go/No-Go 清单,统一本地、公网匿名、带凭据、企业微信真机和人工验收结论。 1) Go、No-Go、Pause 条件明确;2) 阻断问题为 0 或有明确延期;3) R7E 人工验收不被自动化替代;4) 结论写入 Issue 和报告。 流程级验证:人工核对 R7E 结论、QAOPS8 门禁、发布清单和问题清单。 manual DOING TODO TODO 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 失败确认为前置问题;企业微信专属线仍为免登录 消息 deeplink WebView 文件选择器和真机渲染后补门禁;明确 R7E 人工验收不被自动化替代;因 R7E-9 R7E-14 R7E-15 R7E-18 WF8-11 BIZ8-12 仍未完成,本行不标 DONE。 当前清单已形成: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 口径收口;企业微信专属线仍为消息 deeplink WebView 文件选择器和真机渲染后补门禁;明确 R7E 人工验收不被自动化替代;因 R7E-9 R7E-15 R7E-18 WF8-11 BIZ8-12 仍未完成,本行不标 DONE。
20 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。
21 QAOPS8-19 R7E 后上线硬化收口 在 R7E 真实反馈后集中收口上线硬化,更新门禁缺口、问题分流和后续治理优先级。 1) R7E 结论已记录;2) QAOPS8 未完成项有归属;3) 阻断问题有 owner;4) 后续 ORG8、WF8、BIZ8、QAOPS8 顺序可解释。 流程级验证:人工核对 R7E-18、R7E-19、QAOPS8 当前状态和问题清单。 manual TODO TODO TODO 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"] 依赖 R7E 人工试运行结论;当前不能提前完成。
22 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 TODO TODO TODO issues/2026-05-13_17-30-00-qaops8-test-release-ops.csv|docs/文档索引.md|docs/文档事实源状态矩阵.md ["QAOPS8-19"] 所有执行行完成后才能收口。
@@ -10,7 +10,7 @@ WF8-7,邮件通道决策记录,"决定邮件通道是否进入当前验收,若
WF8-8,三渠道通知验收设计,"设计站内、企业微信个人应用消息和邮件或冻结替代通道的三渠道验收口径。","1) 三渠道或二渠道加冻结说明清楚;2) deeplink 回 OA;3) 缺配置时 SKIP 不等于 PASS;4) 真机和公网边界明确。","流程级验证:人工审查通知矩阵;必要时执行 live readiness 和企业微信真机验证。",manual|bash|playwright,DONE,DONE,DONE,docs/试运行与自动化验证手册.md|docs/需求-企业微信基础设施规约.md,"[""WF8-6"",""WF8-7""]",Runbook 已新增 WF8 通知渠道验收矩阵:站内/企业微信个人应用/邮件冻结/失败追溯四类口径;明确本地自动化/公网匿名/公网带凭据/企业微信真机证据边界;rg Test_Method 已通过;本任务仅设计验收口径 未执行真机验收。
WF8-9,催办和超时提醒回归,"回归既有催办和超时提醒,避免转审或通知增强引入倒退。","1) 催办不改变审批状态;2) 超时提醒不重复刷屏;3) 通知对象正确;4) 历史记录可追溯。","流程级验证:创建待审批任务 -> 触发催办或超时提醒 -> 检查通知和 workflow history。",node|bash|manual,DONE,DONE,DONE,server/src|server/scripts|docs/需求-统一审批中心规约.md,"[""WF8-6""]",AP6 后提醒能力是当前事实;已跑 E2E AP6 审批催办与待办汇总 1 passed 覆盖申请人催办/经理和 admin 禁止/重复 24h 限制/history/notification/audit/summary;已跑 workflow.travel、workflowOverdueReminderJob、notificationTypes 单测 7 passed 覆盖超时提醒 job 和通知类型;node --check workflow.js/workflowOverdueReminderJob.js 通过。
WF8-10,审批历史一致性,"确保转审、催办、通过、驳回和通知事件在审批历史中一致展示。","1) 历史顺序清楚;2) 操作人和目标人可解释;3) 不泄露敏感字段;4) PC 和移动展示一致。","流程级验证:提交审批 -> 转审 -> 催办 -> 审批处理 -> PC 和移动查看历史。",playwright|node|manual,DONE,DONE,DONE,server/src|client/src,"[""WF8-3"",""WF8-4"",""WF8-5"",""WF8-9""]",完成:MobileApprovalsPage 渲染 selectedTask.history 的移动处理历史卡片并复用动作中文映射;仅展示动作 操作人 意见 时间和空态 不渲染 payload;不改后端 数据结构 权限或状态机;验证 npm run typecheck 通过;npm run build 通过;npx playwright test tests/e2e/dg7-mobile-information-dedupe.spec.ts --workers=1 --reporter=list 在启动本地 3000 服务后 5 passed。
WF8-11,通知 deeplink 回 OA 验证,"验证企业微信个人应用消息或站内通知 deeplink 能回到 OA 目标页面。","1) deeplink 指向具体业务目标;2) 不只返回通知中心;3) 未登录或未绑定有可解释提示;4) 移动布局正常。","流程级验证:触发通知 -> 点击 deeplink -> 企业微信或移动浏览器打开 OA 目标详情 -> 检查权限和页面。",playwright|manual,TODO,TODO,TODO,client/src|server/src|docs/trialrun/真机公网测试清单.md,"[""WF8-8"",""WF8-10"",""WF8-11A""]",真机验收不能被自动化替代;2026-05-14 用户真机反馈为企业微信免登录通过 但个人应用消息点击均提示 requestid tokenexpired 或深链已过期 本行等待修复后复测。
WF8-11,通知 deeplink 回 OA 验证,"验证企业微信个人应用消息或站内通知 deeplink 能回到 OA 目标页面。","1) deeplink 指向具体业务目标;2) 不只返回通知中心;3) 未登录或未绑定有可解释提示;4) 移动布局正常。","流程级验证:触发通知 -> 点击 deeplink -> 企业微信或移动浏览器打开 OA 目标详情 -> 检查权限和页面。",playwright|manual,TODO,TODO,TODO,client/src|server/src|docs/trialrun/真机公网测试清单.md,"[""WF8-8"",""WF8-10"",""WF8-11A""]",真机验收不能被自动化替代;2026-05-14 用户真机反馈为企业微信免登录通过 但个人应用消息点击均提示 requestid tokenexpired 或深链已过期;2026-05-14 22:05 修复提交 5491e92 已部署到 oa.hyinda.com,公网 /ready、public bundle、live readiness、WeCom UA 自动化均通过;本行等待新企业微信个人应用消息在代表设备点击目标单据或审批页后再关闭。
WF8-11A,企业微信消息过期深链修复,"修复企业微信个人应用消息中的 OA deeplink 过期后无法回到目标单据或审批页的问题,保留签名校验和内部路径白名单。","1) 签名有效且 targetPath 为内部相对路径时 过期旧 token 也能回 OA;2) 企业微信 WebView 优先进入 wecom login 并带 returnTo;3) 普通浏览器仍走目标路径和现有登录 redirect;4) 无效签名 绝对 URL 和 // 路径仍拒绝。","流程级验证:cd server && node --check src/routes/auth.js src/services/notifications/detailUrl.js;cd server && npm test -- tests/unit/services/imEnqueue.test.js tests/unit/services/notificationDispatcher.test.js tests/unit/routes/auth.login.test.js tests/unit/routes/wecomAuth.test.js。",node|npm,DONE,DONE,DONE,server/src/routes/auth.js|server/src/services/notifications/detailUrl.js|server/tests/unit,"[""WF8-10""]",回滚路径:恢复 /api/auth/deeplink 的 exp 硬过期检查和旧 detailUrl payload;不会修改 workflow 状态机或通知通道配置。
WF8-12,workflow reviewer 审查,"对 WF8 涉及的 workflow 状态、权限和通知副作用做独立 review。","1) 非法状态跳转无阻断;2) 权限泄漏无阻断;3) 重复审批和并发风险可控;4) 漏测项有归属。","流程级验证:reviewer 人工审查 diff、Issue CSV 和测试证据。",manual,TODO,TODO,TODO,issues/2026-05-13_18-23-52-wf8-approval-notification.csv|server/src|client/src,"[""WF8-10"",""WF8-11""]",实现后立即 review。
WF8-13,WF8 收口准备,"整理 WF8 验证摘要、通知矩阵、未完成项和后续业务影响。","1) DONE 行均有证据;2) 通知渠道结论清楚;3) 未完成项不伪装完成;4) 文档入口同步。","流程级验证:人工核对 WF8 CSV 状态、验证摘要、通知矩阵和 git diff。",manual|git,TODO,TODO,TODO,issues/2026-05-13_18-23-52-wf8-approval-notification.csv|docs/文档索引.md,"[""WF8-12""]",对应原规划 WF8-13。
1 ID Title Description Acceptance Test_Method Tools Dev_Status Review1_Status Regression_Status Files Dependencies Notes
10 WF8-8 三渠道通知验收设计 设计站内、企业微信个人应用消息和邮件或冻结替代通道的三渠道验收口径。 1) 三渠道或二渠道加冻结说明清楚;2) deeplink 回 OA;3) 缺配置时 SKIP 不等于 PASS;4) 真机和公网边界明确。 流程级验证:人工审查通知矩阵;必要时执行 live readiness 和企业微信真机验证。 manual|bash|playwright DONE DONE DONE docs/试运行与自动化验证手册.md|docs/需求-企业微信基础设施规约.md ["WF8-6","WF8-7"] Runbook 已新增 WF8 通知渠道验收矩阵:站内/企业微信个人应用/邮件冻结/失败追溯四类口径;明确本地自动化/公网匿名/公网带凭据/企业微信真机证据边界;rg Test_Method 已通过;本任务仅设计验收口径 未执行真机验收。
11 WF8-9 催办和超时提醒回归 回归既有催办和超时提醒,避免转审或通知增强引入倒退。 1) 催办不改变审批状态;2) 超时提醒不重复刷屏;3) 通知对象正确;4) 历史记录可追溯。 流程级验证:创建待审批任务 -> 触发催办或超时提醒 -> 检查通知和 workflow history。 node|bash|manual DONE DONE DONE server/src|server/scripts|docs/需求-统一审批中心规约.md ["WF8-6"] AP6 后提醒能力是当前事实;已跑 E2E AP6 审批催办与待办汇总 1 passed 覆盖申请人催办/经理和 admin 禁止/重复 24h 限制/history/notification/audit/summary;已跑 workflow.travel、workflowOverdueReminderJob、notificationTypes 单测 7 passed 覆盖超时提醒 job 和通知类型;node --check workflow.js/workflowOverdueReminderJob.js 通过。
12 WF8-10 审批历史一致性 确保转审、催办、通过、驳回和通知事件在审批历史中一致展示。 1) 历史顺序清楚;2) 操作人和目标人可解释;3) 不泄露敏感字段;4) PC 和移动展示一致。 流程级验证:提交审批 -> 转审 -> 催办 -> 审批处理 -> PC 和移动查看历史。 playwright|node|manual DONE DONE DONE server/src|client/src ["WF8-3","WF8-4","WF8-5","WF8-9"] 完成:MobileApprovalsPage 渲染 selectedTask.history 的移动处理历史卡片并复用动作中文映射;仅展示动作 操作人 意见 时间和空态 不渲染 payload;不改后端 数据结构 权限或状态机;验证 npm run typecheck 通过;npm run build 通过;npx playwright test tests/e2e/dg7-mobile-information-dedupe.spec.ts --workers=1 --reporter=list 在启动本地 3000 服务后 5 passed。
13 WF8-11 通知 deeplink 回 OA 验证 验证企业微信个人应用消息或站内通知 deeplink 能回到 OA 目标页面。 1) deeplink 指向具体业务目标;2) 不只返回通知中心;3) 未登录或未绑定有可解释提示;4) 移动布局正常。 流程级验证:触发通知 -> 点击 deeplink -> 企业微信或移动浏览器打开 OA 目标详情 -> 检查权限和页面。 playwright|manual TODO TODO TODO client/src|server/src|docs/trialrun/真机公网测试清单.md ["WF8-8","WF8-10","WF8-11A"] 真机验收不能被自动化替代;2026-05-14 用户真机反馈为企业微信免登录通过 但个人应用消息点击均提示 requestid tokenexpired 或深链已过期 本行等待修复后复测。 真机验收不能被自动化替代;2026-05-14 用户真机反馈为企业微信免登录通过 但个人应用消息点击均提示 requestid tokenexpired 或深链已过期;2026-05-14 22:05 修复提交 5491e92 已部署到 oa.hyinda.com,公网 /ready、public bundle、live readiness、WeCom UA 自动化均通过;本行等待新企业微信个人应用消息在代表设备点击目标单据或审批页后再关闭。
14 WF8-11A 企业微信消息过期深链修复 修复企业微信个人应用消息中的 OA deeplink 过期后无法回到目标单据或审批页的问题,保留签名校验和内部路径白名单。 1) 签名有效且 targetPath 为内部相对路径时 过期旧 token 也能回 OA;2) 企业微信 WebView 优先进入 wecom login 并带 returnTo;3) 普通浏览器仍走目标路径和现有登录 redirect;4) 无效签名 绝对 URL 和 // 路径仍拒绝。 流程级验证:cd server && node --check src/routes/auth.js src/services/notifications/detailUrl.js;cd server && npm test -- tests/unit/services/imEnqueue.test.js tests/unit/services/notificationDispatcher.test.js tests/unit/routes/auth.login.test.js tests/unit/routes/wecomAuth.test.js。 node|npm DONE DONE DONE server/src/routes/auth.js|server/src/services/notifications/detailUrl.js|server/tests/unit ["WF8-10"] 回滚路径:恢复 /api/auth/deeplink 的 exp 硬过期检查和旧 detailUrl payload;不会修改 workflow 状态机或通知通道配置。
15 WF8-12 workflow reviewer 审查 对 WF8 涉及的 workflow 状态、权限和通知副作用做独立 review。 1) 非法状态跳转无阻断;2) 权限泄漏无阻断;3) 重复审批和并发风险可控;4) 漏测项有归属。 流程级验证:reviewer 人工审查 diff、Issue CSV 和测试证据。 manual TODO TODO TODO issues/2026-05-13_18-23-52-wf8-approval-notification.csv|server/src|client/src ["WF8-10","WF8-11"] 实现后立即 review。
16 WF8-13 WF8 收口准备 整理 WF8 验证摘要、通知矩阵、未完成项和后续业务影响。 1) DONE 行均有证据;2) 通知渠道结论清楚;3) 未完成项不伪装完成;4) 文档入口同步。 流程级验证:人工核对 WF8 CSV 状态、验证摘要、通知矩阵和 git diff。 manual|git TODO TODO TODO issues/2026-05-13_18-23-52-wf8-approval-notification.csv|docs/文档索引.md ["WF8-12"] 对应原规划 WF8-13。
@@ -11,7 +11,7 @@ BIZ8-8,财务台账扫读性,"提升财务台账的扫读性,优先解决状
BIZ8-9,付款和导出增强,"增强或验证财务付款标记和导出路径,保证权限、状态和审计一致。","1) 只有财务可执行付款或导出;2) 状态转换合法;3) 导出不泄露无权限数据;4) 操作可追溯。","流程级验证:财务付款或导出 -> 普通员工和管理员直连复核 -> 检查状态和权限。",node|bash|manual,DONE,DONE,DONE,server/src|client/src|server/scripts,"[""BIZ8-8""]",完成:仅补强 AP export 权限单测和测试错误契约 不改业务代码;覆盖财务导出成功并写 EXPORT_AP_OPERATIONS 审计 普通员工和 admin-only 无财务权限导出 403 且不写审计;付款批次报销流保持 reviewed 到 paid invoice archived ERP outbox notification audit followup 一致;验证 prisma validate 通过;node --check exports paymentBatches financeLedger 通过;npm test exports.apOperations paymentBatches.reimbursement financeLedger 3 files 8 tests passed;继续冻结直接付款按钮 ERP 实时集成和新付款状态机。
BIZ8-10,费用提示轻量规则,"设计轻量费用提示规则,作为填报辅助而非重预算控制。","1) 提示不阻断合法报销;2) 规则来源清楚;3) 不承诺预算控制;4) 用户可理解。","流程级验证:填写不同金额或类型报销 -> 检查费用提示 -> 提交和审批不被误阻断。",manual|playwright,DONE,DONE,DONE,docs/报销发票附件规则.md|client/src|server/src,"[""BIZ8-1""]",已在 docs/需求-报销发票OCR规约.md 增加 BIZ8 费用提示轻量规则,明确材料提示、金额提示、费用标准 warn、费用标准 block 和预算提示边界;npm test -- tests/unit/services/expenseStandards.check.test.js tests/unit/routes/reimbursements.expense-standards.test.js 通过 2 files 9 tests,覆盖 warn 不阻断、block 阻断和 manual_review 优先级;未改业务代码。
BIZ8-11,项目关联增强,"增强报销、采购或合同与项目轻管理的关联,保持轻量不扩展成重型项目管理。","1) 项目选择和展示清楚;2) 无项目时可解释;3) 项目权限不泄露;4) 不扩展复杂 WBS。","流程级验证:创建或选择项目 -> 保存采购草稿 -> 项目负责人查看项目采购摘要 -> 采购详情权限直连复核;自动化覆盖 projectId 列表过滤 归档项目新关联拦截 已有关联不重复阻断 项目成员不能越过采购详情权限。",node|npm|git|manual,DONE,DONE,DONE,server/prisma|server/src|server/tests|client/src,"[""BIZ8-1""]",完成:采购新增 nullable project_id 外键 ON DELETE SET NULL 和索引;采购列表详情草稿更新补项目字段;新关联校验项目可读且未归档;已有项目无关编辑不重复阻断;项目详情新增轻量采购摘要;前端采购表单列表详情和项目详情补展示;验证 npm run prisma:validate 通过;node --check purchaseRequests projects 通过;npm test purchase.project-link projects purchase.submit-budget-precheck 3 files 12 tests passed;client typecheck 和 build 通过;git diff --check 通过;reviewer 已复核并修复阻断问题;回滚:代码回滚可保留 nullable 列,物理回滚需先 drop constraint purchase_requests_project_id_fkey 再 drop index idx_purchase_requests_project 再 drop column purchase_requests.project_id 且关联数据会丢失;继续冻结复杂 WBS 重预算 ERP 实时集成。
BIZ8-12,移动端业务入口评估,"评估报销、OCR、财务和项目轻量能力在移动端和企业微信入口的可用性。","1) 移动入口不重复;2) 企业微信入口回 OA;3) 财务敏感能力不误暴露;4) 新增入口进入移动矩阵。","流程级验证:员工和财务角色在移动端进入业务入口 -> 检查报销/OCR/项目状态和权限。",playwright|manual,DOING,TODO,TODO,client/src|docs/产品设计规则.md|docs/trialrun/真机公网测试清单.md,"[""BIZ8-8"",""BIZ8-11""]",自动化评估已启动但不能关闭:只读审查确认 BIZ8-12 必须保留跨视口自动化加代表性真机确认;代码路径显示移动首页按权限裁剪报销 OCR 采购 资产入口 财务摘要仅财务角色可见 PC 财务路由在移动上下文回 /mobile;MOBILE_VISUAL_OUTPUT_DIR=biz8-12-mobile-entry npx playwright test r6-mobile-unified-design-rollout r124-mobile-entry-matrix r110-mobile-pc-routing wecom-entry --workers=1 --reporter=list 在临时 Vite 3000 下执行,r124 1 passed、r6 移动统一设计 7 passed、wecom-entry 企业微信未绑定场景 1 passed,生成 output/playwright/biz8-12-mobile-entry 77 张截图;r110 和 wecom 普通浏览器登录依赖本地后端/API 环境失败,不能作为页面回归失败;当前阻断为缺少 BIZ8-12 代表性真机和财务角色手机浏览器/PC 公网人工验收,SMOKE301/SMOKE302 无企业微信不可作为企微成员;保持 DOING,不标 DONE。
BIZ8-12,移动端业务入口评估,"评估报销、OCR、财务和项目轻量能力在移动端和企业微信入口的可用性。","1) 移动入口不重复;2) 企业微信入口回 OA;3) 财务敏感能力不误暴露;4) 新增入口进入移动矩阵。","流程级验证:员工和财务角色在移动端进入业务入口 -> 检查报销/OCR/项目状态和权限。",playwright|manual,DOING,TODO,TODO,client/src|docs/产品设计规则.md|docs/trialrun/真机公网测试清单.md,"[""BIZ8-8"",""BIZ8-11""]",自动化评估已启动但不能关闭:只读审查确认 BIZ8-12 必须保留跨视口自动化加代表性真机确认;代码路径显示移动首页按权限裁剪报销 OCR 采购 资产入口 财务摘要仅财务角色可见 PC 财务路由在移动上下文回 /mobile;MOBILE_VISUAL_OUTPUT_DIR=biz8-12-mobile-entry npx playwright test r6-mobile-unified-design-rollout r124-mobile-entry-matrix r110-mobile-pc-routing wecom-entry --workers=1 --reporter=list 在临时 Vite 3000 下执行,r124 1 passed、r6 移动统一设计 7 passed、wecom-entry 企业微信未绑定场景 1 passed,生成 output/playwright/biz8-12-mobile-entry 77 张截图;r110 和 wecom 普通浏览器登录依赖本地后端/API 环境失败,不能作为页面回归失败;2026-05-14 22:05 最新修复 5491e92 已部署,public bundle findings=0,DG7+R124 公网移动矩阵 6 passed,R7E_BROWSER_FLOW=mobile 通过并确认员工 审批人 财务移动入口可见且无横向滚动;当前仍缺代表性真机和财务角色人工复核,SMOKE301/SMOKE302 无企业微信不可作为企微成员;保持 DOING,不标 DONE。
BIZ8-12A,财务移动入口和付款未启用空态,"在移动首页和我的页补财务角色入口,并在 payment_batch_v1 关闭时展示付款批次未启用的明确状态,不启用付款能力。","1) 财务角色可在 /mobile 和 /mobile/me 找到财务入口;2) 非财务角色不显示财务入口;3) payment_batch_v1 关闭时不显示误导性待付款 0 或台账导出可用;4) 不改变权限和付款状态机。","流程级验证:cd server && node --check src/routes/portal.js;cd client && npm run typecheck && npm run build;cd client && npx playwright test tests/e2e/dg7-mobile-information-dedupe.spec.ts tests/e2e/r124-mobile-entry-matrix.spec.ts --workers=1 --reporter=list。",node|npm|playwright,DONE,DONE,DONE,client/src/pages/MobilePortalPage.tsx|client/src/pages/MobileMePage.tsx|client/src/api/portal.ts|server/src/routes/portal.js|client/tests/e2e,"[""BIZ8-12""]",本轮只开入口和解释性空态 不开启 payment_batch_v1 不修改 AP/payment-batches API 权限或状态机;公网付款闭环仍待功能门禁决策。
BIZ8-13,财务和项目权限回归,"回归财务台账、付款导出、项目关联和报销详情的权限边界。","1) 普通员工只能看自己的数据;2) 财务只看授权财务数据;3) 管理员不自动获得财务处理;4) 项目关联不越权。","流程级验证:不同角色直连财务、项目、报销详情和导出 API -> 检查允许和拒绝结果。",bash|node|manual,TODO,TODO,TODO,scripts/qa|server/src|client/src,"[""BIZ8-9"",""BIZ8-11"",""BIZ8-12"",""BIZ8-12A""]",高风险权限变更必须 reviewer。
BIZ8-14,BIZ8 收口准备,"整理 BIZ8 验证摘要、OCR 边界、财务和项目权限结论、未完成项。","1) DONE 行均有证据;2) OCR 真实与 mock 结论分离;3) 权限回归通过或有阻断;4) 未完成项不伪装完成。","流程级验证:人工核对 BIZ8 CSV 状态、验证摘要、OCR 证据和权限回归结果。",manual|git,TODO,TODO,TODO,issues/2026-05-13_18-23-53-biz8-finance-ocr-project.csv|docs/文档索引.md,"[""BIZ8-13""]",对应原规划 BIZ8-14。
1 ID Title Description Acceptance Test_Method Tools Dev_Status Review1_Status Regression_Status Files Dependencies Notes
11 BIZ8-9 付款和导出增强 增强或验证财务付款标记和导出路径,保证权限、状态和审计一致。 1) 只有财务可执行付款或导出;2) 状态转换合法;3) 导出不泄露无权限数据;4) 操作可追溯。 流程级验证:财务付款或导出 -> 普通员工和管理员直连复核 -> 检查状态和权限。 node|bash|manual DONE DONE DONE server/src|client/src|server/scripts ["BIZ8-8"] 完成:仅补强 AP export 权限单测和测试错误契约 不改业务代码;覆盖财务导出成功并写 EXPORT_AP_OPERATIONS 审计 普通员工和 admin-only 无财务权限导出 403 且不写审计;付款批次报销流保持 reviewed 到 paid invoice archived ERP outbox notification audit followup 一致;验证 prisma validate 通过;node --check exports paymentBatches financeLedger 通过;npm test exports.apOperations paymentBatches.reimbursement financeLedger 3 files 8 tests passed;继续冻结直接付款按钮 ERP 实时集成和新付款状态机。
12 BIZ8-10 费用提示轻量规则 设计轻量费用提示规则,作为填报辅助而非重预算控制。 1) 提示不阻断合法报销;2) 规则来源清楚;3) 不承诺预算控制;4) 用户可理解。 流程级验证:填写不同金额或类型报销 -> 检查费用提示 -> 提交和审批不被误阻断。 manual|playwright DONE DONE DONE docs/报销发票附件规则.md|client/src|server/src ["BIZ8-1"] 已在 docs/需求-报销发票OCR规约.md 增加 BIZ8 费用提示轻量规则,明确材料提示、金额提示、费用标准 warn、费用标准 block 和预算提示边界;npm test -- tests/unit/services/expenseStandards.check.test.js tests/unit/routes/reimbursements.expense-standards.test.js 通过 2 files 9 tests,覆盖 warn 不阻断、block 阻断和 manual_review 优先级;未改业务代码。
13 BIZ8-11 项目关联增强 增强报销、采购或合同与项目轻管理的关联,保持轻量不扩展成重型项目管理。 1) 项目选择和展示清楚;2) 无项目时可解释;3) 项目权限不泄露;4) 不扩展复杂 WBS。 流程级验证:创建或选择项目 -> 保存采购草稿 -> 项目负责人查看项目采购摘要 -> 采购详情权限直连复核;自动化覆盖 projectId 列表过滤 归档项目新关联拦截 已有关联不重复阻断 项目成员不能越过采购详情权限。 node|npm|git|manual DONE DONE DONE server/prisma|server/src|server/tests|client/src ["BIZ8-1"] 完成:采购新增 nullable project_id 外键 ON DELETE SET NULL 和索引;采购列表详情草稿更新补项目字段;新关联校验项目可读且未归档;已有项目无关编辑不重复阻断;项目详情新增轻量采购摘要;前端采购表单列表详情和项目详情补展示;验证 npm run prisma:validate 通过;node --check purchaseRequests projects 通过;npm test purchase.project-link projects purchase.submit-budget-precheck 3 files 12 tests passed;client typecheck 和 build 通过;git diff --check 通过;reviewer 已复核并修复阻断问题;回滚:代码回滚可保留 nullable 列,物理回滚需先 drop constraint purchase_requests_project_id_fkey 再 drop index idx_purchase_requests_project 再 drop column purchase_requests.project_id 且关联数据会丢失;继续冻结复杂 WBS 重预算 ERP 实时集成。
14 BIZ8-12 移动端业务入口评估 评估报销、OCR、财务和项目轻量能力在移动端和企业微信入口的可用性。 1) 移动入口不重复;2) 企业微信入口回 OA;3) 财务敏感能力不误暴露;4) 新增入口进入移动矩阵。 流程级验证:员工和财务角色在移动端进入业务入口 -> 检查报销/OCR/项目状态和权限。 playwright|manual DOING TODO TODO client/src|docs/产品设计规则.md|docs/trialrun/真机公网测试清单.md ["BIZ8-8","BIZ8-11"] 自动化评估已启动但不能关闭:只读审查确认 BIZ8-12 必须保留跨视口自动化加代表性真机确认;代码路径显示移动首页按权限裁剪报销 OCR 采购 资产入口 财务摘要仅财务角色可见 PC 财务路由在移动上下文回 /mobile;MOBILE_VISUAL_OUTPUT_DIR=biz8-12-mobile-entry npx playwright test r6-mobile-unified-design-rollout r124-mobile-entry-matrix r110-mobile-pc-routing wecom-entry --workers=1 --reporter=list 在临时 Vite 3000 下执行,r124 1 passed、r6 移动统一设计 7 passed、wecom-entry 企业微信未绑定场景 1 passed,生成 output/playwright/biz8-12-mobile-entry 77 张截图;r110 和 wecom 普通浏览器登录依赖本地后端/API 环境失败,不能作为页面回归失败;当前阻断为缺少 BIZ8-12 代表性真机和财务角色手机浏览器/PC 公网人工验收,SMOKE301/SMOKE302 无企业微信不可作为企微成员;保持 DOING,不标 DONE。 自动化评估已启动但不能关闭:只读审查确认 BIZ8-12 必须保留跨视口自动化加代表性真机确认;代码路径显示移动首页按权限裁剪报销 OCR 采购 资产入口 财务摘要仅财务角色可见 PC 财务路由在移动上下文回 /mobile;MOBILE_VISUAL_OUTPUT_DIR=biz8-12-mobile-entry npx playwright test r6-mobile-unified-design-rollout r124-mobile-entry-matrix r110-mobile-pc-routing wecom-entry --workers=1 --reporter=list 在临时 Vite 3000 下执行,r124 1 passed、r6 移动统一设计 7 passed、wecom-entry 企业微信未绑定场景 1 passed,生成 output/playwright/biz8-12-mobile-entry 77 张截图;r110 和 wecom 普通浏览器登录依赖本地后端/API 环境失败,不能作为页面回归失败;2026-05-14 22:05 最新修复 5491e92 已部署,public bundle findings=0,DG7+R124 公网移动矩阵 6 passed,R7E_BROWSER_FLOW=mobile 通过并确认员工 审批人 财务移动入口可见且无横向滚动;当前仍缺代表性真机和财务角色人工复核,SMOKE301/SMOKE302 无企业微信不可作为企微成员;保持 DOING,不标 DONE。
15 BIZ8-12A 财务移动入口和付款未启用空态 在移动首页和我的页补财务角色入口,并在 payment_batch_v1 关闭时展示付款批次未启用的明确状态,不启用付款能力。 1) 财务角色可在 /mobile 和 /mobile/me 找到财务入口;2) 非财务角色不显示财务入口;3) payment_batch_v1 关闭时不显示误导性待付款 0 或台账导出可用;4) 不改变权限和付款状态机。 流程级验证:cd server && node --check src/routes/portal.js;cd client && npm run typecheck && npm run build;cd client && npx playwright test tests/e2e/dg7-mobile-information-dedupe.spec.ts tests/e2e/r124-mobile-entry-matrix.spec.ts --workers=1 --reporter=list。 node|npm|playwright DONE DONE DONE client/src/pages/MobilePortalPage.tsx|client/src/pages/MobileMePage.tsx|client/src/api/portal.ts|server/src/routes/portal.js|client/tests/e2e ["BIZ8-12"] 本轮只开入口和解释性空态 不开启 payment_batch_v1 不修改 AP/payment-batches API 权限或状态机;公网付款闭环仍待功能门禁决策。
16 BIZ8-13 财务和项目权限回归 回归财务台账、付款导出、项目关联和报销详情的权限边界。 1) 普通员工只能看自己的数据;2) 财务只看授权财务数据;3) 管理员不自动获得财务处理;4) 项目关联不越权。 流程级验证:不同角色直连财务、项目、报销详情和导出 API -> 检查允许和拒绝结果。 bash|node|manual TODO TODO TODO scripts/qa|server/src|client/src ["BIZ8-9","BIZ8-11","BIZ8-12","BIZ8-12A"] 高风险权限变更必须 reviewer。
17 BIZ8-14 BIZ8 收口准备 整理 BIZ8 验证摘要、OCR 边界、财务和项目权限结论、未完成项。 1) DONE 行均有证据;2) OCR 真实与 mock 结论分离;3) 权限回归通过或有阻断;4) 未完成项不伪装完成。 流程级验证:人工核对 BIZ8 CSV 状态、验证摘要、OCR 证据和权限回归结果。 manual|git TODO TODO TODO issues/2026-05-13_18-23-53-biz8-finance-ocr-project.csv|docs/文档索引.md ["BIZ8-13"] 对应原规划 BIZ8-14。