diff --git a/artifacts/r70/manual-trialrun-checklist.md b/artifacts/r70/manual-trialrun-checklist.md index 44cb1050..2e14397b 100644 --- a/artifacts/r70/manual-trialrun-checklist.md +++ b/artifacts/r70/manual-trialrun-checklist.md @@ -56,9 +56,9 @@ Codex 可代做: 最小人工操作清单: 1. 企微后台配置: - - 工作台入口 URL:`https://oa.hyinda.com/api/auth/wecom/login?returnTo=%2Fportal` + - 工作台入口 URL:`https://oa.hyinda.com/api/auth/wecom/login?returnTo=%2Fmobile` - OAuth 回调 URL:`https://oa.hyinda.com/api/auth/wecom/callback` -2. 提供至少两组公网只读 smoke 账号: +2. 确认至少两组公网只读 smoke 账号可用: - `smoke-admin` - `smoke-employee` 3. 若公网运行时 smoke 继续提示公告或搜索缺失,用管理员账号进入“功能开关”页,核对: @@ -77,7 +77,7 @@ Codex 可代做: - 数据库 `feature_flags`:`wecom_entry_v1=inherit` - 自动化核验已完成: - `GET https://oa.hyinda.com/api/auth/wecom/config` 返回 `status=ready` - - `GET https://oa.hyinda.com/api/auth/wecom/login?returnTo=%2Fportal` 返回 `302`,并跳转到 `open.weixin.qq.com` + - `GET https://oa.hyinda.com/api/auth/wecom/login?returnTo=%2Fmobile` 返回 `302`,并跳转到 `open.weixin.qq.com` - Playwright 公网登录页快照已确认出现“使用企业微信进入工作台”按钮 - Playwright 点击后,桌面浏览器落到企微提示页“请在企业微信客户端打开链接”,符合预期 - 截图:`output/playwright/2026-05-04-wecom-login-page.png` @@ -106,7 +106,7 @@ Codex 可代做: - 当前服务器复核结果: - `https://oa.hyinda.com/ready`:正常 - `https://oa.hyinda.com/api/auth/wecom/config`:`status=ready` - - `https://oa.hyinda.com/api/auth/wecom/login?returnTo=%2Fportal`:仍返回 `302` 到企微 OAuth + - `https://oa.hyinda.com/api/auth/wecom/login?returnTo=%2Fmobile`:返回 `302` 到企微 OAuth 你现在需要做的人工操作: diff --git a/artifacts/r70/manual-trialrun-report.md b/artifacts/r70/manual-trialrun-report.md index c9eb5316..88178edd 100644 --- a/artifacts/r70/manual-trialrun-report.md +++ b/artifacts/r70/manual-trialrun-report.md @@ -251,3 +251,21 @@ R70 初次试运行暂停项已在 2026-04-28 的 R71 定向修复后关闭。 - 当前结论: - 本地自动化已覆盖登录极简、企微移动入口、移动底部导航、移动审批、票据上传、“我的/更多”和小屏菜单抽屉。 - 真实公网手机企微仍需人工打开一次,确认企业微信真实容器内的 OAuth、cookie 与默认 `/mobile` 落点。 + +## R90/R91 事实源与公网入口收口启动 + +- 时间:`2026-05-05 20:01 CST` +- 本轮执行合同: + - `issues/2026-05-05_20-01-18-r90-r91-trialrun-closeout.csv` +- 已确认的公网只读状态: + - `GET https://oa.hyinda.com/ready`:通过 + - `GET https://oa.hyinda.com/api/auth/wecom/config`:`status=ready`、`entryEnabled=true`、`oauthEnabled=true` + - `GET https://oa.hyinda.com/api/auth/wecom/login?returnTo=%2Fmobile`:`HTTP 302` 到企业微信 OAuth,state 中 `returnTo=/mobile` + - 远端 `root` 与 `deploy` 均可 SSH 到 `/opt/hyb-oa-trialrun`;`hyb-oa-trialrun-server` 与 `hyb-oa-trialrun-db` 正常运行 +- 本轮调整方向: + - 文档与检查清单统一改为企业微信手机入口默认 `/mobile` + - 服务端企微默认 `defaultReturnTo` 也改为 `/mobile`,避免后台配置或直链未带 `returnTo` 时回到桌面 Portal + - 桌面浏览器和账号密码登录仍由前端运行时显式进入 `/portal` +- 当前仍需收口: + - 部署 R89/R90 最新代码到公网后,再用真实手机企业微信打开一次应用,确认已绑定账号直接进入 `/mobile` + - 用既有测试账号或 smoke 账号跑公网 live smoke,不使用真实业务账号 diff --git a/artifacts/r75/coverage-matrix.csv b/artifacts/r75/coverage-matrix.csv index 90978e2d..4c4f7bc1 100644 --- a/artifacts/r75/coverage-matrix.csv +++ b/artifacts/r75/coverage-matrix.csv @@ -12,5 +12,5 @@ "差旅与移动审批","enabled_admin","/travel-requests|/mobile/approvals|/mobile/capture","employee|manager|finance","WECOM_ENTRY_ENABLED","wecom_entry_v1","partial_done","artifacts/r69/acceptance-report.md|client/tests/e2e/travel-payment-flow.spec.ts|client/tests/e2e/travel-reconciliation-flow.spec.ts|client/tests/e2e/mobile-approvals-offline.spec.ts|artifacts/r70/manual-trialrun-report.md","差旅申请、审批、支付、绑票、对账批次,以及移动审批 deep link 离线重放都有自动化证据;R70 人工仅确认移动入口可理解。","真实 IM deep link、真实移动设备拍照上传、多人并发审批未验证。","保留自动化为主;真实设备和 IM 深链并入 A5。" "预算、支付批次与 AP 运营","optional","/budgets|/payment-batches|/ap-operations","finance|admin","BUDGET_PRECHECK_ENABLED|PAYMENT_BATCH_ENABLED|ERP_SYNC_ENABLED","budget_precheck_v1|payment_batch_v1|erp_sync","partial_done","issues/2026-03-29_08-07-14-p25-lite-budget-ap.csv|issues/2026-04-06_r52-ap-operations.csv|issues/2026-04-29_10-14-27-r78-reimbursement-payment-tail.csv|client/tests/e2e/reimbursement-payment-batch-flow.spec.ts|server/scripts/regression-payment-batches.sh","支付批次 maker-checker、AP 待付款快捷复核、finance 执行报销付款批次,以及 reimbursement paid 后 ERP preview pending outbox 已在本地 focused regression 跑通;历史 budget/AP 视图与 review 证据仍保留。","预算预检页面级联动、高风险两轮复核、大额批次与非报销实体付款未在本轮 focused local 回归中重跑。","若财务域继续扩大试运行,再补 budget precheck 与高风险二次复核专项;当前 payment batch/AP happy path 已具备本地回归证据。" "ERP 集成与切换控制台","external","/system/integrations/erp|/system/cutover","integration admin|system.settings","ERP_SYNC_ENABLED|CUTOVER_CONSOLE_ENABLED","erp_sync|cutover_console_v1","partial_external","issues/2026-03-08_14-10-53-p19-erp-1-l5-masterdata-journal-bridge.csv|issues/2026-03-21_11-10-00-p29-replacement-readiness-refresh.csv|client/tests/e2e/live-smoke.spec.ts","ERP 管理页、mock/http 回归和只读 live smoke 有历史证据。","当前本地 trialrun 没有真实 ERP 出入站或 cutover 操作验证。","仅在外部环境专项下执行,不进入默认 trialrun gate。" -"系统治理、功能开关与审计","enabled_admin","/system/workspace|/system/settings|/system/feature-flags|/system/workflow-definitions|/audit-logs|/system/notification-channels","admin","WORKFLOW_DEFINITION_ADMIN_ENABLED","workflow_definition_admin_v1","partial_done","artifacts/r70/manual-trialrun-report.md|client/tests/e2e/settings-governance.spec.ts|client/tests/e2e/live-smoke.spec.ts|server/src/scripts/smoke-trialrun-runtime.js|client/tests/e2e/r75-automation-gap-fill.spec.ts","工作区设置、系统设置、功能开关、审计日志打开与导航边界有自动化和人工证据;R74 本地门禁已检查 workspace/flag/navigation 基线,R75 已补功能开关备注保存并恢复写路径。2026-05-04 只读 deploy 巡检已确认公网工作区仍为 `small_team_internal`,但远端 DB 中 `announcements_v1` / `global_search_v1` 仍是 `force_off`。","流程定义、通知渠道、工作区其他写操作和审计留痕写入效果仍未在当前 trialrun 做完整专项;公网部署态还存在 feature flag 与期望 workspace 导航不一致的问题。","保留 partial_done;先收口公网 feature flag 基线,再补通知渠道与流程定义写路径。" -"企微、HTTPS、部署态与并发","external","/login(企微入口)|部署运行时|多账号并发","all roles","APP_ORIGIN|COOKIE_SECURE|WECOM_*|PUBLIC_SECURITY_HARDENING_ENABLED","wecom_entry_v1|public_security_hardening_v1","blocked_external","deploy/trialrun/runbook.md|client/tests/e2e/wecom-entry.spec.ts|client/tests/e2e/live-smoke.spec.ts|server/src/scripts/smoke-trialrun-runtime.js|issues/2026-04-29_08-39-22-r76-external-trialrun-closeout.csv|issues/2026-05-04_13-11-16-r79-governance-live-readiness.csv","本地/只读 smoke、env contract、导航/入口提示与 local runtime gate 已就绪;`https://oa.hyinda.com/ready` 也已通过只读探活。","真实企微 OAuth、HTTPS cookie secure、多用户并发协同仍缺环境级成功证据。2026-05-04 公网部署巡检已确认 `WECOM_ENABLED=false`、`WECOM_ENTRY_ENABLED=false`、`WECOM_OAUTH_ENABLED=false`、`OCR_PROVIDER=mock`,且 DB 中 `wecom_entry_v1` 为 `force_off`;当前 live runtime smoke 还会因 `announcements_v1` 为 `force_off` 而失败。","企微/HTTPS/并发仍按 A4/A5 外部专项推进;先准备独立 smoke 账号并补齐企微后台配置,再修正公网 feature flag 基线后重跑 live smoke。" +"系统治理、功能开关与审计","enabled_admin","/system/workspace|/system/settings|/system/feature-flags|/system/workflow-definitions|/audit-logs|/system/notification-channels","admin","WORKFLOW_DEFINITION_ADMIN_ENABLED","workflow_definition_admin_v1","partial_done","artifacts/r70/manual-trialrun-report.md|client/tests/e2e/settings-governance.spec.ts|client/tests/e2e/live-smoke.spec.ts|server/src/scripts/smoke-trialrun-runtime.js|client/tests/e2e/r75-automation-gap-fill.spec.ts|issues/2026-05-05_20-01-18-r90-r91-trialrun-closeout.csv","工作区设置、系统设置、功能开关、审计日志打开与导航边界有自动化和人工证据;R74 本地门禁已检查 workspace/flag/navigation 基线,R75 已补功能开关备注保存并恢复写路径。R80 已把 `wecom_entry_v1` 从 `force_off` 调整为 `inherit`,R90 已把旧公网诊断从当前事实中剥离。","流程定义、通知渠道、工作区其他写操作和审计留痕写入效果仍未在当前 trialrun 做完整专项;公网 `announcements_v1` / `global_search_v1` 仍需在 live smoke 中重新核对。","保留 partial_done;R90/R91 先收口公网 feature flag 与 live smoke,再补通知渠道与流程定义写路径。" +"企微、HTTPS、部署态与并发","external","/login(企微入口)|部署运行时|多账号并发","all roles","APP_ORIGIN|COOKIE_SECURE|WECOM_*|PUBLIC_SECURITY_HARDENING_ENABLED","wecom_entry_v1|public_security_hardening_v1","partial_done","deploy/trialrun/runbook.md|client/tests/e2e/wecom-entry.spec.ts|client/tests/e2e/live-smoke.spec.ts|client/tests/e2e/r89-mobile-login-navigation.spec.ts|server/src/scripts/smoke-trialrun-runtime.js|issues/2026-05-04_16-47-46-r80-live-wecom-enablement.csv|issues/2026-05-04_20-53-39-r82-wecom-userid-compatibility.csv|issues/2026-05-04_23-36-10-r83-r86-user-onboarding-simplify.csv|issues/2026-05-05_14-01-13-r87-wecom-session-hint.csv|issues/2026-05-05_14-12-50-r88-wecom-device-fingerprint.csv|issues/2026-05-05_17-35-00-r89-mobile-login-ux.csv|issues/2026-05-05_20-01-18-r90-r91-trialrun-closeout.csv","本地/只读 smoke、env contract、导航/入口提示与 local runtime gate 已就绪;`https://oa.hyinda.com/ready` 已通过只读探活。R80 已启用公网企微 env 与 `wecom_entry_v1=inherit`;R82-R88 已修复真实 UserId 兼容、首次绑定、会话提示与设备指纹;R89 已完成本地移动登录与导航自动化。","公网仍需部署最新 R89/R90 并用真实手机企业微信复核 `/mobile` 落点;HTTPS cookie secure、独立 smoke 账号 live smoke 和多用户并发协同仍缺最终证据。","企微不再按外部阻塞处理;R90/R91 继续推进公网最新版本部署、`returnTo=/mobile`、live smoke、备份恢复和并发专项。" diff --git a/deploy/trialrun/checklist.md b/deploy/trialrun/checklist.md index c94143d7..84ba75bf 100644 --- a/deploy/trialrun/checklist.md +++ b/deploy/trialrun/checklist.md @@ -130,11 +130,11 @@ ## R27 企业微信正式接入与交互优化检查 - [ ] 登录页已区分普通浏览器与企业微信 WebView 场景 -- [ ] 企业微信工作台入口 URL 已配置为 `https://oa.hyinda.com/api/auth/wecom/login?returnTo=%2Fportal` +- [ ] 企业微信工作台入口 URL 已配置为 `https://oa.hyinda.com/api/auth/wecom/login?returnTo=%2Fmobile` - [ ] OAuth 回调地址已配置为 `https://oa.hyinda.com/api/auth/wecom/callback` - [ ] `deploy/trialrun/.env` 已补齐 `WECOM_ENABLED / WECOM_ENTRY_ENABLED / WECOM_OAUTH_ENABLED / WECOM_CORP_ID / WECOM_AGENT_ID / WECOM_AGENT_SECRET / WECOM_REDIRECT_URI / WECOM_ALLOWED_RETURN_HOSTS` - [ ] 至少 1 个管理员已在 `个人设置` 成功完成企微绑定 -- [ ] 已验证:已绑定员工从企业微信工作台进入后可直接落到 `Portal` +- [ ] 已验证:已绑定员工从企业微信工作台进入后可直接落到 `/mobile` - [ ] 已验证:未绑定员工会回退到登录页并看到明确绑定提示 - [ ] 已验证:Portal 首屏第一排卡片顺序符合员工 / 管理员视角设计 - [ ] 已验证:备用模块默认折叠,不干扰主导航 diff --git a/docs/admin-handbook.md b/docs/admin-handbook.md index 424882af..dc4b4a99 100644 --- a/docs/admin-handbook.md +++ b/docs/admin-handbook.md @@ -85,13 +85,13 @@ ## 12. 企业微信入口与登录策略 - 建议把企业微信定位为 `入口 + 提醒 + 可选免登`,不要在企业微信里再维护第二套审批或项目录入路径。 -- 默认工作台入口落到 `/portal`,员工真正操作仍在 `hyb-oa` 内完成。 +- 默认工作台入口在企业微信手机端落到 `/mobile`;桌面浏览器和账号密码登录仍进入 `/portal`。员工真正操作仍在 `hyb-oa` 内完成。 - 企微免登建议先完成账号绑定,再逐步在试点部门开启;任何时候都保留账号密码回退。 - 若 OA 部署到公网,生产建议同时满足:`HTTPS`、`COOKIE_SECURE=true`、登录失败锁定、限流、审计开启。 ### 正式接入最小步骤 1. 在企业微信管理后台创建或编辑自建应用。 -2. 将工作台入口配置为:`https://oa.hyinda.com/api/auth/wecom/login?returnTo=%2Fportal`。 +2. 将工作台入口配置为:`https://oa.hyinda.com/api/auth/wecom/login?returnTo=%2Fmobile`。 3. 将 OAuth 回调地址配置为:`https://oa.hyinda.com/api/auth/wecom/callback`。 4. 在 `deploy/trialrun/.env` 中补齐并开启: - `WECOM_ENABLED=true` @@ -102,11 +102,11 @@ - `WECOM_AGENT_SECRET=...` - `WECOM_REDIRECT_URI=https://oa.hyinda.com/api/auth/wecom/callback` - `WECOM_ALLOWED_RETURN_HOSTS=oa.hyinda.com` -5. 先让管理员用账号密码登录,在 `个人设置` 完成一次绑定,再测试企业微信工作台直达。 +5. 先让管理员用账号密码登录,在 `个人设置` 完成一次绑定,再测试企业微信工作台直达;已绑定用户从手机企业微信进入时应直接看到移动工作台。 ### 员工会看到的典型状态 - 未绑定:登录页会提示“当前企业微信账号尚未绑定”,回退到账号密码登录。 -- 已绑定:从企业微信工作台进入后直接落到 `Portal`。 +- 已绑定:从企业微信工作台进入后直接落到 `/mobile`,桌面或普通浏览器场景仍可进入 `Portal`。 - 入口未开放:个人设置仍可绑定,但登录页不会把企业微信作为正式入口展示。 - 配置不完整:个人设置会明确提示缺少 `CorpID / AgentID / 回调地址` 等原因。 diff --git a/docs/feature-matrix.md b/docs/feature-matrix.md index 02f3cd65..30741d66 100644 --- a/docs/feature-matrix.md +++ b/docs/feature-matrix.md @@ -1,14 +1,16 @@ -# hyb-oa 实现状态矩阵(历史主表 + R70-R79 试运行补充) +# hyb-oa 实现状态矩阵(历史主表 + R70-R90 试运行补充) -**快照日期**:2026-05-04 +**快照日期**:2026-05-05 **范围**:`F1-F42`(含 `F19b/F19c/F19d`) + `R1-S2` + `P9A1-P9D1` + `P10E1-P10G1` + `G0-G6` + `H1` + `M1-M4` + `P13-0-P13-8` + `P14-0-P14-8` + `P15A-0-P15A-5` + `P15B-0-P15B-6` + `P16A-0-P16A-6` + `P16B-0-P16B-6` + `P16C-0-P16C-6` + `R9-0-R9-3` + `G2-0-G2-6` + `P17A-0-P17A-6` + `P17B-0-P17B-6` + `P18A-0-P18A-6` + `P18B-0-P18B-6` + `P19-0-P19-6` + `P19IM1-0-P19IM1-6` + `P19ERP1-0-P19ERP1-6` + `P19ERP2-0-P19ERP2-6` + `P19ERP3-0-P19ERP3-6` + `R10-0-R10-4` + `P19MCP1-0-P19MCP1-4` + `P19AI1-0-P19AI1-5` + `P20TRAVEL1-0-P20TRAVEL1-5` + `P20TRAVEL2-0-P20TRAVEL2-5` + `P20TRAVEL3-0-P20TRAVEL3-5` + `P21PWA1-0-P21PWA1-5` + `P21PWA2-0-P21PWA2-5` + `P22PROD1-0-P22PROD1-5` + `R11-0-R11-5`,共 278 项。 **事实源**:`issues/2026-02-09_13-39-02-p5-blueprint-v3.csv` + `issues/2026-02-09_23-30-00-p6-p8-remaining-work-master.csv` + `issues/2026-02-10_09-42-31-p9-maintenance-performance-matrix.csv` + `issues/2026-02-10_10-35-30-p10-production-hardening.csv` + `issues/2026-02-11-p11-p12-governance-mobile.csv` + `issues/2026-02-12_01-09-41-p13-l5-governance.csv` + `issues/2026-02-13_00-11-56-p14-l5-operationalization.csv` + `issues/2026-03-06_14-30-00-p15a-l5-permission-decouple.csv` + `issues/2026-03-06_14-30-00-p15b-l5-leave-v1.csv` + `issues/2026-03-07_13-47-05-p16a-l5-master-data-core.csv` + `issues/2026-03-07_16-22-07-p16b-l5-holiday-calendar.csv` + `issues/2026-03-07_17-14-39-p16c-l5-suppliers.csv` + `issues/2026-03-07_18-15-03-r9-g2-p19-roadmap-refresh.csv` + `issues/2026-03-07_18-16-00-g2-l5-cross-domain-bridge.csv` + `issues/2026-03-07_19-33-09-p17a-l5-procurement-core.csv` + `issues/2026-03-07_21-00-37-p17b-l5-procurement-budget-archive.csv` + `issues/2026-03-07_22-02-09-p18a-l5-asset-registry-core.csv` + `issues/2026-03-07_22-34-03-p18b-l5-asset-movements-inventory.csv` + `issues/2026-03-07_23-22-00-p19-l4-integration-readiness.csv` + `issues/2026-03-08_12-18-10-p19-im-1-l5-collaboration-adapter.csv` + `issues/2026-03-08_14-10-53-p19-erp-1-l5-masterdata-journal-bridge.csv` + `issues/2026-03-08_22-46-51-p19-erp-2-l5-procurement-commitment-archive.csv` + `issues/2026-03-09_00-10-00-p19-erp-3-l5-asset-ledger-summary.csv` + `issues/2026-03-09_10-15-00-r10-post-erp3-roadmap-refresh.csv` + `issues/2026-03-09_10-25-00-p19-mcp-1-l4-readonly-tools-baseline.csv` + `issues/2026-03-10_12-54-30-p19-ai-1-l5-suggestion-workbench-refresh.csv` + `issues/2026-03-10_17-32-21-p20-travel-1-l5-request-intake-refresh.csv` + `issues/2026-03-10_21-05-59-p20-travel-2-l5-corporate-payments-refresh.csv` + `issues/2026-03-11_09-57-28-p20-travel-3-l5-reconciliation-erp-bridge-refresh.csv` + `issues/2026-03-11_17-50-39-p21-pwa-1-l5-asset-scan-refresh.csv` + `issues/2026-03-12_04-32-13-p21-pwa-2-l5-offline-deeplink-refresh.csv` + `issues/2026-03-12_16-58-44-p22-prod-1-l5-production-hardening.csv` + `issues/2026-03-13_10-30-00-r11-contract-reconciliation-and-spec-refresh.csv` + `issues/2026-04-26_r70-manual-trialrun.csv` + `issues/2026-04-29_08-39-22-r76-external-trialrun-closeout.csv` + `issues/2026-04-29_09-19-07-r77-ocr-pdf-first.csv` + `issues/2026-04-29_10-14-27-r78-reimbursement-payment-tail.csv` + `issues/2026-05-04_13-11-16-r79-governance-live-readiness.csv` + `artifacts/r75/coverage-matrix.csv`(执行合同与覆盖证据) -## R70-R79 试运行与外部环境补充(2026-04-28 至 2026-05-04) +## R70-R90 试运行与外部环境补充(2026-04-28 至 2026-05-05) - **本地核心链路**:员工/经理/管理员的本地 trialrun 主链路已在 R70/R71 通过;R73-R78 进一步补齐了真实 PDF OCR、深层业务辅助回归和财务支付尾链 focused regression。 - **当前公网部署基线**:`oa.hyinda.com` 已接到 `caddy -> 127.0.0.1:3000`,远端目录为 `/opt/hyb-oa-trialrun`,部署由本地 `rsync` 驱动,远端不是 git 工作树。 -- **当前外部阻塞**:截至 2026-05-04,公网 `.env` 仍为 `WECOM_ENABLED=false`、`WECOM_ENTRY_ENABLED=false`、`WECOM_OAUTH_ENABLED=false`、`OCR_PROVIDER=mock`;同时远端 `feature_flags` 中 `announcements_v1`、`global_search_v1`、`wecom_entry_v1` 为 `force_off`,导致 runtime smoke 未通过。 +- **当前企微状态**:R80 已启用公网 `WECOM_ENABLED / WECOM_ENTRY_ENABLED / WECOM_OAUTH_ENABLED`,`wecom_entry_v1` 已由 `force_off` 调整为 `inherit`;R82-R88 已收口真实企微 UserId 兼容、首次绑定、会话提示与设备指纹,用户手机企业微信已验证可进入系统。 +- **当前移动状态**:R89 已在本地完成登录极简化、移动默认 `/mobile`、底部导航、移动审批、票据上传与小屏菜单抽屉自动化;公网仍需部署最新 R89/R90 后再做一次真实企业微信移动落点复核。 +- **当前剩余外部事项**:公网 live smoke、独立 smoke 账号核对、备份恢复演练、HTTPS cookie 行为与多用户并发证据仍需按 R90/R91 收口;历史 R79 中 “WECOM=false / wecom_entry_v1=force_off” 只作为过期诊断记录,不再代表当前状态。 - **阅读方式**:本文件的主表仍保留历史主线;与 trialrun、覆盖率、外部环境有关的现状判断,应结合 `artifacts/r75/coverage-matrix.csv` 与 `artifacts/r70/manual-trialrun-report.md` 一起看。 ## R12 增量能力(2026-03-21) diff --git a/issues/2026-05-05_20-01-18-r90-r91-trialrun-closeout.csv b/issues/2026-05-05_20-01-18-r90-r91-trialrun-closeout.csv new file mode 100644 index 00000000..6abc5b1e --- /dev/null +++ b/issues/2026-05-05_20-01-18-r90-r91-trialrun-closeout.csv @@ -0,0 +1,7 @@ +"ID","Title","Description","Acceptance","Test_Method","Tools","Dev_Status","Review1_Status","Regression_Status","Files","Dependencies","Notes" +"A1","R90/R91 执行合同冻结","建立本轮试运行收口执行合同,范围限定为事实源刷新、公网部署/企微移动闭环、测试账号核对与自动化回归,不新增横向业务模块。","Issue CSV 字段完整且通过校验;后续实施均能回写到本合同。","命令:`python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-05_20-01-18-r90-r91-trialrun-closeout.csv`。业务:确认本轮不把 ERP、复杂财务、高级考勤、采购差旅扩展纳入试运行主线。","manual","DONE","DONE","DONE","issues/2026-05-05_20-01-18-r90-r91-trialrun-closeout.csv","[]","2026-05-05:CSV 已创建并通过 validate_issues_csv;回滚路径:删除本轮新增 CSV;不影响业务代码。" +"A2","治理事实源刷新","刷新当前权威事实源,修正 R80-R89 后文档中关于企微、移动入口、feature flag、试运行状态的过期描述,并保留旧 CSV superseded 处理原则。","`docs/feature-matrix.md`、`docs/admin-handbook.md`、`deploy/trialrun/checklist.md`、`artifacts/r70/manual-trialrun-checklist.md` 与 R89/R80-R86 当前结论一致;旧 Issue 残留不再被误判为当前待办。","命令:`rg -n 'returnTo=%2Fportal|WECOM_ENABLED=false|WECOM_ENTRY_ENABLED=false|blocked_external' docs/admin-handbook.md deploy/trialrun/checklist.md docs/feature-matrix.md artifacts/r70/manual-trialrun-checklist.md artifacts/r75/coverage-matrix.csv || true`。业务:管理员按文档配置企微入口时默认手机进入 `/mobile`,且能理解哪些历史 TODO 已由后续 R77-R89 替代。","manual|rg","DONE","DONE","DONE","docs/feature-matrix.md|docs/admin-handbook.md|deploy/trialrun/checklist.md|artifacts/r70/manual-trialrun-checklist.md|artifacts/r70/manual-trialrun-report.md|artifacts/r75/coverage-matrix.csv|issues/README.md","[""A1""]","2026-05-05:事实源已刷新;旧 R79 企微关闭诊断已标为历史,不批量伪造旧 CSV 状态;回滚路径:恢复文档变更。" +"A3","公网部署与测试账号核对","核对 `https://oa.hyinda.com` 当前部署版本、运行时配置、已有测试账号/smoke 账号是否可用于 live smoke,必要时只做配置级修正,不写入密钥到仓库。","公网 `/ready` 正常;远端版本与本地最新提交差异明确;至少确认一组可自动化 smoke 的测试账号存在或记录缺口;敏感值不进入 git。","命令:`curl -fsS https://oa.hyinda.com/ready`;SSH 只读核对远端部署目录、容器状态和测试账号清单。业务:用测试账号登录后能进入 Portal 或 mobile 工作台。","ssh|curl|manual","TODO","TODO","TODO","external|deploy/trialrun/checklist.md","[""A2""]","回滚路径:如做配置修正,先备份远端 `.env` 或 DB flag;不提交任何 secret。" +"A4","真实企微移动闭环与自动化辅助","把公网企业微信入口按移动优先口径收口,并用 Playwright/curl 压榨自动化验证;真实企业微信客户端只保留必须由用户点击的一次确认。","企微配置接口 ready;OAuth login 302 正确;移动 UA/小屏访问默认落到 `/mobile`;已记录真机企业微信验证结果或明确唯一剩余人工动作。","命令:`curl -I 'https://oa.hyinda.com/api/auth/wecom/login?returnTo=%2Fmobile'`;Playwright 用移动视口验证登录页 CTA 与 `/mobile` 导航。业务:手机企业微信工作台进入 OA 后已绑定用户不再停留在登录页。","playwright|curl|manual","DOING","TODO","TODO","server/src/routes/wecomAuth.js|server/tests/unit/routes/wecomAuth.test.js|client/src/api/auth.ts|client/tests/e2e/r89-mobile-login-navigation.spec.ts|external|artifacts/r70/manual-trialrun-report.md","[""A3""]","涉及真实企微容器时需要用户手机确认;回滚路径:企业微信后台入口改回上一 URL 或关闭 wecom_entry_v1。" +"A5","发布门禁与备份恢复准备","执行可用的本地/公网门禁,补齐备份恢复演练的当前状态,区分已自动化完成、可远端执行和仍需人工确认的部分。","本地 typecheck/build 或相关 release gate 通过;公网 live smoke 结果清晰;DB/storage 备份恢复状态有记录,未完成项有可操作步骤。","命令:`cd client && npm run typecheck && npm run build`;可用时执行 `bash scripts/qa/run-web-gates.sh smoke-live`。业务:发布前知道是否可以回滚到上个版本,且 smoke 不使用真实业务账号。","bash|playwright|manual","TODO","TODO","TODO","client|server|deploy/trialrun/checklist.md|artifacts/r70/manual-trialrun-report.md","[""A4""]","若运行全量回归成本过高,记录原因并保留最小门禁;回滚路径:不改变业务数据。" +"A6","状态回填与中文分批提交","按完成情况回填本轮 CSV,分批中文 commit,并汇报后续必须人工配合的精确操作。","A1-A5 状态与实测一致;git 工作区干净或仅剩明确忽略/不提交产物;commit message 使用中文并引用 R90/R91 Issue ID。","命令:`git status --short`;`git log --oneline -3`。业务:用户能按报告继续完成手机企微或备份恢复等人工步骤。","git|manual","TODO","TODO","TODO","issues/2026-05-05_20-01-18-r90-r91-trialrun-closeout.csv|N/A","[""A5""]","按用户要求中文分批提交;若有外部环境未闭环,不伪造 DONE。" diff --git a/issues/README.md b/issues/README.md index 2abc9d59..7c44e622 100644 --- a/issues/README.md +++ b/issues/README.md @@ -45,9 +45,9 @@ - UTF-8 编码。 ## 权威读取顺序 -- **当前执行合同**:优先查看时间最新且已批准的 `issues/*.csv`;当前治理收口入口为 [2026-05-04_13-11-16-r79-governance-live-readiness.csv](/home/shunli/Projects/hyb-oa/issues/2026-05-04_13-11-16-r79-governance-live-readiness.csv:1)。 +- **当前执行合同**:优先查看时间最新且已批准的 `issues/*.csv`;当前治理收口入口为 [2026-05-05_20-01-18-r90-r91-trialrun-closeout.csv](/home/shunli/Projects/hyb-oa/issues/2026-05-05_20-01-18-r90-r91-trialrun-closeout.csv:1)。 - **历史蓝图链**:P5 相关只把 [2026-02-09_13-39-02-p5-blueprint-v3.csv](/home/shunli/Projects/hyb-oa/issues/2026-02-09_13-39-02-p5-blueprint-v3.csv:1) 视为权威完成态;[2026-02-09_11-17-07-p5-blueprint.csv](/home/shunli/Projects/hyb-oa/issues/2026-02-09_11-17-07-p5-blueprint.csv:1) 和 [2026-02-09_12-34-42-p5-blueprint-v2.csv](/home/shunli/Projects/hyb-oa/issues/2026-02-09_12-34-42-p5-blueprint-v2.csv:1) 保留为历史快照,不再单独作为当前待办来源。 -- **试运行链**:本地/外部试运行相关优先串读 `R70 -> R71 -> R73 -> R74 -> R75 -> R76 -> R77 -> R78 -> R79`,不要只看单一 CSV 判断系统状态。 +- **试运行链**:本地/外部试运行相关优先串读 `R70 -> R71 -> R73 -> R74 -> R75 -> R76 -> R77 -> R78 -> R79 -> R80 -> R82 -> R83-R86 -> R87 -> R88 -> R89 -> R90/R91`,不要只看单一 CSV 判断系统状态。 - **跨文档事实源**:业务能力现状优先结合 [feature-matrix.md](/home/shunli/Projects/hyb-oa/docs/feature-matrix.md:1)、[coverage-matrix.csv](/home/shunli/Projects/hyb-oa/artifacts/r75/coverage-matrix.csv:1) 和 [manual-trialrun-report.md](/home/shunli/Projects/hyb-oa/artifacts/r70/manual-trialrun-report.md:1) 阅读。 ## 历史合同处理原则