WEXT1F 回填正式模板远端取证结果
这个提交包含在:
@@ -23,7 +23,7 @@ Read only what is relevant:
|
||||
- WROUTE2 locks the post-WFULLSMOKE1 route: first close out test-account evidence, then ask for WREMOTE1/WFULLSMOKE2 remote closeout and WEXT1-FORMAL formal-template outing+overtime manual test, then ask WREAL1 with exactly 1 real employee + 1 approver/admin observer, then prioritize `wecom_attendance_approval_mirror_v1` minimum complete mirror. WTCLOSE1 adds the small-team execution rule: because the company has fewer than 10 people, WAPPR1 targets option A for leave/missed-punch/outing/overtime; formal HR/attendance approvals use one direct manager or configured approval role with admin fallback/blocking when the approver chain is missing, unavailable, invisible, unbound, or self-approval. WRULE1 enforces this as an OA-side validator over archived WeCom approval details; `PASS_RULE_MATCH` or explainable `PASS_WITH_ADMIN_FALLBACK` can support test-account closeout, while `FAIL_APPLICANT_CAN_CHOOSE`, `FAIL_SELF_APPROVAL`, `FAIL_APPROVER_MISMATCH`, missing manual gates, or external config blockers stop WEXT1-FORMAL/WREAL1. WTCLOSE1 only authorizes WAUTO1/WFULLSMOKE1 aggregation and WEXT1LD dry-run; WTCLOSE2 only performs final test-account evidence closeout. Neither authorizes WeCom writes, real employees, outing/overtime fixture creation, emergency mode, writeback, or RuleOps.
|
||||
- WAPPR1 2026-05-21 manual gate result: the user set the test employee's direct manager to the test supervisor and confirmed on a real device that leave, missed punch, outing, and overtime all auto-fill the test supervisor and the applicant cannot delete/change/add approvers. Treat all four templates as A / `PASS_APPROVER_RULES_READY`, but still require WRULE1 actual-chain validation, WROAD2-BIZ1 business evidence, WTCLOSE2 final test-account closeout, and explicit WEXT1-FORMAL/WREAL1 question gates before any WeCom write or real-employee trial.
|
||||
- WTCLOSE2/WTCLOSE2F adds `scripts/qa/run-wecom-test-account-final-closeout.sh` as the final automatic test-account closeout before WEXT1-FORMAL. Enterprise WeChat API checks must run from the deployment server trusted IP, so use `bash scripts/qa/run-wecom-test-account-final-closeout.sh --remote`; local direct execution is blocked by default and may only be used for syntax/static gates. The remote run reruns `/ready`, WAUTO1, WFULLSMOKE1 with `WFULLSMOKE_ALLOW_PUBLIC_WRITES=0`, outing/overtime dry-run without live flags, and WRULE1 with `--manual-gate=all:A`; it must not set WeCom write switches, create templates/approvals, enable real employees, or treat WAPPR1=A as live approval. Do not treat previous local missing-env/DB WTCLOSE2 output as a WeCom business blocker.
|
||||
- WREMOTE1/WFULLSMOKE2/WEXT1-FORMAL supersedes the earlier fixture-creation route for the next step: first deploy/sync and run WTCLOSE2 from the deployment server trusted IP, then run WFULLSMOKE2 from the deployment server with `WFULLSMOKE_ALLOW_PUBLIC_WRITES=1` when OA `TEST-SMOKE-WFULL` public test data is approved, then use existing formal WeCom outing/overtime templates by having `SMOKE002` manually submit and `SMOKE101` review details before approving. WEXT1F adds `WEXT1F_MANUAL_CONFIRMATION=SMOKE002_SUBMITTED_SMOKE101_REVIEWED bash scripts/qa/run-wecom-formal-outing-overtime-evidence.sh --remote` for the post-manual evidence run: it explicitly pulls `--target=outing --target=overtime` with `--filter-creator-employee-no=SMOKE002`, may persist only to OA archive via `WECOM_ARCHIVE_WRITE=1` + `--persist-to-db`, and then runs archive offline read + WRULE1. Missing manual confirmation must produce `PAUSED_MANUAL_CONFIRMATION` and no WeCom API calls. Do not auto-create outing/overtime OA-POC templates, auto-submit approvals, write WeCom, broadly pull formal-template records from other employees, or run WeCom API evidence locally in this route. WREAL1 uses `/tmp/hyb-oa-wreal1.env` for real employee/approver values and must not write real employee identifiers to repo docs, Issue CSV, or chat.
|
||||
- WREMOTE1/WFULLSMOKE2/WEXT1-FORMAL supersedes the earlier fixture-creation route for the next step: first deploy/sync and run WTCLOSE2 from the deployment server trusted IP, then run WFULLSMOKE2 from the deployment server with `WFULLSMOKE_ALLOW_PUBLIC_WRITES=1` when OA `TEST-SMOKE-WFULL` public test data is approved, then use existing formal WeCom outing/overtime templates by having `SMOKE002` manually submit and `SMOKE101` review details before approving. WEXT1F adds `WEXT1F_MANUAL_CONFIRMATION=SMOKE002_SUBMITTED_SMOKE101_REVIEWED bash scripts/qa/run-wecom-formal-outing-overtime-evidence.sh --remote` for the post-manual evidence run: it explicitly pulls `--target=outing --target=overtime` with `--filter-creator-employee-no=SMOKE002`, may persist only to OA archive via `WECOM_ARCHIVE_WRITE=1` + `--persist-to-db`, and then runs archive offline read + WRULE1. Missing manual confirmation must produce `PAUSED_MANUAL_CONFIRMATION` and no WeCom API calls. Public WEXT1F report `/app/artifacts/qa-flow/wecom-formal-outing-overtime-evidence-20260522-091957/summary.json` is `PASS_WITH_FINDINGS`: outing/overtime read/archive/rule validation work and privacy smoke passes, overtime is approved, but outing remains pending, so do not auto-start WREAL1 until the finding is confirmed or handled. Do not auto-create outing/overtime OA-POC templates, auto-submit approvals, write WeCom, broadly pull formal-template records from other employees, or run WeCom API evidence locally in this route. WREAL1 uses `/tmp/hyb-oa-wreal1.env` for real employee/approver values and must not write real employee identifiers to repo docs, Issue CSV, or chat.
|
||||
- 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`; final WREAD1 manual report `/app/artifacts/qa-flow/wecom-approval-readability-gate-20260519T133628Z/summary.json` is `PASS_READABLE`. This clears leave/missed-punch readability only; mirror data model, minimum archive, emergency mode, writeback, RuleOps, and outing/overtime sample decisions remain later gates.
|
||||
- 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. WARCH1 now supplies the minimum leave/missed-punch archive implementation, WARCH2 supplies the formal read-only history query surface, and WROAD2 supplies controlled ops daily checks. Do not start deep mirror until WROAD2-CLOSEOUT, WROAD2-BIZ1, WAPPR1, WRULE1, WAUTO1/WEXT1LD, WFULLSMOKE1, WTCLOSE2, WEXT1-FORMAL, WREAL1 question gates or explicit approval, and the mirror stage's own contract are complete.
|
||||
- For reimbursement, invoice, OCR, duplicate invoice, or attachment work, read `docs/报销发票附件规则.md` and `references/reimbursement.md`.
|
||||
|
||||
+3
-2
@@ -588,9 +588,10 @@ Go 结论边界:
|
||||
| --- | --- | --- |
|
||||
| 执行合同 | 已建档 | 新增 `issues/2026-05-22_14-23-19-wecom-formal-outing-overtime-evidence-v1.csv`,ID 为 `WEXT1F-0..WEXT1F-7`。 |
|
||||
| 只读证据脚本 | 已新增 | 新增 `scripts/qa/run-wecom-formal-outing-overtime-evidence.sh`,真实业务运行必须使用 `--remote` 从部署服务器 server 容器执行;本地直接执行默认拒绝,即使伪造远端环境变量也会因非 `/app` 容器路径拒绝。 |
|
||||
| 人工前置 | 待执行 | `SMOKE002` 需在企业微信正式外出和加班模板提交低风险测试单,并确认审批人自动带出测试主管且不能改人;`SMOKE101` 需先打开详情页再同意或驳回。 |
|
||||
| 系统校验 | 待人工后远端执行 | 脚本必须带 `WEXT1F_MANUAL_CONFIRMATION=SMOKE002_SUBMITTED_SMOKE101_REVIEWED`,否则只输出 `PAUSED_MANUAL_CONFIRMATION`,不跑企微 API;正式拉取显式使用 `--target=outing --target=overtime` 和 `--filter-creator-employee-no=SMOKE002`,只收 `SMOKE002` 相关单据,在 `WECOM_ARCHIVE_WRITE=1` + `--persist-to-db` 双开关下写 OA 自建留存,然后执行外出/加班离线归档读取、WRULE1 审批链校验和隐私扫描。 |
|
||||
| 人工前置 | 已确认 | 用户确认 `SMOKE002` 已在企业微信正式外出和加班模板提交低风险测试单,审批人不可编辑;`SMOKE101` 已先看详情再处理。 |
|
||||
| 系统校验 | `PASS_WITH_FINDINGS` | 远端报告 `/app/artifacts/qa-flow/wecom-formal-outing-overtime-evidence-20260522-091957/summary.json`:`/ready` 通过,外出/加班补偿拉取和 OA 归档成功,离线归档可读,WRULE1 为 `PASS_RULE_MATCH`,隐私扫描通过。finding:加班已通过;外出仍显示 `审批中`;加班存在 callback duplicate observation,历史 callback window finding 仍为观察项。 |
|
||||
| 写入边界 | 已固定 | 不设置 `WECOM_APPROVAL_FIXTURE_WRITE=1`,不调用 create_template/applyevent,不创建 OA-POC 外出/加班样件,不启用真实员工;报告不得泄露完整 `sp_no`、template_id、userid、手机号、邮箱、token、Secret、EncodingAESKey、表单值、附件、评论或原始 payload。 |
|
||||
| 后续准入 | 暂不自动放行 WREAL1 | 外出终态未归档为已通过或已驳回前,不把 WEXT1F 误读为完整通过;下一步需人工确认外出单是否仍待审批,或接受 `PASS_WITH_FINDINGS` 并指定先处理 finding。 |
|
||||
|
||||
## 历史恢复
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
**WTCLOSE2/WTCLOSE2F 执行口径**:新增 `scripts/qa/run-wecom-test-account-final-closeout.sh` 汇总测试号最终证据,复跑 WAUTO1、WFULLSMOKE1、外出/加班 dry-run 和 WRULE1。由于企业微信 API 已配置可信 IP,只允许部署服务器访问,WTCLOSE2 运行证据必须来自部署服务器:本地直接执行脚本默认拒绝跑企微链路,正确命令为 `bash scripts/qa/run-wecom-test-account-final-closeout.sh --remote`,由 SSH 到部署服务器并在 server 容器中执行;本地只做合同、语法、文档和静态门禁。WFULLSMOKE1 在 WTCLOSE2 中以 `WFULLSMOKE_ALLOW_PUBLIC_WRITES=0` 运行,不新增 OA 测试业务数据;如子 runner 触发既有归档写库,只能走 WARCH3/WCHECK1 已批准的 OA 自建留存路径。脚本不写企业微信、不创建外出/加班样件、不启用真实员工。WTCLOSE2 结论只进入 WREMOTE1/WFULLSMOKE2 和 WEXT1-FORMAL 问答,不自动提交审批;此前本地缺 env/DB 造成的 WTCLOSE2 阻断不能作为企微业务阻断证据。
|
||||
**WREMOTE1/WFULLSMOKE2/WEXT1-FORMAL 执行口径**:WTCLOSE2F 后下一步先 `SYNC_ENV=0` 部署或确认远端代码同步,再从部署服务器执行 `bash scripts/qa/run-wecom-test-account-final-closeout.sh --remote`。全域 smoke 也必须从部署服务器执行:`WFULLSMOKE_ALLOW_PUBLIC_WRITES=1 bash scripts/qa/run-three-day-full-goal-smoke.sh --remote`,允许创建带 `TEST-SMOKE-WFULL` 标记的 OA 测试业务数据,不写企业微信。外出/加班不再自动创建 OA-POC 测试模板;改为使用现有正式模板,由 `SMOKE002` 真机人工提交,`SMOKE101` 先看详情再审批,系统只读补偿拉取、归档和 WRULE1 校验。WREAL1 真实员工和审批人只通过 `/tmp/hyb-oa-wreal1.env` 临时文件提供,不写入仓库文档或聊天。
|
||||
**WEXT1F 执行口径**:正式模板外出/加班证据由 `scripts/qa/run-wecom-formal-outing-overtime-evidence.sh --remote` 从部署服务器执行。该脚本只在用户完成 `SMOKE002` 人工提交、`SMOKE101` 先看详情再处理后运行;远端命令还必须带 `WEXT1F_MANUAL_CONFIRMATION=SMOKE002_SUBMITTED_SMOKE101_REVIEWED`,否则只输出 `PAUSED_MANUAL_CONFIRMATION`,不跑企微 API。它不创建模板、不自动提交审批、不写企业微信,只使用 `--target=outing --target=overtime` 的补偿拉取读取详情,并强制带 `--filter-creator-employee-no=SMOKE002`,避免按正式模板 ID 宽泛读取其他员工单据;在 `WECOM_ARCHIVE_WRITE=1` + `--persist-to-db` 双开关下写 OA 自建留存,再执行外出/加班离线归档读取和 WRULE1。报告结论限定为 `PASS_FORMAL_OUTING_OVERTIME_READY`、`PASS_WITH_FINDINGS`、`PAUSED_MANUAL_CONFIRMATION` 或 `SKIP/BLOCKED_BY_EXTERNAL_CONFIG`;未形成外出/加班正式模板归档前不得进入 WREAL1。
|
||||
**WEXT1F 远端结果**:2026-05-22 远端报告 `/app/artifacts/qa-flow/wecom-formal-outing-overtime-evidence-20260522-091957/summary.json` 为 `PASS_WITH_FINDINGS`。外出/加班正式模板补偿拉取、OA 归档、离线读取和 WRULE1 审批链校验均可用,隐私扫描通过;加班已通过,外出仍显示审批中。该结果不自动放行 WREAL1,需先确认外出终态或接受 finding 后再进入下一问答。
|
||||
|
||||
## 1. 路线图原则
|
||||
|
||||
|
||||
@@ -5,5 +5,5 @@
|
||||
"WEXT1F-3","新增远端正式模板证据脚本","新增 QA-only 脚本 scripts/qa/run-wecom-formal-outing-overtime-evidence.sh;本地默认拒绝业务执行,--remote 通过 SSH 到部署服务器容器运行;容器内只读拉取外出/加班、可选归档到 OA、自建留存离线读、WRULE1 校验和隐私扫描;脚本必须要求人工确认标记 WEXT1F_MANUAL_CONFIRMATION=SMOKE002_SUBMITTED_SMOKE101_REVIEWED,否则只输出 PAUSED,不跑企微 API。","1) 本地直接执行必须提示 --remote;2) 即使伪造远端环境变量,本地非 /app 容器路径也必须拒绝;3) 远端执行使用 WEXT1F_EXECUTION_MODE=remote 和 WEXT1F_REMOTE_CONTEXT=deployment-server;4) 缺人工确认标记时不跑企微 API;5) 不设置任何企微写入开关;6) 归档写 OA 只通过 WECOM_ARCHIVE_WRITE=1 + --persist-to-db;7) 输出 artifacts/qa-flow/wecom-formal-outing-overtime-evidence-<timestamp>/summary.json。","受影响流程:正式模板人工提交后 -> 远端只读收证据;验证步骤:bash -n scripts/qa/run-wecom-formal-outing-overtime-evidence.sh;bash scripts/qa/run-wecom-formal-outing-overtime-evidence.sh --help;本地直接执行返回非 0 且提示 --remote;WEXT1F_EXECUTION_MODE=remote WEXT1F_REMOTE_CONTEXT=deployment-server bash scripts/qa/run-wecom-formal-outing-overtime-evidence.sh 仍应因非 /app 容器路径拒绝。","bash|ssh|node","DONE","DONE","DONE","scripts/qa/run-wecom-formal-outing-overtime-evidence.sh","[""WEXT1F-2""]","回滚/清理:删除脚本;脚本不创建模板、不提交审批、不启用真实员工。"
|
||||
"WEXT1F-4","更新事实源和人工步骤","更新现有事实源,记录 WEXT1-FORMAL 的正式模板人工操作清单、可信 IP 边界、外出/加班证据准入和 WREAL1 后置条件;不新建独立说明文档。","1) 文档明确 SMOKE002 人工提交正式模板外出/加班;2) 文档明确 SMOKE101 先看详情再审批;3) 文档明确系统只能只读拉取、归档和校验;4) 文档明确 WREAL1 仍需另行问答。","受影响流程:管理员按文档执行 WEXT1-FORMAL;验证步骤:rg -n ""WEXT1-FORMAL|正式模板|SMOKE002|SMOKE101|run-wecom-formal-outing-overtime-evidence|WREAL1"" docs .agents/skills/hyb-oa-delivery/SKILL.md;node scripts/qa/audit-docs.mjs --check-registry;quick_validate.py .agents/skills/hyb-oa-delivery。","rg|node|python3","DONE","DONE","DONE","docs/企微优先开发路线图.md|docs/管理员手册.md|docs/trialrun/人工试运行报告.md|docs/文档索引.md|docs/文档事实源状态矩阵.md|docs/需求-统一审批中心规约.md|.agents/skills/hyb-oa-delivery/SKILL.md","[""WEXT1F-3""]","回滚/清理:恢复文档和 skill;不记录真实员工信息。"
|
||||
"WEXT1F-5","本地门禁与只读评审","执行合同校验、process gate、脚本语法、focused 单测、文档审计、skill 校验、diff 检查和最小回归;涉及审批规则和权限边界,实施后启动只读 reviewer subagent。","1) validate_issues_csv 通过;2) baseline 和 issue-specific process gate 通过;3) bash -n 通过;4) focused vitest 通过;5) docs/skill/diff/minimal gates 通过;6) reviewer 无 blocker 或 blocker 已修复。","受影响流程:脚本/规则边界 -> 独立评审 -> 部署前门禁;验证步骤:validate_issues_csv.py <csv>;node scripts/qa/check-process-contract.mjs --baseline --json;node scripts/qa/check-process-contract.mjs --issue <csv> --profile wecom --json;cd server && npm run test -- tests/unit/scripts/check-wecom-approval-compensation-poc.test.js tests/unit/scripts/check-wecom-approval-archive.test.js tests/unit/scripts/check-wecom-approval-rule-validator.test.js;bash scripts/check-minimal.sh。","python3|node|bash|subagent|git","DONE","DONE","DONE","server/src/scripts/*|scripts/qa/run-wecom-formal-outing-overtime-evidence.sh|docs/*|.agents/skills/hyb-oa-delivery/SKILL.md","[""WEXT1F-4""]","本地门禁已通过;只读 reviewer 已复核 creator 过滤、本地伪远端拒绝和人工确认门禁无 blocker;部署/人工提交/远端取证仍在 WEXT1F-6/7。"
|
||||
"WEXT1F-6","部署并等待人工提交","本地门禁通过后 SYNC_ENV=0 部署,复检 /ready;然后给出 SMOKE002/SMOKE101 真机操作步骤,等待用户确认已提交/已审批后再跑远端证据脚本。","1) SYNC_ENV=0 部署成功;2) /ready 正常;3) 不在用户人工提交前跑正式模板证据通过结论;4) 给出按账号、模板、时间、确认点排列的人工步骤。","受影响流程:部署 -> 人工正式模板外出/加班 -> 远端证据脚本;验证步骤:SYNC_ENV=0 bash deploy/trialrun/deploy.sh;curl -fsS https://oa.hyinda.com/ready;人工回复已提交/已审批。","bash|curl|manual","DONE","DONE","TODO","deploy/trialrun/*|scripts/qa/run-wecom-formal-outing-overtime-evidence.sh","[""WEXT1F-5""]","已以 SYNC_ENV=0 部署提交 234fc29;公网 /ready 返回 ok=true;下一步等待 SMOKE002/SMOKE101 真机完成正式外出/加班测试后再执行 WEXT1F-7 远端取证。"
|
||||
"WEXT1F-7","远端收证据并回填提交","用户完成正式模板外出/加班人工测试后,从部署服务器执行 WEXT1F 证据脚本,回填报告路径和真实结论,中文提交。","1) 远端 summary 结论限定 PASS_FORMAL_OUTING_OVERTIME_READY、PASS_WITH_FINDINGS、PAUSED_MANUAL_CONFIRMATION、SKIP/BLOCKED_BY_EXTERNAL_CONFIG;2) 报告包含补偿拉取、OA 归档离线读、WRULE1、隐私扫描;3) 不泄露完整 sp_no/template_id/userid/手机号/邮箱/token/Secret/EncodingAESKey/表单值/附件/评论/原始 payload;4) commit message 使用中文并引用 WEXT1F。","受影响流程:正式模板外出/加班证据 -> WREAL1 问答准入;验证步骤:bash scripts/qa/run-wecom-formal-outing-overtime-evidence.sh --remote;git status --short;git log -1 --oneline。","bash|ssh|git","TODO","TODO","TODO","issues/2026-05-22_14-23-19-wecom-formal-outing-overtime-evidence-v1.csv|server/src/scripts/*|scripts/qa/run-wecom-formal-outing-overtime-evidence.sh|docs/*|.agents/skills/hyb-oa-delivery/SKILL.md","[""WEXT1F-6""]","回滚/清理:不删除远端审计报告;若正式模板不满足 A 或实际审批链不一致,记录 blocker 并不进入 WREAL1。"
|
||||
"WEXT1F-6","部署并等待人工提交","本地门禁通过后 SYNC_ENV=0 部署,复检 /ready;然后给出 SMOKE002/SMOKE101 真机操作步骤,等待用户确认已提交/已审批后再跑远端证据脚本。","1) SYNC_ENV=0 部署成功;2) /ready 正常;3) 不在用户人工提交前跑正式模板证据通过结论;4) 给出按账号、模板、时间、确认点排列的人工步骤。","受影响流程:部署 -> 人工正式模板外出/加班 -> 远端证据脚本;验证步骤:SYNC_ENV=0 bash deploy/trialrun/deploy.sh;curl -fsS https://oa.hyinda.com/ready;人工回复已提交/已审批。","bash|curl|manual","DONE","DONE","DONE","deploy/trialrun/*|scripts/qa/run-wecom-formal-outing-overtime-evidence.sh","[""WEXT1F-5""]","已以 SYNC_ENV=0 部署提交 234fc29/608f173;公网 /ready 返回 ok=true;用户已确认 SMOKE002/SMOKE101 完成正式外出/加班人工动作。"
|
||||
"WEXT1F-7","远端收证据并回填提交","用户完成正式模板外出/加班人工测试后,从部署服务器执行 WEXT1F 证据脚本,回填报告路径和真实结论,中文提交。","1) 远端 summary 结论限定 PASS_FORMAL_OUTING_OVERTIME_READY、PASS_WITH_FINDINGS、PAUSED_MANUAL_CONFIRMATION、SKIP/BLOCKED_BY_EXTERNAL_CONFIG;2) 报告包含补偿拉取、OA 归档离线读、WRULE1、隐私扫描;3) 不泄露完整 sp_no/template_id/userid/手机号/邮箱/token/Secret/EncodingAESKey/表单值/附件/评论/原始 payload;4) commit message 使用中文并引用 WEXT1F。","受影响流程:正式模板外出/加班证据 -> WREAL1 问答准入;验证步骤:bash scripts/qa/run-wecom-formal-outing-overtime-evidence.sh --remote;git status --short;git log -1 --oneline。","bash|ssh|git","DONE","DONE","DONE","issues/2026-05-22_14-23-19-wecom-formal-outing-overtime-evidence-v1.csv|server/src/scripts/*|scripts/qa/run-wecom-formal-outing-overtime-evidence.sh|docs/*|.agents/skills/hyb-oa-delivery/SKILL.md","[""WEXT1F-6""]","远端报告 /app/artifacts/qa-flow/wecom-formal-outing-overtime-evidence-20260522-091957/summary.json 结论 PASS_WITH_FINDINGS;/ready 通过,outing/overtime 补偿拉取和 OA 归档成功,WRULE1 为 PASS_RULE_MATCH,隐私扫描通过;finding:加班已通过,外出仍显示审批中,且存在加班 callback duplicate/history window observation;不自动进入 WREAL1,需用户确认外出终态或接受 finding。"
|
||||
|
||||
|
在新工单中引用
屏蔽一个用户