文件
hyb-oa/issues/2026-05-19_13-24-12-wecom-approval-fixture-live-create-v1.csv
T

8 行
8.1 KiB
CSV

ID,Title,Description,Acceptance,Test_Method,Tools,Dev_Status,Review1_Status,Regression_Status,Files,Dependencies,Notes
WAPC2FL-0,live 创建合同建档与边界冻结,"建立 WAPC2FLIVE 企微审批 OA-POC 样件 live 创建合同;承接 WAPC2F dry-run 已通过事实,本轮只允许单次 live 创建请假/补卡测试模板和低风险测试审批单,并自动复跑 WAPC2 只读 POC。","1) CSV 校验通过;2) 固定申请人 SMOKE002、审批人 SMOKE101;3) 固定 WECOM_AGENT_SECRET,不尝试其他 Secret,不靠运行时猜 Secret;4) live 命令必须同时带 --live --create-templates --submit-test-approvals 且单次进程设置 WECOM_APPROVAL_FIXTURE_WRITE=1;5) 禁止自审,必须明确不是同一 OA 员工且不是同一企微 userid;6) 报告不输出手机号、邮箱、完整 sp_no、完整 userid、token、secret、完整 template_id 或原始 payload;7) 测试模板和测试审批记录保留审计;8) 不改正式模板、不接真实回调、不进 wecom_attendance_approval_mirror_v1。","受影响流程:WAPC2F dry-run -> 单次 live 创建 OA-POC 样件 -> WAPC2 只读自动复跑;验证步骤:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-19_13-24-12-wecom-approval-fixture-live-create-v1.csv;node scripts/qa/check-process-contract.mjs --issue issues/2026-05-19_13-24-12-wecom-approval-fixture-live-create-v1.csv --profile wecom-approval-fixture --json。",python3|node,DONE,DONE,DONE,issues/2026-05-19_13-24-12-wecom-approval-fixture-live-create-v1.csv,[],WAPC2F dry-run 已提交 5b47755;用户已批准 live 创建并选择保留审计;回滚/清理口径为保留 OA-POC 测试模板和审批记录作为审计证据,不自动删除。
WAPC2FL-1,本地门禁与远端 dry-run 复核,"执行 live 前复核本地代码与流程门禁,并在远端容器先 dry-run,确保当前公网仍为 PASS_FIXTURE_DRY_RUN_READY。","1) WPROC2 baseline gate 通过;2) WAPC2FL profile gate 通过;3) node --check、prisma validate、focused vitest 通过;4) 远端 dry-run 仍为 PASS_FIXTURE_DRY_RUN_READY;5) 若 dry-run 为 PARTIAL 或 SKIP,停止 live 并记录真实原因。","受影响流程:live 写入准入前置;验证步骤:node scripts/qa/check-process-contract.mjs --baseline --json;cd server && node --check src/scripts/check-wecom-approval-fixtures.js;cd server && node --check src/services/integrations/wecomApproval.js;cd server && npm run prisma:validate;cd server && npx vitest run tests/unit/scripts/check-wecom-approval-fixtures.test.js tests/unit/scripts/check-wecom-approval-poc.test.js --reporter=verbose;远端 npm run check:wecom-approval-fixtures -- --format=json。",node|npm|vitest|ssh,DONE,DONE,DONE,server/src/scripts/check-wecom-approval-fixtures.js|server/src/services/integrations/wecomApproval.js,"[""WAPC2FL-0""]",本地门禁通过;已 SYNC_ENV=0 部署;远端 dry-run `/app/artifacts/qa-flow/wecom-approval-fixtures-20260519T053335Z/summary.json` 为 `PASS_FIXTURE_DRY_RUN_READY`;清理/回滚口径:dry-run 不写企微数据,无需清理。
WAPC2FL-2,单次 live 创建 OA-POC 样件,"在远端容器内仅单次进程设置 WECOM_APPROVAL_FIXTURE_WRITE=1,执行 check-wecom-approval-fixtures live 路径,创建 OA-POC 请假/补卡测试模板和低风险测试审批单。","1) 命令仅执行一次;2) live 写入状态为 PASS_FIXTURE_CREATED 或真实 BLOCKED/PARTIAL;3) 若企微返回权限、可信 IP、可见范围、模板能力或参数错误,记录 SKIP/BLOCKED_BY_EXTERNAL_CONFIG;4) 不换 Secret、不换审批人、不修改正式模板;5) 报告只保留脱敏 template_id/sp_no 前缀。","受影响流程:企微审批测试模板创建和测试审批申请提交;验证步骤:远端 WECOM_APPROVAL_FIXTURE_WRITE=1 npm run check:wecom-approval-fixtures -- --format=json --live --create-templates --submit-test-approvals;核对 status、checks.liveWrite、createdTemplatePrefixes、submittedApprovalPrefixes、mainBlockers 和 privacy。",ssh|npm,DONE,DONE,DONE,external,"[""WAPC2FL-1""]",首次 live 写入 API 因旧 `create_template` payload 返回 `301086 zh_CN text empty`,未创建模板或审批单;修正为官方 `template_name` + `property` controls 结构并部署后执行有效 live,报告 `/app/artifacts/qa-flow/wecom-approval-fixtures-20260519T053400Z/summary.json` 为 `PASS_FIXTURE_CREATED`;企微后台留下 OA-POC 请假/补卡测试模板和测试审批记录,按用户选择保留审计,不自动删除。
WAPC2FL-3,WAPC2 自动复跑核验,"live 样件生成后由 runner 自动传入生成的模板 ID 和 sp_no,复用 WAPC2 只读 POC 验证 gettemplatedetail/getapprovaldetail 链路。","1) checks.autoRerun.status=OK;2) auto rerun conclusion 为 PASS_APPROVAL_POC;3) 若只生成部分样件,记录 PARTIAL_APPROVAL_POC_NEEDS_CONFIG;4) 若企微只读 API 阻断,记录 SKIP/BLOCKED_BY_EXTERNAL_CONFIG;5) 不输出完整模板 ID 或 sp_no。","受影响流程:OA-POC 样件创建 -> 模板详情读取 -> 审批详情读取 -> 只读证据闭环;验证步骤:检查 live 报告 checks.autoRerun.status、checks.autoRerun.conclusion、templateIdPrefixes、spNoPrefixes;必要时远端执行 npm run check:wecom-approval-poc -- --live --format=json 并仅传入脱敏外的内部生成参数。",ssh|npm,DONE,DONE,DONE,external,"[""WAPC2FL-2""]",live 报告 `checks.autoRerun.status=OK`、`conclusion=PASS_APPROVAL_POC`、targetCount=2;报告仅保存脱敏 template_id/sp_no 前缀,不把完整 ID 写入文档、Issue 或聊天;清理/回滚口径:只读复跑不写数据,已创建 OA-POC 样件保留审计。
WAPC2FL-4,事实源回写与证据登记,"按 live 实际结果回写试运行报告、路线图、API 能力目录、文档索引、事实源矩阵和必要的项目 skill。","1) 文档记录 live 创建结果、报告路径和保留审计策略;2) 明确本轮只创建 OA-POC 测试样件,不代表真实回调、补偿拉取、镜像数据模型或深度镜像已完成;3) 不保存完整 template_id、sp_no、userid、token、secret、表单值、附件、评论或原始 payload。","受影响流程:WAPC2FLIVE 证据入库和后续路线判断;验证步骤: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;rg -n 'WAPC2FLIVE|PASS_FIXTURE_CREATED|PASS_APPROVAL_POC|WECOM_APPROVAL_FIXTURE_WRITE|保留审计|WCBK1|wecom_attendance_approval_mirror_v1' docs .agents/skills/hyb-oa-delivery/SKILL.md。",node|python3|rg,DONE,DONE,DONE,docs/trialrun/人工试运行报告.md|docs/企微优先开发路线图.md|docs/企微API能力目录.md|docs/文档索引.md|docs/文档事实源状态矩阵.md|.agents/skills/hyb-oa-delivery/SKILL.md,"[""WAPC2FL-3""]",事实源已按 `PASS_FIXTURE_CREATED` 和 `PASS_APPROVAL_POC` 回写;`audit-docs` errors=0 warnings=1(既有未登记文件警告),skill 校验通过;文档明确本轮不代表真实回调、补偿拉取、镜像模型或深度镜像完成。
WAPC2FL-5,状态回填、最终门禁与中文提交,"按实际结果回填 WAPC2FLIVE 状态,运行最终门禁并中文提交;最终用问答方式决定是否进入 WCBK1 回调只读 POC。","1) Issue 状态按实际通过项回填;2) git diff --check 通过;3) 必要本地/文档门禁通过;4) 中文提交为 WAPC2FLIVE 创建企微审批 POC 样件;5) 最终说明包含当前状态、改了什么、测试了什么、结果是什么、企微后台留下什么记录和下一步问答。","受影响流程:WAPC2FLIVE 交付闭环;验证步骤:git diff --check;bash scripts/check-minimal.sh;git status --short;git log --oneline -1;最终问答说明是否进入 WCBK1 回调只读 POC。",git|bash,DONE,DONE,DONE,issues/2026-05-19_13-24-12-wecom-approval-fixture-live-create-v1.csv|N/A,"[""WAPC2FL-4""]",最终门禁已通过:`git diff --check`、`bash scripts/check-minimal.sh`;提交后复核 git status/log。不直接进入 WCBK1、WACP3、WADM1 或 wecom_attendance_approval_mirror_v1;后续仍需单独合同和问答确认;live 后清理/回滚口径为保留 OA-POC 测试模板和测试审批记录作为审计,不自动删除。