@@ -19,7 +19,7 @@ DCL7 已删除本文件中 R70-R91 的长流水历史,避免旧环境、旧开
- R7/OPS7/DOC7 是准备材料;R7EP 自动门禁和 OPS8 只读检查已完成;R7E 已于 2026-05-15 23:35 CST 由用户确认阶段验收通过,并于 2026-05-16 完成 R7E-19/R7E-20 和 QAOPS8-19/QAOPS8-20 阶段收口。
- 2026-05-13 后续计划调整直接回写现有 R7EP、OPS8、QAF8、UX8、P2T 合同,不新建专门调整 Issue;调整后 R7EP 门禁可并行执行,OPS8-1/2/4 纳入 R7EP Go/No-Go,UX8 和 P2T 候选按真实反馈并行推进。
- ORG8 组织账号与权限主数据已完成本地代表性角色验收和阶段收口;后续组织主数据治理只作为 P2 只读巡检候选,不自动进入写修复。
- 2026-05-16 已建立并细化 QAOPS9 上线硬化连续合同和 P2D 功能决策合同;QAOPS9 固定隔离本地业务流与公网 flag-off 证据分离,P2D 固定 `GO_TO_CONTRACT` 、`HOLD_FOR_PREREQ` 、`FREEZE` 三类结论;本次只更新 Issue CSV 、既有事实源和 QA 脚本过滤参数,未改业务代码、API/schema、feature flag 或前端功能,未部署,公网运行状态不变。
- 2026-05-16 已建立并细化 QAOPS9 上线硬化连续合同和 P2D 功能决策合同;QAOPS9 固定隔离本地业务流与公网 flag-off 证据分离,P2D 固定 `GO_TO_CONTRACT` 、`HOLD_FOR_PREREQ` 、`FREEZE` 三类结论;本次只更新历史执行合同 、既有事实源和 QA 脚本过滤参数,未改业务代码、API/schema、feature flag 或前端功能,未部署,公网运行状态不变。
- 2026-05-16 QAOPS9 已完成隔离核心业务流稳定化、恢复演练 dry-run checklist、公网 live smoke、真实 OCR 和公网移动矩阵复核;`pending OCR` 因本地未注入 `DATABASE_URL` 继续按规则记非阻断 `SKIP` 。P2D 已完成分流:`P2-ORG` 只读巡检可进入独立合同,其余 P2 候选先保持前置条件等待。
- 2026-05-16 P2D 旧口径已修正:live smoke 凭据、员工 OCR 凭据和授权 PDF 样票已具备,不再作为 P2-FIN/P2-OCR 的 HOLD 原因。P2-ORG 已完成只读巡检:当前连接数据源 high=0、medium=0、low=9,建议 `NO_WRITE_FIX_NEEDED` ;低风险项为 CEO/root 无直属主管观察 1 和 active 员工无企业微信绑定 8。
- 2026-05-16 P2-FIN-DECISION 已完成付款批次启用决策准备:只读核对代码/flag/空态、角色账号、导出字段、审计事件、公网 readiness 和 flag off 回滚口径,结论为 `GO_TO_IMPLEMENT` ,后续可另建 `P2-FIN-V1` ;当前仍不启用 `payment_batch_v1` 、不写付款批次业务数据、不部署。
@@ -36,7 +36,7 @@ DCL7 已删除本文件中 R70-R91 的长流水历史,避免旧环境、旧开
- 2026-05-17 FIN-PROD-ENABLE 已完成公网付款批次正式常开:未重新部署业务代码;新增 QA-only 正式启用 runner 后,公网测试报销 `BX-20260517-0026` 完成审批、付款批次创建/复核、无回单执行阻断、回单上传/下载、付款执行、报销 `paid` 、票据 `archived` 、AP 台账 `paid` 、AP 导出和审计核验;公网移动矩阵 6 passed、企业微信渲染矩阵 8 passed。最终 `payment_batch_v1=force_on` ,`erp_sync=force_off` ;不接真实支付、不接 ERP、不开放图片 OCR、不导入银行流水。
- 2026-05-17 ACCOUNTING-HANDOFF-V1 已固化月度代账交接 SOP:OA 侧导出 AP 台账、报销、票据中心、付款批次/回单附件清单和审计日志;银行流水和银行回单原件由 `wangzhiling` 从银行渠道导出,交给代账人工核对。公网只读/导出核对显示付款批次清单、回单附件列表/下载、AP 导出、报销导出、票据导出和审计日志导出均返回 200;不开发银行流水导入或一键 zip 包。
- 2026-05-17 SYSTEM-COMPLETE-GATE 已完成系统开发完成门禁:公网 `/ready` 、public bundle、live smoke `3 passed` 、PDF live OCR `1 passed` ,只读 flag 核验显示 `payment_batch_v1=force_on` 、`erp_sync=force_off` ;公网移动/企业微信 UA 矩阵 `14 passed` ;结论 `GO_TO_USE` 。当前首批正式能力为员工报销、PDF OCR、审批、请假、采购、通知、移动/企业微信入口、财务台账、付款批次、银行回单附件和代账交接。
- 2026-05-17 LAUNCH-OPS-V1 已固定首周正式使用运营口径:`wangshunli` 为上线拍板、管理员复核和回滚决策人,`wangzhiling` 为出纳/付款执行和代账资料准备人;首周问题登记、每日巡检、暂停条件、代账交接节奏和 UX8/可选功能冻结口径已回写现有手册。后续新增功能只按真实反馈和业务频次另建 Issue CSV 。
- 2026-05-17 LAUNCH-OPS-V1 已固定首周正式使用运营口径:`wangshunli` 为上线拍板、管理员复核和回滚决策人,`wangzhiling` 为出纳/付款执行和代账资料准备人;首周问题登记、每日巡检、暂停条件、代账交接节奏和 UX8/可选功能冻结口径已回写现有手册。后续新增功能只按真实反馈和业务频次另建 Trellis task 。
- 2026-05-17 REQ-COMPLETE-AUDIT 已完成需求完成度复核和考勤边界校正:首批正式能力保持 `GO_TO_USE` 结论不变;企业微信打卡作为原始采集和风控底座,OA 不重造定位、人脸、Wi-Fi、排班、设备和防作弊。
- 2026-05-17 ATTV1 已完成考勤统一入口实现并部署到公网:历史 OA 自建打卡 `attendance_v1` 关闭;OA 新增企微打卡摘要同步、补卡/外出/加班修正审批和月度考勤解释;所有审批继续统一在 OA,企业微信只负责打卡原始采集和风控。公网复检显示旧打卡 API 返回 409、统一考勤月度汇总和修正列表可读、移动/企业微信矩阵 14 passed;企微 live 同步依赖已授权调用打卡 API 的自建应用 Secret 和企微权限,`WECOM_CHECKIN_SECRET` 可显式覆盖,未配置时复用已授权工作台应用的 `WECOM_AGENT_SECRET` ,缺配置时记 `SKIP` 。
- 2026-05-17 LAUNCH-AUTO-OPS-V1 已完成正式启用后自动化收口脚本和证据刷新:本地 Prisma/node check/focused 单测、前端 typecheck/build、公网 readiness、PDF live OCR、统一考勤 live 检查、公网移动矩阵和企业微信 UA/渲染矩阵均通过;显式企微打卡同步检查返回 `SKIP wecom_checkin_sync_disabled` ;但只读 flag 检查发现当前公网 `payment_batch_v1=force_off` ,与 FIN-PROD-ENABLE 记录的正式常开口径不一致,结论为 `PAUSE_FOR_FIX` 。runner 已跳过付款批次写入,未切换 flag、未部署、不接真实支付、不接 ERP。
@@ -44,10 +44,10 @@ DCL7 已删除本文件中 R70-R91 的长流水历史,避免旧环境、旧开
- 2026-05-17 HR-WECOM-DIRECTORY-V1 已完成并部署公网:产品口径已调整为 ERP 未来不接入 OA;人事生命周期和考勤同属 HR 大域但分模块实现。OA 继续作为员工、权限、审批和审计主事实源;企业微信作为通讯录、入口、通知和打卡采集基础设施。HRWD 新增企业微信通讯录同步 flag、配置、同步记录、入职创建/资料更新/离职禁用钩子和员工管理重试入口。本地后端/前端/Playwright 通过,部署后公网 readiness、PDF live OCR、HRWD 端点 SKIP 检查和公网移动/企微矩阵通过;部署过程中发现 `seed-config` 会覆盖正式 feature flag,已修正为只创建缺失开关并复部署验证,最终 `payment_batch_v1=force_on` 、`erp_sync=force_off` 。
- 2026-05-17 HRWD-CONTACT-LIVE-TEST 已完成公网企业微信通讯录真实写入闭环:使用 `HRWDTEST-20260517214548` 测试员工,验证 OA 创建员工后由 onboarding 触发企微 create、资料更新触发企微 update、离职 checklist 完成后禁用 OA 账号并触发企微 disable;三次企微同步均为 `wecom_contact_synced` 且 `errcode=0` 。普通员工查看/重试他人同步状态被拒绝,审计日志包含 `WECOM_DIRECTORY_CREATE/UPDATE/DISABLE` ;测试成员按约定保留离职/禁用状态,不删除。
- 2026-05-17 WCFB 已完成企微打卡同步 Secret 兼容修正并随 WRV1 部署到公网:用户确认「工作台」就是 OA 企业微信入口应用,且该应用已在企业微信打卡 API「可调用接口的应用」中授权。OA 后端调整为 `WECOM_CHECKIN_SECRET` 显式优先,未配置时复用已授权工作台应用的 `WECOM_AGENT_SECRET` ,避免重复维护同一个 Secret;本地语法检查、focused 单测、文档和项目 skill 校验通过。WRA1 已确认此前 WRV1 阻断是 QA-only 门禁误判,正式同步仍由 `WECOM_CHECKIN_SYNC_ENABLED` 控制。
- 2026-05-18 WFOC 已完成“企微优先 + OA 无痛接管”需求重构:用户确认能用企业微信成熟能力就优先使用企业微信,第一批聚焦 HR/考勤员工日常审批;OA 目标调整为镜像、人工接管、恢复回写、RuleOps、财务闭环和审计中台。员工主数据后续以企微/人事助手为主,OA 同步镜像;企微故障时由管理员人工开启 OA 应急模式;企微恢复后 OA 对应急数据 dry-run 并自动回写。本轮只更新需求事实源、手册、索引和 Issue CSV ,不改业务代码、不部署、不改公网配置;后续实现需另拆 `wecom_hr_master_sync_v1` 、`wecom_native_approval_mirror_v1` 、`oa_hr_emergency_mode_v1` 、`wecom_recovery_writeback_v1` 、`wecom_ruleops_v1` 。DBWFOC 后该口径进一步收窄为按域镜像和 OA 主办数据边界。
- 2026-05-18 DBWFOC 已完成“企微能力参考 + OA 主办数据边界”修正:HR/考勤员工日常审批优先复用企业微信;采购、费用、合同、项目、报销、付款、AP、代账交接、审计和高敏附件继续 OA 主办。企业微信成熟功能可作为流程、字段、交互和规则参考,但不默认托管 OA 主办业务数据;企业微信消息只承载脱敏标题、业务类型、编号、状态和 OA deeplink。采购单附件、合同正文、报价、供应商资料、发票、银行回单和代账资料不进入企业微信原生审批或企业微信附件。本轮只更新需求事实源、手册、索引、项目 skill 和 Issue CSV ,不改业务代码、不部署、不改公网配置。
- 2026-05-18 WFOC 已完成“企微优先 + OA 无痛接管”需求重构:用户确认能用企业微信成熟能力就优先使用企业微信,第一批聚焦 HR/考勤员工日常审批;OA 目标调整为镜像、人工接管、恢复回写、RuleOps、财务闭环和审计中台。员工主数据后续以企微/人事助手为主,OA 同步镜像;企微故障时由管理员人工开启 OA 应急模式;企微恢复后 OA 对应急数据 dry-run 并自动回写。本轮只更新需求事实源、手册、索引和历史执行合同 ,不改业务代码、不部署、不改公网配置;后续实现需另拆 `wecom_hr_master_sync_v1` 、`wecom_native_approval_mirror_v1` 、`oa_hr_emergency_mode_v1` 、`wecom_recovery_writeback_v1` 、`wecom_ruleops_v1` 。DBWFOC 后该口径进一步收窄为按域镜像和 OA 主办数据边界。
- 2026-05-18 DBWFOC 已完成“企微能力参考 + OA 主办数据边界”修正:HR/考勤员工日常审批优先复用企业微信;采购、费用、合同、项目、报销、付款、AP、代账交接、审计和高敏附件继续 OA 主办。企业微信成熟功能可作为流程、字段、交互和规则参考,但不默认托管 OA 主办业务数据;企业微信消息只承载脱敏标题、业务类型、编号、状态和 OA deeplink。采购单附件、合同正文、报价、供应商资料、发票、银行回单和代账资料不进入企业微信原生审批或企业微信附件。本轮只更新需求事实源、手册、索引、项目治理材料和历史执行合同 ,不改业务代码、不部署、不改公网配置。
- 2026-05-18 WFDG 已完成“企微优先 + OA 主办数据边界”的设计规约门禁:后续开发前必须先判定业务域主办方、主事实源、操作端、镜像方向、附件归属和审计责任;PC/移动页面需区分 `OA 主办` 、`企微镜像` 和 `OA 应急接管` ;企微同步必须具备幂等、重试、脱敏日志、审计记录和 `SKIP/BLOCKED_BY_EXTERNAL_CONFIG` 。下一轮先做 `WECOM-CAPABILITY-POC-V1` ,输出 `CAN_REUSE_NOW` 、`NEEDS_CONFIG` 、`NEEDS_API_POC` 、`KEEP_OA_PRIMARY` 、`NOT_SUPPORTED_BY_API` 能力矩阵;本轮不改业务代码、不部署、不调用生产写接口。
- 2026-05-18 WDRG 已完成“企微优先后续开发路线图”门禁:新增 `docs/企微优先开发路线图.md` ,固定“路线图门禁 + 单功能 Issue CSV”的 工程节奏。后续顺序为 `WECOM-CAPABILITY-POC-V1` -> `wecom_hr_master_sync_v1` -> `wecom_attendance_approval_mirror_v1` -> `oa_hr_emergency_mode_v1` -> `wecom_recovery_writeback_v1` -> `wecom_ruleops_v1` ;阶段未退出前禁止跳阶段。本轮只更新路线图、交付规约、事实源、手册、项目 skill 和 Issue CSV ,不改业务代码、不部署、不调用公网写接口。
- 2026-05-18 WDRG 已完成“企微优先后续开发路线图”门禁:新增 `docs/企微优先开发路线图.md` ,固定当时的 “路线图门禁 + 单功能执行合同” 工程节奏。后续顺序为 `WECOM-CAPABILITY-POC-V1` -> `wecom_hr_master_sync_v1` -> `wecom_attendance_approval_mirror_v1` -> `oa_hr_emergency_mode_v1` -> `wecom_recovery_writeback_v1` -> `wecom_ruleops_v1` ;阶段未退出前禁止跳阶段。本轮只更新路线图、交付规约、事实源、手册、项目治理材料和历史执行合同 ,不改业务代码、不部署、不调用公网写接口。
- 2026-05-18 WCP1 已完成企业微信能力 POC:新增 QA-only 只读 runner `scripts/qa/check-wecom-capability-poc.mjs` ,本地不开启 live read 时可解释为 `PAUSE_FOR_API_POC` ,本地开启 live read 但无真实 env 时可解释为 `PAUSE_FOR_CONFIG` ;部署服务器容器内 live 只读探测报告为远端 `/tmp/wecom-capability-poc-wcp1/summary.json` ,历史结论为 `PAUSE_FOR_CONFIG` 。该报告继续作为初始配置缺口证据保留,当前 HR 主数据镜像准入以 WCPC 复跑结论为准。
- 2026-05-18 WCPC 已完成 WCP1 配置收口复跑:先完成未补配置前远端基线复跑,报告目录 `/tmp/wecom-capability-poc-wcpc-baseline` ,结论为 `PAUSE_FOR_CONFIG` ;随后按用户要求自动查找并使用既有在职低风险测试号 `SMOKE002/测试员工` (报告只记录 `oa_smoke***` )复跑,只读报告 `/tmp/wecom-capability-poc-wcpc-smoke002/summary.json` 返回 `PASS / GO_TO_HR_MASTER_SYNC` ,`nextStageAllowed=true` ,`blockingCapabilities=[]` ,状态计数为 `CAN_REUSE_NOW=15` 、`NEEDS_CONFIG=3` 、`NEEDS_API_POC=1` 、`KEEP_OA_PRIMARY=1` 。本轮不部署、不改业务代码、不持久写服务器 `.env` ;下一步允许规划 `wecom_hr_master_sync_v1` ,审批模板/实例、回调配置和 HR 写接口仍留后续合同。
- 2026-05-18 WHMS 已完成企微 HR 主数据镜像本地实现、部署和受控公网验证:新增 `wecom_hr_master_sync_v1` 默认 `force_off` ,实现企业微信通讯录/人事助手读取、dry-run/apply、同步批次/逐员工记录、管理员 API、People 管理卡片和 QA-only runner。WHMSLIVE 部署到 `https://oa.hyinda.com` 并应用 migration `20260518184319_wecom_hr_master_sync_v1` ;公网临时 `force_on` 后对 `SMOKE002/测试员工` (脱敏 `oa_smoke***` )执行 dry-run 和显式 userids apply,企微读取链路通过,因企微侧缺手机号、邮箱和部门按 `missing_required_field` 跳过,未写 OA 主数据;普通员工访问同步 API 返回 403;最终 `wecom_hr_master_sync_v1=force_off` 。未执行生产真实员工批量 apply,不代表考勤/审批镜像、应急接管、恢复回写或 RuleOps 已完成。
@@ -61,12 +61,12 @@ DCL7 已删除本文件中 R70-R91 的长流水历史,避免旧环境、旧开
- 2026-05-19 WAPC2F 新增企微审批 POC 样件自动生成 dry-run:新增 `server/src/scripts/check-wecom-approval-fixtures.js` / `npm run check:wecom-approval-fixtures` ,固定 `WECOM_AGENT_SECRET` 构建 OA-POC 请假/补卡最小通用模板候选和低风险审批申请候选;默认 dry-run 不获取写入 token、不调用企微写接口、不创建模板、不提交审批单。已以 `SYNC_ENV=0` 部署并远端执行 dry-run,报告 `/app/artifacts/qa-flow/wecom-approval-fixtures-20260519T045001Z/summary.json` 结论为 `PASS_FIXTURE_DRY_RUN_READY` : `SMOKE002 -> SMOKE101` 均 active、已绑定企微、非自审,payload 脱敏输出通过。live 创建 OA-POC 测试模板和测试审批单仍未批准、未执行;WAPC2 自动复跑需等 live 生成真实模板 ID 和 `sp_no` 后再执行。
- 2026-05-19 WAPC2FLIVE 完成企微审批 OA-POC 样件 live 创建和 WAPC2 自动复跑:用户批准一次 live 创建并选择保留审计后,先以 `SYNC_ENV=0` 部署修正后的 runner,再远端 dry-run 复核 `/app/artifacts/qa-flow/wecom-approval-fixtures-20260519T053335Z/summary.json` 为 `PASS_FIXTURE_DRY_RUN_READY` 。首次 live 写入 API 因旧 `create_template` payload 返回 `301086 zh_CN text empty` ,未创建任何模板或审批单;随后将 payload 修正为官方 `template_name` + `property` controls 结构并复跑有效 live,报告 `/app/artifacts/qa-flow/wecom-approval-fixtures-20260519T053400Z/summary.json` 为 `PASS_FIXTURE_CREATED` ,请假/补卡 OA-POC 测试模板和低风险测试审批单均创建成功,`checks.autoRerun.status=OK` 且结论 `PASS_APPROVAL_POC` 。报告只记录脱敏 template_id / `sp_no` 前缀;测试模板和测试审批记录保留审计,不自动删除。本轮不配置真实回调、不做补偿拉取、不建镜像表、不进入 `wecom_attendance_approval_mirror_v1` 。
- 2026-05-19 WCBK1 实现并完成企微审批回调只读 POC:新增只读 `GET/POST /api/wecom/approval/callback` 、企微回调验签/AES 解密/事件归一化服务、`npm run check:wecom-approval-callback-poc` 和 `wecom-callback` process gate。已以 `SYNC_ENV=0` 部署并复检 `/ready` ;初始远端报告 `/app/artifacts/qa-flow/wecom-approval-callback-poc-20260519T065414Z/summary.json` 为 `PARTIAL_CALLBACK_NEEDS_CONFIG` ,synthetic 回调验签、解密和审批事件解析通过。配置真实回调后,远端报告 `/app/artifacts/qa-flow/wecom-approval-callback-poc-20260519T083422Z/summary.json` 达到 `PASS_CALLBACK_URL_VERIFIED` ;用户随后由 `SMOKE101` 同意一条现有 OA-POC 补卡测试审批单,复跑报告 `/app/artifacts/qa-flow/wecom-approval-callback-poc-20260519T092648Z/summary.json` 达到 `PASS_CALLBACK_EVENT_CONFIRMED` ,脱敏证据记录 1 条已通过审批状态事件。本轮不建镜像表、不写 OA 业务数据、不写企微数据、不创建新模板或审批单。
- 2026-05-19 WEGOV1 完成企微主办治理与 OA 自建留存路线修正:本轮只更新 Issue CSV 和事实源,不改业务代码、不部署、不写 OA/企微数据。结论固定为“企微成熟功能优先上线,OA 做自建数据留存、审计、入口、消息和应急兜底”;HR/考勤日常流程优先企微主办,报销、采购、合同、项目、付款、发票、银行回单、高敏附件和经营审计继续 OA 主办。后续顺序调整为 `WACP3 -> WREAD1 -> WADM1 -> WARCH1 -> wecom_attendance_approval_mirror_v1` ,其中 WARCH1 先保证企微不可用时可查看已保存历史,再进入完整镜像增强。
- 2026-05-19 WEGOV1 完成企微主办治理与 OA 自建留存路线修正:本轮只更新历史执行合同 和事实源,不改业务代码、不部署、不写 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 为回调证据文件未持久化,已由后续 WARCH1 DB 回调事件承接。本轮未写 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` ,等待审批人真机确认。
- 2026-05-19 WREAD1 人工真机确认收口:用户确认请假和补卡在企业微信消息卡片、列表、详情页均可以看清;驳回有二次确认,但同意按钮单击即通过;当前暂无额外字段补充建议。已用 `check:wecom-approval-readability-gate` 录入人工结果,远端报告 `/app/artifacts/qa-flow/wecom-approval-readability-gate-20260519T133628Z/summary.json` 为 `PASS_READABLE` ,下一阶段允许进入 `WADM1 自建留存/镜像数据模型设计` 。同意单击风险需在后续提示、审计留存或操作规程中处理;本轮未写 OA/企微业务数据,未创建新样例。
- 2026-05-19 WADM1 完成企微自建留存/镜像数据模型设计:本轮只更新 Issue CSV 和事实源,不改 Prisma schema、不写业务代码、不部署、不写 OA/企微业务数据。设计固定 `WecomApprovalArchive` 、参与人/动作/字段摘要、附件摘要、回调事件、补偿拉取 run/item、对账 finding、打卡/人事快照复用边界、隐私保留、权限和迁移回滚策略。WACP3R “回调证据文件未持久化”的 finding 进入 WARCH1 入库实现;同意单击即通过进入 WARCH1 历史留存、审批轨迹和操作规程提示。该阶段已由下一条 WARCH1 承接,仍不能直接进入完整审批镜像、应急接管、恢复回写或 RuleOps。
- 2026-05-19 WADM1 完成企微自建留存/镜像数据模型设计:本轮只更新历史执行合同 和事实源,不改 Prisma schema、不写业务代码、不部署、不写 OA/企微业务数据。设计固定 `WecomApprovalArchive` 、参与人/动作/字段摘要、附件摘要、回调事件、补偿拉取 run/item、对账 finding、打卡/人事快照复用边界、隐私保留、权限和迁移回滚策略。WACP3R “回调证据文件未持久化”的 finding 进入 WARCH1 入库实现;同意单击即通过进入 WARCH1 历史留存、审批轨迹和操作规程提示。该阶段已由下一条 WARCH1 承接,仍不能直接进入完整审批镜像、应急接管、恢复回写或 RuleOps。
- 2026-05-19 WARCH1 实现企微审批最小自建历史留存:新增审批留存 Prisma 表、回调事件表、补偿 run/item/finding、`wecomApprovalArchive` 规范化服务、回调 DB 入库默认路径、补偿拉取 `--persist-to-db` + `WECOM_ARCHIVE_WRITE=1` 双开关和 `npm run check:wecom-approval-archive` 离线读取 runner。已以 `SYNC_ENV=0` 部署并应用 migration;远端补偿持久化报告 `/app/artifacts/qa-flow/wecom-approval-compensation-poc-20260519T160306Z/summary.json` 为 `PASS_WITH_FINDINGS` ,`archivePersistence.status=OK` 、`storedCount=2` ;离线读取报告 `/app/artifacts/qa-flow/wecom-approval-archive-20260519T160330Z/summary.json` 为 `PASS_WITH_FINDINGS` ,可读请假/补卡 2 条已通过历史。finding 是 WARCH1 前旧回调未持久化到 DB 的历史 gap,已作为对账 finding 留存,不是当前写入链路阻断。范围仅请假/补卡;不写企微数据、不创建模板或审批单、不新增正式管理页、不进入完整镜像、应急接管、恢复回写或 RuleOps。报告和日志只输出脱敏 `sp_no` 、template、userid 前缀,DB 内保存完整外部键用于审计和补偿。
- 2026-05-20 WARCH2 实现并部署企微审批历史正式只读查询:新增 `/api/wecom/approval-archive` 列表和详情 API、PC/移动共用历史页、备用模块入口和移动考勤卡片入口。查询只读 OA DB,不调用企微 API、不读取企微 Secret;普通员工看本人相关,主管看直属下属和本人相关,HR/admin/* 看全量;`leave.view_all` / `attendance.view_all` 不单独代表全量企微归档权限;申请人未映射、callback-only 或外部-only 记录仅 HR/admin/* 可见。页面固定“企业微信主办,OA 自建留存”“仅已归档记录”,不展示审批按钮或 pending 待办语义。已以 `SYNC_ENV=0` 部署,公网 `/ready` 正常,新 API 未登录返回 401;远端离线归档报告 `/app/artifacts/qa-flow/wecom-approval-archive-20260520T013610Z/summary.json` 为 `PASS_WITH_FINDINGS` ,可读 2 条请假/补卡历史,finding 仍为 WARCH1 前旧回调未入库历史 gap。
- 2026-05-20 WROAD2+OPS 建立受控上线与每日巡检合同:当前不直接进入完整镜像,改为测试账号 `SMOKE002 -> SMOKE101` 3 天受控试用,管理员观察和告警员工号使用 `HYD000006` ( `wangshunli` 的员工号),每日触发 `scripts/qa/run-wroad2-ops-daily.sh` 或 WARCH3 timer。脚本复用公网 `/ready` 、live smoke、feature flag、企微 runtime、审批补偿和 OA 归档离线读取;默认只读,唯一允许写入是补偿归档以进程级 `WECOM_ARCHIVE_WRITE=1` 写 OA 自建留存库,不写企业微信、不创建模板或审批单。Day 0 公网巡检报告 `/app/artifacts/qa-flow/wroad2-ops-20260520-041941/summary.json` 为 `PASS_WITH_FINDINGS` ,finding 按 observation 管理。
@@ -659,7 +659,7 @@ Go 结论边界:
## OMAT1 审查决策包
本节把 37 条 OMAT1 压缩成用户评审时的第一轮决策包;未明确选择前,Issue CSV 状态仍保持 `TODO` 。
本节把 37 条 OMAT1 压缩成用户评审时的第一轮决策包;未明确选择前,历史 OMAT1 CSV 状态仍保持 `TODO` 。
| 决策组 | 推荐选择 | 涉及条目 | 采纳后的处理 |
| --- | --- | --- | --- |
@@ -688,7 +688,7 @@ Q7-Q9: A
| 已形成审查机制 | `OMAT1-22/23/24/25/27/28` | 已有国内对标来源、小团队取舍原则、成熟度验收摘要、域级能力矩阵、人工决策问答清单和本状态审计 | 保持 `TODO` ,等待用户 A/B/C 决策;不自动视为采纳 |
| 仍待用户决策 | 全部 P0/P1/P2 建议 | 用户尚未按 Q1-Q9 或逐条给出采纳、暂缓、否决结论 | 不进入开发合同,不回填 DONE |
| 仍缺真实证据 | `OMAT1-1/2/3/4/5/14` 及 OALAUNCH1-3..7 | 最新 OALAUNCH1 汇总仍为 `PAUSED_MANUAL_CONFIRMATION` ,缺真实业务闭环、权限矩阵、备份恢复、7 天稳定化和数据治理培训 | 不能宣布最终启用成熟,需先补证据 |
| 后置观察项 | P1/P2 建议 | 已有能力域判断,但价值和优先级应由 7 天真实使用反馈决定 | 先不启动功能开发,必要时另建 Issue CSV |
| 后置观察项 | P1/P2 建议 | 已有能力域判断,但价值和优先级应由 7 天真实使用反馈决定 | 先不启动功能开发,必要时另建 Trellis task |
## OMAT1 第二轮 MAGI 审视