47 KiB
需求 - 企业微信基础设施规约
版本:1.0 日期:2026-05-09 状态:模块级开发规约 上级事实源:海音达OA-MVP需求规格说明书 相关事实源:需求 - 统一审批中心规约、企微 API 能力目录
本规约细化企业微信在 hyb-oa 中的基础设施边界、入口、免登/绑定、通讯录身份、消息通知、deeplink、打卡、人事助手、原生审批、OA 自建留存、OA 镜像、人工接管和恢复回写要求。WFOC 起产品方向调整为“企微优先 + OA 无痛接管”;DBWFOC 后进一步固定为:HR/考勤员工日常审批优先使用企业微信,OA 做按域镜像、备份接管、财务闭环和审计中台;采购、合同、项目、财务和高敏附件继续由 OA 主办。WAPI 后,所有企微相关开发必须先读取本规约和 企微 API 能力目录,确认官方 API、Secret、权限、可信 IP、回调/模板和读写边界,再拆 Issue CSV。WMSG1 已证明企业微信应用消息和 Deeplink 真机回流可用;WAPC1 后审批进入配置准备清单,WAPC2 后先做请假/补卡模板详情与低风险 sp_no 只读 POC;WAPC2F 已实现 OA-POC 样件 dry-run 并公网验证 PASS_FIXTURE_DRY_RUN_READY。WAPC2FLIVE 已在用户批准后创建 OA-POC 请假/补卡测试模板和低风险测试审批单,自动复跑 WAPC2 为 PASS_APPROVAL_POC。WCBK1 已完成真实回调 URL 验证和一条现有 OA-POC 测试审批单事件确认,公网结论 PASS_CALLBACK_EVENT_CONFIRMED。WEGOV1 后固定“企微主办 HR/考勤成熟能力,OA 保存关键历史和外部关联键”的路线。WACP3R 已自动发现 OA-POC 请假/补卡模板并完成公网补偿拉取复跑,报告为 PASS_WITH_FINDINGS;补偿拉取和详情读取可用,当时 finding 为回调证据文件未持久化。WREAD1F 后,用户真机确认请假/补卡审批卡片、列表和详情页可读,远端报告为 PASS_READABLE;同意单击即通过作为操作风险进入后续设计。WADM1 已完成自建留存/镜像数据模型设计,WARCH1 已创建最小审批留存迁移和运行时入库路径,WARCH2 已提供 OA DB 正式只读查询 API 和 PC/移动历史页。WROAD2 后先做测试账号受控上线和每日巡检;WARCH3 已新增服务器 07:30 systemd timer 和脱敏企微告警;WCHECK1 已新增打卡摘要留存;WEXT1 已新增外出/加班 dry-run;WOPS1 已完成告警降噪。后续先等 WROAD2-CLOSEOUT 三天验收,再问答进入 WEXT1-LIVE 外出/加班测试号 live POC;四类测试号证据通过前不问真实员工试用,不直接进入完整审批镜像、应急接管、恢复回写或 RuleOps。
1. 模块目标与边界
1.1 目标
- 企业微信作为
hyb-oa的手机工作台入口、通讯录账号、身份辅助、消息通知、打卡、人事助手和 HR/考勤员工日常审批主操作端。 - 员工在手机企业微信中进入唯一自建应用
海音达工作台,默认落到 OA 移动端。 - OA 主办的报销、财务、采购、合同和项目类审批仍由企业微信消息提醒并 deeplink 回 OA 处理。
- HR/考勤员工日常审批优先复用企业微信原生审批和打卡能力,OA 同步按域镜像、附件、审批历史、规则快照和审计记录。
- OA 保存企微关键业务历史、完整外部关联键和必要快照,保证企微不可用时仍可查看已保存的历史审批、考勤和人事摘要。
- 企业微信不可用时,由管理员人工开启 OA HR/考勤应急模式;企微恢复后,OA 对应急数据执行 dry-run、自动回写、失败重试和冲突清单。
1.2 不做范围
- 不把企业微信聊天、文件或审批记录作为财务附件主库、报销 OCR 主库、付款批次主库或代账交接主库。
- 不把采购单、合同正文、供应商报价、项目敏感资料、发票原件、银行回单或代账资料上传到企业微信原生审批或企业微信附件。
- OA 不重造企业微信打卡采集和风控;ATTV1 起只同步企微打卡摘要并做 OA 考勤解释。
- 首批不在 OA 内重造企业微信打卡的定位、人脸识别、Wi-Fi、排班、设备和防作弊规则;长期无痛接管目标也不要求复刻所有企微风控细节。
- 不接入飞书、钉钉或其他办公平台作为首批入口。
1.3 WFOC 能力分层
| 能力 | 企微能力 | OA 使用程度 | 当前状态 |
|---|---|---|---|
| 通讯录 | 成员创建、读取、更新、禁用或删除 | 近期已验证 OA 写企微;后续改为企微主源同步 OA,OA 保留修复和审计 | CAN_REUSE_NOW:HCLT create/update/disable、部门读取和 WCPC 既有在职测试号 contact.member_read 均已通过 |
| 人事助手 | 员工字段配置、花名册读取、花名册更新 | 作为员工主数据源,驱动 OA 员工、账号、角色、绑定和状态镜像 | LOCAL_IMPLEMENTED_FOR_READ_SYNC:字段配置和既有在职测试号花名册读取已通过;WHMS 已本地实现只读同步到 OA;资料更新写接口仍需单独 POC |
| 打卡 | 打卡记录、员工规则、日报、月报、排班、补卡、规则管理 | 企微主办规则和采集,OA 同步按域镜像和应急对账 | CAN_REUSE_NOW_FOR_READ:WCPC 短窗口打卡记录和规则读取通过;日报/月报/排班等细项留到考勤镜像合同继续验证 |
| 审批 | 模板详情、提交审批、审批状态回调、审批详情、模板创建/更新、批量获取审批单号、假期余额 | HR/考勤员工日常审批企微主办,OA 同步镜像;OA 主办财务、采购、合同、项目和报销审批不迁移 | WARCH3/WEXT1_CONTROLLED_OPS:WAPC2FLIVE 已创建请假/补卡 OA-POC 样件并复跑通过;WCBK1 已证明审批状态回调 URL 验证、验签、解密和真实事件脱敏留证;WACP3R 已通过 getapprovalinfo 自动发现模板并拉取请假/补卡详情;WARCH1 已补齐回调事件、补偿拉取和对账 finding 的最小 OA 自建留存;WARCH2 已提供只读历史查询;WARCH3 已自动巡检和告警;WEXT1 只完成外出/加班 dry-run。完整镜像、外出/加班 live、应急接管和恢复回写仍需后续合同 |
| 工作台和消息 | 自建应用入口、应用消息、deeplink | 继续作为 OA 移动入口和通知渠道 | CAN_REUSE_NOW;WRV1 新增 check:wecom-runtime-ready 对入口、OAuth、脱敏消息 dry-run 和 deeplink 做运行就绪门禁 |
| 财务/报销 | 企微不提供本项目需要的 PDF OCR、付款批次、银行回单和代账闭环 | OA 主办 | KEEP_OA_PRIMARY |
| 真实支付、ERP、图片 OCR、银行流水导入 | 非本路线目标 | 不进入当前路线 | NOT_IN_SCOPE |
WEGOV1 后四域边界:
| 域 | 主办方 | 说明 |
|---|---|---|
| 企微主办域 | 企业微信 | 打卡、请假、补卡、外出、加班、假期余额和人事助手等成熟 HR/考勤能力优先在企微完成。 |
| OA 主办域 | OA | 报销、采购、合同、项目、付款、发票、银行回单、高敏附件和经营审计继续在 OA 内完成。 |
| OA 留存域 | OA | 保存审批单号、模板、申请人、审批人、状态、时间、审批历史、字段摘要、打卡摘要、规则快照、假期余额摘要、人事花名册快照、回调事件和补偿拉取记录。 |
| OA 应急域 | OA | 仅在企业微信不可用时由管理员人工开启;V1 目标是查看历史和有限接管,不复刻企微完整风控。 |
企业微信自建应用不按完整隔离 sandbox 处理。后续测试默认使用真实企业内受控测试域:SMOKE002 -> SMOKE101、OA-POC 模板、低风险审批单、脱敏报告、本地 synthetic 和公网 live runner;需要管理员人工处理的仅限后台不可 API 化配置、Secret/Token/EncodingAESKey、可信 IP/可见范围、正式写入批准、真机确认和风险拍板。
官方能力依据以 企微 API 能力目录 登记的企业微信开发者中心链接为准。首轮已固定:通讯录全量候选使用 POST /cgi-bin/user/list_id,花名册读取使用 POST /cgi-bin/hr/get_staff_info,花名册更新 POST /cgi-bin/hr/update_staff_info 属写接口需单独 POC。真实接口权限、回调配置和可调用应用范围必须在后续 POC 合同中以 NEEDS_CONFIG 或 SKIP/BLOCKED_BY_EXTERNAL_CONFIG 记录。
2. 角色与权限
| 角色 | 使用目标 | 可做动作 | 权限边界 |
|---|---|---|---|
| 员工 | 从手机进入 OA、接收提醒、完成绑定 | 进入移动工作台、绑定企业微信身份、点击消息 deeplink、查看本人相关业务 | 不能通过企业微信绕过 OA 权限 |
| 审批人 | 在手机端处理企微主办审批或从消息回 OA 处理 OA 主办审批 | 请假、补卡、外出、加班等 HR/考勤员工日常审批在企微处理;财务、报销、采购、合同、项目等 OA 主办审批回 OA 处理 | 不得把企微 HR 审批结果当作财务付款或报销依据,必须等 OA 镜像和财务规则确认 |
| 管理员/HR | 管理入口、人员、通讯录同步、绑定异常、离职停用和应急接管 | 配置可见范围、协助绑定、同步企微主数据、查看镜像状态、人工开启/关闭 OA 应急模式 | 不得手工把一个企业微信身份绑定到多个员工;不得无审计开启应急入口或静默覆盖企微数据 |
| 系统管理员 | 维护企业微信应用配置、消息通道、回调和 RuleOps | 配置 CorpID、AgentID、Secret、回调、可信域名、消息开关、重试策略和规则写入权限 | 不处理业务审批,不暴露 secret;AI 规则建议必须人工确认后才能写入企微 |
| 财务/老板 | 接收关键待办或状态提醒 | 点击 deeplink 回 OA 查看或处理 | 消息中不得出现完整发票、合同正文、敏感报价、银行卡、身份证 |
WFOC 后,企微/人事助手是 HR 员工主数据源;OA 是员工镜像、账号权限、OA 主办业务、接管状态、审计和导出事实源。企业微信身份和通讯录账号服务于入口、通知、打卡采集、HR/考勤审批和移动工作台,但 OA 仍负责自己的权限判断、采购/合同/项目/财务动作和审计边界。
3. 自建应用与入口
| 场景 | 入口 | 默认落点 | 要求 |
|---|---|---|---|
| 手机企业微信工作台 | 海音达工作台 自建应用 |
/mobile |
已绑定用户直达移动工作台;未绑定用户进入绑定或账号密码回退路径 |
| 企业微信消息 deeplink | 消息卡片或文本链接 | 业务详情或审批页 | 保留目标页面,不只跳首页 |
| 手机普通浏览器 | OA 移动端 URL | /mobile 或登录后移动页 |
不依赖企业微信身份,仍可账号密码登录 |
| PC 浏览器 | OA Web URL | /portal |
PC 用户直接访问 OA,不强制从企业微信进入 |
| 入口失败 | 登录页或错误页 | 账号密码回退 | 提示清晰,不让员工反复重试 |
入口识别应区分企业微信 WebView、普通移动浏览器和 PC 浏览器。企业微信入口只改变登录和跳转体验,不改变业务权限。
4. 免登与绑定
4.1 身份字段
| 字段 | 用途 | 要求 |
|---|---|---|
企业微信 userId |
企业微信成员身份主键 | 与员工绑定时必须唯一 |
| 企业微信手机号 | 辅助匹配员工 | 只能作为候选,不可单独作为登录授权 |
| 企业微信邮箱 | 辅助匹配员工 | 只能作为候选,不可单独作为登录授权 |
OA employee_id |
OA 员工主键 | 权限和业务数据以此为准 |
| 绑定时间 | 审计 | 必须记录 |
| 绑定人/解绑人 | 审计 | 自助绑定和管理员处理都必须记录 |
4.2 绑定规则
- 已绑定且 OA 员工账号正常:从企业微信进入后直达
/mobile或 deeplink 目标页。 - 未绑定:提示“当前企业微信账号尚未绑定”,允许账号密码登录后在个人设置完成绑定。
- 一个企业微信身份只能绑定一个员工。
- 一个员工原则上只绑定一个当前有效企业微信身份;更换账号必须先解绑并留痕。
- 员工离职、账号停用或组织权限移除后,企业微信入口不得继续进入 OA 业务页面。
- 绑定、解绑、绑定失败、停用拦截都必须写入审计日志。
4.3 状态与记录
| 对象 | 状态 | 含义 | 记录要求 |
|---|---|---|---|
| 入口配置 | 未启用 | 企业微信入口不展示或提示不可用 | 记录配置状态,不影响账号密码登录 |
| 入口配置 | 已启用 | 企业微信工作台可进入 OA | 记录启用人、启用时间和可见范围 |
| 绑定关系 | 未绑定 | 企业微信身份尚未关联 OA 员工 | 可回退账号密码登录 |
| 绑定关系 | 已绑定 | 企业微信身份已关联有效 OA 员工 | 记录绑定时间、绑定方式和员工 ID |
| 绑定关系 | 已解绑 | 绑定关系被员工或管理员解除 | 记录解绑人、解绑时间和原因 |
| 绑定关系 | 已停用 | 员工离职、停用或组织权限移除 | 阻断企业微信入口进入业务页面 |
| 通知记录 | 待发送 | 主业务已产生通知任务 | 不阻断主业务 |
| 通知记录 | 已发送 | 企业微信消息发送成功 | 记录接收人和 deeplink |
| 通知记录 | 发送失败 | 企业微信消息发送失败 | 记录失败原因和重试次数 |
| 通知记录 | 已放弃 | 达到重试上限或配置不可用 | 管理员可查看原因 |
状态变更必须写入审计或操作日志。入口、绑定和通知状态不得替代 OA 业务单据状态。
4.4 异常规则
| 异常 | 处理规则 | 用户提示 |
|---|---|---|
| 未绑定 | 回退账号密码登录,登录后可自助绑定 | “当前企业微信账号尚未绑定,请先使用 OA 账号登录并完成绑定” |
| 重复绑定 | 阻断,并提示联系管理员 | “该企业微信账号已绑定其他员工” |
| OA 账号停用 | 阻断进入业务页面 | “账号已停用,请联系管理员” |
| 企业微信回调失败 | 不创建会话,回退登录页 | “企业微信登录失败,请重试或使用账号密码登录” |
| 回跳地址不允许 | 阻断并记录安全日志 | “回跳地址无效,请从工作台重新进入” |
| 配置缺失 | 企业微信入口显示不可用或 SKIP | “企业微信入口暂未启用,请使用账号密码登录” |
5. 消息通知与 deeplink
5.1 通知边界
- 企业微信消息只发送脱敏提醒,不承载正式审批动作。
- 消息内容只包含:标题、业务类型、业务编号、状态、处理入口。
- 消息不得包含完整发票图片、合同正文、敏感报价、银行卡、身份证、大段业务说明或密钥。
- OA 主办域的附件不通过企业微信原生审批或企业微信附件承载;员工点击消息后必须回到 OA 目标页按 OA 权限查看。
- 发送失败不阻断主业务提交、审批、付款或归档;失败记录进入可重试状态。
5.2 Deeplink 目标
| 业务场景 | Deeplink 目标 | 要求 |
|---|---|---|
| OA 主办审批待办 | /mobile/approvals 或具体任务详情 |
点击后在 OA 内处理报销、采购、合同和财务类审批 |
| 企微主办 HR 审批 | 企业微信原生审批页 | 请假、补卡、外出、加班优先在企业微信处理,OA 同步镜像 |
| 报销提醒 | 移动报销详情或审批任务 | 展示脱敏摘要,附件和发票需按 OA 权限加载 |
| 请假/补卡/外出/加班 | 移动申请详情或审批任务 | 支持查看状态和处理待办 |
| 移动工作台 | /mobile |
作为兜底入口 |
| 绑定入口 | 个人设置或绑定页 | 仅在已账号密码登录后完成绑定 |
deeplink 必须校验目标地址白名单,避免跳转到非 OA 域名或未授权页面。
5.3 通知验收
- OA 主办待办产生后,目标审批人能收到脱敏提醒。
- OA 主办消息点击后进入 OA 对应移动页面;企微主办 HR/考勤审批在企业微信处理,OA 后续同步结果。
- 未登录或会话过期时,完成登录后应尽量回到原 deeplink 目标。
- 通知失败时业务流程仍成功,管理员可查看失败原因和重试状态。
6. 通讯录身份边界
- HRWD 已证明 OA 驱动企业微信通讯录成员创建、更新和禁用可行;WFOC 起后续主方向调整为企微/人事助手作为员工主数据源,OA 同步员工镜像、账号、角色、绑定和审计。
- HCLT 已完成公网真实写入验证:测试员工
HRWDTEST-20260517214548已完成企业微信通讯录 create/update/disable,三次同步均为wecom_contact_synced且errcode=0。 - 新员工后续目标流程为先在企微/人事助手创建,OA 通过
wecom_hr_master_sync_v1同步后自动生成员工档案、账号、默认角色和wecom_identity_bindings.external_user_id。OA 创建企微成员能力保留为管理员修复或迁移工具,不作为默认入职入口。 - OA 调岗、部门、职位、手机号、邮箱变化后,可触发企业微信成员更新;历史审批和历史业务单据不因调岗被改写。
- 离职完成后默认禁用企业微信成员,不删除成员;绑定关系和历史业务记录保留审计。
- 企业微信通讯录同步使用独立通讯录 Secret:
WECOM_CONTACT_SYNC_ENABLED、WECOM_CONTACT_SECRET、WECOM_CONTACT_DEFAULT_DEPARTMENT_ID。不得默认复用应用消息 Secret,除非企业微信后台明确该 Secret 具备通讯录写权限。 - 缺 Secret、缺默认部门或缺通讯录 API 权限时,OA 人事流程照常完成,通讯录同步记录为
SKIP/BLOCKED_BY_EXTERNAL_CONFIG或失败可重试,不伪造成成功。 - 通讯录同步记录只保存 employeeId、脱敏 externalUserId、操作、状态、错误码、重试次数和脱敏摘要;不得保存 access token、Secret、完整手机号、原始 payload 或敏感身份信息。
当前完成度:
| 项目 | 状态 | 当前口径 |
|---|---|---|
| OA 员工生命周期 | DONE |
支持入职、转正、调岗、离职 checklist、账号禁用、会话失效和审计。 |
| OA 驱动企微通讯录创建/更新/禁用 | DONE_LIVE_VERIFIED |
代码、同步记录、员工管理状态和重试入口已部署;HCLT 公网真实写入闭环通过,HRWDTEST-20260517214548 create/update/disable 均返回 errcode=0。其他环境缺 Secret、默认部门或通讯录 API 权限时仍按 SKIP/BLOCKED_BY_EXTERNAL_CONFIG 或失败可重试处理。 |
| 企微 HR 主数据同步 OA | DEPLOYED_LIVE_VERIFIED_CONTROLLED |
wecom_hr_master_sync_v1 已部署并完成受控公网验证:读取企微通讯录/人事助手,支持 dry-run/apply、同步记录、审计、People 管理入口和 QA-only runner;公网 SMOKE002 因缺手机号、邮箱和部门按 missing_required_field 跳过;最终 force_off,未执行生产真实员工批量 apply。 |
| 企业微信原生审批 | PARTIAL_REUSE_BY_WFOC |
HR/考勤员工日常审批优先复用企业微信,OA 同步按域镜像;报销、财务、采购、合同、项目等 OA 主办审批不迁移。 |
7. 打卡原始采集边界
- 企业微信打卡用于原始采集和规则执行,保留其定位、人脸识别、Wi-Fi、排班、设备和防作弊能力。
- OA 不重造打卡定位、人脸识别、Wi-Fi、排班、设备绑定、防作弊和异常判断引擎;长期无痛接管目标优先保障关键申请和审计,不复刻企微所有风控能力。
- ATTV1 新增企微打卡摘要同步、同步批次和 raw hash 留痕;WFOC/DBWFOC 后后续目标扩展为打卡规则、排班、记录、日报、月报和异常摘要按域镜像。
- 请假、补卡、外出、加班优先走企业微信原生审批;OA 同步企微审批结果并形成考勤解释。
- 企业微信不可用时,管理员人工开启
oa_hr_emergency_mode_v1,OA 应急单据带EMERGENCY标记;企微恢复后由wecom_recovery_writeback_v1执行 dry-run、自动回写和冲突清单。
REQAUD 复核后,ATTV1 已完成统一入口实现,企业微信打卡边界进一步固定为:
| 项目 | 状态 | 当前口径 |
|---|---|---|
| 企业微信打卡运营使用 | DONE |
员工继续按公司要求使用企业微信打卡,定位、人脸、Wi-Fi、设备和防作弊由企业微信侧承担。 |
| OA 同步企业微信打卡 API | PARTIAL |
同步表、批次、摘要和脱敏错误码已实现;公网真实同步取决于已授权调用打卡 API 的自建应用 Secret 和企微打卡 API 权限。默认显式 WECOM_CHECKIN_SECRET 优先;未配置时复用已授权工作台应用的 WECOM_AGENT_SECRET。 |
OA 历史 attendance_v1 极简打卡 |
FROZEN_CLOSED |
该模块已从正式入口关闭;旧表保留,旧写接口返回 409,不作为企微打卡能力。 |
| 正式考勤解释 | REPLANNED_BY_WFOC |
当前 OA 已支持请假、补卡、外出、加班审批和月度解释;后续目标改为企微审批主办、OA 按域镜像、应急接管和恢复回写。 |
7.5 接管、回写和 RuleOps
oa_hr_emergency_mode_v1默认关闭。企微不可用时,只允许管理员人工开启,并填写原因、范围、预计结束时间和责任人;系统不得因短时 API 异常完全自动切换。- 应急模式只临时开放 HR/考勤类申请:请假、补卡、外出、加班。报销、PDF OCR、付款批次、银行回单、AP 台账和代账交接不受企微故障影响,继续由 OA 主办。
wecom_recovery_writeback_v1在企微恢复后先 dry-run,生成即将回写的审批、补卡、打卡或假期调整清单;无冲突项可自动回写,冲突、权限不足、API 不支持或风险过高时进入人工确认。wecom_ruleops_v1允许 AI 读取 OA 制度和企微规则后生成建议配置、差异报告和风险提示;正式写入企微审批模板、打卡规则、排班、假期余额或人事字段前必须人工确认。- 每次 RuleOps 写入必须保存前后快照、确认人、API
errcode、失败原因、回滚建议和审计记录;不得保存 Secret、access token、完整位置、人脸数据或原始密钥材料。
7.6 DBWFOC 数据边界和按域镜像
- 企业微信成熟功能可作为 OA 流程、字段、交互和规则设计参考;参考不等于迁移数据主办方。
- 企业微信主办域镜像到 OA:通讯录/人事助手、打卡、请假、补卡、外出、加班、假期余额和 HR/考勤规则。
- OA 主办域不反向全量镜像到企业微信:报销、采购、费用、合同、项目、付款批次、AP、代账交接和审计只向企业微信发送脱敏提醒、状态和 OA 链接。
- 采购单附件、合同正文、报价、供应商资料、发票、银行回单和代账资料不进入企业微信原生审批或企业微信附件。
- 企业微信消息点击后进入 OA deeplink,完成企业微信免登录或账号绑定后回到目标页;审批动作仍在 OA 完成,服务端权限仍以 OA 为准。
7.7 WFDG 设计门禁与 POC 口径
- 企业微信/OA 后续改造必须先标注业务域主办方、主事实源、操作端、镜像方向、附件归属和审计责任。
- 企业微信同步必须具备幂等、重试、脱敏日志、审计记录和
SKIP/BLOCKED_BY_EXTERNAL_CONFIG状态;缺 Secret、可信 IP、应用可见范围、模板或 API 权限时不得写成成功。 - WAPI 后新增企微能力必须先更新或引用 企微 API 能力目录,并固定接口路径、方法、Secret 来源、权限范围和读写边界;运行时代码不得靠多个 Secret 试错。
WECOM-CAPABILITY-POC-V1是正式开发前置,能力矩阵状态固定为CAN_REUSE_NOW、NEEDS_CONFIG、NEEDS_API_POC、KEEP_OA_PRIMARY、NOT_SUPPORTED_BY_API。oa_hr_emergency_mode_v1只能由管理员人工开启;恢复后由wecom_recovery_writeback_v1先 dry-run,再对无冲突项回写,冲突、权限不足或 API 不支持进入人工确认。wecom_ruleops_v1中 AI 只负责草拟规则、差异报告和 dry-run;正式写入企微审批模板、打卡规则、排班、假期余额或人事字段前必须人工确认,并保存前后快照、确认人、APIerrcode、失败原因和回滚建议。
7.8 WDRG 开发路线图门禁
- WDRG 后,企业微信相关运行时迁移采用“路线图门禁 + 单功能 Issue CSV”,路线图事实源为 企微优先开发路线图。
- WROAD2 后阶段顺序调整为
WECOM-CAPABILITY-POC-V1->wecom_hr_master_sync_v1->runtime_first_wecom_enablement->WOUA-FIX / WECOM-RUNTIME-READY-V1->WAPC1 审批配置准备->WAPC2 请假/补卡只读 POC->WAPC2F 自动生成 POC 样件->WAPC2FLIVE live 创建与 WAPC2 自动复跑->WCBK1 回调只读 POC->WEGOV1 企微主办治理与自建留存路线修正->WACP3/WACP3R 补偿拉取 POC->WREAD1 审批可读性与误审批防护门禁->WADM1 自建留存/镜像数据模型设计->WARCH1 最小自建历史留存实现->WARCH2 正式只读历史查询->WROAD2+OPS 受控上线与每日巡检->WARCH3 归档稳定化自动巡检->WCHECK1 打卡摘要留存->WEXT1 外出/加班 dry-run->WOPS1 巡检告警降噪->WROAD2-CLOSEOUT 三天验收->WEXT1-LIVE 外出/加班测试号 live POC->WREAL1 小范围真实试用->wecom_attendance_approval_mirror_v1->oa_hr_emergency_mode_v1->wecom_recovery_writeback_v1->wecom_ruleops_v1;其中 WREAL1 只能在请假、补卡、外出、加班四类测试号证据通过后再问答启动。 WECOM-CAPABILITY-POC-V1已由 WCPC 收口,WHMS/WHMSLIVE 已完成 HR 主数据镜像实现和受控公网验证;后续不得跳过运行优先门禁和 WOUA 差异处理决策直接开发企微 HR/考勤审批镜像、OA 应急接管、恢复回写或 RuleOps 正式写入。- 运行优先阶段先利用入口、免登/绑定、脱敏消息、deeplink、通讯录 userid 清单、人事助手花名册读取和打卡读取;WOUA-FIX 已按用户确认软归档 7 个缺企微测试账号,复检
oaActiveMissingInWecom=0;剩余企微缺字段先接受不补,归档测试绑定保留审计。WRV1 用server/src/scripts/check-wecom-runtime-ready.js固化运行优先门禁,WRA1 修正 QA-only 打卡只读门禁,WMSG1 完成真实消息和 Deeplink 真机确认。报告结论只能是PASS_RUNTIME_READY、PASS_WITH_CONFIG_GAPS或SKIP/BLOCKED_BY_EXTERNAL_CONFIG。该结论仍不能直接放行深度镜像,深度考勤/审批镜像需在 WAPC1、WAPC2、WAPC2F/WAPC2FLIVE、WCBK1、WEGOV1、WACP3、WREAD1、WADM1、WARCH1、WARCH2、WROAD2+OPS、WARCH3、WCHECK1、WEXT1、WROAD2-CLOSEOUT、WEXT1-LIVE 和 WREAL1 或明确批准后再拆。 - WAPC2F 自动样件默认申请人
SMOKE002、审批人SMOKE101;两者必须 active、已绑定企微、可见、不是同一 OA 员工且不是同一企微 userid。SMOKE101不可用时不自动换人,返回配置缺口并问答确认。 - 线上缺陷、正式使用阻断、真实反馈扫尾和 QA-only 脚本维护可另开合同并行;采购、合同、报销、付款、AP、代账和高敏附件继续 OA 主办,不混入企微 HR/考勤路线。
- 本路线图只代表开发节奏和门禁,不代表任何企微 HR/考勤镜像、OA 应急接管、恢复回写或 RuleOps 运行时能力已完成。
7.9 WCP1 企业微信能力 POC 结果
2026-05-18 已完成 WECOM-CAPABILITY-POC-V1。本轮新增 QA-only 只读脚本 scripts/qa/check-wecom-capability-poc.mjs,默认不写生产数据、不改企微规则、不批量读取真实员工明细,只输出脱敏能力矩阵。部署服务器容器内 live 只读初始探测结论为 PAUSE_FOR_CONFIG,报告目录为远端 /tmp/wecom-capability-poc-wcp1/summary.json;该历史阻断已由 WCPC 复跑收口。
WCP1 当前分类:
| 能力 | WCP1 结论 | 说明 |
|---|---|---|
| 工作台应用 token 和核心配置 | CAN_REUSE_NOW |
CorpID、Agent、Secret、OAuth 等基础配置存在,access token 可获取。 |
| 通讯录 create/update/disable | CAN_REUSE_NOW |
复用 HCLT 证据:HRWDTEST-20260517214548 create/update/disable 均 errcode=0。 |
| 通讯录部门读取 | CAN_REUSE_NOW |
WCP1 曾通过工作台应用 token fallback 读部门;WAPI 后该口径被 supersede,后续通讯录读取固定使用 WECOM_CONTACT_SECRET,部门列表只作可选富化。 |
| 通讯录测试成员详情读取 | OPTIONAL_ENRICHMENT |
contact.member_read 历史返回 wecom_errcode_48009;WAPI 后成员详情只作富化,user/list_id 可读且人事助手花名册可读时不得因此阻断 WOUA/WHMS。 |
| 人事助手字段配置读取 | CAN_REUSE_NOW |
hr.fields_read 可读。 |
| 人事助手测试员工花名册读取 | NEEDS_CONFIG |
hr.staff_read 返回 wecom_errcode_60021,需将测试成员纳入应用/人事助手权限范围,或改用在职测试员工复跑。 |
| 人事助手资料更新 | NEEDS_API_POC |
属生产写接口,本轮只分类,不调用。 |
| 打卡记录和规则读取 | NEEDS_CONFIG |
远端 WECOM_CHECKIN_SYNC_ENABLED 未开启,短窗口打卡和规则读取按配置阻断记录。 |
| 审批模板、审批详情、假期余额 | PARTIAL_NEEDS_CONFIG |
WAPC2FLIVE 已生成请假/补卡 OA-POC 模板和低风险测试审批单并复跑通过;外出/加班样例、真实回调、补偿拉取和镜像数据模型仍需后续合同。 |
| 回调配置 | PASS_CALLBACK_EVENT_CONFIRMED |
WCBK1 已在部署环境配置回调 URL、Token 和 EncodingAESKey,并由企微后台保存验证;live runner 先达到 PASS_CALLBACK_URL_VERIFIED,随后 SMOKE101 同意现有 OA-POC 补卡测试单触发真实事件,报告 /app/artifacts/qa-flow/wecom-approval-callback-poc-20260519T092648Z/summary.json 记录 1 条脱敏事件。 |
| 采购/合同/报销/财务审批 | KEEP_OA_PRIMARY |
继续 OA 主办,企业微信只做脱敏消息和 OA deeplink。 |
WCP1 历史结论不是 GO_TO_HR_MASTER_SYNC,但该阻断已由 WCPC 复跑收口。WCP1 报告继续作为初始配置缺口证据保留,当前 HR 主数据镜像准入以 WCPC 结论为准。
7.10 WCPC 配置复跑口径
WCP1-CONFIG-CLOSEOUT-V1 是 WCP1 后的配置收口合同。其目标不是开发运行时功能,而是补齐或确认企业微信后台配置后复跑只读 POC。2026-05-18 已按用户要求改用既有账户并完成远端只读复跑。
已完成结果:
- 使用已有在职低风险测试号
SMOKE002/测试员工,不使用已离职/禁用的HRWDTEST-20260517214548作为主测试对象。 - 报告、Issue 和文档只记录脱敏企业微信 userid 前缀
oa_smoke***,不打印完整手机号、位置、token、Secret 或原始 payload。 - 远端报告为
/tmp/wecom-capability-poc-wcpc-smoke002/summary.json。 - 复跑结论为
status=PASS、conclusion=GO_TO_HR_MASTER_SYNC、nextStageAllowed=true、blockingCapabilities=[]。 - 状态计数为
CAN_REUSE_NOW=15、NEEDS_CONFIG=3、NEEDS_API_POC=1、KEEP_OA_PRIMARY=1、NOT_SUPPORTED_BY_API=0。 - Secret、access token、回调 Token 和 EncodingAESKey 未写入仓库、未打印到报告、未在聊天中明文传递。
- 服务器侧复跑只做临时环境变量注入,不持久修改
.env,不重启服务。
复跑准入结果:
| 能力 | 结果 |
|---|---|
contact.member_read |
CAN_REUSE_NOW,既有在职测试号读取通过。 |
hr.staff_read |
CAN_REUSE_NOW,既有在职测试号花名册读取通过。 |
checkin.records_read / checkin.rules_read |
CAN_REUSE_NOW,短窗口记录和规则读取通过;细分日报、月报、排班留到考勤镜像合同。 |
approval.vacation_quota |
CAN_REUSE_NOW。 |
approval.template_detail / approval.instance_detail |
NEEDS_CONFIG,缺审批模板 ID 和测试审批单号 sp_no;不阻断 HR 主数据镜像,但阻断考勤/审批镜像。 |
callback.config |
NEEDS_CONFIG,本轮未证明真实事件回调配置存在;真实事件回调接收、解密、幂等和入库留到 wecom_attendance_approval_mirror_v1。 |
hr.staff_update_classification |
NEEDS_API_POC,资料更新属于写接口,需单独批准后再做低风险 POC。 |
approval.oa_primary_sensitive_domains |
KEEP_OA_PRIMARY,采购、合同、报销、财务等继续 OA 主办。 |
WCPC 已达到 GO_TO_HR_MASTER_SYNC。WHMS 已承接该结论并完成 wecom_hr_master_sync_v1 本地实现、部署和受控公网验证;不得直接开发考勤/审批镜像、OA 应急接管、恢复回写或 RuleOps。
7.11 WHMS 企微 HR 主数据同步 OA
WECOM-HR-MASTER-SYNC-V1 承接 WCPC 的 GO_TO_HR_MASTER_SYNC 结论,把企业微信/人事助手作为员工主数据源的读取能力落成 OA 镜像能力。本阶段仅同步 HR 主数据,不迁移考勤/审批镜像、审批回调、恢复回写、RuleOps、HR 写企微接口、采购/合同/财务流程。
已实现范围:
- 新增 feature flag
wecom_hr_master_sync_v1,默认force_off。 - WAPI 后 Secret 口径修正为:通讯录读取使用
WECOM_CONTACT_SECRET;人事助手/花名册读取使用WECOM_AGENT_SECRET;WECOM_HR_ASSISTANT_SECRET仅保留为历史兼容项且不参与默认读取;同步批次只记录 token source,不输出 Secret。 - 新增后端管理 API:
POST /api/employees/wecom-hr-master-sync/runs、GET /api/employees/wecom-hr-master-sync/runs、GET /api/employees/wecom-hr-master-sync/runs/:id。 - 新增
WecomHrMasterSyncRun、WecomHrMasterSyncItem,记录批次、逐员工动作、脱敏 externalUserId、字段差异、失败原因、重试次数和操作人。 - People/人员管理页新增“企微 HR 主数据镜像”卡片,管理员可执行 dry-run、确认 apply、查看最近同步和失败摘要;普通员工不可见。
- QA-only runner
scripts/qa/check-wecom-hr-master-sync.mjs默认只跑列表和 dry-run;apply 必须显式传入 userids 并设置批准环境变量。
同步规则:
dry_run不创建或更新 OA 员工、账号、部门或绑定,只生成差异和同步记录。apply写入 OA 员工档案、部门映射、默认employee角色、企业微信绑定和可解析主管关系,并记录审计。- 匹配优先级:
wecom_identity_bindings.external_user_id-> 企微 userid/工号 -> 手机号 -> 邮箱。 - 缺姓名、手机号、邮箱或部门时记录
SKIP missing_required_field,不自动生成占位数据。 - 企微不在职或禁用状态记录
needs_offboarding_confirmation,不自动禁用 OA 账号;离职仍必须走 OA checklist。 - 已有 OA 员工只更新安全主数据字段:姓名、部门、职位、直属主管、手机号、邮箱和企微绑定;不覆盖银行账户、身份证、工资、合同附件或历史审批。
- 日志、报告和审计不得输出完整手机号、邮箱、userid、Secret、access token 或企微原始 payload。
当前状态:
- WHMS 已通过
WHMSLIVE部署并完成公网验证;部署时应用 migration20260518184319_wecom_hr_master_sync_v1,/ready、live smoke、public bundle 和 feature flag 基线复检通过。 - 公网验证临时开启
wecom_hr_master_sync_v1=force_on,对SMOKE002/测试员工(脱敏oa_smoke***)执行 dry-run 和显式 userids apply;WAPI 后该历史 fallback 口径已被 supersede,后续只读全量读取使用通讯录user/list_id和人事助手WECOM_AGENT_SECRET。 SMOKE002企微侧缺手机号、邮箱和部门,apply 按missing_required_field跳过,未写 OA 主数据;这符合“缺 OA 必填字段默认跳过待补”的边界,不代表真实员工批量同步已启用。- 已验证普通员工访问同步 API 返回 403;验证结束后
wecom_hr_master_sync_v1已恢复为force_off。 - WHMS 不解除考勤/审批镜像前置缺口;下一步先处理 WOUA 发现的用户一致性差异或明确 WHMS 批量同步窗口,
wecom_attendance_approval_mirror_v1暂缓到审批模板、审批单号、回调配置和打卡细项 POC 明确后再另建合同。
7.12 WRV1 企微运行优先门禁
WECOM-RUNTIME-READY-V1 把“能先运行起来”的企业微信能力收成 QA-only 门禁,不改变业务 API、schema、前端页面或企微/OA 用户资料。runner 为 server/src/scripts/check-wecom-runtime-ready.js,命令为 npm run check:wecom-runtime-ready。
检查范围:
- 工作台入口和 OAuth 配置:检查
/api/auth/wecom/config对应开关、CorpID、AgentID、Redirect URI、returnTo 白名单和 login URL。 - OA active 绑定概况:只读查询员工和
wecom_identity_bindings,报告只输出计数、员工号和脱敏 userid 前缀。 - 通讯录 userid 清单:固定
WECOM_CONTACT_SECRET和POST /cgi-bin/user/list_id;成员详情只作可选富化。 - 人事助手花名册读取:固定
WECOM_AGENT_SECRET和POST /cgi-bin/hr/get_staff_info;WECOM_HR_ASSISTANT_SECRET不作为默认读取来源。 - 打卡短窗口读取:默认
WECOM_AGENT_SECRET,仅显式配置WECOM_CHECKIN_SECRET时覆盖;WRA1 后 QA-only 只读探测不要求WECOM_CHECKIN_SYNC_ENABLED=true,该开关只控制正式考勤同步批次;缺权限、可信 IP、可见范围或 Secret 时仍记录配置阻断。 - 应用消息:默认只构建脱敏 payload;公网 live 发送必须同时指定
--send-test-message和WECOM_RUNTIME_TEST_SEND=1,内容只含标题、类型、编号、状态和 OA deeplink。 - 审批模板、测试
sp_no和真实回调已由 WAPC2FLIVE/WCBK1 在请假/补卡 OA-POC 范围内验证;外出/加班样例、补偿拉取和镜像数据模型仍阻断wecom_attendance_approval_mirror_v1。
结论口径:
| 结论 | 含义 |
|---|---|
PASS_RUNTIME_READY |
入口、OAuth、绑定、消息 dry-run、通讯录/人事助手/打卡只读链路和后续配置均可用。 |
PASS_WITH_CONFIG_GAPS |
运行优先主链路可用,但审批模板、测试 sp_no、真实回调等后续项仍缺配置。 |
SKIP/BLOCKED_BY_EXTERNAL_CONFIG |
缺 Secret、可信 IP、可见范围、授权、企微 API 权限或数据库只读能力,不能伪造成 PASS;正式同步开关未开启只记录为同步未启用,不阻断 QA-only 只读探测。 |
WRV1/WRA1 不补企微资料、不执行真实员工 WHMS 批量 apply、不配置审批模板/sp_no/真实回调、不进入考勤/审批深度镜像。WECOM_CHECKIN_SYNC_ENABLED 保留为正式同步保护开关,QA-only 运行验收只验证企微打卡 API 是否可读。WRA1 公网复跑报告 /app/artifacts/qa-flow/wecom-runtime-ready-20260518T180506Z/summary.json 为 PASS_WITH_CONFIG_GAPS,打卡只读链路可读,审批模板、测试 sp_no 和真实回调继续为 NEEDS_CONFIG。
7.13 WAPC1 企微审批配置准备
WMSG1 已完成企微应用消息实发与 Deeplink 真机确认。WAPC1 只把后续审批配置准备项写清楚,不开发真实回调、不调用企微写接口、不进入 wecom_attendance_approval_mirror_v1。
首批企微原生审批模板:
- 请假。
- 补卡。
- 外出。
- 加班。
每个模板需要管理员或后续 POC 记录:
- 企业微信审批模板 ID。
- 模板适用范围、可见范围和所属自建应用权限。
- 字段项清单、字段类型和 OA 需要镜像的字段映射意图。
- 审批人规则、转审、撤回、退回和结束状态边界。
- 是否允许附件;若允许,后续镜像只能保存低风险摘要,采购、合同、报销、发票、银行回单和高敏附件不得进入企微审批或 OA 镜像测试资料。
测试审批单和回调要求:
- 测试
sp_no必须来自低风险样例,不包含采购、合同、报销、发票、银行回单、高敏附件或真实敏感业务资料。 - 回调配置只记录
WECOM_APPROVAL_CALLBACK_URL、WECOM_CALLBACK_TOKEN、WECOM_CALLBACK_ENCODING_AES_KEY等配置项名称;不得把 Token 或 EncodingAESKey 写入仓库、文档、Issue 或聊天。 - 后续 POC 必须证明模板详情读取、审批详情读取、回调 URL 验证、事件验签、消息解密、幂等键、企业微信重试语义和补偿拉取方案。
- 批量获取审批单号只作为补偿拉取候选,先标记
NEEDS_API_POC。
7.14 WAPC2 企微审批只读 POC
WAPC2 将审批配置准备先收窄到请假和补卡两类低风险链路,新增 QA-only runner server/src/scripts/check-wecom-approval-poc.js / npm run check:wecom-approval-poc。
只读 POC 范围:
- 请假模板详情:
--template=leave:<id>。 - 补卡模板详情:
--template=missed_punch:<id>。 - 请假低风险审批详情:
--sp-no=leave:<sp_no>。 - 补卡低风险审批详情:
--sp-no=missed_punch:<sp_no>。
运行边界:
POST /cgi-bin/oa/gettemplatedetail和POST /cgi-bin/oa/getapprovaldetail固定使用WECOM_AGENT_SECRET。- 缺模板 ID 或测试
sp_no输出PARTIAL_APPROVAL_POC_NEEDS_CONFIG,不伪造成PASS_APPROVAL_POC。 - 缺 Secret、权限、可信 IP、可见范围或企微 API 错误输出
SKIP/BLOCKED_BY_EXTERNAL_CONFIG。 - 报告只输出脱敏模板 ID/
sp_no前缀、字段类型计数、审批节点计数和状态摘要,不输出表单值、附件、评论、完整sp_no或原始 payload。 - 本阶段不接真实回调、不创建 OA 镜像表、不写 OA/企微数据、不进入
wecom_attendance_approval_mirror_v1。
7.15 WADM1/WARCH1 自建留存基础设施
WADM1 后,企业微信基础设施侧的数据职责调整为“先持久化关键历史,再增强镜像查询”。WARCH1 已把请假/补卡最小审批历史留存落到 Prisma schema、回调入库、补偿拉取入库和 QA-only 离线读取 runner;WARCH2 已把已归档历史开放为正式只读 API 和 PC/移动历史页;WROAD2+OPS 再把这条链路纳入测试账号受控上线和每日巡检。WARCH3 已把巡检升级为 systemd timer 和脱敏告警;WCHECK1 已把打卡规范化明细、日/月摘要和规则快照纳入 OA 留存;WEXT1 已把外出/加班样件推进到 dry-run。
自建留存 V1 基础对象:
- 企微审批历史:请假、补卡先入
WecomApprovalArchive,保存完整外部键、规范化状态、申请人/审批人映射、时间、字段摘要和审批动作。 - 回调事件:企微 POST 回调解密后不再只落文件报告,WARCH1 默认入
WecomApprovalCallbackEvent,DB 内保存完整sp_no、template_id和approval_archive_id用于关联,以幂等键和摘要 digest 支撑重复投递识别;报告和日志只显示脱敏前缀。 - 补偿拉取:
getapprovalinfo拉取 run/item 进入WecomApprovalCompensationRun/WecomApprovalCompensationItem,用于跨时间窗口补齐漏回调;getapprovaldetail详情快照作为业务状态最终校准来源。写 OA DB 必须同时使用--persist-to-db和WECOM_ARCHIVE_WRITE=1。 - 对账 finding:漏回调、重复回调、状态不一致、样例缺失、权限阻断等进入
WecomApprovalReconcileFinding,不得在 runner 中口头吞掉。 - 打卡和人事:优先复用
WecomCheckinSyncRun、WecomCheckinRecord、WecomHrMasterSyncRun、WecomHrMasterSyncItem和WecomIdentityBinding;WARCH1 不新建平行打卡主模型,不重造企微风控。
基础设施边界:
- OA DB 可保存完整外部键用于补偿和恢复;所有日志、报告、Issue 和文档只输出脱敏前缀。
- 不保存 access token、Secret、回调 Token、EncodingAESKey、原始 XML、密文、人脸、完整位置、设备明文或无治理原始 payload。
- 企微 API 不可用时,OA 历史页应能查看已入库的历史摘要;V1 不承诺继续办理企微主办流程。
- WARCH1 的离线验证命令为
npm run check:wecom-approval-archive -- --offline --format=json,只读 OA DB,不调用企微 API;WARCH2 已新增正式只读查询 API 和 PC/移动历史页,沿用只读 OA DB、白名单输出、未映射记录仅 HR/admin/* 可见的边界,不代表完整镜像或应急办理。WROAD2/WARCH3 巡检脚本复用该离线命令,并仅在审批补偿归档步骤以WECOM_ARCHIVE_WRITE=1写 OA 留存库;WCHECK1 打卡摘要写库必须使用WECOM_CHECKIN_ARCHIVE_WRITE=1。
8. 验收场景
| 场景 | 步骤 | 预期结果 |
|---|---|---|
| 已绑定用户直达 | 员工从手机企业微信进入 海音达工作台 |
直达 /mobile 或 deeplink 目标页 |
| 未绑定回退 | 未绑定员工从企业微信进入 | 提示未绑定,可使用账号密码登录后绑定 |
| 重复绑定阻断 | 管理员或员工尝试把同一企业微信身份绑定多个员工 | 操作失败并留下审计记录 |
| 离职停用拦截 | 已停用员工从企业微信入口进入 | 不能进入 OA 业务页面 |
| OA 主办审批通知回 OA | 报销、采购、合同或财务待办产生后发送企业微信提醒 | 点击消息进入 OA 审批页,审批动作在 OA 完成 |
| 企微主办 HR 审批镜像 | 员工在企业微信提交请假、补卡、外出或加班 | OA 同步审批单、审批历史、附件、状态回调和审计镜像 |
| OA 应急接管 | 管理员人工开启应急模式后,员工在 OA 提交 HR/考勤应急申请 | 单据带 EMERGENCY 标记,进入恢复回写队列 |
| 恢复回写 | 企业微信恢复后执行 dry-run 和回写 | 成功、失败、冲突和人工确认项均可审计 |
| 报销通知脱敏 | 报销状态变化发送提醒 | 消息只有标题、编号、状态和入口,不含完整发票或附件 |
| 高敏附件边界 | 采购、合同、项目或财务事项产生企业微信提醒 | 企业微信只显示脱敏摘要和 OA 链接,不上传附件原文、不展示合同正文、报价、发票或银行回单 |
| 通知失败不阻断 | 模拟企业微信消息发送失败 | 主业务成功,通知进入失败可重试 |
| 打卡边界确认 | 员工使用企业微信打卡,OA 查看考勤相关说明 | 文档和界面不暗示 OA 已重造定位、人脸或排班 |
9. 后续开发拆分建议
- A1:企业微信配置探活和入口开关,覆盖启用、禁用、缺配置和 SKIP。
- A2:企业微信 WebView 识别和
/mobile默认入口。 - A3:企业微信 OAuth/免登与账号绑定、解绑、重复绑定阻断。
- A4:离职停用、组织权限和绑定异常拦截。
- A5:企业微信通知 provider 和失败重试,不阻断主业务。
- A6:deeplink 白名单和移动目标页回跳。
- A7:
wecom_hr_master_sync_v1,企微/人事助手员工主数据同步 OA;WHMS 已部署并完成受控公网验证,最终force_off,真实员工批量 apply 仍需单独批准。 - A8:
wecom_attendance_approval_mirror_v1,企微请假、补卡、外出、加班审批和打卡数据按域镜像;该命名承接旧口径wecom_native_approval_mirror_v1,进入前必须完成 WAPC1 配置准备和后续模板/sp_no/回调 POC。 - A9:
oa_hr_emergency_mode_v1,OA 人工接管 HR/考勤应急提交。 - A10:
wecom_recovery_writeback_v1,企微恢复后 dry-run、自动回写、失败重试和冲突清单。 - A11:
wecom_ruleops_v1,AI 草拟、人工确认、API 写入和配置快照审计。
涉及真实企业微信凭据、回调域名、可信域名、生产配置或真机验证的 Issue,必须在技术方案中写明配置项、回滚路径和无法自动化时的人工验收步骤。