R76: 回填腾讯OCR试运行收敛结论

这个提交包含在:
2026-04-29 09:00:17 +08:00
父节点 c50f5274e1
当前提交 80b1c31037
共修改 2 个文件,包含 8 行新增和 2 行删除
+2 -2
查看文件
@@ -1,7 +1,7 @@
"Domain","Tier","Routes","Primary_Roles","Env_Gates","Feature_Flags","Coverage_Status","Evidence","Validated_Flows","Gaps","Next_Action"
"认证与 Portal 导航","must_cover","/login|/portal|主/管/备导航","employee|manager|admin","APP_ORIGIN|COOKIE_SECURE|PORTAL_HOME_ENABLED|WECOM_ENTRY_ENABLED","portal_home_v1|wecom_entry_v1","done","artifacts/r69/acceptance-report.md|artifacts/r70/manual-trialrun-report.md|client/tests/e2e/login-portal-ux.spec.ts|client/tests/e2e/wecom-entry.spec.ts|client/tests/e2e/manual/r70-trialrun-assist.spec.ts","登录、Portal 首屏、员工/经理/管理员导航分组、普通浏览器与企微 WebView CTA 提示均有自动化或人工证据。","真实企微 OAuth 绑定与回跳未做端到端;HTTPS 部署态 cookie 行为未在本轮验证。","保持主链路 done;真实企微与 HTTPS 转 A5 外部专项。"
"请假与审批","must_cover","/leave-requests|/workflow/tasks","employee|manager|admin","none","leave_holiday_calendar","done","artifacts/r69/acceptance-report.md|artifacts/r70/manual-trialrun-report.md|client/tests/e2e/leave-flow.spec.ts|client/tests/e2e/workflow-quick-approve.spec.ts|client/tests/e2e/leave-team-calendar.spec.ts","请假草稿、提交、撤回、经理快捷审批、团队日历权限边界与经理部门视角已自动化并在 R70 人工复测通过。","多审批人链路、代理审批、真实并发多人协同未在 trialrun 轮次验证。","维持 done;多人协同与代理审批并入 A5 或后续专项。"
"报销、票据中心与 OCR","must_cover","/reimbursements|/reimbursements/:id|/invoice-pool","employee|manager|finance|admin","OCR_PROVIDER|TENCENT_SECRET_ID|TENCENT_SECRET_KEY","invoice_verification","partial_external_blocked","artifacts/r70/manual-trialrun-report.md|artifacts/r70/live-ocr-batch-report.md|client/tests/e2e/reimbursement-workflow-progress.spec.ts|client/tests/e2e/invoice-ocr-flow.spec.ts|client/tests/e2e/manual/live-invoice-ocr.spec.ts|client/tests/e2e/manual/live-invoice-ocr-batch.spec.ts","报销提交后审批进度、票据中心缺字段修正、上传后自动 OCR 进入可绑定、绑定后提交已自动化;R70 人工链路也通过。","批量 live 腾讯 OCR 成功识别路径未验通;当前卡在 AuthFailure.SecretIdNotFound。支付完成后的财务链路未纳入本轮小团队 trialrun。","A5 先解决有效腾讯凭证,再重跑 live batch;无需再改前端框架。"
"报销、票据中心与 OCR","must_cover","/reimbursements|/reimbursements/:id|/invoice-pool","employee|manager|finance|admin","OCR_PROVIDER|TENCENT_SECRET_ID|TENCENT_SECRET_KEY","invoice_verification","partial","artifacts/r70/manual-trialrun-report.md|artifacts/r70/live-ocr-batch-report.md|issues/2026-04-29_08-39-22-r76-external-trialrun-closeout.csv|client/tests/e2e/reimbursement-workflow-progress.spec.ts|client/tests/e2e/invoice-ocr-flow.spec.ts|client/tests/e2e/manual/live-invoice-ocr.spec.ts|client/tests/e2e/manual/live-invoice-ocr-batch.spec.ts","报销提交后审批进度、票据中心缺字段修正、上传后自动 OCR 进入可绑定、绑定后提交已自动化;R70 人工链路也通过。","R76 已确认旧项目 `.env` 中存在一组可用腾讯凭证,且对用户提供的 PDF 发票直连 `VatInvoiceOCR` 时,只要显式传 `IsPdf=true` / `PdfPageNumber=1` 就能识别成功;`.env.local` 仍是无效凭证。当前应用链路在 OCR job 中只传 `ImageBase64`,所以 live 路径稳定复现 `FailedOperation.ImageDecodeFailed`,主阻塞已从鉴权转为 PDF 参数/预处理缺失。支付完成后的财务链路未纳入本轮小团队 trialrun。","R77 优先在 server OCR 链路按 `mime_type` 传递 PDF 参数(先补 `IsPdf` / `PdfPageNumber`);若 PDF 直传仍有边角失败,再评估引入旧项目的 PDF 转图片 fallback。"
"周报与待办","must_cover","/weekly-reports|/todos","employee|manager","WEEKLY_REPORT_ENABLED|TODO_BOARD_ENABLED","weekly_report_v1|todo_board_v1","done","artifacts/r70/auto-trialrun-deep-report.md|artifacts/r70/manual-trialrun-report.md|client/tests/e2e/weekly-todo-flow.spec.ts|client/tests/e2e/manual/r70-trialrun-deep-assist.spec.ts","周报保存、生成待办、提交周报、完成待办闭环已自动化且在真实 trialrun 数据上复核通过。","经理侧未提交周报聚合与催办策略未单独验证。","维持 done;如进入管理场景增强,再补经理视角聚合。"
"公告、搜索与通知","must_cover","/announcements|/notifications|全局搜索","employee|manager|admin","ANNOUNCEMENTS_ENABLED|GLOBAL_SEARCH_ENABLED","announcements_v1|global_search_v1","done","artifacts/r70/auto-trialrun-deep-report.md|artifacts/r70/manual-trialrun-report.md|client/tests/e2e/announcements-presence.spec.ts|client/tests/e2e/global-search.spec.ts|client/tests/e2e/manual/r70-trialrun-deep-assist.spec.ts|client/tests/e2e/r75-automation-gap-fill.spec.ts","公告发布、员工可见、Portal 汇总、真实搜索命中公告并跳转,以及通知中心未读筛选、单条已读、全部已读与待办跳转均有自动化或人工证据。","无当前试运行阻断缺口;真实外发渠道投递与通知渠道配置验证另见系统治理和外部环境项。","站内通知维持 done;外发渠道留在 A5/治理专项。"
"团队状态与考勤","must_cover","/team|/attendance","employee|manager|admin","PRESENCE_BOARD_ENABLED|ATTENDANCE_ENABLED","presence_board_v1|attendance_v1","done","artifacts/r70/manual-trialrun-report.md|client/tests/e2e/announcements-presence.spec.ts|issues/2026-04-09_r59-attendance-clockin.csv|client/tests/e2e/r75-automation-gap-fill.spec.ts","团队状态更新、Portal 汇总、经理查看团队状态,以及员工今日上班/下班打卡、月视图记录、管理员团队考勤补卡最小链路均已验证。","排班、节假日豁免、跨日班次等复杂考勤规则未做专项回归,但不构成本轮 trialrun 阻断。","维持 done;复杂考勤规则按需要独立专项。"
@@ -13,4 +13,4 @@
"预算、支付批次与 AP 运营","optional","/budgets|/payment-batches|/ap-operations","finance|admin","BUDGET_PRECHECK_ENABLED|PAYMENT_BATCH_ENABLED","budget_precheck_v1|payment_batch_v1","partial","issues/2026-03-29_08-07-14-p25-lite-budget-ap.csv|issues/2026-04-06_r52-ap-operations.csv","预算预检、支付批次 maker-checker、AP 工作台四 Tab 与快捷操作有实现、review 与浏览器级 QA 证据。","不属于当前小团队 trialrun 主路径,R69-R74 没有重新执行一轮本地场景回归。","若财务域纳入试运行,再补一轮 focused regression;本轮仅保留历史验证。"
"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 已补功能开关备注保存并恢复写路径。","流程定义、通知渠道、工作区其他写操作和审计留痕写入效果仍未在当前 trialrun 做完整专项。","保留 partial_done;后续若治理域纳入试运行,再补通知渠道与流程定义写路径。"
"企微、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|artifacts/r70/live-ocr-batch-report.md","本地/只读 smoke、env contract、导航/入口提示与 local runtime gate 已就绪。","真实企微 OAuth、HTTPS cookie secure、腾讯 OCR 有效鉴权、多用户并发协同仍缺环境级成功证据。","明确归入 A5 外部依赖专项,不继续在本地 Playwright 上重复消耗时间。"
"企微、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","本地/只读 smoke、env contract、导航/入口提示与 local runtime gate 已就绪。","真实企微 OAuth、HTTPS cookie secure、多用户并发协同仍缺环境级成功证据。腾讯 OCR 鉴权已确认不是当前主阻塞点:旧项目 `.env` 中至少一组凭证可用,当前主阻塞已转为应用层未传 PDF 参数导致的 `ImageDecodeFailed`。","企微/HTTPS/并发仍按 A3/A4 外部专项推进;OCR 从“外部凭证阻塞”切换为 R77 内部修复项,修完后再回到 live trialrun。"
1 Domain Tier Routes Primary_Roles Env_Gates Feature_Flags Coverage_Status Evidence Validated_Flows Gaps Next_Action
2 认证与 Portal 导航 must_cover /login|/portal|主/管/备导航 employee|manager|admin APP_ORIGIN|COOKIE_SECURE|PORTAL_HOME_ENABLED|WECOM_ENTRY_ENABLED portal_home_v1|wecom_entry_v1 done artifacts/r69/acceptance-report.md|artifacts/r70/manual-trialrun-report.md|client/tests/e2e/login-portal-ux.spec.ts|client/tests/e2e/wecom-entry.spec.ts|client/tests/e2e/manual/r70-trialrun-assist.spec.ts 登录、Portal 首屏、员工/经理/管理员导航分组、普通浏览器与企微 WebView CTA 提示均有自动化或人工证据。 真实企微 OAuth 绑定与回跳未做端到端;HTTPS 部署态 cookie 行为未在本轮验证。 保持主链路 done;真实企微与 HTTPS 转 A5 外部专项。
3 请假与审批 must_cover /leave-requests|/workflow/tasks employee|manager|admin none leave_holiday_calendar done artifacts/r69/acceptance-report.md|artifacts/r70/manual-trialrun-report.md|client/tests/e2e/leave-flow.spec.ts|client/tests/e2e/workflow-quick-approve.spec.ts|client/tests/e2e/leave-team-calendar.spec.ts 请假草稿、提交、撤回、经理快捷审批、团队日历权限边界与经理部门视角已自动化并在 R70 人工复测通过。 多审批人链路、代理审批、真实并发多人协同未在 trialrun 轮次验证。 维持 done;多人协同与代理审批并入 A5 或后续专项。
4 报销、票据中心与 OCR must_cover /reimbursements|/reimbursements/:id|/invoice-pool employee|manager|finance|admin OCR_PROVIDER|TENCENT_SECRET_ID|TENCENT_SECRET_KEY invoice_verification partial_external_blocked partial artifacts/r70/manual-trialrun-report.md|artifacts/r70/live-ocr-batch-report.md|client/tests/e2e/reimbursement-workflow-progress.spec.ts|client/tests/e2e/invoice-ocr-flow.spec.ts|client/tests/e2e/manual/live-invoice-ocr.spec.ts|client/tests/e2e/manual/live-invoice-ocr-batch.spec.ts artifacts/r70/manual-trialrun-report.md|artifacts/r70/live-ocr-batch-report.md|issues/2026-04-29_08-39-22-r76-external-trialrun-closeout.csv|client/tests/e2e/reimbursement-workflow-progress.spec.ts|client/tests/e2e/invoice-ocr-flow.spec.ts|client/tests/e2e/manual/live-invoice-ocr.spec.ts|client/tests/e2e/manual/live-invoice-ocr-batch.spec.ts 报销提交后审批进度、票据中心缺字段修正、上传后自动 OCR 进入可绑定、绑定后提交已自动化;R70 人工链路也通过。 批量 live 腾讯 OCR 成功识别路径未验通;当前卡在 AuthFailure.SecretIdNotFound。支付完成后的财务链路未纳入本轮小团队 trialrun。 R76 已确认旧项目 `.env` 中存在一组可用腾讯凭证,且对用户提供的 PDF 发票直连 `VatInvoiceOCR` 时,只要显式传 `IsPdf=true` / `PdfPageNumber=1` 就能识别成功;`.env.local` 仍是无效凭证。当前应用链路在 OCR job 中只传 `ImageBase64`,所以 live 路径稳定复现 `FailedOperation.ImageDecodeFailed`,主阻塞已从鉴权转为 PDF 参数/预处理缺失。支付完成后的财务链路未纳入本轮小团队 trialrun。 A5 先解决有效腾讯凭证,再重跑 live batch;无需再改前端框架。 R77 优先在 server OCR 链路按 `mime_type` 传递 PDF 参数(先补 `IsPdf` / `PdfPageNumber`);若 PDF 直传仍有边角失败,再评估引入旧项目的 PDF 转图片 fallback。
5 周报与待办 must_cover /weekly-reports|/todos employee|manager WEEKLY_REPORT_ENABLED|TODO_BOARD_ENABLED weekly_report_v1|todo_board_v1 done artifacts/r70/auto-trialrun-deep-report.md|artifacts/r70/manual-trialrun-report.md|client/tests/e2e/weekly-todo-flow.spec.ts|client/tests/e2e/manual/r70-trialrun-deep-assist.spec.ts 周报保存、生成待办、提交周报、完成待办闭环已自动化且在真实 trialrun 数据上复核通过。 经理侧未提交周报聚合与催办策略未单独验证。 维持 done;如进入管理场景增强,再补经理视角聚合。
6 公告、搜索与通知 must_cover /announcements|/notifications|全局搜索 employee|manager|admin ANNOUNCEMENTS_ENABLED|GLOBAL_SEARCH_ENABLED announcements_v1|global_search_v1 done artifacts/r70/auto-trialrun-deep-report.md|artifacts/r70/manual-trialrun-report.md|client/tests/e2e/announcements-presence.spec.ts|client/tests/e2e/global-search.spec.ts|client/tests/e2e/manual/r70-trialrun-deep-assist.spec.ts|client/tests/e2e/r75-automation-gap-fill.spec.ts 公告发布、员工可见、Portal 汇总、真实搜索命中公告并跳转,以及通知中心未读筛选、单条已读、全部已读与待办跳转均有自动化或人工证据。 无当前试运行阻断缺口;真实外发渠道投递与通知渠道配置验证另见系统治理和外部环境项。 站内通知维持 done;外发渠道留在 A5/治理专项。
7 团队状态与考勤 must_cover /team|/attendance employee|manager|admin PRESENCE_BOARD_ENABLED|ATTENDANCE_ENABLED presence_board_v1|attendance_v1 done artifacts/r70/manual-trialrun-report.md|client/tests/e2e/announcements-presence.spec.ts|issues/2026-04-09_r59-attendance-clockin.csv|client/tests/e2e/r75-automation-gap-fill.spec.ts 团队状态更新、Portal 汇总、经理查看团队状态,以及员工今日上班/下班打卡、月视图记录、管理员团队考勤补卡最小链路均已验证。 排班、节假日豁免、跨日班次等复杂考勤规则未做专项回归,但不构成本轮 trialrun 阻断。 维持 done;复杂考勤规则按需要独立专项。
13 预算、支付批次与 AP 运营 optional /budgets|/payment-batches|/ap-operations finance|admin BUDGET_PRECHECK_ENABLED|PAYMENT_BATCH_ENABLED budget_precheck_v1|payment_batch_v1 partial issues/2026-03-29_08-07-14-p25-lite-budget-ap.csv|issues/2026-04-06_r52-ap-operations.csv 预算预检、支付批次 maker-checker、AP 工作台四 Tab 与快捷操作有实现、review 与浏览器级 QA 证据。 不属于当前小团队 trialrun 主路径,R69-R74 没有重新执行一轮本地场景回归。 若财务域纳入试运行,再补一轮 focused regression;本轮仅保留历史验证。
14 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。
15 系统治理、功能开关与审计 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 已补功能开关备注保存并恢复写路径。 流程定义、通知渠道、工作区其他写操作和审计留痕写入效果仍未在当前 trialrun 做完整专项。 保留 partial_done;后续若治理域纳入试运行,再补通知渠道与流程定义写路径。
16 企微、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|artifacts/r70/live-ocr-batch-report.md 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 本地/只读 smoke、env contract、导航/入口提示与 local runtime gate 已就绪。 真实企微 OAuth、HTTPS cookie secure、腾讯 OCR 有效鉴权、多用户并发协同仍缺环境级成功证据。 真实企微 OAuth、HTTPS cookie secure、多用户并发协同仍缺环境级成功证据。腾讯 OCR 鉴权已确认不是当前主阻塞点:旧项目 `.env` 中至少一组凭证可用,当前主阻塞已转为应用层未传 PDF 参数导致的 `ImageDecodeFailed`。 明确归入 A5 外部依赖专项,不继续在本地 Playwright 上重复消耗时间。 企微/HTTPS/并发仍按 A3/A4 外部专项推进;OCR 从“外部凭证阻塞”切换为 R77 内部修复项,修完后再回到 live trialrun。
@@ -0,0 +1,6 @@
"ID","Title","Description","Acceptance","Test_Method","Tools","Dev_Status","Review1_Status","Regression_Status","Files","Dependencies","Notes"
"A1","R76 外部环境契约补齐","补齐 HTTPS、COOKIE_SECURE、企业微信、腾讯 OCR 的试运行环境契约与安全注入路径,不把真实密钥写入仓库。","1) deploy 环境前置明确;2) external deps smoke 可跑;3) deploy 模式 runtime smoke 可跑。","命令:`cd server && node src/scripts/smoke-external-deps.js`;`cd server && TRIALRUN_RUNTIME_MODE=deploy node src/scripts/smoke-trialrun-runtime.js`。业务:核对 HTTPS 域名、企业微信回调、腾讯 OCR 凭证都已具备。","manual","DOING","TODO","TODO","deploy/trialrun/runbook.md|deploy/trialrun/checklist.md|server/src/scripts/smoke-external-deps.js|server/src/scripts/smoke-trialrun-runtime.js","[]","已从旧项目 `/home/shunli/shenzhou-business-suite/.env` 与 `.env.local` 提取候选腾讯配置并用运行时注入方式尝试;`smoke-external-deps.js` 已验证至少一组候选配置可跑。当前仍待真实 HTTPS/企微 deploy 契约与 `TRIALRUN_RUNTIME_MODE=deploy` 完整烟测。"
"A2","腾讯 OCR live 成功路径复测","在真实凭证和真实票样下重跑单张与批量 OCR 辅助复核,区分配置失败与识别失败。","1) 至少 1 张真实票样 OCR 成功;2) 不再出现 `SecretIdNotFound`;3) live batch 报告更新。","命令:`cd client && PLAYWRIGHT_MANUAL=1 PLAYWRIGHT_OCR_LIVE=1 PLAYWRIGHT_OCR_LIVE_BATCH=1 npx playwright test tests/e2e/manual/live-invoice-ocr-batch.spec.ts --workers=1 --reporter=list`。业务:上传真实票样,验证 OCR 成功后可绑定。","playwright|manual","DOING","TODO","TODO","client/tests/e2e/manual/live-invoice-ocr.spec.ts|client/tests/e2e/manual/live-invoice-ocr-batch.spec.ts|artifacts/r70/live-ocr-batch-report.md|external","[""A1""]","已按不写仓库的运行时注入方式逐个尝试旧项目候选腾讯配置:`.env` 这组直连腾讯 `VatInvoiceOCR` 且显式传 `IsPdf=true` / `PdfPageNumber=1` 时可成功识别用户提供的 PDF 发票;`.env.local` 仍报 `AuthFailure.SecretIdNotFound`。当前应用链路仍只传 `ImageBase64`,因此在 Playwright/live 路径上稳定复现 `FailedOperation.ImageDecodeFailed`,主阻塞已收敛到 PDF 参数/预处理缺失。"
"A3","HTTPS 与企业微信入口专项验证","在真实 HTTPS 域名下验证 COOKIE_SECURE、企业微信入口、OAuth 回调、已绑定免登与未绑定回退。","1) 已绑定用户可从企微进入 Portal;2) 未绑定用户回退登录页并有明确提示;3) HTTPS 下登录、刷新、退出正常。","业务:按 checklist 在企业微信工作台与浏览器分别验证。命令:必要时先跑 `cd client && npx playwright test tests/e2e/wecom-entry.spec.ts --reporter=list` 做入口回归。","manual|playwright","TODO","TODO","TODO","deploy/trialrun/checklist.md|deploy/trialrun/runbook.md|client/tests/e2e/wecom-entry.spec.ts|external","[""A1""]","当前阻塞:`APP_ORIGIN` 与 `WECOM_*` 未配置。"
"A4","多角色并发与权限审计专项","用员工、经理、管理员或财务做并发协同,验证审批、会话、审计留痕与拒绝访问边界。","1) 至少 1 条请假或报销并发审批链路通过;2) 至少 1 条权限拒绝边界可复现;3) 审计日志能看到对应留痕。","业务:三账号并发执行提交、审批、查询、审计。命令:结合现有 Playwright 与人工多浏览器会话执行,并记录证据。","manual|playwright","TODO","TODO","TODO","artifacts/r75/coverage-matrix.csv|artifacts/r70/manual-trialrun-report.md|client/tests/e2e/**|external","[""A1""]","本项不新增功能,只验证现有行为。"
"A5","R76 收口与 R77 拆分","回填覆盖矩阵与执行合同,给出哪些域已测完、哪些仍外部阻塞、哪些进入下一轮缺陷修复。","1) coverage matrix 与 R76 CSV 一致;2) 明确 external blocked 清单;3) 形成 R77 候选优先级。","业务:汇总 A1-A4 结果,回填状态并输出下一轮排序。","manual","DOING","TODO","TODO","issues/2026-04-29_08-39-22-r76-external-trialrun-closeout.csv|artifacts/r75/coverage-matrix.csv","[""A2"",""A3"",""A4""]","本轮已把 OCR 结论从“疑似无有效腾讯凭证”收敛为“存在一组可用旧项目凭证,但当前应用链路缺 PDF 参数/预处理”。R77 候选优先级:1) server OCR 识别 PDF;2) 复跑 live OCR;3) 再回到企微/HTTPS/并发外部专项。"
1 ID Title Description Acceptance Test_Method Tools Dev_Status Review1_Status Regression_Status Files Dependencies Notes
2 A1 R76 外部环境契约补齐 补齐 HTTPS、COOKIE_SECURE、企业微信、腾讯 OCR 的试运行环境契约与安全注入路径,不把真实密钥写入仓库。 1) deploy 环境前置明确;2) external deps smoke 可跑;3) deploy 模式 runtime smoke 可跑。 命令:`cd server && node src/scripts/smoke-external-deps.js`;`cd server && TRIALRUN_RUNTIME_MODE=deploy node src/scripts/smoke-trialrun-runtime.js`。业务:核对 HTTPS 域名、企业微信回调、腾讯 OCR 凭证都已具备。 manual DOING TODO TODO deploy/trialrun/runbook.md|deploy/trialrun/checklist.md|server/src/scripts/smoke-external-deps.js|server/src/scripts/smoke-trialrun-runtime.js [] 已从旧项目 `/home/shunli/shenzhou-business-suite/.env` 与 `.env.local` 提取候选腾讯配置并用运行时注入方式尝试;`smoke-external-deps.js` 已验证至少一组候选配置可跑。当前仍待真实 HTTPS/企微 deploy 契约与 `TRIALRUN_RUNTIME_MODE=deploy` 完整烟测。
3 A2 腾讯 OCR live 成功路径复测 在真实凭证和真实票样下重跑单张与批量 OCR 辅助复核,区分配置失败与识别失败。 1) 至少 1 张真实票样 OCR 成功;2) 不再出现 `SecretIdNotFound`;3) live batch 报告更新。 命令:`cd client && PLAYWRIGHT_MANUAL=1 PLAYWRIGHT_OCR_LIVE=1 PLAYWRIGHT_OCR_LIVE_BATCH=1 npx playwright test tests/e2e/manual/live-invoice-ocr-batch.spec.ts --workers=1 --reporter=list`。业务:上传真实票样,验证 OCR 成功后可绑定。 playwright|manual DOING TODO TODO client/tests/e2e/manual/live-invoice-ocr.spec.ts|client/tests/e2e/manual/live-invoice-ocr-batch.spec.ts|artifacts/r70/live-ocr-batch-report.md|external ["A1"] 已按不写仓库的运行时注入方式逐个尝试旧项目候选腾讯配置:`.env` 这组直连腾讯 `VatInvoiceOCR` 且显式传 `IsPdf=true` / `PdfPageNumber=1` 时可成功识别用户提供的 PDF 发票;`.env.local` 仍报 `AuthFailure.SecretIdNotFound`。当前应用链路仍只传 `ImageBase64`,因此在 Playwright/live 路径上稳定复现 `FailedOperation.ImageDecodeFailed`,主阻塞已收敛到 PDF 参数/预处理缺失。
4 A3 HTTPS 与企业微信入口专项验证 在真实 HTTPS 域名下验证 COOKIE_SECURE、企业微信入口、OAuth 回调、已绑定免登与未绑定回退。 1) 已绑定用户可从企微进入 Portal;2) 未绑定用户回退登录页并有明确提示;3) HTTPS 下登录、刷新、退出正常。 业务:按 checklist 在企业微信工作台与浏览器分别验证。命令:必要时先跑 `cd client && npx playwright test tests/e2e/wecom-entry.spec.ts --reporter=list` 做入口回归。 manual|playwright TODO TODO TODO deploy/trialrun/checklist.md|deploy/trialrun/runbook.md|client/tests/e2e/wecom-entry.spec.ts|external ["A1"] 当前阻塞:`APP_ORIGIN` 与 `WECOM_*` 未配置。
5 A4 多角色并发与权限审计专项 用员工、经理、管理员或财务做并发协同,验证审批、会话、审计留痕与拒绝访问边界。 1) 至少 1 条请假或报销并发审批链路通过;2) 至少 1 条权限拒绝边界可复现;3) 审计日志能看到对应留痕。 业务:三账号并发执行提交、审批、查询、审计。命令:结合现有 Playwright 与人工多浏览器会话执行,并记录证据。 manual|playwright TODO TODO TODO artifacts/r75/coverage-matrix.csv|artifacts/r70/manual-trialrun-report.md|client/tests/e2e/**|external ["A1"] 本项不新增功能,只验证现有行为。
6 A5 R76 收口与 R77 拆分 回填覆盖矩阵与执行合同,给出哪些域已测完、哪些仍外部阻塞、哪些进入下一轮缺陷修复。 1) coverage matrix 与 R76 CSV 一致;2) 明确 external blocked 清单;3) 形成 R77 候选优先级。 业务:汇总 A1-A4 结果,回填状态并输出下一轮排序。 manual DOING TODO TODO issues/2026-04-29_08-39-22-r76-external-trialrun-closeout.csv|artifacts/r75/coverage-matrix.csv ["A2","A3","A4"] 本轮已把 OCR 结论从“疑似无有效腾讯凭证”收敛为“存在一组可用旧项目凭证,但当前应用链路缺 PDF 参数/预处理”。R77 候选优先级:1) server OCR 识别 PDF;2) 复跑 live OCR;3) 再回到企微/HTTPS/并发外部专项。