文件
hyb-oa/issues/2026-05-18_19-28-25-whms-deploy-live-verify-v1.csv
T

8.9 KiB

1IDTitleDescriptionAcceptanceTest_MethodToolsDev_StatusReview1_StatusRegression_StatusFilesDependenciesNotes
2WHMSLIVE-0合同建档建立 WHMS-DEPLOY-LIVE-VERIFY-V1 执行合同,锁定本轮只做 WHMS 部署、公网验证、证据和事实源回写;不做真实员工批量 apply、考勤/审批镜像、应急接管、恢复回写或 RuleOps。1) CSV 校验通过;2) 范围限定为 commit 27968fb 的 WHMS 部署与受控公网验证;3) 明确最终 wecom_hr_master_sync_v1 保持 force_off;4) 不打印 Secret、token、完整手机号、邮箱、userid 或企微原始 payload。受影响流程:WHMS 本地完成 -> 部署验证合同 -> 受控公网验证;验证步骤:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-18_19-28-25-whms-deploy-live-verify-v1.csv。python3|manualDONEDONEDONEissues/2026-05-18_19-28-25-whms-deploy-live-verify-v1.csv[]已完成合同建档;本轮部署验证中发现并修复通讯录 token 48009 fallback 和 QA runner 判定问题,未新增业务 API/schema/UI;回滚路径:删除本 CSV 或回退 WHMSLIVE 证据提交。
3WHMSLIVE-1部署前门禁复核本地基线和 WHMS 静态/构建/单测门禁,确认工作区干净且待部署提交为 27968fb。1) git log -1 显示 27968fb 或其后续等价验证提交;2) git status 无非预期脏文件;3) Prisma validate、node --check、WHMS focused vitest、QA runner syntax、client typecheck/build、git diff --check 通过。受影响流程:本地 WHMS 代码 -> 部署前质量门禁;验证步骤:cd server && npm run prisma:validate;cd server && node --check src/routes/employees.js src/services/integrations/wecomHrMaster.js;cd server && npx vitest run tests/unit/wecomHrMaster.service.test.js --reporter=verbose;node --check scripts/qa/check-wecom-hr-master-sync.mjs;cd client && npm run typecheck && npm run build;git diff --check。git|npm|node|vitestDONEDONEDONEserver/|client/|scripts/qa/check-wecom-hr-master-sync.mjs["WHMSLIVE-0"]本地门禁已通过;部署验证发现的 fallback/runner 修复已追加 focused 单测和语法检查。
4WHMSLIVE-2远端配置核对在服务器 /opt/hyb-oa-trialrun/deploy/trialrun/.env 补齐或确认 WECOM_HR_MASTER_SYNC_ENABLED=true;WECOM_HR_ASSISTANT_SECRET 缺失时允许使用已验证 WECOM_AGENT_SECRET fallback;不打印 Secret/token。1) 远端配置存在 WECOM_HR_MASTER_SYNC_ENABLED=true;2) 只输出 Secret 存在性或 MASKED,不输出明文;3) 不持久开启 DB feature flag;4) 不修改与本轮无关配置。受影响流程:远端容器环境 -> WHMS 只读/受控 apply 能力;验证步骤:ssh [email protected] 进入 /opt/hyb-oa-trialrun 后检查 env 键名和值,Secret 仅脱敏输出。ssh|manualDONEDONEDONEdeploy/trialrun/.env|external["WHMSLIVE-1"]已确认远端 WECOM_HR_MASTER_SYNC_ENABLED=true;WECOM_HR_ASSISTANT_SECRET 缺失时走已授权工作台应用 Secret fallback,未输出 Secret/token。
5WHMSLIVE-3受控部署使用现有 deploy/trialrun/deploy.sh 且 SYNC_ENV=0 部署本地当前提交到远端,应用 Prisma migration 和 seed-config。1) 部署脚本成功完成;2) 远端服务重启后健康;3) migration/seed-config 无失败;4) 本地 .env 不同步到远端。受影响流程:本地提交 -> trialrun 部署 -> 服务启动;验证步骤:SYNC_ENV=0 bash deploy/trialrun/deploy.sh 并检查脚本结果。bash|docker|prismaDONEDONEDONEdeploy/trialrun/deploy.sh|server/prisma/migrations/["WHMSLIVE-2"]已用 SYNC_ENV=0 完成受控部署并应用 migration 20260518184319_wecom_hr_master_sync_v1;部署过程中未同步本地 .env。
6WHMSLIVE-4公网基础复检部署后验证 /ready、public bundle、live smoke、feature flags 基线和 People 页面资源可加载。1) https://oa.hyinda.com/ready 返回健康;2) live smoke env/readiness 通过;3) payment_batch_v1=force_on 且 erp_sync=force_off;4) People 页面资源可加载。受影响流程:公网 OA 基础访问 -> 管理员 People 页面入口;验证步骤:curl -fsS https://oa.hyinda.com/ready;LIVE_SMOKE_BASE_URL=https://oa.hyinda.com node scripts/qa/check-live-smoke-env.mjs --strict;LIVE_SMOKE_BASE_URL=https://oa.hyinda.com bash scripts/qa/run-live-smoke-readiness.sh;LIVE_SMOKE_BASE_URL=https://oa.hyinda.com node scripts/qa/check-live-feature-flags.mjs --expect payment_batch_v1=force_on --expect erp_sync=force_off。curl|node|bashDONEDONEDONEscripts/qa/|client/dist/["WHMSLIVE-3"]/ready、live smoke、public bundle 和 feature flag 基线均通过;payment_batch_v1=force_on,erp_sync=force_off。
7WHMSLIVE-5WHMS 临时验证窗口临时开启 wecom_hr_master_sync_v1=force_on,使用既有低风险测试号 SMOKE002/测试员工做 live dry-run;apply 仅允许显式 userids 且设置 WECOM_HR_MASTER_SYNC_APPLY_APPROVED=1。1) dry-run 对 SMOKE002 生成脱敏差异报告;2) apply 仅对显式 SMOKE002 userid 执行一次;3) 同步批次、逐员工记录、审计、脱敏摘要和 People 最近同步摘要可查;4) 普通员工无法访问同步 API 或入口;5) 不执行真实员工批量 apply。受影响流程:管理员临时开启 WHMS -> live dry-run -> 显式测试号 apply -> 同步记录与权限验证;验证步骤:在验证窗口临时 force_on 后执行 scripts/qa/check-wecom-hr-master-sync.mjs,dry-run 使用 WECOM_HR_MASTER_SYNC_LIVE=1 WECOM_HR_MASTER_SYNC_JSON=1 WECOM_HR_MASTER_SYNC_USERIDS=<SMOKE002-userid>;apply 额外设置 WECOM_HR_MASTER_SYNC_APPLY_APPROVED=1;报告仅输出脱敏 userid 前缀、统计、状态和错误码。node|ssh|manualDONEDONEDONEscripts/qa/check-wecom-hr-master-sync.mjs|server/src/routes/employees.js|server/src/services/integrations/wecomHrMaster.js["WHMSLIVE-4"]公网 dry-run 和显式 userids apply 管道已验证;SMOKE002 因企微缺手机号、邮箱和部门按 missing_required_field 跳过,未写 OA 主数据;普通员工同步 API 权限负例 403;未执行真实员工批量 apply。
8WHMSLIVE-6收口状态验证完成后将 wecom_hr_master_sync_v1 恢复或保持 force_off,记录代码已部署、公网验证结果和正式批量 apply 未启用。1) 最终 feature flag 为 force_off;2) 证据记录部署和验证结果;3) 不误写为真实员工批量同步已启用;4) 若失败记录 PAUSE_FOR_FIX。受影响流程:WHMS 验证窗口关闭 -> 生产默认安全态;验证步骤:通过 live feature flag 查询或远端 DB/管理脚本确认 wecom_hr_master_sync_v1=force_off。node|ssh|manualDONEDONEDONEexternal|docs/trialrun/人工试运行报告.md["WHMSLIVE-5"]已验证最终 wecom_hr_master_sync_v1=force_off;代码已部署并公网受控验证,正式真实员工批量 apply 未启用。
9WHMSLIVE-7文档和 skill 回写更新路线图、企微规约、管理员手册、人工试运行报告、文档索引、事实源矩阵和项目 skill,反映 WHMS 部署和公网验证状态。1) 文档写明 WHMS 部署/公网验证结论和最终 force_off;2) 明确真实员工批量 apply 未启用;3) 路线图下一阶段仍需单独 Issue CSV;4) skill 不误导后续 agent 跳阶段。受影响流程:事实源 -> 后续企微优先开发节奏;验证步骤: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 'WHMSLIVE|wecom_hr_master_sync_v1|force_off|SMOKE002|企微 HR 主数据|公网验证' docs issues .agents/skills/hyb-oa-delivery/SKILL.md。node|python3|rgDONEDONEDONEdocs/企微优先开发路线图.md|docs/需求-企业微信基础设施规约.md|docs/管理员手册.md|docs/trialrun/人工试运行报告.md|docs/文档索引.md|docs/文档事实源状态矩阵.md|.agents/skills/hyb-oa-delivery/SKILL.md["WHMSLIVE-6"]事实源已回写 WHMSLIVE 部署、公网验证、最终 force_off 和下一阶段需另建合同;文档只记录事实和边界。
10WHMSLIVE-8中文提交回填 Issue 状态,提交公网验证证据和事实源更新,commit message 使用中文并引用 WHMSLIVE。1) 所有已执行 Test_Method 通过并回填 DONE;2) git diff --check 通过;3) 中文 commit 引用 WHMSLIVE;4) 最终工作区干净或仅保留用户未要求提交的外部变更。受影响流程:Issue CSV -> 验证证据 -> 中文提交 -> 用户可审计;验证步骤:git diff --check;git status --short;git commit -m 'WHMSLIVE 部署验证企微HR主数据镜像'。git|manualDONEDONEDONEissues/2026-05-18_19-28-25-whms-deploy-live-verify-v1.csv|docs/|.agents/skills/hyb-oa-delivery/SKILL.md["WHMSLIVE-7"]提交前确认不包含 Secret、token、完整手机号、邮箱、userid 或企微原始 payload;本轮提交引用 WHMSLIVE。