From 519fd0663aacb890e590825ccc39693d7da8bffc Mon Sep 17 00:00:00 2001 From: shunli Date: Fri, 15 May 2026 23:23:28 +0800 Subject: [PATCH] =?UTF-8?q?R7E-16E/R7E-16F=20=E9=83=A8=E7=BD=B2=E4=B8=8E?= =?UTF-8?q?=E5=85=AC=E7=BD=91=E5=A4=8D=E6=A0=B8=E5=9B=9E=E5=A1=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/trialrun/人工试运行报告.md | 14 ++++++++------ issues/2026-05-13_17-11-44-r7e-human-trialrun.csv | 10 +++++----- ...2026-05-13_17-30-00-qaops8-test-release-ops.csv | 2 +- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/docs/trialrun/人工试运行报告.md b/docs/trialrun/人工试运行报告.md index 05c9e4e0..cfca144f 100644 --- a/docs/trialrun/人工试运行报告.md +++ b/docs/trialrun/人工试运行报告.md @@ -292,7 +292,9 @@ R7EP 历史结论:公网、live smoke/OCR、移动矩阵、核心业务流、 | 原生确认框清理 | 通过 | `rg -n 'window\.(confirm\|prompt)' client/src` 无结果;不再使用浏览器原生阻塞弹窗作为业务确认 | | PC 自动化替代人工 | 通过 | `system-action-confirmation.spec.ts` 覆盖取消不调用接口、确认后才调用接口;`workflow-action-confirm-ui.spec.ts` 覆盖审批确认;PC 端不再安排人工点击验收 | | 移动和视觉矩阵 | 通过 | `DG7+R124` 本地移动矩阵 6 passed;`project-wide-visual-local` 通过 1 passed,并由脚本自动准备临时数据库和种子数据 | -| 公网状态 | 未部署 | 本节改动目前只完成本地验证和回填,尚未部署到 `https://oa.hyinda.com`;部署后需复跑 `/ready`、public bundle、PC mock 自动化和移动矩阵 | +| 公网状态 | 通过 | `bf791d7` 已于 2026-05-15 23:18 CST 部署到 `https://oa.hyinda.com`,`SYNC_ENV=0`,未覆盖远端 `.env`;部署后 `/ready`、public bundle、live smoke env、PC mock 自动化和移动矩阵均通过 | + +部署复核:`bash deploy/trialrun/deploy.sh` 通过,远端构建、init、Prisma migration status、`/ready`、external deps smoke、runtime smoke 和 public bundle 扫描均通过。部署后补充验证:`curl -fsS https://oa.hyinda.com/ready` 返回 `ok=true`;`PUBLIC_BASE_URL=https://oa.hyinda.com node scripts/qa/check-public-bundle-copy.mjs` 扫描 57 个资源且 findings=0;`LIVE_SMOKE_BASE_URL=https://oa.hyinda.com node scripts/qa/check-live-smoke-env.mjs` 显示 public ready、企业微信 ready、live smoke ready、live OCR ready;`E2E_BASE_URL=https://oa.hyinda.com` 跑 `system-action-confirmation + workflow-action-confirm-ui` 4 passed;`DG7+R124` 公网移动矩阵 6 passed。 补充说明:曾直接把 `project-wide-visual.spec.ts` 挂到裸 Vite 服务运行,因默认 E2E 用户和后端种子前置不足触发登录 API `HTTP_500`。已改用项目标准门禁 `QA_SKIP_CLIENT_BUILD=1 bash scripts/qa/run-web-gates.sh project-wide-visual-local`,该门禁会准备临时库、写入种子并启动本地服务,结果通过;前述失败归类为测试前置问题,不作为业务回归。 @@ -302,26 +304,26 @@ R7EP 历史结论:公网、live smoke/OCR、移动矩阵、核心业务流、 执行时间:2026-05-15。 -`QAOPS8-17` 当前结论为 `Pause`,原因不是自动化基础门禁失败,也不是 WF8 deeplink 阻断;R7E-16D 已部署、自动化通过且代表真机确认。剩余门禁是 R7E-16E/R7E-16F 尚未部署到公网复核,以及最终人工验收结论。该结论用于防止把本地自动化证据误解释为正式上线 `Go`。 +`QAOPS8-17` 当前结论为 `Pause`,原因不是自动化基础门禁失败,也不是 WF8 deeplink 阻断;R7E-16D 已部署、自动化通过且代表真机确认,R7E-16E/R7E-16F 也已部署并通过公网自动化复核。剩余门禁仅是最终人工验收结论。该结论用于防止把自动化证据误解释为正式上线 `Go`。 | 检查项 | 当前状态 | 处理 | | --- | --- | --- | | QAOPS8 发布、备份、回滚和 SLO 基线 | 已形成 | 可作为 R7E 启动前准备证据 | | R7E-1..7 人工启动确认 | 已确认 | 可以进入启动当天公网健康复核 | -| R7E-8 公网健康复核 | 已完成 | 最新代码 `96488d8` 已部署;`/ready`、public bundle、远端 migration 状态、live readiness、公网移动矩阵和审批确认专项通过 | +| R7E-8 公网健康复核 | 已完成 | 最新代码 `bf791d7` 已部署;`/ready`、public bundle、远端 migration 状态、live readiness、公网 PC 确认自动化和移动矩阵通过 | | R7E-9..15 真实业务和真机流程 | 已完成 | 浏览器业务线已关闭报销、审批边界、请假、采购;`R7E-9` 入口、免登录和消息 deeplink 已按代表设备关闭;`R7E-14` 按付款批次延期到 P2 口径收口;`R7E-15` 审批二次确认代表真机反馈已确认 | -| R7E-16..18 每日问题和验收结论 | 部分完成 | `R7E-16E/R7E-16F` 本地完成但尚未部署公网;`R7E-18` 仍需最终人工验收结论 | +| R7E-16..18 每日问题和验收结论 | 部分完成 | `R7E-16E/R7E-16F` 已部署并公网验证;`R7E-17` 可按无 P0/P1 阻断关闭;`R7E-18` 仍需最终人工验收结论 | | WF8-11 通知 deeplink 回 OA | 已完成 | 2026-05-15 代表设备企业微信消息点击可免登录进入目标审批详情;WF8 可阶段关闭 | | BIZ8-12/13 移动业务入口和权限回归 | 已完成 | `wangzhiling` 已确认财务入口定位和付款未启用空态;财务/项目权限回归通过,BIZ8 可阶段关闭 | 保持 `Pause` 的剩余门禁: -- 部署 R7E-16E/R7E-16F 后复跑 `/ready`、public bundle、PC mock 自动化和移动矩阵。 +- `R7E-18` 需要用户明确阶段验收结论:阶段验收通过、继续观察或暂停。 - PC 高风险动作确认由 Playwright 和视觉门禁验收,不再安排人工 PC 点击。 - 企业微信真机后续只保留消息、免登录、WebView 文件选择器和系统选择器这类真实环境差异项。 - 付款批次闭环已延期到 P2,不作为当前 R7E 阻断。 -结论:当前可以关闭 `WF8-11`、`R7E-9`、`R7E-15` 和 BIZ8 阶段流,但不能给正式上线 `Go`,也不能关闭 `R7E-17`、`R7E-18` 或 QAOPS8 后续收口项。`R7E-14` 已按付款批次延期到 P2 的变更口径收口。 +结论:当前可以关闭 `WF8-11`、`R7E-9`、`R7E-15`、`R7E-17` 和 BIZ8 阶段流,但不能给正式上线 `Go`,也不能关闭 `R7E-18` 或 QAOPS8 后续收口项。`R7E-14` 已按付款批次延期到 P2 的变更口径收口。 ## 历史恢复 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 7f436683..9f0d1eea 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 @@ -15,14 +15,14 @@ R7E-12,请假流程试运行,"员工提交请假,审批人审批,员工和 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,DONE,DONE,DONE,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 真机通过;2026-05-15 19:31 二次修复 f945c0b 已部署且 /ready public bundle live smoke env 和 DG7+R124 公网移动矩阵 6 passed;用户确认 SMOKE101 审批状态与三按钮布局、SMOKE002 详情头部间距、wangzhiling 财务入口定位均通过;Android 选择器显示拍照按平台限制处理 OA 端 PDF-only 校验已由 R7E-16B 覆盖;2026-05-15 21:46 CST 96488d8 已部署且 /ready public bundle live smoke env DG7+R124 公网移动矩阵和审批确认专项均通过;用户确认审批详情底部操作按钮可见且点击会出现二次确认弹窗。R7E-15 代表真机反馈已按当前试运行范围关闭;R7E-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;2026-05-15 用户确认代表设备企业微信消息 deeplink 可免登录进对应详情 WF8-11 已关闭;二次反馈中通知新标记按未读行为接受,审批状态槽/详情头部/按钮布局归 R7E-16C 且 f945c0b 已部署公网验证通过并由用户确认通过;财务入口定位归 BIZ8-12B 已由用户确认通过;退回和驳回语义说明与二次确认归 R7E-16D 且 96488d8 已部署公网自动化验证通过并由用户确认真机可见二次弹窗;财务付款闭环延期到 P2;2026-05-15 R7E-16E/R7E-16F 已完成本地自动化和视觉门禁但尚未部署到公网;当前剩余为 R7E-16E/R7E-16F 部署后公网复核和 R7E-18 人工验收结论。 +R7E-16,每日问题清单,"R7E 期间每天登记问题、级别、归属治理流、处理状态和证据路径。","1) 问题均有级别;2) 阻断问题当天决策;3) 新需求不混入即时修复;4) 每日 closeout 可追溯。","流程级验证:每日人工 closeout;问题分流到 R7E/UX8/ORG8/WF8/BIZ8/QAOPS8。",manual,DONE,DONE,DONE,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-15 用户确认代表设备企业微信消息 deeplink 可免登录进对应详情 WF8-11 已关闭;二次反馈中通知新标记按未读行为接受,审批状态槽/详情头部/按钮布局归 R7E-16C 且 f945c0b 已部署公网验证通过并由用户确认通过;财务入口定位归 BIZ8-12B 已由用户确认通过;退回和驳回语义说明与二次确认归 R7E-16D 且 96488d8 已部署公网自动化验证通过并由用户确认真机可见二次弹窗;财务付款闭环延期到 P2;2026-05-15 23:18 CST R7E-16E/R7E-16F 已部署 bf791d7 到 https://oa.hyinda.com,deploy.sh 远端构建 init migration status ready external deps smoke runtime smoke 和 public bundle 扫描通过;部署后 /ready ok public bundle findings=0 live smoke env ready PC 高风险确认自动化 4 passed DG7+R124 公网移动矩阵 6 passed;当前无未分流阻断问题,剩余为 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-16C,移动审批和详情头部二次修复,"根据 R7E 真机反馈修复审批卡片右侧只露待字、审批详情操作按钮布局和移动详情返回按钮与单号贴边问题。","1) 移动审批卡片和详情状态完整显示待处理/已处理等文本;2) 审批详情通过/驳回/退回在线操作在 320px 不挤压乱换行;3) 移动详情返回按钮保留左上且与标题至少 12px 间距;4) 不改变审批动作和 deeplink 语义。","流程级验证: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;SMOKE101 真机复核 /mobile/approvals。",npm|playwright|manual,DONE,DONE,DONE,client/src/components/mobile/MobileDetailHeader.tsx|client/src/pages/MobileApprovalsPage.tsx|client/src/styles/mobile-touch.css|client/tests/e2e,"[""R7E-16A""]",已部署并真机通过:2026-05-15 19:31 CST f945c0b 已通过 deploy/trialrun/deploy.sh 发布到 https://oa.hyinda.com 且 SYNC_ENV=0 未覆盖远端 .env;部署后 /ready 通过 public bundle findings=0 live smoke env ready DG7+R124 公网移动矩阵 6 passed;用户确认 /mobile/approvals 右侧完整显示待处理 详情三个按钮在一行 且左上返回与标题有清楚间距。回滚路径:恢复移动详情头部和审批操作区样式;不改后端 API 权限 workflow 状态机或企业微信 deeplink。 -R7E-16D,审批动作二次确认与底部操作统一,"保持通过/驳回/退回短按钮文案,但在 PC 和移动审批动作执行前增加二次确认,明确通过、驳回、退回的业务后果。","1) PC 审批详情通过/驳回/退回先弹确认;2) PC 列表快捷通过先弹确认;3) 移动审批详情通过/驳回/退回和离线草稿先弹确认;4) 确认文案区分通过推进、驳回终止、退回修改后重提;5) 不改后端 workflow 状态机。","流程级验证: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;cd client && npx playwright test tests/e2e/workflow-action-confirm-ui.spec.ts tests/e2e/r89-mobile-login-navigation.spec.ts --workers=1 --reporter=list。",npm|playwright,DONE,DONE,DONE,client/src/components/common/ConfirmDialog.tsx|client/src/lib/workflowActionConfirm.ts|client/src/pages/MobileApprovalsPage.tsx|client/src/pages/WorkflowTaskDetailPage.tsx|client/src/pages/WorkflowTasksPage.tsx|client/tests/e2e/workflow-action-confirm-ui.spec.ts|client/tests/e2e/r89-mobile-login-navigation.spec.ts|docs/需求-统一审批中心规约.md|docs/产品设计规则.md,"[""R7E-16C""]",已部署待真机复测:2026-05-15 21:46 CST 96488d8 已通过 deploy/trialrun/deploy.sh 发布到 https://oa.hyinda.com 且 SYNC_ENV=0 未覆盖远端 .env;部署脚本内置远端构建 init migration status /ready external deps smoke runtime smoke 和 public bundle 扫描通过;部署后 /ready ok public bundle findings=0 live smoke env ready;E2E_BASE_URL=https://oa.hyinda.com DG7+R124 公网移动矩阵复跑 6 passed;E2E_BASE_URL=https://oa.hyinda.com workflow-action-confirm-ui + R89 审批确认专项 5 passed;此前一次移动矩阵首轮失败为登录页前置时序,复跑已通过。回滚路径:移除二次确认 helper 和调用点 恢复原按钮直接触发 mutation;不改后端 API 权限 workflow 状态机 企业微信 deeplink 或付款批次开关。 -R7E-16E,全站高风险操作二次确认统一,"把 R7E-16D 的审批确认模式推广到全站高风险动作,覆盖提交审批、撤回、删除、归档、启用/停用、批量处理、财务复核/付款、重复票据例外、敏感导出和通知测试/重发,不让普通保存草稿产生确认疲劳。","1) 新增通用 ActionConfirmDialog 和确认文案 helper;2) client/src 不再出现 window.confirm/window.prompt;3) 当前 R7E 相关高风险入口使用 OA 内确认弹窗和统一 testid;4) 不改后端 API/schema/权限/workflow/付款开关。","流程级验证:cd client && npm run typecheck && npm run build;rg -n 'window\\.(confirm|prompt)' client/src 应无结果;cd client && npx playwright test tests/e2e/system-action-confirmation.spec.ts --workers=1 --reporter=list。",npm|rg|playwright,DONE,DONE,DONE,client/src/components/common/ActionConfirmDialog.tsx|client/src/lib/actionConfirm.ts|client/src/pages|client/tests/e2e/system-action-confirmation.spec.ts|docs/产品设计规则.md|docs/需求-统一审批中心规约.md,"[""R7E-16D""]",2026-05-15 本地完成并验证:client typecheck 通过 client build 通过 rg window.confirm/window.prompt 无结果 system-action-confirmation 2 passed;覆盖报销草稿删除 敏感导出 付款批次执行等高风险动作的取消不调用接口和确认后调用接口;回滚路径为恢复相关按钮直接调用 mutation 和旧 ConfirmDialog;不改数据结构或远端配置。PC 端由自动化验收 真机仅保留企业微信差异项。 -R7E-16F,PC 自动化和视觉门禁补强,"把 PC 端高风险确认验收从人工点击改为 Playwright 自动化和视觉检查,移动仍用矩阵覆盖布局,企业微信真机只测真实环境差异。","1) PC mock 自动化覆盖取消不调用接口、确认后才调用接口;2) 移动矩阵覆盖确认弹窗不溢出和吸底操作稳定;3) project-wide 视觉检查通过;4) QAOPS8-17 记录 PC 自动化替代人工验收口径。","流程级验证:cd client && npx playwright test tests/e2e/system-action-confirmation.spec.ts tests/e2e/workflow-action-confirm-ui.spec.ts --workers=1 --reporter=list;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;QA_SKIP_CLIENT_BUILD=1 bash scripts/qa/run-web-gates.sh project-wide-visual-local。",playwright|bash,DONE,DONE,DONE,client/tests/e2e/system-action-confirmation.spec.ts|client/tests/e2e/workflow-action-confirm-ui.spec.ts|docs/trialrun/人工试运行报告.md|issues/2026-05-13_17-30-00-qaops8-test-release-ops.csv,"[""R7E-16E""]",2026-05-15 本地完成并验证:system-action-confirmation + workflow-action-confirm-ui 4 passed;DG7+R124 移动矩阵 6 passed;project-wide-visual-local 通过并自动准备临时 DB 和种子 1 passed。直接把 project-wide-visual 挂到裸 Vite 时曾因默认 E2E 数据前置不足出现登录 API HTTP_500 已归类为前置问题不作为业务回归。公网部署前只能记录本地自动化证据;部署后再复跑公网 ready public bundle PC mock 自动化和移动矩阵。R7E-18 仍需用户验收结论。 -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-16D 已部署并公网自动化通过且代表真机确认;R7E-16E/R7E-16F 已本地完成但尚未部署公网;本行待部署后公网复核和 R7E-18 验收结论后再关闭。 +R7E-16D,审批动作二次确认与底部操作统一,"保持通过/驳回/退回短按钮文案,但在 PC 和移动审批动作执行前增加二次确认,明确通过、驳回、退回的业务后果。","1) PC 审批详情通过/驳回/退回先弹确认;2) PC 列表快捷通过先弹确认;3) 移动审批详情通过/驳回/退回和离线草稿先弹确认;4) 确认文案区分通过推进、驳回终止、退回修改后重提;5) 不改后端 workflow 状态机。","流程级验证: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;cd client && npx playwright test tests/e2e/workflow-action-confirm-ui.spec.ts tests/e2e/r89-mobile-login-navigation.spec.ts --workers=1 --reporter=list。",npm|playwright,DONE,DONE,DONE,client/src/components/common/ConfirmDialog.tsx|client/src/lib/workflowActionConfirm.ts|client/src/pages/MobileApprovalsPage.tsx|client/src/pages/WorkflowTaskDetailPage.tsx|client/src/pages/WorkflowTasksPage.tsx|client/tests/e2e/workflow-action-confirm-ui.spec.ts|client/tests/e2e/r89-mobile-login-navigation.spec.ts|docs/需求-统一审批中心规约.md|docs/产品设计规则.md,"[""R7E-16C""]",已部署并代表真机通过:2026-05-15 21:46 CST 96488d8 已通过 deploy/trialrun/deploy.sh 发布到 https://oa.hyinda.com 且 SYNC_ENV=0 未覆盖远端 .env;部署脚本内置远端构建 init migration status /ready external deps smoke runtime smoke 和 public bundle 扫描通过;部署后 /ready ok public bundle findings=0 live smoke env ready;E2E_BASE_URL=https://oa.hyinda.com DG7+R124 公网移动矩阵复跑 6 passed;E2E_BASE_URL=https://oa.hyinda.com workflow-action-confirm-ui + R89 审批确认专项 5 passed;用户确认审批详情底部操作按钮可见且点击会出现二次确认弹窗;此前一次移动矩阵首轮失败为登录页前置时序,复跑已通过。回滚路径:移除二次确认 helper 和调用点 恢复原按钮直接触发 mutation;不改后端 API 权限 workflow 状态机 企业微信 deeplink 或付款批次开关。 +R7E-16E,全站高风险操作二次确认统一,"把 R7E-16D 的审批确认模式推广到全站高风险动作,覆盖提交审批、撤回、删除、归档、启用/停用、批量处理、财务复核/付款、重复票据例外、敏感导出和通知测试/重发,不让普通保存草稿产生确认疲劳。","1) 新增通用 ActionConfirmDialog 和确认文案 helper;2) client/src 不再出现 window.confirm/window.prompt;3) 当前 R7E 相关高风险入口使用 OA 内确认弹窗和统一 testid;4) 不改后端 API/schema/权限/workflow/付款开关。","流程级验证:cd client && npm run typecheck && npm run build;rg -n 'window\\.(confirm|prompt)' client/src 应无结果;cd client && npx playwright test tests/e2e/system-action-confirmation.spec.ts --workers=1 --reporter=list。",npm|rg|playwright,DONE,DONE,DONE,client/src/components/common/ActionConfirmDialog.tsx|client/src/lib/actionConfirm.ts|client/src/pages|client/tests/e2e/system-action-confirmation.spec.ts|docs/产品设计规则.md|docs/需求-统一审批中心规约.md,"[""R7E-16D""]",2026-05-15 本地完成并验证:client typecheck 通过 client build 通过 rg window.confirm/window.prompt 无结果 system-action-confirmation 2 passed;覆盖报销草稿删除 敏感导出 付款批次执行等高风险动作的取消不调用接口和确认后调用接口。2026-05-15 23:18 CST bf791d7 已部署到 https://oa.hyinda.com 且 SYNC_ENV=0 未覆盖远端 .env;部署后 /ready ok public bundle findings=0 live smoke env ready;E2E_BASE_URL=https://oa.hyinda.com system-action-confirmation + workflow-action-confirm-ui 4 passed。回滚路径为恢复相关按钮直接调用 mutation 和旧 ConfirmDialog;不改数据结构或远端配置。PC 端由自动化验收 真机仅保留企业微信差异项。 +R7E-16F,PC 自动化和视觉门禁补强,"把 PC 端高风险确认验收从人工点击改为 Playwright 自动化和视觉检查,移动仍用矩阵覆盖布局,企业微信真机只测真实环境差异。","1) PC mock 自动化覆盖取消不调用接口、确认后才调用接口;2) 移动矩阵覆盖确认弹窗不溢出和吸底操作稳定;3) project-wide 视觉检查通过;4) QAOPS8-17 记录 PC 自动化替代人工验收口径。","流程级验证:cd client && npx playwright test tests/e2e/system-action-confirmation.spec.ts tests/e2e/workflow-action-confirm-ui.spec.ts --workers=1 --reporter=list;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;QA_SKIP_CLIENT_BUILD=1 bash scripts/qa/run-web-gates.sh project-wide-visual-local。",playwright|bash,DONE,DONE,DONE,client/tests/e2e/system-action-confirmation.spec.ts|client/tests/e2e/workflow-action-confirm-ui.spec.ts|docs/trialrun/人工试运行报告.md|issues/2026-05-13_17-30-00-qaops8-test-release-ops.csv,"[""R7E-16E""]",2026-05-15 本地完成并验证:system-action-confirmation + workflow-action-confirm-ui 4 passed;DG7+R124 移动矩阵 6 passed;project-wide-visual-local 通过并自动准备临时 DB 和种子 1 passed。直接把 project-wide-visual 挂到裸 Vite 时曾因默认 E2E 数据前置不足出现登录 API HTTP_500 已归类为前置问题不作为业务回归。2026-05-15 23:18 CST bf791d7 已部署并完成公网复核:deploy.sh 通过;/ready ok;public bundle findings=0;live smoke env ready;E2E_BASE_URL=https://oa.hyinda.com PC 高风险确认与审批确认 4 passed;DG7+R124 公网移动矩阵 6 passed。R7E-18 仍需用户验收结论。 +R7E-17,阻断问题修复分流,"根据每日问题清单把阻断问题分流到当前 R7E 修复或后续连续治理流。","1) 阻断问题有 owner;2) 能在 R7E 内修的有方案和验证;3) 范围外问题进入 UX8/ORG8/WF8/BIZ8/QAOPS8;4) 不顺手扩大。","流程级验证:人工核对问题清单和分流结果;必要时创建后续连续 CSV。",manual,DONE,DONE,DONE,issues/*.csv|docs/trialrun/人工试运行报告.md,"[""R7E-16""]",已知分流均已处理或延期:deeplink 归 WF8 并已代表设备验证关闭;状态槽归 R7E-16A 已部署并自动化验证;Android 选择器归 R7E-16B 按平台限制和 OA PDF-only 校验处理;财务付款批次延期到 P2;R7E-16D 已部署并公网自动化通过且代表真机确认;R7E-16E/R7E-16F 已部署 bf791d7 并公网自动化通过。当前无 P0/P1 阻断;R7E-18 验收结论仍需用户确认。 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 e1270c48..fec3bc6c 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 口径收口;2026-05-15 用户确认代表设备企业微信消息 deeplink 可免登录进入对应详情 WF8-11 和 R7E-9 已关闭;2026-05-15 19:31 二次修复 f945c0b 已部署 deploy.sh 远端构建 init migration ready external deps smoke runtime smoke public bundle 均通过 部署后 /ready 通过 public bundle findings=0 live smoke env ready DG7+R124 公网移动矩阵 6 passed;用户确认 R7E-16C 审批状态/详情按钮/返回间距和 BIZ8-12B 财务入口定位真机通过;2026-05-15 21:46 R7E-16D 96488d8 已部署 deploy.sh 远端构建 init migration ready external deps smoke runtime smoke public bundle 均通过 部署后 /ready ok public bundle findings=0 live smoke env ready DG7+R124 公网移动矩阵复跑 6 passed 审批确认专项 5 passed;BIZ8-13 权限回归和 BIZ8-CLOSE 已完成;2026-05-15 R7E-16E/R7E-16F 本地完成全站高风险确认统一和 PC 自动化验收口径:client typecheck/build 通过 rg window.confirm/window.prompt 无结果 system-action-confirmation 2 passed system-action-confirmation+workflow-action-confirm-ui 4 passed DG7+R124 移动矩阵 6 passed project-wide-visual-local 1 passed;PC 端高风险动作改由 Playwright 和视觉门禁验收 不再安排人工 PC 点击;当前 Go No-Go 仍为 Pause 因 R7E-16E/R7E-16F 尚未部署到公网且 R7E-18 人工验收结论未完成;明确 R7E 人工验收不被自动化替代。 +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 已关闭;2026-05-15 19:31 二次修复 f945c0b 已部署 deploy.sh 远端构建 init migration ready external deps smoke runtime smoke public bundle 均通过 部署后 /ready 通过 public bundle findings=0 live smoke env ready DG7+R124 公网移动矩阵 6 passed;用户确认 R7E-16C 审批状态/详情按钮/返回间距和 BIZ8-12B 财务入口定位真机通过;2026-05-15 21:46 R7E-16D 96488d8 已部署 deploy.sh 远端构建 init migration ready external deps smoke runtime smoke public bundle 均通过 部署后 /ready ok public bundle findings=0 live smoke env ready DG7+R124 公网移动矩阵复跑 6 passed 审批确认专项 5 passed;BIZ8-13 权限回归和 BIZ8-CLOSE 已完成;2026-05-15 R7E-16E/R7E-16F 本地完成全站高风险确认统一和 PC 自动化验收口径:client typecheck/build 通过 rg window.confirm/window.prompt 无结果 system-action-confirmation 2 passed system-action-confirmation+workflow-action-confirm-ui 4 passed DG7+R124 移动矩阵 6 passed project-wide-visual-local 1 passed;PC 端高风险动作改由 Playwright 和视觉门禁验收 不再安排人工 PC 点击;2026-05-15 23:18 CST bf791d7 已部署到 https://oa.hyinda.com 且 SYNC_ENV=0 未覆盖远端 .env,deploy.sh 远端构建 init migration status ready external deps smoke runtime smoke public bundle 扫描通过;部署后 /ready ok public bundle findings=0 live smoke env ready;公网 PC 高风险确认与审批确认 4 passed,DG7+R124 公网移动矩阵 6 passed;当前 Go No-Go 仍为 Pause,仅因 R7E-18 人工验收结论未完成;明确 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""]",所有执行行完成后才能收口。