From 8cd4b928573521455da5e9cdfafe6f08a4662000 Mon Sep 17 00:00:00 2001 From: shunli Date: Fri, 15 May 2026 10:18:02 +0800 Subject: [PATCH] =?UTF-8?q?R7E=20WF8=20=E7=9C=9F=E6=9C=BA=20deeplink=20?= =?UTF-8?q?=E9=AA=8C=E8=AF=81=E4=B8=8E=E6=94=B6=E5=8F=A3=E5=9B=9E=E5=A1=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 引用 R7E-9 WF8-11 WF8-12 WF8-CLOSE QAOPS8-17 BIZ8-12 --- docs/trialrun/人工试运行报告.md | 32 +++++++++++++------ docs/文档事实源状态矩阵.md | 6 ++-- docs/文档索引.md | 4 +-- ...2026-05-13_17-11-44-r7e-human-trialrun.csv | 8 ++--- ...05-13_17-30-00-qaops8-test-release-ops.csv | 2 +- ...-13_18-23-52-wf8-approval-notification.csv | 8 ++--- ...5-13_18-23-53-biz8-finance-ocr-project.csv | 2 +- 7 files changed, 37 insertions(+), 25 deletions(-) diff --git a/docs/trialrun/人工试运行报告.md b/docs/trialrun/人工试运行报告.md index 1d51e4fc..8a4e55d0 100644 --- a/docs/trialrun/人工试运行报告.md +++ b/docs/trialrun/人工试运行报告.md @@ -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 均通过 | -| R7E 真实执行 | 当前执行 | 浏览器业务线已通过,`5491e92` 已部署;企业微信消息 deeplink、移动真机反馈和最终验收结论仍待关闭 | +| R7E 真实执行 | 当前执行 | 浏览器业务线已通过,`5491e92` 已部署;企业微信消息 deeplink 已按代表设备关闭,移动真机反馈和最终验收结论仍待关闭 | ## R7EP / OPS8 / QAF8 / UX8 / P2T 预检推进 @@ -235,7 +235,7 @@ R7EP 历史结论:公网、live smoke/OCR、移动矩阵、核心业务流、 | 通知卡片和待审批卡片右侧状态只显示首字 | MEDIUM | `R7E-16A` | 修复移动状态槽样式并加入 Playwright 遮挡断言 | | 财务移动入口和付款未启用状态不清楚 | MEDIUM | `BIZ8-12A` | 增加 `/mobile/me` 财务入口;付款批次关闭时显示未启用空态 | -部署状态:本节对应修复已在 2026-05-14 22:05 左右部署到 `https://oa.hyinda.com`,公网 `/ready`、public bundle、live readiness、真实 OCR 样票、移动矩阵和 R7E 分段自动化前置均已复核通过。企业微信消息点击、WebView 文件选择器和代表设备渲染仍需人工真机复测。 +部署状态:本节对应修复已在 2026-05-14 22:05 左右部署到 `https://oa.hyinda.com`,公网 `/ready`、public bundle、live readiness、真实 OCR 样票、移动矩阵和 R7E 分段自动化前置均已复核通过。企业微信消息点击已在 2026-05-15 补充代表设备真机通过;WebView 文件选择器、移动状态标签、财务入口和代表设备渲染仍需继续记录最终反馈。 ## R7E 真机反馈修复部署复核 @@ -251,33 +251,45 @@ R7EP 历史结论:公网、live smoke/OCR、移动矩阵、核心业务流、 | 公网移动矩阵 | 通过 | `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”口径收口;该结论不代表付款批次已启用或付款闭环已完成。 +阶段结论:最新修复已经进入企业微信代表设备复测。`R7E-14` 按用户确认的“付款批次先不启用,延期到 P2”口径收口;该结论不代表付款批次已启用或付款闭环已完成。 + +## R7E 企业微信 deeplink 代表设备复测 + +执行时间:2026-05-15。用户反馈:“企业微信点击消息可以来了,可以免登录进到对应的详情里。” + +| 检查项 | 结果 | 证据和结论 | +| --- | --- | --- | +| 企业微信个人应用消息点击 | 通过 | `wangshunli` 当前手机点击新企业微信审批消息后可免登录进入对应审批详情,不再出现 `requestid`、`tokenexpired` 或“深链已过期”提示 | +| 代表消息 | 通过 | 触发消息为 `【催办】请假单 2026-06-22 待审批`,目标为 `/mobile/approvals?taskId=822b2159-dc3c-4a65-8a49-abd70000f1b8`;仓库不记录 deeplink token | +| 验收边界 | 代表设备通过 | 该证据足以关闭 `WF8-11` 和 `R7E-9` 的入口/免登录/deeplink 代表设备验收;不扩大写成所有设备均已复测 | + +当前剩余真机项:移动状态标签完整显示、Android 选择器 PDF-only 口径、财务角色 `/mobile` 与 `/mobile/me` 入口,以及 `R7E-18` 阶段验收结论。 ## QAOPS8 Go/No-Go 当前结论 -执行时间:2026-05-13。 +执行时间:2026-05-15。 -`QAOPS8-17` 当前结论为 `No-Go/Pause`,原因不是自动化基础门禁失败,而是 R7E 真实扩大试运行尚未发生。该结论用于防止把 R7EP、MIF7TD 或 QAOPS8 自动化证据误解释为已经可以上线或已经完成真实试运行。 +`QAOPS8-17` 当前结论为 `Pause`,原因不是自动化基础门禁失败,也不是 WF8 deeplink 阻断;剩余门禁是 R7E 修复后真机体验反馈、财务角色真机入口复核和最终人工验收结论。该结论用于防止把自动化或单台代表设备证据误解释为正式上线 `Go`。 | 检查项 | 当前状态 | 处理 | | --- | --- | --- | | QAOPS8 发布、备份、回滚和 SLO 基线 | 已形成 | 可作为 R7E 启动前准备证据 | | R7E-1..7 人工启动确认 | 已确认 | 可以进入启动当天公网健康复核 | | R7E-8 公网健康复核 | 已完成 | 最新代码 `5491e92` 已部署;`/ready`、public bundle、远端 migration 状态、live readiness 和公网移动矩阵通过 | -| R7E-9..15 真实业务和真机流程 | 部分完成 | 浏览器业务线已关闭报销、审批边界、请假、采购;`R7E-14` 按付款批次延期到 P2 口径收口;企业微信专属线仍需后补 | +| R7E-9..15 真实业务和真机流程 | 部分完成 | 浏览器业务线已关闭报销、审批边界、请假、采购;`R7E-9` 入口、免登录和消息 deeplink 已按代表设备关闭;`R7E-14` 按付款批次延期到 P2 口径收口;`R7E-15` 仍需修复后真机反馈 | | R7E-16..18 每日问题和验收结论 | 未完成 | 需试运行窗口内记录 | -| WF8-11 通知 deeplink 回 OA | 未完成 | 需企业微信或代表性真机验证 | +| WF8-11 通知 deeplink 回 OA | 已完成 | 2026-05-15 代表设备企业微信消息点击可免登录进入目标审批详情;WF8 可阶段关闭 | | BIZ8-12 移动业务入口评估 | 暂停收口 | 自动化截图已有,仍需代表性真机和角色反馈 | -保持 `No-Go/Pause` 的阻断项: +保持 `Pause` 的剩余门禁: - `SMOKE002` 企业微信工作台进入 `/mobile` 后确认无 PC 外壳,底部导航和业务入口正常。 - `SMOKE002` 补充企业微信 WebView 内的移动报销详情和 PDF 上传确认,不能被图片拍照入口误导。 -- `SMOKE101` 完成移动审批和通知 deeplink 回 OA 的确认。 +- `SMOKE101` 或代表审批人补充移动审批卡片状态标签完整显示确认;消息 deeplink 已由 `wangshunli` 代表设备通过。 - 财务角色完成人工复核移动入口和付款批次未启用空态;付款批次闭环已延期到 P2,不作为当前 R7E 阻断。 - `SMOKE301` / `SMOKE302` 尚未启用且没有企业微信,不能作为企业微信真机证据。 -结论:当前可以按最新代码继续 R7E 浏览器业务和后续人工真机试运行,但不能给正式上线 `Go`,也不能关闭 `R7E-9`、`R7E-15`、`R7E-18`、`WF8-11`、`BIZ8-12` 或 QAOPS8 后续收口项。`R7E-14` 已按付款批次延期到 P2 的变更口径收口。 +结论:当前可以关闭 `WF8-11` 和 `R7E-9`,但不能给正式上线 `Go`,也不能关闭 `R7E-15`、`R7E-18`、`BIZ8-12` 或 QAOPS8 后续收口项。`R7E-14` 已按付款批次延期到 P2 的变更口径收口。 ## 历史恢复 diff --git a/docs/文档事实源状态矩阵.md b/docs/文档事实源状态矩阵.md index 056cb0cb..e364ff5c 100644 --- a/docs/文档事实源状态矩阵.md +++ b/docs/文档事实源状态矩阵.md @@ -30,9 +30,9 @@ | `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` | 真实扩大试运行人工确认已完成;`5491e92` 已部署并完成自动化前置,待 R7E-9/R7E-15/R7E-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` | 审批与通知增强;deeplink 过期修复已部署,待企业微信真机点击回 OA 验证 | +| `WF8` | `issues/2026-05-13_18-23-52-wf8-approval-notification.csv` | `EVIDENCE` | 审批与通知增强已阶段收口;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 人工确认 | @@ -146,4 +146,4 @@ - `ME6-3` 代表性企业微信真机门禁已关闭。 - MIF7-1..7 与 MIF7T 已完成本地整改、公网部署、公网匿名复检和带凭据 live smoke/OCR 复检。 -- R7E 真实扩大试运行已启动并完成浏览器业务线和最新修复部署;企业微信消息 deeplink、移动真机反馈和最终验收结论仍未关闭。 +- R7E 真实扩大试运行已启动并完成浏览器业务线和最新修复部署;企业微信消息 deeplink 已按代表设备关闭,移动真机反馈和最终验收结论仍未关闭。 diff --git a/docs/文档索引.md b/docs/文档索引.md index 451fc541..3eaa6ce6 100644 --- a/docs/文档索引.md +++ b/docs/文档索引.md @@ -38,9 +38,9 @@ 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` | 当前执行:`5491e92` 已部署,待企业微信消息 deeplink 和真机反馈 | 人工确认、真实试运行、每日问题收口、验收结论 | 不新增 P2 能力;付款批次延期到 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` | 当前执行:deeplink 修复已部署,待企业微信真机点击回 OA 验证 | 转审、通知、催办、邮件通道决策、三渠道验收 | 不做复杂 BPM 或审批设计器 | +| `WF8` | `issues/2026-05-13_18-23-52-wf8-approval-notification.csv` | 已收口:deeplink 修复已部署并经代表设备真机点击回 OA 验证 | 转审、通知、催办、邮件通道决策、三渠道验收 | 不做复杂 BPM 或审批设计器;通知模板和偏好设置延期到 P2 | | `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 | 不改业务需求 | diff --git a/issues/2026-05-13_17-11-44-r7e-human-trialrun.csv b/issues/2026-05-13_17-11-44-r7e-human-trialrun.csv index 6b223caa..93511724 100644 --- a/issues/2026-05-13_17-11-44-r7e-human-trialrun.csv +++ b/issues/2026-05-13_17-11-44-r7e-human-trialrun.csv @@ -8,17 +8,17 @@ R7E-5,问题登记负责人确认,"确认 R7E 问题登记负责人、问题分 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 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-9,企业微信入口复核,"在真实 R7E 启动前复核企业微信入口、绑定状态、免登或账号密码兜底、deeplink 回 OA。","1) 企业微信入口可达;2) 绑定用户可进入移动端;3) 未绑定有明确兜底;4) deeplink 回 OA 正确。","流程级验证:代表性真机或企业微信 WebView 人工复核;必要时补 Playwright WeCom UA。",manual|playwright,DONE,DONE,DONE,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 通过;2026-05-15 用户确认 wangshunli 当前手机点击企业微信个人应用审批消息已可免登录进入对应详情 不再出现 requestid tokenexpired 或深链已过期;代表消息 taskId 822b2159-dc3c-4a65-8a49-abd70000f1b8 目标 /mobile/approvals?taskId=822b2159-dc3c-4a65-8a49-abd70000f1b8;本结论按代表设备关闭入口 免登录 消息 deeplink 验收 不扩大为全设备保证。 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,财务审批和付款延期试运行,"财务按真实路径复核到财务审批的报销单;本轮不启用 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-15,移动端和真机反馈,"收集 R7E 参与者在移动浏览器和企业微信中的真实体验反馈。","1) 至少覆盖代表性 iPhone/Android 或企业微信设备;2) 记录页面、视口、角色和问题级别;3) 阻断问题进入修复分流;4) 体验优化进入 UX8。","流程级验证:按真机公网测试清单人工复核;必要时补 Playwright 截图。",manual|playwright,DOING,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 通过;2026-05-15 已补代表设备企业微信消息 deeplink 真机通过;本行仍等待修复后的状态标签完整显示 财务入口和 Android PDF-only 口径在代表设备上的最终反馈。 +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 自动化前置;2026-05-15 用户确认代表设备企业微信消息 deeplink 可免登录进对应详情 WF8-11 已关闭;财务付款闭环按用户确认延期到 P2;当前剩余为修复后移动状态标签 财务移动入口 Android PDF-only 口径的代表设备复核和 R7E-18 人工验收结论。 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""]",涉及代码修复时必须先方案批准。 +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""]",已知分流:deeplink 归 WF8 并已代表设备验证关闭;状态槽归 R7E-16A 已部署并自动化验证;Android 选择器归 R7E-16B 按平台限制和 OA PDF-only 校验处理;财务付款批次延期到 P2;本行待 R7E-16 和 R7E-15 真机反馈收口后再关闭。 R7E-18,验收结论,"汇总 R7E 真实试运行结果,给出通过、暂停、回滚或继续观察结论。","1) 主流程结论完整;2) 阻断问题为 0 或明确暂停/回滚;3) 用户验收结论记录;4) 未完成项进入后续治理流。","流程级验证:人工验收;报告中列出流程结论、问题清单和后续动作。",manual,TODO,TODO,TODO,docs/trialrun/人工试运行报告.md,"[""R7E-17""]",不能仅凭自动化通过宣布 R7E 完成。 R7E-19,P2 排序调整,"根据 R7E 真实反馈调整 P2 候选优先级和后续连续治理流顺序。","1) P2 排序基于真实反馈;2) ORG8/WF8/BIZ8/QAOPS8 入口明确;3) 冻结项仍不进入;4) 如需变更 PRD 则另走事实源更新。","流程级验证:人工核对 PRD P2T 表、问题清单和后续 Issue 计划。",manual|rg,TODO,TODO,TODO,docs/海音达OA-MVP需求规格说明书.md|issues/*.csv,"[""R7E-18""]",P2 功能开发必须另建或延续对应连续合同。 R7E-20,R7E 收口,"完成 R7E CSV 状态回填、报告归档、验证说明和中文提交。","1) CSV 校验通过;2) 所有 DONE 有证据;3) git diff --check 通过;4) 中文提交引用 R7E;5) 最终说明是否部署和是否可测。","流程级验证:validate_issues_csv.py 本 CSV;git diff --check;人工核对报告和状态。",python3|git|manual,TODO,TODO,TODO,issues/2026-05-13_17-11-44-r7e-human-trialrun.csv|docs/trialrun/人工试运行报告.md,"[""R7E-18"",""R7E-19""]",真实 R7E 完成后才能回填;当前不得提前 DONE。 diff --git a/issues/2026-05-13_17-30-00-qaops8-test-release-ops.csv b/issues/2026-05-13_17-30-00-qaops8-test-release-ops.csv index cd32e82a..eae90d3c 100644 --- a/issues/2026-05-13_17-30-00-qaops8-test-release-ops.csv +++ b/issues/2026-05-13_17-30-00-qaops8-test-release-ops.csv @@ -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 失败确认为前置问题;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-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 口径收口;2026-05-15 用户确认代表设备企业微信消息 deeplink 可免登录进入对应详情 WF8-11 和 R7E-9 已关闭;当前 Go No-Go 仍为 Pause 因 R7E-15 修复后真机反馈 R7E-18 人工验收结论和 BIZ8-12 财务角色真机复核未完成;明确 R7E 人工验收不被自动化替代。 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""]",所有执行行完成后才能收口。 diff --git a/issues/2026-05-13_18-23-52-wf8-approval-notification.csv b/issues/2026-05-13_18-23-52-wf8-approval-notification.csv index aff808b1..f0ce7f10 100644 --- a/issues/2026-05-13_18-23-52-wf8-approval-notification.csv +++ b/issues/2026-05-13_18-23-52-wf8-approval-notification.csv @@ -10,8 +10,8 @@ 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 或深链已过期;2026-05-14 22:05 修复提交 5491e92 已部署到 oa.hyinda.com,公网 /ready、public bundle、live readiness、WeCom UA 自动化均通过;本行等待新企业微信个人应用消息在代表设备点击目标单据或审批页后再关闭。 +WF8-11,通知 deeplink 回 OA 验证,"验证企业微信个人应用消息或站内通知 deeplink 能回到 OA 目标页面。","1) deeplink 指向具体业务目标;2) 不只返回通知中心;3) 未登录或未绑定有可解释提示;4) 移动布局正常。","流程级验证:触发通知 -> 点击 deeplink -> 企业微信或移动浏览器打开 OA 目标详情 -> 检查权限和页面。",playwright|manual,DONE,DONE,DONE,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 自动化;2026-05-15 用户确认 wangshunli 当前手机点击企业微信个人应用审批消息已可免登录进入对应详情 不再出现 requestid tokenexpired 或深链已过期;代表消息 taskId 822b2159-dc3c-4a65-8a49-abd70000f1b8 目标 /mobile/approvals?taskId=822b2159-dc3c-4a65-8a49-abd70000f1b8;本结论为代表设备真机证据 不扩大为全设备承诺。 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。 -WF8-CLOSE,WF8 阶段 CLOSE,"阶段性关闭 WF8,完成状态回填、验证摘要和中文提交。","1) CSV 校验通过;2) git diff --check 通过;3) 所有 DONE 有命令或人工证据;4) 中文提交引用 WF8;5) 后续风险有归属。","流程级验证:validate_issues_csv.py 本 CSV;git diff --check;人工核对最终摘要。",python3|git|manual,TODO,TODO,TODO,issues/2026-05-13_18-23-52-wf8-approval-notification.csv,"[""WF8-13""]",每个连续 CSV 保留 CLOSE 行。 +WF8-12,workflow reviewer 审查,"对 WF8 涉及的 workflow 状态、权限和通知副作用做独立 review。","1) 非法状态跳转无阻断;2) 权限泄漏无阻断;3) 重复审批和并发风险可控;4) 漏测项有归属。","流程级验证:reviewer 人工审查 diff、Issue CSV 和测试证据。",manual,DONE,DONE,DONE,issues/2026-05-13_18-23-52-wf8-approval-notification.csv|server/src|client/src,"[""WF8-10"",""WF8-11""]",只读 reviewer 复核结论:deeplink 仅接受签名有效且 targetPath 为 OA 内部相对路径的目标 无效签名 绝对 URL 和 // 路径仍拒绝;企业微信 UA 通过 /api/auth/wecom/login returnTo 免登录回流;本轮不修改 workflow 状态机 权限模型 审批动作或通知通道配置;后端相关单测 4 files 29 tests passed。 +WF8-13,WF8 收口准备,"整理 WF8 验证摘要、通知矩阵、未完成项和后续业务影响。","1) DONE 行均有证据;2) 通知渠道结论清楚;3) 未完成项不伪装完成;4) 文档入口同步。","流程级验证:人工核对 WF8 CSV 状态、验证摘要、通知矩阵和 git diff。",manual|git,DONE,DONE,DONE,issues/2026-05-13_18-23-52-wf8-approval-notification.csv|docs/文档索引.md,"[""WF8-12""]",WF8 DONE 行均有自动化或代表真机证据;邮件通道继续冻结不作为当前门禁;企业微信个人应用消息 deeplink 已经代表设备验证回目标页;后续通知模板 偏好 失败重试扩展转入 P2 另行规划。 +WF8-CLOSE,WF8 阶段 CLOSE,"阶段性关闭 WF8,完成状态回填、验证摘要和中文提交。","1) CSV 校验通过;2) git diff --check 通过;3) 所有 DONE 有命令或人工证据;4) 中文提交引用 WF8;5) 后续风险有归属。","流程级验证:validate_issues_csv.py 本 CSV;git diff --check;人工核对最终摘要。",python3|git|manual,DONE,DONE,DONE,issues/2026-05-13_18-23-52-wf8-approval-notification.csv,"[""WF8-13""]",WF8 阶段关闭:转审 通知失败追踪 催办 超时 历史一致性 deeplink 回流均完成;P2 仅保留通知模板 偏好设置 失败重试 邮件通道解冻等扩展项;本次提交将引用 WF8。 diff --git a/issues/2026-05-13_18-23-53-biz8-finance-ocr-project.csv b/issues/2026-05-13_18-23-53-biz8-finance-ocr-project.csv index f37e3a1e..4fb9899f 100644 --- a/issues/2026-05-13_18-23-53-biz8-finance-ocr-project.csv +++ b/issues/2026-05-13_18-23-53-biz8-finance-ocr-project.csv @@ -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 环境失败,不能作为页面回归失败;2026-05-14 22:05 最新修复 5491e92 已部署,public bundle findings=0,DG7+R124 公网移动矩阵 6 passed,R7E_BROWSER_FLOW=mobile 通过并确认员工 审批人 财务移动入口可见且无横向滚动;当前仍缺代表性真机和财务角色人工复核,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 通过并确认员工 审批人 财务移动入口可见且无横向滚动;2026-05-15 企业微信消息 deeplink 代表设备已可免登录回 OA 但财务角色移动入口和付款未启用空态仍缺代表真机人工复核;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。