R98 A1-A2 建档并修正企微 smoke 契约

这个提交包含在:
2026-05-06 20:07:56 +08:00
父节点 adb41db725
当前提交 2d0c506a58
共修改 3 个文件,包含 39 行新增和 3 行删除
@@ -0,0 +1,23 @@
# R98 公网试运行收口报告
日期:2026-05-06
## 范围
- 本地发布门禁。
- 公网部署与运行时配置核查。
- 公网 live smoke、移动视觉巡检和真实 OCR 复核。
- 备份恢复与企业微信真机人工配合说明。
## 已执行
| 项目 | 命令 | 结果 |
| --- | --- | --- |
| Issue CSV 校验 | `python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-06_19-54-01-r98-public-trialrun-closeout.csv` | 通过 |
| 本地静态发布门禁 | `bash scripts/qa/run-release-gate.sh static` | 通过 |
| 本地 smoke 门禁 | `bash scripts/qa/run-release-gate.sh smoke-local` | 8 passed |
## 备注
- `smoke-local` 首次暴露旧用例仍假设企微 WebView 登录后进入 `/portal`。已按当前产品策略修正为验证默认进入 `/mobile`。
- 前端构建仍出现既有 Vite circular chunk 和大 chunk 警告,不阻塞本轮试运行收口。
+7 -3
查看文件
@@ -422,7 +422,7 @@ test("Portal 域管理角色也进入经理视图", async ({ page }) => {
await expect(page.locator('[aria-label="portal-card-team_presence"]')).toBeVisible(); await expect(page.locator('[aria-label="portal-card-team_presence"]')).toBeVisible();
}); });
test("企微 WebView 下顶栏显示入口提示", async ({ page }) => { test("企微 WebView 下默认进入移动工作台", async ({ page }) => {
await page.addInitScript(() => { await page.addInitScript(() => {
Object.defineProperty(window.navigator, "userAgent", { Object.defineProperty(window.navigator, "userAgent", {
configurable: true, configurable: true,
@@ -436,7 +436,11 @@ test("企微 WebView 下顶栏显示入口提示", async ({ page }) => {
await mockNotificationList(page); await mockNotificationList(page);
await mockMe(page, ["employee"], "Employee"); await mockMe(page, ["employee"], "Employee");
await login(page, EMPLOYEE); await page.goto("/login");
await page.getByTestId(TEST_IDS.login.identifier).fill(EMPLOYEE.identifier);
await page.getByTestId(TEST_IDS.login.password).fill(EMPLOYEE.password);
await page.getByTestId(TEST_IDS.login.submit).click();
await expect(page.getByTestId("topbar-wecom-entry-badge")).toBeVisible(); await expect(page).toHaveURL(/\/mobile/);
await expect(page.getByTestId("mobile-today-focus")).toBeVisible();
}); });
@@ -0,0 +1,9 @@
ID,Title,Description,Acceptance,Test_Method,Tools,Dev_Status,Review1_Status,Regression_Status,Files,Dependencies,Notes
A1,R98 公网试运行收口合同,冻结本轮只做公网部署 验证 视觉 OCR 备份恢复和人工真机配合说明,CSV 校验通过且不改业务功能范围,命令 python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-06_19-54-01-r98-public-trialrun-closeout.csv,manual,DONE,DONE,DONE,issues/2026-05-06_19-54-01-r98-public-trialrun-closeout.csv,[],已校验通过 回滚路径 删除本合同
A2,本地发布门禁与静态回归,执行本地 release gate 可自动化部分并确认 R97 后工作树可发布,typecheck build prisma validate release gate 或等价命令通过,命令 bash scripts/qa/run-release-gate.sh static 加必要的 targeted Playwright 回归,typescript|playwright,DONE,DONE,DONE,client|server|scripts/qa,["A1"],static 通过 smoke-local 8 passed 已修正企微 WebView 移动优先测试契约 回滚路径 revert 测试改动
A3,公网部署与运行时配置核查,将当前 main 最新提交部署到 118.89.77.218 并核查 Caddy 容器 asset hash env 与 runtime smoke,https://oa.hyinda.com/ready 通过 容器内 dist 含 R97 关键 test id OCR provider 仍为 tencent,命令 bash deploy/trialrun/deploy.sh 加 ssh 远端 docker-compose smoke 命令,ssh|docker|bash,TODO,TODO,TODO,deploy/trialrun|scripts/qa,["A2"],不输出任何 secret 明文 回滚路径 使用上个 tag 和备份恢复
A4,公网 live smoke 与移动视觉复核,使用自动化检查公网登录 Portal 移动高频页和小屏出屏问题,live smoke 通过 移动 390 视口关键页无桌面表格 无出屏按钮 截图报告落地,命令 bash scripts/qa/run-web-gates.sh smoke-live 加 Playwright 公网视觉巡检,playwright,TODO,TODO,TODO,client/tests/e2e|artifacts/r98-public,["A3"],live smoke 只读且使用独立 smoke 账号 回滚路径 删除报告
A5,真实腾讯 OCR 与上传链路复核,用现有真实发票文件在公网或本地 live 环境跑 OCR 终态复核,真实发票上传后终态为 available 或清晰 ocr_failed 且不长时间 pending_ocr,命令 PLAYWRIGHT_MANUAL=1 PLAYWRIGHT_OCR_LIVE=1 PLAYWRIGHT_OCR_LIVE_FILE=artifacts/北京悦海堂餐饮管理有限公司_发票金额1683.00元.pdf E2E_BASE_URL=https://oa.hyinda.com npx playwright test tests/e2e/manual/live-invoice-ocr.spec.ts --workers=1 --reporter=list --timeout=360000,playwright|tencent-ocr,TODO,TODO,TODO,client/tests/e2e/manual/live-invoice-ocr.spec.ts|artifacts/r98-public,["A3"],不提交发票衍生产物 回滚路径 不涉及代码
A6,备份恢复与回滚证据,执行或形成可复核的 DB 加 storage 备份恢复演练证据,记录备份文件 恢复目标 ready 结果 回滚负责人和不可自动化原因,命令 ssh 远端执行 backup-db.sh backup-storage.sh 并在可行时临时目录恢复验证,ssh|docker|manual,TODO,TODO,TODO,deploy/trialrun|artifacts/r98-public,["A3"],若恢复演练需人工确认目标环境则写明操作步骤 回滚路径 删除报告
A7,企业微信真机复核说明,给用户提供必须手机配合的最小步骤并收集结果,已绑定用户从企业微信工作台进入后落到 /mobile 未绑定用户提示清楚,人工步骤 手机企业微信 工作台 打开海音达 OA 截图或口头反馈 页面 URL 与结果,manual,TODO,TODO,TODO,artifacts/r98-public,["A3"],仅人工可完成 回滚路径 删除说明
A8,R98 报告回填与中文提交,汇总自动化结果 视觉证据 OCR 备份恢复和人工剩余事项并中文分批提交,Issue CSV 状态回填 报告落地 git status 干净,命令 git diff --check 加 CSV 校验 加 git status --short,git|manual,TODO,TODO,TODO,artifacts/r98-public|issues/2026-05-06_19-54-01-r98-public-trialrun-closeout.csv,"[""A2"",""A3"",""A4"",""A5"",""A6"",""A7""]",回滚路径 revert 对应提交
无法渲染此文件,因为它包含了意外字符,其位于第 3 行和第 338 列。