WREAD1F 生成企微审批可读性新样例
这个提交包含在:
@@ -18,7 +18,7 @@ Read only what is relevant:
|
||||
- For HR lifecycle, employee onboarding/offboarding, Enterprise WeChat directory sync, account disablement, or Enterprise WeChat API work, read `docs/需求-企业微信基础设施规约.md`, `docs/企微API能力目录.md`, `docs/管理员手册.md`, and the latest HCLT/HRWD/WAPI/WRRA Issue CSV evidence first.
|
||||
- For any Enterprise WeChat capability, Secret, callback, approval, check-in, HR assistant, or contact-directory task, read `docs/企微API能力目录.md` before planning or coding. WAPI fixes the current Secret matrix: contacts use `WECOM_CONTACT_SECRET`; workbench/OAuth/messages/HR assistant/roster/check-in/approval use `WECOM_AGENT_SECRET`; `WECOM_CHECKIN_SECRET` is only an explicit check-in override; `WECOM_HR_ASSISTANT_SECRET` is historical compatibility and not a default. Do not write runtime code that tries multiple Secrets to guess the correct one.
|
||||
- For Enterprise WeChat-first HR/attendance runtime migration, read `docs/企微优先开发路线图.md` before planning or coding. WDRG makes the roadmap authoritative for stage order; WAPI adds the runtime-first stage before deep mirror work; WRRA states that WOUA `PASS_WITH_FINDINGS` does not clear deep mirror work; WOUA-FIX has now soft-archived the 7 OA active test accounts missing in WeCom, fixed the `T0000` seed reactivation behavior, transferred the `SMOKE201` test-manager side effects, and rerun WOUA with `oaActiveMissingInWecom=0`. WCPC has rerun the capability POC with an existing active test account and reached `GO_TO_HR_MASTER_SYNC`; WHMS/WHMSLIVE has implemented, deployed, and publicly verified `wecom_hr_master_sync_v1`, with the production flag restored to `force_off` and production real-employee batch apply not approved. WMSG1 proves real app-message delivery and Deeplink return only; WAPC1 fixes the approval configuration preparation checklist before mirror work; WAPC2 adds the leave/missed-punch approval template and low-risk `sp_no` read-only POC runner. WPROC1/WPROC2 fixed the engineering process gate; WEGOV1 is the route gate, and WACP3R has now rerun the compensation-pull POC by automatically discovering OA-POC leave/missed-punch template IDs from `SMOKE002` creator. Public report `/app/artifacts/qa-flow/wecom-approval-compensation-poc-20260519T115944Z/summary.json` is `PASS_WITH_FINDINGS`: compensation pull and detail read work, with finding that callback evidence files are not persisted across deploys. WREAD1 has now added and deployed `npm run check:wecom-approval-readability-gate`; public report `/app/artifacts/qa-flow/wecom-approval-readability-gate-20260519T125532Z/summary.json` is `PAUSED_MANUAL_CONFIRMATION`, so template-level real-device readability/misapproval confirmation, WADM1 self-owned archive/mirror model design, and WARCH1 minimum history archive still remain before `wecom_attendance_approval_mirror_v1`. WPROC2 adds the executable `process gate`: before WAPC2F or other high-risk WeCom work, run `node scripts/qa/check-process-contract.mjs --baseline` and the issue-specific profile check to enforce DoR/DoD, fixed Secret source, non-self approval, live write switches, missing-config classification, and redaction boundaries. WAPC2F has implemented and deployed `npm run check:wecom-approval-fixtures`; public dry-run reached `PASS_FIXTURE_DRY_RUN_READY` at `/app/artifacts/qa-flow/wecom-approval-fixtures-20260519T045001Z/summary.json`, but no real WeCom template or approval was created because `WECOM_APPROVAL_FIXTURE_WRITE=1` was not set. Do not start `wecom_attendance_approval_mirror_v1`, `oa_hr_emergency_mode_v1`, `wecom_recovery_writeback_v1`, or `wecom_ruleops_v1` without the next stage's own Issue CSV.
|
||||
- WAPC2FLIVE supersedes the WAPC2F dry-run gap for OA-POC samples: after user approval, the runner was corrected to the official `template_name` + `property` controls create-template payload, deployed with `SYNC_ENV=0`, and the public live report `/app/artifacts/qa-flow/wecom-approval-fixtures-20260519T053400Z/summary.json` reached `PASS_FIXTURE_CREATED`; leave/missed-punch OA-POC templates and low-risk test approvals were created and retained for audit, with WAPC2 auto-rerun `PASS_APPROVAL_POC`. WCBK1 has added and deployed read-only `GET/POST /api/wecom/approval/callback`, `wecomCallbackCrypto`, `npm run check:wecom-approval-callback-poc`, and the `wecom-callback` process gate. After remote callback config was set, public report `/app/artifacts/qa-flow/wecom-approval-callback-poc-20260519T083422Z/summary.json` reached `PASS_CALLBACK_URL_VERIFIED`; after `SMOKE101` approved an existing OA-POC missed-punch test approval, `/app/artifacts/qa-flow/wecom-approval-callback-poc-20260519T092648Z/summary.json` reached `PASS_CALLBACK_EVENT_CONFIRMED` with one redacted event. WACP3/WACP3R has added and deployed `npm run check:wecom-approval-compensation-poc`, `POST /cgi-bin/oa/getapprovalinfo` read support, and automatic template discovery by `SMOKE002` creator; WREAD1 deploy reran WACP3R at `/app/artifacts/qa-flow/wecom-approval-compensation-poc-20260519T125515Z/summary.json` and then generated `/app/artifacts/qa-flow/wecom-approval-readability-gate-20260519T125532Z/summary.json` as `PAUSED_MANUAL_CONFIRMATION`. This still does not clear template-level real-device readability, mirror data model, emergency mode, writeback, or RuleOps.
|
||||
- WAPC2FLIVE supersedes the WAPC2F dry-run gap for OA-POC samples: after user approval, the runner was corrected to the official `template_name` + `property` controls create-template payload, deployed with `SYNC_ENV=0`, and the public live report `/app/artifacts/qa-flow/wecom-approval-fixtures-20260519T053400Z/summary.json` reached `PASS_FIXTURE_CREATED`; leave/missed-punch OA-POC templates and low-risk test approvals were created and retained for audit, with WAPC2 auto-rerun `PASS_APPROVAL_POC`. WCBK1 has added and deployed read-only `GET/POST /api/wecom/approval/callback`, `wecomCallbackCrypto`, `npm run check:wecom-approval-callback-poc`, and the `wecom-callback` process gate. After remote callback config was set, public report `/app/artifacts/qa-flow/wecom-approval-callback-poc-20260519T083422Z/summary.json` reached `PASS_CALLBACK_URL_VERIFIED`; after `SMOKE101` approved an existing OA-POC missed-punch test approval, `/app/artifacts/qa-flow/wecom-approval-callback-poc-20260519T092648Z/summary.json` reached `PASS_CALLBACK_EVENT_CONFIRMED` with one redacted event. WACP3/WACP3R has added and deployed `npm run check:wecom-approval-compensation-poc`, `POST /cgi-bin/oa/getapprovalinfo` read support, and automatic template discovery by `SMOKE002` creator; WREAD1 deploy reran WACP3R at `/app/artifacts/qa-flow/wecom-approval-compensation-poc-20260519T125515Z/summary.json` and then generated `/app/artifacts/qa-flow/wecom-approval-readability-gate-20260519T125532Z/summary.json` as `PAUSED_MANUAL_CONFIRMATION`. WREAD1F then fixed duplicate OA-POC template names by adding timestamp uniqueness and created fresh leave/missed-punch approvals at `/app/artifacts/qa-flow/wecom-approval-fixtures-20260519T131958Z/summary.json`, with WREAD1 rerun `/app/artifacts/qa-flow/wecom-approval-readability-gate-20260519T132054Z/summary.json` still waiting on manual confirmation. This still does not clear template-level real-device readability, mirror data model, emergency mode, writeback, or RuleOps.
|
||||
- WEGOV1 changes the current WeCom route to "Enterprise WeChat owns mature HR/attendance flows; OA stores self-owned history, audit, entry, messages, and emergency fallback." Treat four domains explicitly: WeCom-owned domain is check-in, leave, missed punch, outing, overtime, leave balance, and HR assistant; OA-owned domain remains reimbursement, procurement, contracts, projects, payments, invoices, bank receipts, sensitive attachments, and operating audit; OA archive domain stores WeCom business history, full external keys, and necessary snapshots; OA emergency domain is manually enabled only when WeCom is unavailable. Do not assume a full isolated WeCom sandbox; use the controlled test domain `SMOKE002 -> SMOKE101`, `OA-POC` templates, low-risk approvals, synthetic tests, public live runners, and limited real-device confirmation. Do not start deep mirror until WACP3 compensation pull POC, WREAD1 template-level real-device readability/misapproval confirmation, WADM1 self-owned archive/mirror data model, and WARCH1 minimum archive implementation have their own contracts and evidence.
|
||||
- For reimbursement, invoice, OCR, duplicate invoice, or attachment work, read `docs/报销发票附件规则.md` and `references/reimbursement.md`.
|
||||
- For local/WeCom/public trial-run, OCR runtime, Caddy, or DB drift work, read `docs/试运行与自动化验证手册.md` and `references/trialrun.md`.
|
||||
|
||||
@@ -60,6 +60,7 @@ DCL7 已删除本文件中 R70-R91 的长流水历史,避免旧环境、旧开
|
||||
- 2026-05-19 WEGOV1 完成企微主办治理与 OA 自建留存路线修正:本轮只更新 Issue CSV 和事实源,不改业务代码、不部署、不写 OA/企微数据。结论固定为“企微成熟功能优先上线,OA 做自建数据留存、审计、入口、消息和应急兜底”;HR/考勤日常流程优先企微主办,报销、采购、合同、项目、付款、发票、银行回单、高敏附件和经营审计继续 OA 主办。后续顺序调整为 `WACP3 -> WREAD1 -> WADM1 -> WARCH1 -> wecom_attendance_approval_mirror_v1`,其中 WARCH1 先保证企微不可用时可查看已保存历史,再进入完整镜像增强。
|
||||
- 2026-05-19 WACP3/WACP3R 完成企微审批补偿拉取只读 POC:新增 `server/src/scripts/check-wecom-approval-compensation-poc.js` / `npm run check:wecom-approval-compensation-poc`,固定 `WECOM_AGENT_SECRET` 调用 `POST /cgi-bin/oa/getapprovalinfo`,按时间窗口和模板过滤拉审批单号,再复用 `getapprovaldetail` 拉详情并与 WCBK1 回调证据脱敏比对。初始公网报告因缺模板 ID 为 `PARTIAL_COMPENSATION_NEEDS_CONFIG`;WACP3R 改为按 `SMOKE002` creator 自动发现 OA-POC 请假/补卡模板并复跑,公网报告 `/app/artifacts/qa-flow/wecom-approval-compensation-poc-20260519T115944Z/summary.json` 为 `PASS_WITH_FINDINGS`:请假/补卡各拉到 1 条详情,finding 为回调证据文件未持久化。本轮未写 OA/企微数据,未保存完整模板 ID。
|
||||
- 2026-05-19 WREAD1 新增企微审批可读性与误审批防护门禁:新增 `server/src/scripts/check-wecom-approval-readability-gate.js` / `npm run check:wecom-approval-readability-gate`,只读汇总 OA-POC 请假/补卡证据并输出真机确认清单。本轮以 `SYNC_ENV=0` 部署,不同步本地 env;部署后先只读复跑 WACP3R 自动发现模板并生成 `/app/artifacts/qa-flow/wecom-approval-compensation-poc-20260519T125515Z/summary.json`,再执行 WREAD1,报告 `/app/artifacts/qa-flow/wecom-approval-readability-gate-20260519T125532Z/summary.json` 为 `PAUSED_MANUAL_CONFIRMATION`。本轮未新建企微模板或审批单,未写 OA/企微数据;下一步需要审批人真机分别确认请假/补卡消息卡片、列表、详情页和快捷同意/驳回误点风险。
|
||||
- 2026-05-19 WREAD1F 按用户选择重新生成新样例:复用 `check:wecom-approval-fixtures` 远端 dry-run,`SMOKE002 -> SMOKE101` 预检通过。第一次 live 因企微模板名按日期重复返回 `301086`,未创建模板或审批单;随后将 OA-POC 模板名修正为带时间戳的唯一名称,focused vitest 17 tests 通过并以 `SYNC_ENV=0` 重新部署。第二次 live 报告 `/app/artifacts/qa-flow/wecom-approval-fixtures-20260519T131958Z/summary.json` 为 `PASS_FIXTURE_CREATED`,已创建新的请假/补卡 OA-POC 测试模板和两条低风险测试审批单,自动复跑 WAPC2 为 `PASS_APPROVAL_POC`。随后只读复跑 WACP3R `/app/artifacts/qa-flow/wecom-approval-compensation-poc-20260519T132031Z/summary.json` 为 `PASS_WITH_FINDINGS`,并生成 WREAD1 报告 `/app/artifacts/qa-flow/wecom-approval-readability-gate-20260519T132054Z/summary.json`,结论仍为 `PAUSED_MANUAL_CONFIRMATION`,等待审批人真机确认。
|
||||
|
||||
## 关键证据索引
|
||||
|
||||
@@ -118,6 +119,7 @@ DCL7 已删除本文件中 R70-R91 的长流水历史,避免旧环境、旧开
|
||||
| WEGOV1 | 已完成 docs-only 路线治理:固定企微主办域、OA 主办域、OA 留存域、OA 应急域、受控测试域和自动化/人工边界;明确 WCBK1 证据不直接放行完整镜像,后续先做 WACP3/WACP3R、WREAD1、WADM1 和 WARCH1 | `issues/2026-05-19_18-17-44-wecom-governance-owned-oa-archive-route-v1.csv` |
|
||||
| WACP3/WACP3R | 已实现并公网只读复跑:新增补偿拉取 runner 和 `getapprovalinfo` 只读封装;WACP3R 不再要求人工填写模板 ID,改为按 `SMOKE002` creator 自动发现 OA-POC 请假/补卡模板并复跑。远端报告 `/app/artifacts/qa-flow/wecom-approval-compensation-poc-20260519T115944Z/summary.json` 为 `PASS_WITH_FINDINGS`:请假/补卡各拉到 1 条详情,finding 为回调证据文件未持久化,未写 OA/企微数据 | `issues/2026-05-19_19-03-06-wecom-approval-compensation-pull-poc-v1.csv`、`issues/2026-05-19_19-42-22-wecom-approval-compensation-config-rerun-v1.csv`、`/app/artifacts/qa-flow/wecom-approval-compensation-poc-20260519T115944Z/summary.json` |
|
||||
| WREAD1 | 自动门禁已部署并公网只读汇总:新增可读性 runner,部署后复跑 WACP3R 生成 fresh 脱敏证据,再执行 WREAD1 得到 `PAUSED_MANUAL_CONFIRMATION`;等待审批人真机确认请假/补卡可读性和快捷按钮误点风险 | `issues/2026-05-19_20-39-40-wecom-approval-readability-gate-v1.csv`、`/app/artifacts/qa-flow/wecom-approval-compensation-poc-20260519T125515Z/summary.json`、`/app/artifacts/qa-flow/wecom-approval-readability-gate-20260519T125532Z/summary.json` |
|
||||
| WREAD1F | 已按用户选择生成新真机样例:修正 OA-POC 模板唯一命名后,公网 live 创建新的请假/补卡测试模板和两条低风险审批单,WREAD1 复跑仍为 `PAUSED_MANUAL_CONFIRMATION`,等待手机企业微信确认 | `issues/2026-05-19_21-15-47-wecom-readability-fresh-fixture-v1.csv`、`/app/artifacts/qa-flow/wecom-approval-fixtures-20260519T131958Z/summary.json`、`/app/artifacts/qa-flow/wecom-approval-readability-gate-20260519T132054Z/summary.json` |
|
||||
|
||||
## 当前门禁
|
||||
|
||||
|
||||
@@ -86,6 +86,7 @@
|
||||
| `WEGOV1` | `issues/2026-05-19_18-17-44-wecom-governance-owned-oa-archive-route-v1.csv` | `CURRENT` | 企微主办治理与 OA 自建留存路线修正:docs-only 固定企微主办域、OA 主办域、OA 留存域、OA 应急域、受控测试域、自动化/人工边界和后续顺序;WCBK1 后仍需 WACP3、WREAD1、WADM1、WARCH1,不能直接进入深度镜像 |
|
||||
| `WACP3/WACP3R` | `issues/2026-05-19_19-03-06-wecom-approval-compensation-pull-poc-v1.csv`、`issues/2026-05-19_19-42-22-wecom-approval-compensation-config-rerun-v1.csv` | `CURRENT` | 企微审批补偿拉取 POC 已实现并公网只读复跑:新增 `check:wecom-approval-compensation-poc` 和 `getapprovalinfo` 只读封装,固定 `WECOM_AGENT_SECRET`;WACP3R 改为按 `SMOKE002` creator 自动发现 OA-POC 请假/补卡模板并复跑,远端报告 `/app/artifacts/qa-flow/wecom-approval-compensation-poc-20260519T115944Z/summary.json` 为 `PASS_WITH_FINDINGS`,请假/补卡各拉到 1 条详情,finding 为回调证据文件未持久化;未写 OA/企微数据 |
|
||||
| `WREAD1` | `issues/2026-05-19_20-39-40-wecom-approval-readability-gate-v1.csv` | `CURRENT` | 企微审批可读性与误审批防护门禁自动汇总已实现并公网只读复跑:新增 `check:wecom-approval-readability-gate`,部署后先复跑 WACP3R 生成 `/app/artifacts/qa-flow/wecom-approval-compensation-poc-20260519T125515Z/summary.json`,再生成 `/app/artifacts/qa-flow/wecom-approval-readability-gate-20260519T125532Z/summary.json`,结论 `PAUSED_MANUAL_CONFIRMATION`;等待审批人真机确认请假/补卡模板级可读性和误点风险,未写 OA/企微数据 |
|
||||
| `WREAD1F` | `issues/2026-05-19_21-15-47-wecom-readability-fresh-fixture-v1.csv` | `CURRENT` | WREAD1 新真机样例补充已完成:首次 live 因企微模板名重复被阻断且未写入;修正 OA-POC 模板名为时间戳唯一后,公网 live 报告 `/app/artifacts/qa-flow/wecom-approval-fixtures-20260519T131958Z/summary.json` 为 `PASS_FIXTURE_CREATED`,新建请假/补卡低风险审批单并复跑 WREAD1 到 `/app/artifacts/qa-flow/wecom-approval-readability-gate-20260519T132054Z/summary.json`,结论仍为 `PAUSED_MANUAL_CONFIRMATION` |
|
||||
|
||||
旧 Issue CSV 保留为历史审计证据:不删除、不批量回写、不移动到 `docs/archive/` 或其他归档目录。新连续合同如替代旧合同,只在新合同 `Notes` 或文档索引中说明 supersedes。
|
||||
|
||||
|
||||
+2
-1
@@ -20,7 +20,7 @@
|
||||
|
||||
## 最近事实源链
|
||||
|
||||
R6 -> PC6 -> PA6 -> FL6 -> AP6 -> RI6 -> LP6 -> ME6/QG6 -> DG7/MRF7 -> MIA7 -> MIF7/MIF7T(公网部署与带凭据公网复检已收口) -> DG8 -> DG9 -> R7E -> FBA -> QAOPS9/P2D -> P2-ORG -> P2-FIN-DECISION -> P2-FIN-V1 -> P2-OCR-SAMPLE -> P2Q -> P2AUTO -> P2AF -> P2-FIN-LIVE-DECISION -> P2-FIN-LIVE -> PRELAUNCH -> CASHIER-VOUCHER-V1 -> LAUNCH-DEPLOY-FINANCE -> FIN-PROD-ENABLE -> ACCOUNTING-HANDOFF-V1 -> SYSTEM-COMPLETE-GATE -> LAUNCH-OPS-V1 -> REQ-COMPLETE-AUDIT -> ATTV1 -> LAUNCH-AUTO-OPS-V1 -> AUTO-REMAINING-CLOSEOUT -> HR-WECOM-DIRECTORY-V1 -> HRWD-CONTACT-LIVE-TEST -> WCFB -> WFOC -> DBWFOC -> WFDG -> WDRG -> WCP1 -> WCPC -> WHMS -> WHMSLIVE -> WOUA -> WAPI -> WRRA -> WOUA-FIX -> WRV1 -> WRA1 -> WMSG1 -> WAPC1 -> WAPC2 -> WPROC1 -> WPROC2 -> WAPC2F dry-run -> WAPC2FLIVE -> WCBK1 -> WEGOV1 -> WACP3/WACP3R -> WREAD1 自动汇总。
|
||||
R6 -> PC6 -> PA6 -> FL6 -> AP6 -> RI6 -> LP6 -> ME6/QG6 -> DG7/MRF7 -> MIA7 -> MIF7/MIF7T(公网部署与带凭据公网复检已收口) -> DG8 -> DG9 -> R7E -> FBA -> QAOPS9/P2D -> P2-ORG -> P2-FIN-DECISION -> P2-FIN-V1 -> P2-OCR-SAMPLE -> P2Q -> P2AUTO -> P2AF -> P2-FIN-LIVE-DECISION -> P2-FIN-LIVE -> PRELAUNCH -> CASHIER-VOUCHER-V1 -> LAUNCH-DEPLOY-FINANCE -> FIN-PROD-ENABLE -> ACCOUNTING-HANDOFF-V1 -> SYSTEM-COMPLETE-GATE -> LAUNCH-OPS-V1 -> REQ-COMPLETE-AUDIT -> ATTV1 -> LAUNCH-AUTO-OPS-V1 -> AUTO-REMAINING-CLOSEOUT -> HR-WECOM-DIRECTORY-V1 -> HRWD-CONTACT-LIVE-TEST -> WCFB -> WFOC -> DBWFOC -> WFDG -> WDRG -> WCP1 -> WCPC -> WHMS -> WHMSLIVE -> WOUA -> WAPI -> WRRA -> WOUA-FIX -> WRV1 -> WRA1 -> WMSG1 -> WAPC1 -> WAPC2 -> WPROC1 -> WPROC2 -> WAPC2F dry-run -> WAPC2FLIVE -> WCBK1 -> WEGOV1 -> WACP3/WACP3R -> WREAD1 自动汇总 -> WREAD1F 新样例。
|
||||
|
||||
- R6、PC6、PA6、FL6、AP6、RI6、LP6 已完成并部署。
|
||||
- ME6 自动化、公网视觉矩阵和 `ME6-3` 代表性企业微信真机门禁已完成。
|
||||
@@ -144,6 +144,7 @@ R6 -> PC6 -> PA6 -> FL6 -> AP6 -> RI6 -> LP6 -> ME6/QG6 -> DG7/MRF7 -> MIA7 -> M
|
||||
| `WEGOV1` | `issues/2026-05-19_18-17-44-wecom-governance-owned-oa-archive-route-v1.csv` | 当前路线治理:企微主办 + OA 自建留存 | 固定 HR/考勤企微主办、财务经营和高敏业务 OA 主办、OA 留存关键企微历史、企业微信受控测试域、自动化与人工边界;后续新增 WREAD1 和 WARCH1 门禁 | docs-only;不改业务代码/API/schema/UI;不部署;不写 OA/企微数据;不进入深度镜像 |
|
||||
| `WACP3/WACP3R` | `issues/2026-05-19_19-03-06-wecom-approval-compensation-pull-poc-v1.csv`、`issues/2026-05-19_19-42-22-wecom-approval-compensation-config-rerun-v1.csv` | 当前补偿拉取 POC:runner 已部署并自动发现模板复跑 | 新增 `check:wecom-approval-compensation-poc`,固定 `WECOM_AGENT_SECRET` 只读调用 `getapprovalinfo` 和 `getapprovaldetail`;WACP3R 按 `SMOKE002` creator 自动发现 OA-POC 请假/补卡模板,远端报告为 `PASS_WITH_FINDINGS`,finding 为回调证据文件未持久化 | 不新增公开 API/schema/UI;不写 OA/企微数据;不保存完整模板 ID;不无过滤拉取高风险审批详情;不进入深度镜像 |
|
||||
| `WREAD1` | `issues/2026-05-19_20-39-40-wecom-approval-readability-gate-v1.csv` | 当前可读性门禁:自动汇总已部署,等待真机确认 | 新增 `check:wecom-approval-readability-gate`,只读汇总请假/补卡 OA-POC 证据;公网报告 `/app/artifacts/qa-flow/wecom-approval-readability-gate-20260519T125532Z/summary.json` 为 `PAUSED_MANUAL_CONFIRMATION` | 不新增公开 API/schema/UI;不写 OA/企微数据;不新建模板或审批单;未完成人工确认前不得进入 WADM1 或深度镜像 |
|
||||
| `WREAD1F` | `issues/2026-05-19_21-15-47-wecom-readability-fresh-fixture-v1.csv` | 当前真机确认补充:已生成新 OA-POC 样例 | 用户选择重新生成后,修正模板名唯一性并公网 live 创建新的请假/补卡测试模板和两条审批单;报告 `/app/artifacts/qa-flow/wecom-approval-fixtures-20260519T131958Z/summary.json` 为 `PASS_FIXTURE_CREATED`,WREAD1 复跑为 `PAUSED_MANUAL_CONFIRMATION` | 写入仅限 OA-POC 测试模板和低风险审批单;不写 OA 业务表;不进入镜像;等待用户真机反馈 |
|
||||
|
||||
旧 Issue CSV 不删除、不批量回写、不移动到归档目录。若新治理流替代旧合同,只在新 CSV 的 `Notes` 或本索引说明 supersedes,旧文件保留历史审计语义。
|
||||
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
ID,Title,Description,Acceptance,Test_Method,Tools,Dev_Status,Review1_Status,Regression_Status,Files,Dependencies,Notes
|
||||
"WREAD1F-0","新样例合同与写入边界冻结","用户选择重新生成一轮新样例;本合同只为 WREAD1 真机可读性确认创建新的 OA-POC 请假/补卡低风险样例,不进入镜像、不写 OA 业务表。","1) 明确本轮会写企微:创建 OA-POC 请假/补卡测试模板和低风险审批单;2) 仍固定 SMOKE002 -> SMOKE101,禁止自审;3) 固定 WECOM_AGENT_SECRET,不尝试其他 Secret;4) live 写入必须双确认;5) 报告不保存完整 template_id、sp_no、userid、表单值、附件、评论或原始 payload。","受影响流程:WREAD1 可读性门禁 -> 企微真机新待办样例 -> 人工确认;验证步骤:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-19_21-15-47-wecom-readability-fresh-fixture-v1.csv;node scripts/qa/check-process-contract.mjs --issue issues/2026-05-19_21-15-47-wecom-readability-fresh-fixture-v1.csv --profile wecom --json。","python3|node|manual","DONE","DONE","DONE","issues/2026-05-19_21-15-47-wecom-readability-fresh-fixture-v1.csv","[]","validate_issues_csv 与 process gate 通过。回滚/清理:本轮新建的企微 OA-POC 测试模板和审批记录默认保留审计,不自动删除;如需清理,后续由管理员在企微后台人工处理。不修改远端 env,不写 OA 业务数据。"
|
||||
"WREAD1F-1","远端 dry-run 复核","复用已部署 check:wecom-approval-fixtures runner,先远端 dry-run 复核申请人、审批人、Secret、非自审和 payload。","1) 远端 dry-run 结论为 PASS_FIXTURE_DRY_RUN_READY;2) actor precheck 为 OK;3) 未设置 WECOM_APPROVAL_FIXTURE_WRITE=1 时不写企微;4) 若 SMOKE101 不可用,不自动换人,回问。","受影响流程:新样例 live 前预检;验证步骤:ssh 远端容器执行 npm run check:wecom-approval-fixtures -- --format=json,核对 status、checks.actors.status、checks.liveWrite.guard。","ssh|npm","DONE","DONE","DONE","external|artifacts/qa-flow/wecom-approval-fixtures-*","[""WREAD1F-0""]","远端 dry-run 报告 /app/artifacts/qa-flow/wecom-approval-fixtures-20260519T131947Z/summary.json 为 PASS_FIXTURE_DRY_RUN_READY,actor precheck OK,未写企微。"
|
||||
"WREAD1F-2","单次 live 创建新样例","按用户已选择 2 执行一次 live 写入:创建 OA-POC 请假/补卡测试模板并提交两条低风险审批单给 SMOKE101。","1) 命令同时带 --live --create-templates --submit-test-approvals;2) 仅单次进程设置 WECOM_APPROVAL_FIXTURE_WRITE=1;3) live 结论为 PASS_FIXTURE_CREATED 或真实 BLOCKED;4) 只记录脱敏 template_id/sp_no 前缀;5) 不写 OA 业务表。","受影响流程:企微新待办消息 -> WREAD1 真机确认;验证步骤:远端容器执行 WECOM_APPROVAL_FIXTURE_WRITE=1 npm run check:wecom-approval-fixtures -- --format=json --live --create-templates --submit-test-approvals;核对 status、checks.liveWrite、checks.autoRerun;cd server && node --check src/scripts/check-wecom-approval-fixtures.js;cd server && npx vitest run tests/unit/scripts/check-wecom-approval-fixtures.test.js tests/unit/scripts/check-wecom-approval-readability-gate.test.js --reporter=verbose。","ssh|npm|node|vitest","DONE","DONE","DONE","server/src/scripts/check-wecom-approval-fixtures.js|server/tests/unit/scripts/check-wecom-approval-fixtures.test.js|external|artifacts/qa-flow/wecom-approval-fixtures-*","[""WREAD1F-1""]","首次 live 返回 BLOCKED_BY_EXTERNAL_CONFIG:企微模板名按日期重复,未创建模板/审批单。已修正模板命名为时间戳唯一值,本地 node --check 和 focused vitest 17 tests passed,SYNC_ENV=0 部署后 live 成功,报告 /app/artifacts/qa-flow/wecom-approval-fixtures-20260519T131958Z/summary.json 为 PASS_FIXTURE_CREATED,autoRerun 为 PASS_APPROVAL_POC。新建测试模板和测试审批记录保留审计,不自动删除。"
|
||||
"WREAD1F-3","WREAD1 自动汇总复跑","live 创建后复跑 WACP3R 只读补偿拉取和 WREAD1 可读性汇总,生成新的人工确认清单。","1) WACP3R 只读复跑可拉到请假/补卡详情;2) WREAD1 结论为 PAUSED_MANUAL_CONFIRMATION;3) 公网 /ready 正常;4) 报告不泄露隐私字段。","受影响流程:新样例证据 -> WREAD1 人工确认;验证步骤:远端 npm run check:wecom-approval-compensation-poc -- --live --format=json --discover-template-ids --start-time=2026-05-19T00:00:00+08:00;远端 npm run check:wecom-approval-readability-gate -- --format=json;curl -fsS https://oa.hyinda.com/ready。","ssh|npm|curl","DONE","DONE","DONE","external|artifacts/qa-flow/wecom-approval-compensation-poc-*|artifacts/qa-flow/wecom-approval-readability-gate-*","[""WREAD1F-2""]","/ready 返回 ok=true。WACP3R 复跑报告 /app/artifacts/qa-flow/wecom-approval-compensation-poc-20260519T132031Z/summary.json 为 PASS_WITH_FINDINGS,发现 4 条 OA-POC 详情;WREAD1 报告 /app/artifacts/qa-flow/wecom-approval-readability-gate-20260519T132054Z/summary.json 为 PAUSED_MANUAL_CONFIRMATION。回滚/清理:本行只读复跑和公网健康检查不写 OA/企微数据;新样例清理沿用 WREAD1F-2,由管理员后续在企微后台人工处理。"
|
||||
"WREAD1F-4","事实源回写、提交与问答","记录新样例 live 结果和 WREAD1 等待人工确认状态;提交后用问答方式让用户检查手机企业微信。","1) 试运行报告和必要事实源记录新报告路径;2) Issue 状态按实测回填;3) git diff --check 通过;4) 中文提交完成;5) 最终说明当前状态、改了什么、测试结果和需要人工确认什么。","受影响流程:新样例创建证据 -> 真机验收;验证步骤:node scripts/qa/audit-docs.mjs --check-registry;python3 /home/shunli/.codex/skills/.system/skill-creator/scripts/quick_validate.py .agents/skills/hyb-oa-delivery;git diff --check;git commit -m 'WREAD1F 生成企微审批可读性新样例'。","node|python3|git|manual","DONE","DONE","DONE","docs/trialrun/人工试运行报告.md|docs/文档索引.md|docs/文档事实源状态矩阵.md|.agents/skills/hyb-oa-delivery/SKILL.md","[""WREAD1F-3""]","事实源已回写新样例 live、WACP3R 复跑和 WREAD1 等待人工确认状态。validate_issues_csv、process gate、audit-docs、quick_validate、node --check、focused vitest、git diff --check 均通过;中文提交由本行变更一并完成。WADM1 仍需等 WREAD1 模板级人工结论后再开始。"
|
||||
|
@@ -139,8 +139,14 @@ function targetLabel(targetKey) {
|
||||
return APPROVAL_POC_TARGETS.find((item) => item.key === targetKey)?.label || targetKey;
|
||||
}
|
||||
|
||||
function fixtureTimestamp(generatedAt) {
|
||||
return generatedAt
|
||||
.replace(/[-:]/g, "")
|
||||
.replace(/\.\d{3}Z$/, "Z");
|
||||
}
|
||||
|
||||
function fixtureNumber(targetKey, generatedAt) {
|
||||
return `WAPC2F-${targetKey}-${generatedAt.slice(0, 10).replace(/-/g, "")}`;
|
||||
return `WAPC2F-${targetKey}-${fixtureTimestamp(generatedAt)}`;
|
||||
}
|
||||
|
||||
function fixtureControlIds() {
|
||||
@@ -175,7 +181,7 @@ function buildTemplateFixturePayload(target, generatedAt) {
|
||||
const number = fixtureNumber(target.key, generatedAt);
|
||||
const controlIds = fixtureControlIds();
|
||||
return {
|
||||
template_name: localized(`OA-POC-${label}-${generatedAt.slice(0, 10)}`),
|
||||
template_name: localized(`OA-POC-${label}-${fixtureTimestamp(generatedAt)}`),
|
||||
template_content: {
|
||||
controls: [
|
||||
buildTemplateControl("Text", controlIds.type, "类型", { require: true }),
|
||||
|
||||
@@ -131,7 +131,7 @@ describe("check-wecom-approval-fixtures", () => {
|
||||
);
|
||||
|
||||
expect(payload.template_names).toBeUndefined();
|
||||
expect(payload.template_name).toEqual([{ text: "OA-POC-请假-2026-05-19", lang: "zh_CN" }]);
|
||||
expect(payload.template_name).toEqual([{ text: "OA-POC-请假-20260519T100000Z", lang: "zh_CN" }]);
|
||||
expect(payload.template_content.controls).toHaveLength(3);
|
||||
expect(payload.template_content.controls[0]).toMatchObject({
|
||||
property: {
|
||||
|
||||
在新工单中引用
屏蔽一个用户