WFOC 重构企微优先与OA接管需求口径

这个提交包含在:
2026-05-18 10:44:30 +08:00
父节点 bd601a6987
当前提交 f75bc1bbdc
共修改 16 个文件,包含 283 行新增和 185 行删除
+2
查看文件
@@ -40,6 +40,7 @@ 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 兼容修正的本地验证:用户确认「工作台」就是 OA 企业微信入口应用,且该应用已在企业微信打卡 API「可调用接口的应用」中授权。OA 后端调整为 `WECOM_CHECKIN_SECRET` 显式优先,未配置时复用已授权工作台应用的 `WECOM_AGENT_SECRET`,避免重复维护同一个 Secret;本地语法检查、focused 单测、文档和项目 skill 校验通过。该修正尚未部署到公网,部署后需复检企微打卡同步。
- 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`。
## 关键证据索引
@@ -122,6 +123,7 @@ DCL7 已删除本文件中 R70-R91 的长流水历史,避免旧环境、旧开
| AUTO-REMAINING-CLOSEOUT 剩余自动化收口 | 通过,结论 `GO_TO_OPERATE` | 新增 QA-only flag 恢复脚本并受控恢复 `payment_batch_v1=force_on`;`run-launch-auto-ops.sh` 报告 `artifacts/qa-flow/launch-auto-ops-20260517-193317/`,本地门禁、live readiness、PDF live OCR、正式 flag、统一考勤、付款批次常开闭环、公网移动矩阵 6 passed、企业微信渲染矩阵 8 passed;测试报销 `BX-20260517-0027` paid,票据 archived,AP 台账 paid;企微打卡同步缺后台配置按 `SKIP wecom_checkin_sync_disabled` 记录。 |
| HRWD-CONTACT-LIVE-TEST 企微通讯录公网闭环 | 通过,结论 `PASS` | 新增 QA-only runner `scripts/qa/run-hrwd-contact-live-test.mjs`;公网创建 `HRWDTEST-20260517214548` 测试员工,onboarding 触发企微 create、资料变更触发 update、offboarding checklist 触发 disable,三次同步均 `errcode=0`;OA 账号最终 archived/inactive,离职后登录 403 `AUTH_003`,普通员工同步状态权限负例和审计动作均通过;报告 `artifacts/qa-flow/hrwd-contact-live-test-20260517T134548Z/summary.json`。 |
| WCFB 企微打卡 Secret 复用 | 本地通过,待部署复检 | Issue `issues/2026-05-17_22-57-39-wecom-checkin-agent-secret-fallback.csv`;`WECOM_CHECKIN_SECRET` 显式优先,未配置时复用已授权工作台应用的 `WECOM_AGENT_SECRET`;本地 `node --check`、`attendance.test.js`、Issue CSV 校验、文档审计和 skill 校验通过。 |
| WFOC 企微优先 + OA 无痛接管需求重构 | 通过,无运行时变更 | Issue `issues/2026-05-18_10-25-18-wecom-first-oa-continuity-requirements.csv`;PRD、企业微信基础设施规约、统一审批规约、请假考勤规约、管理员手册、员工快速上手、文档索引和事实源矩阵已回写。结论只代表需求方向冻结,不代表企微审批镜像、OA 接管或恢复回写已实现。 |
## R7EP / OPS8 / QAF8 / UX8 / P2T 预检推进
+1 -1
查看文件
@@ -16,7 +16,7 @@
- 当前状态:本地门禁已闭环;R4 部署预检、D3 受控同步、D4 只读复检、R5 公网 live smoke、真实 PDF OCR、PC/自动化审批链、企业微信真机入口、个人应用消息和 deeplink 均已完成。
- 当前最大缺口:MIF7-7 已收口;若要启动 R7,必须另建 R7E 执行合同,固定试运行名单、时间窗口、回滚联系人和问题登记规则后再开始。
首轮路线保持不变:OA 是唯一业务主系统和正式审批中心;企业微信只做入口、身份、通知、deeplink 和打卡原始采集边界;不接飞书,不接企业微信原生审批。
本清单中的 A1-A8/R5/R6/R7E 证据保留当时路线:OA 是首轮主业务系统和正式审批中心,企业微信只做入口、身份、通知、deeplink 和打卡原始采集边界。当前最新产品口径已由 WFOC 覆盖:HR/考勤/行政审批优先复用企业微信,OA 做镜像、人工接管、恢复回写、财务闭环和审计中台;财务、报销、付款批次、AP 和代账交接仍由 OA 主办。
## 2. 已完成证据
+8 -8
查看文件
@@ -7,17 +7,17 @@
## 平台边界
### P0-1 OA 唯一审批中心
- `hyb-oa` 是公司唯一业务主系统和唯一审批中心。
- 报销、采购、费用、合同、请假、补卡、外出、加班、出差等正式审批,都必须在 OA 内提交、审批、留痕、归档。
- 企业微信原生审批不作为公司正式审批入口;不得出现一部分审批在企业微信、一部分审批在 OA 的割裂口径。
- 企业微信只作为基础设施:手机工作台入口、免登/绑定、通讯录身份、消息通知、打卡原始采集。
### P0-1 企微优先 + OA 镜像/接管
- WFOC 起,能用企业微信成熟能力的 HR/考勤/行政审批优先使用企业微信;OA 做完整镜像、人工接管、恢复回写、财务闭环和审计中台。
- 报销、采购、费用、合同、财务付款、AP 台账和代账交接仍由 OA 主办,在 OA 内提交、审批、留痕、归档。
- 请假、补卡、外出、加班等 HR/考勤审批优先在企业微信原生审批中提交和处理,OA 同步完整镜像;企业微信不可用时由管理员人工开启 OA 应急模式。
- 企业微信作为手机工作台入口、免登/绑定、通讯录身份、消息通知、打卡、人事助手和 HR/考勤/行政审批主操作端。
### P0-2 企业微信打卡与 OA 考勤口径
- 企业微信打卡用于原始采集,保留其定位、人脸、Wi-Fi、规则与设备能力。
- OA 后续可同步企业微信打卡原始记录,并结合 OA 内的请假、补卡、外出、加班审批形成正式考勤口径。
- 请假、补卡、外出、加班等考勤修正审批仍在 OA 完成,不走企业微信审批。
- 第一阶段不新增打卡 API 同步实现,先冻结边界,避免在审批中心收口时扩大战线。
- OA 后续同步企业微信打卡规则、排班、记录、日报、月报和 HR/考勤审批镜像,形成正式考勤口径。
- 请假、补卡、外出、加班等考勤修正正常在企业微信完成;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` 合同。
---
+13 -13
查看文件
@@ -1,13 +1,12 @@
# hyb-oa 员工快速上手(10 人以下团队版)
**当前状态(2026-05-17 / ATTV1)**:公网正式地址为 `https://oa.hyinda.com`。系统开发完成门禁结论为 `GO_TO_USE`,当前首批正式能力包括报销、PDF 发票 OCR、审批、请假、补卡/外出/加班考勤修正、采购、通知、移动/企业微信入口、财务台账、付款批次、银行回单附件和代账交接。
**当前状态(2026-05-18 / WFOC)**:公网正式地址为 `https://oa.hyinda.com`。系统开发完成门禁结论为 `GO_TO_USE`。WFOC 已冻结新的产品方向:能用企业微信成熟能力的 HR/考勤/行政审批优先使用企业微信,OA 做完整镜像、人工接管、恢复回写、财务闭环和审计中台。本轮只是需求口径调整,不代表页面入口已全部迁移完成。
## 1. 你每周主要会用到什么
- `Portal`:看公告、我的待办、我的资产、本周周报入口。
- `审批`:处理分配给你的报销、请假、采购、差旅等审批。
- `审批`:在 OA 处理报销、采购、合同、财务等 OA 主办审批;请假、补卡、外出、加班后续优先在企业微信处理。
- `团队`:更新今天是在岗、居家、外出还是出差。
- `请假`:提交并查看请假记录。
- `考勤`:查看企业微信打卡摘要、提交补卡/外出/加班修正并跟踪审批。
- `请假 / 考勤`:正常在企业微信提交请假、补卡、外出、加班并打卡;OA 后续用于查看镜像、历史和应急入口。
- `报销`:继续提交和跟踪报销。
- `周报`:每周写一次三段式周报。
- `待办`:记录和跟进个人事项。
@@ -16,7 +15,7 @@
## 2. 第一次登录后建议先做三件事
1. 检查个人资料是否正确。
2. 打开 `团队` 更新今天状态。
3. 打开 `考勤` 页面,确认日常打卡在企业微信,补卡/外出/加班解释在 OA。
3. 确认日常打卡和 HR/考勤申请优先在企业微信完成;OA 中的考勤页面后续主要用于镜像查看、历史查询和应急入口。
## 3. 今日状态怎么填
- `在岗`:今天主要在办公室。
@@ -37,33 +36,34 @@
- 完成后及时点完成,避免 Portal 一直堆积。
## 6. 审批、请假和报销
- 公司正式审批都在海音达工作台内完成,不在企业微信审批里处理。
- 当前已上线的请假、报销、采购、补卡、外出、加班等申请按 OA 页面提交;补卡只解释企业微信缺卡,不会写回企业微信。
- 报销、采购、合同和财务类事项在海音达工作台内完成。
- 请假、补卡、外出、加班等 HR/考勤事项后续优先在企业微信审批中提交和处理,OA 会同步镜像和历史。
- 如果管理员通知企业微信不可用并开启 OA 应急模式,才在 OA 中提交请假、补卡、外出或加班应急单;应急单会带 `EMERGENCY` 标记并在企微恢复后回写。
- 批准后的请假会自动反映到团队状态。
- 报销状态仍可在系统内查看,不需要额外问行政。
- 发票/OCR 正式入口保持 PDF-only;图片发票不作为当前正式 OCR 能力,图片只按普通附件处理。
- 如果报销已付款,系统会显示付款状态;银行实际付款由出纳在线下银行渠道完成。
## 7. 入职 / 离职时你会看到什么
- 入职时会有账号初始化、资产发放、制度确认等事项。
- 离职前需要归还资产并完成交接,系统会提示阻塞项。
- 入职时 HR 会优先在企业微信/人事助手维护人员资料,OA 后续同步生成账号、角色和绑定。
- 离职前需要归还资产并完成交接;企业微信和 OA 的账号状态会按流程同步停用或禁用。
## 8. 使用建议
- 每天登录先看 `Portal`
- 每周五提交周报
- 状态有变化时及时更新 `团队`
- 有通知先看站内消息,IM 只是补充提醒
- 收到企业微信审批提醒时,点开后回到 OA 页面处理。
- 收到 OA 主办审批提醒时,点开后回到 OA 页面处理;收到企业微信 HR/考勤原生审批待办时,在企业微信内处理。
- 首周遇到问题时,记录角色、页面、操作步骤和影响,不要在截图或文字里包含密码、完整票面、银行回单或敏感报价。
## 9. 从企业微信进入
- 如果公司启用了企业微信工作台入口,优先从企业微信打开海音达工作台。
- 企业微信只是入口、免登和提醒,真正填写、审批和修改仍在海音达工作台页面内完成。
- 企业微信打卡仍按公司要求使用;请假、补卡、外出、加班等解释和审批都在 OA 内提交和审批。
- 企业微信不只是入口:后续请假、补卡、外出、加班、打卡和部分人事资料优先在企业微信完成。
- OA 保留报销、财务、采购、合同、项目、镜像查询和应急接管。企业微信不可用时,以管理员通知为准临时改用 OA 应急入口。
- 如果企业微信免登失败,直接回到账号密码登录即可。
- 如果你第一次从企业微信进入但看到“尚未绑定”,请不要反复重试,先用账号密码登录,再到 `个人设置 -> 企业微信绑定` 完成绑定。
- 如果看到“登录已失效 / 已超时”,重新从企业微信工作台进入即可。
- 日常建议:手机从企业微信打开海音达工作台,PC 直接登录 OA;审批、项目更新、报销与周报都在工作台页面里完成。
- 日常建议:手机从企业微信打开海音达工作台,PC 直接登录 OA;报销、项目更新、采购和财务事项在 OA 里完成,HR/考勤事项优先在企业微信完成。
## 10. 项目怎么用
- 如果你是项目成员,优先在 `项目` 页面查看自己的里程碑、任务、风险和交付记录。
+1 -1
查看文件
@@ -84,7 +84,7 @@
- 每次只做当前 Issue 范围内的事,不顺手重构无关模块。
- 跨后端和前端的任务,先稳定后端 API / 数据契约,再接前端。
- 涉及权限、状态机、审批规则、财务状态、Prisma migration 的改动,必须写明回滚策略。
- 不在当前 MVP 首批范围内扩展预算、ERP、AI、飞书、企业微信原生审批、复杂 BPM 或重型项目管理。
- 不在当前 MVP 首批范围内扩展预算、ERP、AI 自动处理、飞书、复杂 BPM 或重型项目管理;企业微信原生审批只按 WFOC 口径用于 HR/考勤/行政审批优先复用,不迁移报销、财务、采购、合同或项目等 OA 主办流程。
- 未经确认不得重置数据库、编辑迁移历史、修改生产配置、暴露真实密钥或处理真实敏感数据。
## 3.1 只读审计和排障边界
+9 -8
查看文件
@@ -61,6 +61,7 @@
| `HR-WECOM-DIRECTORY-V1` | `issues/2026-05-17_20-00-40-hr-wecom-directory-v1.csv` | `EVIDENCE` | 人事生命周期与企业微信通讯录同步已部署并收口:ERP 未来不接入 OA;HR 大域拆分为人事生命周期和考勤两个模块;OA 驱动企微通讯录创建/更新/禁用,失败不回滚 OA 人事动作;公网端点检查显示缺通讯录配置时重试记录 `SKIP wecom_contact_sync_disabled`,不阻断 OA 人事闭环;seed-config 已改为不覆盖已有正式 feature flag,复部署后 `payment_batch_v1=force_on`、`erp_sync=force_off` |
| `HRWD-CONTACT-LIVE-TEST` | `issues/2026-05-17_21-41-43-hrwd-contact-live-test.csv` | `EVIDENCE` | 公网企微通讯录真实写入闭环已收口:`HRWDTEST-20260517214548` 测试员工完成 create/update/disable,企微 `errcode=0`,OA 员工最终 archived/inactive,登录负例、普通员工权限负例和审计动作均通过;报告 `artifacts/qa-flow/hrwd-contact-live-test-20260517T134548Z/summary.json` |
| `WCFB` | `issues/2026-05-17_22-57-39-wecom-checkin-agent-secret-fallback.csv` | `LOCAL_VERIFIED` | 企微打卡同步 Secret 兼容修正:`WECOM_CHECKIN_SECRET` 显式优先,未配置时复用已授权工作台应用的 `WECOM_AGENT_SECRET`;本地语法和 focused 单测通过,待部署后公网复检 |
| `WFOC` | `issues/2026-05-18_10-25-18-wecom-first-oa-continuity-requirements.csv` | `CURRENT` | 企微优先 + OA 无痛接管需求重构已收口:HR/考勤/行政审批优先复用企业微信,OA 做完整镜像、人工接管、恢复回写、RuleOps、财务闭环和审计中台;本轮只改需求事实源,不改运行时代码、不部署、不切换公网配置 |
旧 Issue CSV 保留为历史审计证据:不删除、不批量回写、不移动到 `docs/archive/` 或其他归档目录。新连续合同如替代旧合同,只在新合同 `Notes` 或文档索引中说明 supersedes。
@@ -68,9 +69,9 @@
| Doc_ID | Path | Category | Authority | Status | Owner | Related_Issues | Evidence | Supersedes | Last_Audited | Audit_Method | Risk | Notes |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| `IDX` | `docs/文档索引.md` | 入口索引 | 最高文档入口 | `CURRENT` | product/dev | `GOV8,QAOPS9,P2D,P2-ORG,P2-FIN-DECISION,P2-FIN-V1,P2-OCR-SAMPLE,P2Q,P2AUTO,P2AF,P2-FIN-LIVE-DECISION,P2-FIN-LIVE,PRELAUNCH,CASHIER-VOUCHER-V1,LAUNCH-DEPLOY-FINANCE,FIN-PROD-ENABLE,ACCOUNTING-HANDOFF-V1,SYSTEM-COMPLETE-GATE,LAUNCH-OPS-V1,REQ-COMPLETE-AUDIT,ATTV1,LAUNCH-AUTO-OPS-V1,AUTO-REMAINING-CLOSEOUT,HR-WECOM-DIRECTORY-V1` | `rg` | none | 2026-05-17 | `node scripts/qa/audit-docs.mjs --check-registry` | medium | 判断当前该读什么 |
| `REG` | `docs/文档事实源状态矩阵.md` | 文档台账 | 文档分类和状态事实源 | `CURRENT` | product/dev | `GOV8,QAOPS9,P2D,P2-ORG,P2-FIN-DECISION,P2-FIN-V1,P2-OCR-SAMPLE,P2Q,P2AUTO,P2AF,P2-FIN-LIVE-DECISION,P2-FIN-LIVE,PRELAUNCH,CASHIER-VOUCHER-V1,LAUNCH-DEPLOY-FINANCE,FIN-PROD-ENABLE,ACCOUNTING-HANDOFF-V1,SYSTEM-COMPLETE-GATE,LAUNCH-OPS-V1,REQ-COMPLETE-AUDIT,ATTV1,LAUNCH-AUTO-OPS-V1,AUTO-REMAINING-CLOSEOUT,HR-WECOM-DIRECTORY-V1` | `audit-docs` | none | 2026-05-17 | `audit-docs --check-registry` | medium | 判断文档权威性 |
| `PRD-MVP` | `docs/海音达OA-MVP需求规格说明书.md` | 需求事实源 | PRD 主事实源 | `CURRENT` | product | `REQ8,P2T,GOV8,HR-WECOM-DIRECTORY-V1` | Issue CSV | `docs/requirements-specification.md` | 2026-05-17 | `rg` | high | 定义做什么、不做什么和验收口径;ERP 未来不接入 OA |
| `IDX` | `docs/文档索引.md` | 入口索引 | 最高文档入口 | `CURRENT` | product/dev | `GOV8,QAOPS9,P2D,P2-ORG,P2-FIN-DECISION,P2-FIN-V1,P2-OCR-SAMPLE,P2Q,P2AUTO,P2AF,P2-FIN-LIVE-DECISION,P2-FIN-LIVE,PRELAUNCH,CASHIER-VOUCHER-V1,LAUNCH-DEPLOY-FINANCE,FIN-PROD-ENABLE,ACCOUNTING-HANDOFF-V1,SYSTEM-COMPLETE-GATE,LAUNCH-OPS-V1,REQ-COMPLETE-AUDIT,ATTV1,LAUNCH-AUTO-OPS-V1,AUTO-REMAINING-CLOSEOUT,HR-WECOM-DIRECTORY-V1,WFOC` | `rg` | none | 2026-05-18 | `node scripts/qa/audit-docs.mjs --check-registry` | medium | 判断当前该读什么 |
| `REG` | `docs/文档事实源状态矩阵.md` | 文档台账 | 文档分类和状态事实源 | `CURRENT` | product/dev | `GOV8,QAOPS9,P2D,P2-ORG,P2-FIN-DECISION,P2-FIN-V1,P2-OCR-SAMPLE,P2Q,P2AUTO,P2AF,P2-FIN-LIVE-DECISION,P2-FIN-LIVE,PRELAUNCH,CASHIER-VOUCHER-V1,LAUNCH-DEPLOY-FINANCE,FIN-PROD-ENABLE,ACCOUNTING-HANDOFF-V1,SYSTEM-COMPLETE-GATE,LAUNCH-OPS-V1,REQ-COMPLETE-AUDIT,ATTV1,LAUNCH-AUTO-OPS-V1,AUTO-REMAINING-CLOSEOUT,HR-WECOM-DIRECTORY-V1,WFOC` | `audit-docs` | none | 2026-05-18 | `audit-docs --check-registry` | medium | 判断文档权威性 |
| `PRD-MVP` | `docs/海音达OA-MVP需求规格说明书.md` | 需求事实源 | PRD 主事实源 | `CURRENT` | product | `REQ8,P2T,GOV8,HR-WECOM-DIRECTORY-V1,WFOC` | Issue CSV | `docs/requirements-specification.md` | 2026-05-18 | `rg` | high | WFOC 后定义企微优先 + OA 无痛接管;ERP 未来不接入 OA |
| `PRODUCT-SCOPE` | `docs/产品口径.md` | 需求事实源 | 产品边界事实源 | `CURRENT` | product | `REQ8,P2T` | `rg` | none | 2026-05-13 | `rg` | high | 记录已拍板产品边界 |
| `DESIGN-UI` | `docs/产品设计规则.md` | 设计事实源 | PC/移动/企业微信设计事实源 | `CURRENT` | design/frontend | `MIA7,MIF7,GOV8,DG8,DG9` | Playwright/视觉审查/DG8/DG9 | none | 2026-05-13 | `rg` | high | 页面改动必须读取;DG8 后飞书为主 UI/布局参考;DG9 后按页面分层和样板选型 |
| `DELIVERY` | `docs/开发交付与变更管理规约.md` | 开发治理 | 开发交付事实源 | `CURRENT` | dev/qa | `GOV8` | `rg` | none | 2026-05-13 | `rg` | high | Issue、review、commit 和交付规则 |
@@ -78,13 +79,13 @@
| `AGENT-PRACTICE` | `docs/Agent开发交付实践.md` | Agent 治理 | Agent 协作事实源 | `CURRENT` | dev | `GOV8,DG8` | Skill 校验 | none | 2026-05-13 | `rg` | medium | Agent 协作开发实践和设计主参考层级 |
| `AGENTS` | `AGENTS.md` | 执行硬约束 | 项目硬规则 | `CURRENT` | lead | `GOV8` | 人工核对 | none | 2026-05-13 | `rg` | high | 不可违反约束 |
| `SKILL-HYB` | `.agents/skills/hyb-oa-delivery/SKILL.md` | Skill | 项目交付 Skill | `CURRENT` | dev | `GOV8,DG8` | quick_validate | none | 2026-05-13 | `quick_validate.py` | medium | 每轮交付操作入口,UI 任务读取设计主参考层级 |
| `REQ-WF` | `docs/需求-统一审批中心规约.md` | 需求事实源 | 审批模块规约 | `CURRENT` | product/backend | `AP6,WF8` | workflow 回归 | none | 2026-05-13 | `rg` | high | 审批、催办、通知和状态流 |
| `REQ-WF` | `docs/需求-统一审批中心规约.md` | 需求事实源 | 审批模块规约 | `CURRENT` | product/backend | `AP6,WF8,WFOC` | workflow 回归 | none | 2026-05-18 | `rg` | high | OA 主办审批和企微主办 HR/考勤审批镜像边界 |
| `REQ-OCR` | `docs/需求-报销发票OCR规约.md` | 需求事实源 | OCR 模块规约 | `CURRENT` | product/backend | `RI6,OCR8,BIZ8` | OCR 回归 | none | 2026-05-13 | `rg` | high | OCR 和发票边界 |
| `RULE-REIMB` | `docs/报销发票附件规则.md` | 需求事实源 | 报销发票附件规则 | `CURRENT` | product/finance | `RI6,BIZ8` | 报销回归 | none | 2026-05-13 | `rg` | high | 报销、发票、附件细则 |
| `REQ-WECOM` | `docs/需求-企业微信基础设施规约.md` | 需求事实源 | 企业微信边界规约 | `CURRENT` | product/backend | `R7E,ORG8,WF8,ATTV1,HR-WECOM-DIRECTORY-V1` | live smoke/真机反馈/Issue CSV | none | 2026-05-17 | `rg` | high | 企业微信只做通讯录、入口、身份、通知和打卡采集基础设施,不做原生审批 |
| `REQ-WECOM` | `docs/需求-企业微信基础设施规约.md` | 需求事实源 | 企业微信边界规约 | `CURRENT` | product/backend | `R7E,ORG8,WF8,ATTV1,HR-WECOM-DIRECTORY-V1,WFOC` | live smoke/真机反馈/Issue CSV | none | 2026-05-18 | `rg` | high | 企微优先承担 HR/考勤/行政审批和人事/打卡能力,OA 镜像、接管、恢复回写和财务主办 |
| `RUNBOOK-TRIAL` | `docs/试运行与自动化验证手册.md` | 操作手册 | 试运行验证手册 | `CURRENT` | qa/ops | `R7E,QAOPS8` | live readiness | none | 2026-05-13 | `rg` | medium | 本地、公网、企业微信和真实 OCR 验证 |
| `MANUAL-ADMIN` | `docs/管理员手册.md` | 操作手册 | 管理员手册 | `CURRENT` | ops/admin | `ORG8,R7E` | 人工验收 | none | 2026-05-13 | `rg` | medium | 管理员上线和配置 |
| `MANUAL-EMPLOYEE` | `docs/员工快速上手.md` | 操作手册 | 员工手册 | `CURRENT` | product | `R7E` | 人工验收 | none | 2026-05-13 | `rg` | low | 员工侧使用说明 |
| `MANUAL-ADMIN` | `docs/管理员手册.md` | 操作手册 | 管理员手册 | `CURRENT` | ops/admin | `ORG8,R7E,WFOC` | 人工验收 | none | 2026-05-18 | `rg` | medium | 管理员上线、企微优先边界、OA 应急接管和恢复回写 |
| `MANUAL-EMPLOYEE` | `docs/员工快速上手.md` | 操作手册 | 员工手册 | `CURRENT` | product | `R7E,WFOC` | 人工验收 | none | 2026-05-18 | `rg` | low | 员工侧使用说明,HR/考勤优先企业微信 |
| `R7-DRAFT` | `docs/trialrun/R7扩大试运行草案.md` | 草案 | R7 准备材料 | `DRAFT` | product/qa | `R7E` | R7EP 报告 | none | 2026-05-13 | `rg` | medium | 不代表当前 R7E 执行状态 |
| `OPS-RUNBOOK` | `docs/trialrun/OPS7运维交接Runbook.md` | 运维草案 | OPS 准备材料 | `DRAFT` | ops | `OPS8,QAOPS8` | 只读检查 | none | 2026-05-13 | `rg` | medium | 不代表恢复演练已执行 |
| `TRIAL-REPORT` | `docs/trialrun/人工试运行报告.md` | 证据材料 | 试运行证据入口 | `EVIDENCE` | qa | `R7EP,OPS8,QAF8` | artifacts/qa-flow | none | 2026-05-13 | `rg` | medium | 只证明发生过,不直接派工 |
@@ -174,4 +175,4 @@
- `ME6-3` 代表性企业微信真机门禁已关闭。
- MIF7-1..7 与 MIF7T 已完成本地整改、公网部署、公网匿名复检和带凭据 live smoke/OCR 复检。
- R7E 真实扩大试运行阶段验收、P2 排序、R7E 收口、QAOPS8 上线硬化阶段收口、QAOPS9 上线硬化连续合同、PRELAUNCH 正式启用前公网预回归、CASHIER-VOUCHER-V1 财务闭环与银行回单附件、LAUNCH-DEPLOY-FINANCE 部署复检、FIN-PROD-ENABLE 正式常开、ACCOUNTING-HANDOFF-V1 代账交接 SOP、SYSTEM-COMPLETE-GATE 系统完成门禁、LAUNCH-OPS-V1 首周运营保障、REQ-COMPLETE-AUDIT 需求完成度复核、ATTV1 考勤统一入口、AUTO-REMAINING-CLOSEOUT 剩余自动化收口和 HRWD-CONTACT-LIVE-TEST 公网企微通讯录真实写入闭环均已完成,当前 P0/P1 阻断为 0;P2D 已完成决策分流,P2-ORG 只读巡检已完成且无需写修复合同。LAUNCH-AUTO-OPS-V1 发现的公网 `payment_batch_v1=force_off` 漂移已由 AUTOREM 恢复为 `force_on`,正式自动巡检结论为 `GO_TO_OPERATE`;`erp_sync=force_off`,ERP 未来不接入 OA,正式支付接口、图片 OCR 和银行流水导入继续不进入当前路线。ATTV1 已部署:历史 OA 自建打卡 `attendance_v1` 关闭,OA 补卡/外出/加班审批和月度考勤解释已纳入统一考勤主线;企微打卡 live 同步能力使用已授权调用打卡 API 的自建应用 Secret,`WECOM_CHECKIN_SECRET` 显式优先,未配置时可复用已授权工作台应用的 `WECOM_AGENT_SECRET`,缺配置时记录 `SKIP`。HRWD 已完成 OA 驱动企业微信通讯录同步,并通过 `HRWDTEST-20260517214548` 真实公网 create/update/disable 验证;测试成员按审计要求保留离职/禁用状态。
- R7E 真实扩大试运行阶段验收、P2 排序、R7E 收口、QAOPS8 上线硬化阶段收口、QAOPS9 上线硬化连续合同、PRELAUNCH 正式启用前公网预回归、CASHIER-VOUCHER-V1 财务闭环与银行回单附件、LAUNCH-DEPLOY-FINANCE 部署复检、FIN-PROD-ENABLE 正式常开、ACCOUNTING-HANDOFF-V1 代账交接 SOP、SYSTEM-COMPLETE-GATE 系统完成门禁、LAUNCH-OPS-V1 首周运营保障、REQ-COMPLETE-AUDIT 需求完成度复核、ATTV1 考勤统一入口、AUTO-REMAINING-CLOSEOUT 剩余自动化收口、HRWD-CONTACT-LIVE-TEST 公网企微通讯录真实写入闭环和 WFOC 需求重构均已完成,当前 P0/P1 阻断为 0;P2D 已完成决策分流,P2-ORG 只读巡检已完成且无需写修复合同。LAUNCH-AUTO-OPS-V1 发现的公网 `payment_batch_v1=force_off` 漂移已由 AUTOREM 恢复为 `force_on`,正式自动巡检结论为 `GO_TO_OPERATE`;`erp_sync=force_off`,ERP 未来不接入 OA,正式支付接口、图片 OCR 和银行流水导入继续不进入当前路线。WFOC 后 HR/考勤/行政审批优先复用企业微信,OA 目标是完整镜像、人工接管、恢复回写和 RuleOps;该方向尚未实现运行时迁移,后续必须另拆 `wecom_hr_master_sync_v1`、`wecom_native_approval_mirror_v1`、`oa_hr_emergency_mode_v1`、`wecom_recovery_writeback_v1`、`wecom_ruleops_v1`。HRWD 已完成 OA 驱动企业微信通讯录同步,并通过 `HRWDTEST-20260517214548` 真实公网 create/update/disable 验证;测试成员按审计要求保留离职/禁用状态。
+7 -5
查看文件
@@ -20,7 +20,7 @@
## 最近事实源链
R6 -> PC6 -> PA6 -> FL6 -> AP6 -> RI6 -> LP6 -> ME6/QG6 -> DG7/MRF7 -> MIA7 -> MIF7/MIF7T(公网部署与带凭据公网复检已收口) -> DG8 -> DG9 -> R7E -> FBA -> QAOPS9/P2D -> P2-ORG -> P2-FIN-DECISION -> P2-FIN-V1 -> P2-OCR-SAMPLE -> P2Q -> P2AUTO -> P2AF -> P2-FIN-LIVE-DECISION -> P2-FIN-LIVE -> PRELAUNCH -> CASHIER-VOUCHER-V1 -> LAUNCH-DEPLOY-FINANCE -> FIN-PROD-ENABLE -> ACCOUNTING-HANDOFF-V1 -> SYSTEM-COMPLETE-GATE -> LAUNCH-OPS-V1 -> REQ-COMPLETE-AUDIT -> ATTV1 -> LAUNCH-AUTO-OPS-V1 -> AUTO-REMAINING-CLOSEOUT -> HR-WECOM-DIRECTORY-V1 -> HRWD-CONTACT-LIVE-TEST -> WCFB。
R6 -> PC6 -> PA6 -> FL6 -> AP6 -> RI6 -> LP6 -> ME6/QG6 -> DG7/MRF7 -> MIA7 -> MIF7/MIF7T(公网部署与带凭据公网复检已收口) -> DG8 -> DG9 -> R7E -> FBA -> QAOPS9/P2D -> P2-ORG -> P2-FIN-DECISION -> P2-FIN-V1 -> P2-OCR-SAMPLE -> P2Q -> P2AUTO -> P2AF -> P2-FIN-LIVE-DECISION -> P2-FIN-LIVE -> PRELAUNCH -> CASHIER-VOUCHER-V1 -> LAUNCH-DEPLOY-FINANCE -> FIN-PROD-ENABLE -> ACCOUNTING-HANDOFF-V1 -> SYSTEM-COMPLETE-GATE -> LAUNCH-OPS-V1 -> REQ-COMPLETE-AUDIT -> ATTV1 -> LAUNCH-AUTO-OPS-V1 -> AUTO-REMAINING-CLOSEOUT -> HR-WECOM-DIRECTORY-V1 -> HRWD-CONTACT-LIVE-TEST -> WCFB -> WFOC。
- R6、PC6、PA6、FL6、AP6、RI6、LP6 已完成并部署。
- ME6 自动化、公网视觉矩阵和 `ME6-3` 代表性企业微信真机门禁已完成。
@@ -55,6 +55,7 @@ R6 -> PC6 -> PA6 -> FL6 -> AP6 -> RI6 -> LP6 -> ME6/QG6 -> DG7/MRF7 -> MIA7 -> M
- HR-WECOM-DIRECTORY-V1 是 HRWD 当前合同:ERP 从冻结待办改为未来不接入 OA;人事生命周期和考勤同属 HR 大域但分模块实现;OA 为员工、权限、审批和审计主事实源,企业微信作为通讯录、入口、通知和打卡采集基础设施。新增 `hr_wecom_directory_sync_v1`、企业微信通讯录同步记录、入职创建/调岗更新/离职禁用和管理员重试;缺通讯录 Secret 或 API 权限时 OA 人事闭环照常完成,同步记录为可解释 SKIP/失败。
- HRWD-CONTACT-LIVE-TEST 已完成公网企微通讯录真实写入闭环:使用 `HRWDTEST-20260517214548` 测试员工验证 OA 创建员工后由 onboarding 触发企微成员创建、资料更新触发企微 update、离职 checklist 完成后禁用 OA 账号并触发企微 disable;同步均返回 `wecom_contact_synced`、`errcode=0`,普通员工同步记录权限负例和审计动作核验通过。测试成员按约定保留离职/禁用状态,不删除。
- WCFB 是企微打卡同步 Secret 兼容修正合同:用户确认工作台应用已作为企微入口应用配置且已授权调用打卡 API;OA 后端调整为 `WECOM_CHECKIN_SECRET` 显式优先,未配置时复用已授权工作台应用的 `WECOM_AGENT_SECRET`,避免重复维护同一个 Secret。本地语法和考勤 focused 单测通过;公网需部署后复检企微打卡同步。
- WFOC 是企微优先 + OA 无痛接管需求重构合同:用户已确认 HR/考勤/行政审批优先复用企业微信成熟能力,OA 做完整镜像、人工接管、恢复回写、财务闭环和审计中台。本轮只冻结需求和事实源,不改业务代码、不部署、不切换公网配置;后续实现需拆 `wecom_hr_master_sync_v1`、`wecom_native_approval_mirror_v1`、`oa_hr_emergency_mode_v1`、`wecom_recovery_writeback_v1`、`wecom_ruleops_v1`。
## 当前活跃治理流
@@ -93,9 +94,10 @@ R6 -> PC6 -> PA6 -> FL6 -> AP6 -> RI6 -> LP6 -> ME6/QG6 -> DG7/MRF7 -> MIA7 -> M
| `ATTV1` | `issues/2026-05-17_14-59-28-attendance-unified-wecom-sync-v1.csv` | 已收口:考勤统一入口与企微打卡同步 V1 已部署并复检通过 | 关闭历史 OA 自建打卡;新增企微打卡摘要同步、补卡/外出/加班 OA 修正审批、月度解释页和移动入口;公网移动/企微矩阵 14 passed | 不用企业微信原生审批;不重造定位/人脸/Wi-Fi/设备风控;不保存完整位置、原始 payload 或人脸信息 |
| `LAUNCH-AUTO-OPS-V1` | `issues/2026-05-17_17-47-45-launch-auto-ops-v1.csv` | 阶段收口:自动化完成,结论 `PAUSE_FOR_FIX` | 正式启用后自动 runner、live flag 只读校验、考勤统一入口 live 检查、移动/企微矩阵和证据回填;报告 `artifacts/qa-flow/launch-auto-ops-20260517-175548/` | 不切换正式 flag、不部署、不接真实支付、不接 ERP;`payment_batch_v1` 当前 force_off 漂移需单独决策恢复 |
| `AUTO-REMAINING-CLOSEOUT` | `issues/2026-05-17_19-30-44-auto-remaining-closeout.csv` | 已收口:剩余自动化运营门禁通过,结论 `GO_TO_OPERATE` | 恢复正式 `payment_batch_v1=force_on`、复跑 `run-launch-auto-ops.sh`、付款批次常开闭环、移动/企微矩阵、企微同步 SKIP 证据;报告 `artifacts/qa-flow/launch-auto-ops-20260517-193317/` | 不部署、不改业务代码、不接真实支付、不接 ERP、不开放图片 OCR、不导入银行流水;企微打卡同步外部配置仍需后台配置 |
| `HR-WECOM-DIRECTORY-V1` | `issues/2026-05-17_20-00-40-hr-wecom-directory-v1.csv` | 已收口:人事生命周期与企业微信通讯录同步闭环已部署公网 | ERP 永不接入 OA;入职/调岗/资料变更/离职驱动企微通讯录创建、更新、禁用;员工管理和详情展示同步状态与重试;部署后 live smoke、HRWD 端点 SKIP 检查、公网移动/企微矩阵通过;seed 已改为不覆盖正式 flag | 不使用企业微信原生审批、不接真实支付、不开放图片 OCR、不导入银行流水;企微通讯录真实写入依赖后台 Secret、默认部门和 API 权限 |
| `HR-WECOM-DIRECTORY-V1` | `issues/2026-05-17_20-00-40-hr-wecom-directory-v1.csv` | 已收口:人事生命周期与企业微信通讯录同步闭环已部署公网 | ERP 永不接入 OA;入职/调岗/资料变更/离职驱动企微通讯录创建、更新、禁用;员工管理和详情展示同步状态与重试;部署后 live smoke、HRWD 端点 SKIP 检查、公网移动/企微矩阵通过;seed 已改为不覆盖正式 flag | 该合同不涉及企业微信原生审批迁移、不接真实支付、不开放图片 OCR、不导入银行流水;企微通讯录真实写入依赖后台 Secret、默认部门和 API 权限 |
| `HRWD-CONTACT-LIVE-TEST` | `issues/2026-05-17_21-41-43-hrwd-contact-live-test.csv` | 已收口:公网企微通讯录真实写入闭环通过 | `HRWDTEST-20260517214548` 测试员工完成 OA 创建、onboarding 企微 create、资料 update、offboarding 企微 disable、OA 禁用、登录负例、权限负例和审计核验;报告 `artifacts/qa-flow/hrwd-contact-live-test-20260517T134548Z/summary.json` | 不删除企业微信测试成员、不重置数据库、不改业务 API/schema/UI、不部署;测试成员最终保留离职/禁用状态 |
| `WCFB` | `issues/2026-05-17_22-57-39-wecom-checkin-agent-secret-fallback.csv` | 本地通过:企微打卡同步 Secret 兼容修正 | `WECOM_CHECKIN_SECRET` 显式优先;未配置时复用已授权工作台应用的 `WECOM_AGENT_SECRET`,避免重复维护同一个 Secret;本地语法、focused 单测和文档/skill 校验通过 | 不新增业务 API/schema/UI;不改变企微权限边界;部署后需公网复检打卡同步 |
| `WFOC` | `issues/2026-05-18_10-25-18-wecom-first-oa-continuity-requirements.csv` | 已收口:企微优先 + OA 无痛接管需求重构 | HR/考勤/行政审批企微优先,OA 完整镜像、人工接管、恢复回写、RuleOps 和财务主办边界;PRD、模块规约、手册、索引和事实源矩阵已回写 | 不改业务代码、不新增 API/schema/UI、不部署、不改公网配置;不代表镜像、接管或回写运行时已完成 |
旧 Issue CSV 不删除、不批量回写、不移动到归档目录。若新治理流替代旧合同,只在新 CSV 的 `Notes` 或本索引说明 supersedes,旧文件保留历史审计语义。
@@ -119,11 +121,11 @@ R6 -> PC6 -> PA6 -> FL6 -> AP6 -> RI6 -> LP6 -> ME6/QG6 -> DG7/MRF7 -> MIA7 -> M
| [文档事实源状态矩阵](./文档事实源状态矩阵.md) | 文档分类、删除恢复和冲突规则 |
| [产品设计规则](./产品设计规则.md) | PC、移动、企业微信 WebView 设计事实源;DG8 后飞书工作台/飞书审批为唯一主 UI/布局参考;DG9 后按页面分层和样板选型 |
| [产品口径](./产品口径.md) | 已拍板产品边界和业务规则 |
| [需求 - 统一审批中心规约](./需求-统一审批中心规约.md) | 审批、催办、超时提醒、审批效率 |
| [需求 - 统一审批中心规约](./需求-统一审批中心规约.md) | OA 主办审批、企微主办 HR/考勤审批镜像、催办、超时提醒、审批效率 |
| [报销发票附件规则](./报销发票附件规则.md) | 报销、发票、OCR、附件细则 |
| [需求 - 报销发票 OCR 规约](./需求-报销发票OCR规约.md) | 报销发票 OCR 模块规约 |
| [需求 - 企业微信基础设施规约](./需求-企业微信基础设施规约.md) | 企业微信入口、身份、消息、deeplink |
| [需求 - 请假考勤修正规约](./需求-请假考勤修正规约.md) | 请假、补卡、考勤修正 |
| [需求 - 企业微信基础设施规约](./需求-企业微信基础设施规约.md) | 企业微信入口、身份、消息、deeplink、HR/考勤审批、打卡、人事助手、OA 接管和恢复回写 |
| [需求 - 请假考勤修正规约](./需求-请假考勤修正规约.md) | 企微请假/补卡/外出/加班、考勤镜像、OA 应急接管和恢复回写 |
| [需求 - 采购费用审批规约](./需求-采购费用审批规约.md) | 采购、费用、附件、审批规则 |
| [需求 - 合同附件归档规约](./需求-合同附件归档规约.md) | 合同台账和附件归档边界 |
| [需求 - 项目轻管理规约](./需求-项目轻管理规约.md) | 项目轻管理边界 |
+1 -1
查看文件
@@ -2,7 +2,7 @@
**文档状态**:当前测试事实源。
**适用范围**:hyb-oa MVP 首轮开发 A3-A8,以及后续所有非微小改动。
**路线口径**:hyb-oa 是唯一业务主系统和唯一审批中心;企业微信只做入口、身份、通知和打卡原始采集;飞书和企业微信原生审批不进入当前路线。
**路线口径**:WFOC 后,HR/考勤/行政审批优先复用企业微信成熟能力,OA 做完整镜像、人工接管、恢复回写、财务闭环和审计中台;报销、PDF OCR、付款批次、AP 台账、代账交接等财务主线继续由 OA 主办;飞书不进入当前路线。
本文回答“什么时候测试、测什么、怎么判定通过、怎么记录跳过”。具体业务验收仍以主 PRD、模块规约和最新 Issue CSV 为准。
+48 -36
查看文件
@@ -27,13 +27,13 @@
### 1.1 背景
海音达需要一套适合 10 人以下科技公司的轻量 OA,用来把报销、请假、采购、费用、合同、项目资料、审批和基础行政动作集中到一个可审计、可回归、可持续迭代的系统中。系统不追求一次性替代所有办公平台,而是先解决公司内部最容易割裂、最需要留痕的业务流程。
海音达需要一套适合 10 人以下科技公司的轻量 OA,用来把报销、采购、费用、合同、项目资料、财务闭环、审计和关键行政数据集中到一个可审计、可回归、可持续迭代的系统中。WFOC 起产品方向调整为“企微优先 + OA 无痛接管”:能复用企业微信成熟功能的员工行政场景优先使用企业微信,OA 保留完整镜像、人工接管、恢复回写、财务闭环和审计中台能力。
### 1.2 总目标
- `hyb-oa` 是唯一业务主系统和唯一正式审批中心。
- 所有正式审批在 OA 内提交、审批、留痕、归档。
- 企业微信只作为基础设施:手机工作台入口、免登/绑定、通讯录身份、消息通知、打卡原始采集。
- HR/考勤/行政审批优先复用企业微信成熟能力;OA 同步完整镜像并保留人工接管和恢复回写能力。
- 报销、PDF 发票 OCR、发票查重、付款批次、银行回单、AP 台账、代账交接和财务审计继续由 OA 主办。
- 企业微信作为手机工作台入口、免登/绑定、通讯录身份、消息通知、打卡、人事助手和 HR/考勤/行政审批主操作端。
- PC 用户可直接访问 OA;手机端优先从企业微信工作台进入 OA 移动端。
- 后续开发必须先有需求事实源和 Issue CSV 执行合同,避免边想边做。
@@ -41,10 +41,22 @@
| 平台 | 定位 | 首批使用方式 | 不承担 |
| --- | --- | --- | --- |
| `hyb-oa` | 唯一业务主系统和审批中心 | 审批、报销、发票、OCR、请假、采购、合同台账、项目资料、审计归档 | 聊天、会议、在线文档协作 |
| 企业微信 | 基础设施 | 手机入口、免登/绑定、通知 deeplink、通讯录身份、打卡原始采集 | 正式审批流、财务附件主库、业务单据主库 |
| `hyb-oa` | 财务主系统、数据镜像、接管和审计中台 | 报销、发票、OCR、付款批次、银行回单、AP 台账、代账交接、采购/合同/项目轻台账、企微数据镜像和应急接管 | 重造企业微信成熟打卡、人事和 HR/考勤审批能力 |
| 企业微信 | HR/考勤/行政审批主操作端和移动入口 | 通讯录、人事助手花名册、打卡规则/排班/日报/月报、请假/补卡/外出/加班审批、假期余额、工作台入口和消息 | 财务附件主库、报销 OCR、付款批次、代账交接、OA 审计主库 |
| 飞书 | 已废弃路线 | 不进入首批实现 | 不接入身份、审批、通知、文档或项目主线 |
### 1.4 WFOC 需求分层
| 层级 | 主办方 | 目标 |
| --- | --- | --- |
| 企微主办层 | 企业微信 | 通讯录、人事助手花名册、打卡规则/排班/日报/月报、请假/补卡/外出/加班审批、假期余额。 |
| OA 镜像层 | OA | 同步企微人员、部门、审批单、打卡、规则、附件、回调和操作日志,形成可查询、可导出、可审计的完整副本。 |
| OA 接管层 | OA | 企微不可用时由管理员人工开启 `oa_hr_emergency_mode_v1`,员工通过 OA 账号密码提交 HR/考勤类应急申请。 |
| 恢复回写层 | OA + 企业微信 API | 企微恢复后由 `wecom_recovery_writeback_v1` 对应急数据执行 dry-run、自动回写、失败重试和冲突清单。 |
| 财务主办层 | OA | 报销、PDF 发票 OCR、发票查重、付款批次、银行回单、AP 台账、代账交接继续 OA 主办,不迁移到企微。 |
无痛切换是长期目标,不代表本轮已实现完整替代。后续必须按 `wecom_hr_master_sync_v1`、`wecom_native_approval_mirror_v1`、`oa_hr_emergency_mode_v1`、`wecom_recovery_writeback_v1` 和 `wecom_ruleops_v1` 分阶段拆 Issue CSV。
---
## 2. 软件开发项目流程
@@ -83,7 +95,7 @@
| 当前已实现 / 已收口 | R6 小范围试运行主链路;PC6/PA6/FL6/AP6/RI6/LP6;ME6 自动化、公网和代表性真机门禁;MIF7/MIF7T 移动信息架构与真机反馈整改;MIF7TD 公网部署、匿名复检和带凭据 live smoke/OCR。 |
| R7 必需 | 用户确认参与人、角色、时间窗口、回滚联系人、问题登记负责人和每日收口节奏;R7E 公网健康、public bundle、带凭据 live readiness、公网移动矩阵、核心业务流和账号角色只读门禁通过;阻断问题为 0。 |
| R7 后优化 | UX8 真实反馈池、iPhone 12 间距观察项、详情字段扫读性二次优化、移动采购创建能力评估、组织账号主数据治理、图片 OCR 能力、转审扩展和邮件通道完整验收。 |
| 明确不做 / 当前冻结 | ERP 未来不接入 OA;AI 自动处理、完整差旅、复杂 BPM、审批设计器、预算重型控制、企业微信原生审批继续不进入当前路线;任何一项业务扩张都必须另建里程碑和 Issue CSV。 |
| 明确不做 / 当前冻结 | ERP 未来不接入 OA;真实支付、图片 OCR、银行流水导入、完整差旅、复杂 BPM、审批设计器、预算重型控制继续不进入当前路线;AI 只允许草拟规则和 dry-run,人工确认后才能写入企微配置。企业微信原生审批从整体冻结调整为 HR/考勤/行政审批优先复用,财务和报销仍由 OA 主办。 |
### 2.3 P2T 候选优先级
@@ -91,13 +103,13 @@ P2T 只做排序和边界确认,不进入当前实现。候选项按 R7 真实
| 优先级 | 候选 | 当前边界 |
| --- | --- | --- |
| P2-1 | 人事生命周期与账号主数据治理 | 已覆盖入职、转正、调岗、离职、OA 账号和企业微信通讯录/绑定闭环;HCLT 已验证公网企微通讯录 create/update/disable 真实写入;不使用企业微信原生审批 |
| P2-1 | 企微 HR 主数据与 OA 镜像治理 | WFOC 后改为企微/人事助手为员工主数据源,OA 同步员工档案、账号、角色、绑定和审计;HCLT 仍作为 OA 写企微能力证据,后续方向是先企微后 OA |
| P2-2 | 审批与通知扩展 | 转审扩展到请假/采购/差旅拆 `W2F`;邮件通道和三渠道完整验收另决策;不引入复杂 BPM |
| P2-3 | OCR 与票据增强 | 当前试运行继续 PDF-only;图片 OCR、批量样票和异步体验需另补样票、隐私处理和 provider 回归 |
| P2-4 | 费用/预算/项目轻量增强 | 可评估费用提示和项目关联增强;预算重型控制和正式成本核算继续冻结,ERP 不再作为后续接入项 |
| P2-5 | 运维上线增强 | 备份恢复演练、SLO 门禁和正式上线准备需单独窗口;不在 R7E 预检中做真实恢复 |
ERP 已从“冻结待办”调整为“未来不接入 OA”。其他冻结项不是永久删除,而是当前 MVP/R7 不启动:AI 自动处理、完整差旅、复杂 BPM、审批设计器、预算重型控制、企业微信原生审批。
ERP 已从“冻结待办”调整为“未来不接入 OA”。其他冻结项不是永久删除,而是当前 MVP/R7 不启动:AI 自动处理、完整差旅、复杂 BPM、审批设计器、预算重型控制。企业微信原生审批不再整体冻结,HR/考勤/行政审批按 WFOC 口径优先复用。
---
@@ -118,11 +130,11 @@ ERP 已从“冻结待办”调整为“未来不接入 OA”。其他冻结项
| 优先级 | 模块 | 目标 | 主入口 | 验收口径 |
| --- | --- | --- | --- | --- |
| P0 | 统一审批中心 | 所有正式审批在 OA 内处理 | PC 审批待办、移动审批 | 能提交、审批、驳回、退回、转审、留痕 |
| P0 | 企业微信基础设施 | 手机入口、免登、通知、打卡原始采集 | 企业微信自建应用 `海音达工作台` | 手机进入 `/mobile`,通知 deeplink 回 OA |
| P0 | 人事生命周期 | 入职、转正、调岗、离职、OA 账号、权限和企业微信通讯录状态闭环 | 人员管理、员工档案 | OA 为员工主事实源;HCLT 已验证公网企微通讯录真实写入,其他环境缺配置时同步可解释 SKIP/失败并可重试 |
| P0 | 统一审批和镜像中心 | 财务、报销、采购、合同等 OA 主办审批继续在 OA;HR/考勤/行政审批改为企微主办、OA 镜像 | PC 审批待办、移动审批、企微审批镜像 | OA 主办审批可处理;企微主办审批可同步、查询、审计和应急接管 |
| P0 | 企业微信基础设施 | 手机入口、免登、通知、打卡、人事助手、HR/考勤/行政审批主操作端 | 企业微信自建应用 `海音达工作台`、企微打卡、企微审批、人事助手 | 员工优先在企微完成成熟流程,OA 获得完整镜像和审计 |
| P0 | 人事生命周期 | 企微/人事助手主源,OA 同步员工、账号、权限、绑定和离职停用 | 企业微信人事/通讯录、OA 人员管理 | 先企微后 OA;OA 可审计、可接管、可在恢复后回写 |
| P0 | 报销/发票/OCR | 员工自助报销,财务可查重和导出 | 报销、移动报销、票据中心 | 上传、OCR、查重、绑定、审批、付款闭环 |
| P0 | 请假与考勤修正审批 | 请假、补卡、外出、加班等修正都在 OA 内审批 | 请假、移动审批、团队状态 | 审批后团队状态和考勤口径不破坏 |
| P0 | 请假与考勤镜像/接管 | 请假、补卡、外出、加班优先企微审批,OA 同步完整镜像并保留应急提交 | 企业微信审批、OA 考勤镜像、OA 应急模式 | 企微正常时员工走企微;企微不可用时管理员人工开启 OA 接管 |
| P1 | 采购/费用审批 | 小团队采购和费用事项留痕 | 采购、审批待办 | 申请、附件、审批、状态更新可用 |
| P1 | 合同与附件归档 | 管合同编号、责任人、归档位置和非涉密附件 | 合同/项目资料或项目页 | 能登记、查询、关联项目和审批记录 |
| P1 | 项目轻管理 | 把费用、采购、差旅、周报挂到项目 | 项目、Portal、周报 | 能看项目事项、风险、费用摘要,不做重型排产 |
@@ -136,15 +148,14 @@ ERP 已从“冻结待办”调整为“未来不接入 OA”。其他冻结项
### 5.1 范围
OA 是公司唯一正式审批中心。以下审批必须在 OA 内提交、审批、留痕、归档:
WFOC 后审批分为两类:OA 主办审批和企微主办审批。OA 主办审批仍在 OA 内提交、审批、留痕、归档;企微主办审批在企业微信内发起和处理,OA 同步完整镜像、附件、审批历史、回调和审计,并在企微不可用时人工接管。
- 报销、费用、采购。
- 合同相关审批和合同台账维护。
- 请假、补卡、外出、加班、出差。
- 资产领用、归还、调拨、盘点中的需要留痕动作。
- 后续新增业务审批,默认也进入 OA 审批中心。
- 后续新增财务、采购、合同、项目类业务审批,默认进入 OA 审批中心。
企业微信原生审批不作为公司正式审批入口,不允许形成“一部分审批在企业微信、一部分审批在 OA”的双轨口径。
请假、补卡、外出、加班等 HR/考勤/行政审批优先复用企业微信原生审批,OA 不再重复开发成熟员工日常流程;旧 OA 提交能力只作为 `oa_hr_emergency_mode_v1` 应急入口保留。
### 5.2 审批能力
@@ -165,7 +176,7 @@ OA 是公司唯一正式审批中心。以下审批必须在 OA 内提交、审
- 审批人可在 PC 和移动端看到待办。
- 审批动作完成后,业务单据状态、审批历史、通知和审计记录一致。
- 企业微信提醒点击后回到 OA 页面处理,不能在企业微信原生审批里完成正式审批。
- OA 主办审批的企业微信提醒点击后回到 OA 页面处理;企微主办审批由企业微信处理,OA 同步结果和审计镜像。
---
@@ -212,23 +223,24 @@ OA 是公司唯一正式审批中心。以下审批必须在 OA 内提交、审
### 7.1 边界
- 企业微信打卡用于原始采集,保留其定位、人脸、Wi-Fi、排班和设备能力。
- OA 不在首批重造打卡规则、定位、人脸识别或排班引擎。
- 请假、补卡、外出、加班等考勤修正申请在 OA 内提交和审批。
- 后续可同步企业微信打卡原始记录,再结合 OA 审批形成正式考勤口径。
- 企业微信打卡用于原始采集和规则执行,保留其定位、人脸、Wi-Fi、排班、设备和防作弊能力。
- OA 不重造企业微信打卡规则、定位、人脸识别、排班或防作弊引擎。
- 请假、补卡、外出、加班等考勤修正申请优先在企业微信原生审批中提交和处理。
- OA 通过 `wecom_native_approval_mirror_v1` 同步企微审批、打卡记录、规则、日报、月报和异常摘要,形成完整镜像和考勤解释。
- 企业微信不可用时,管理员可人工开启 `oa_hr_emergency_mode_v1`,临时开放 OA 提交和审批;应急单据带 `EMERGENCY` 标记并进入恢复回写队列。
### 7.2 用户流程
- 员工在 OA 提交请假、补卡、外出或加班申请。
- 主管或 HR 在 OA 审批。
- 审批通过后,团队状态、日历和后续考勤统计使用 OA 的审批结果。
- 企业微信打卡异常不直接等于最终考勤异常,最终口径以 OA 汇总为准。
- 员工正常在企业微信提交请假、补卡、外出或加班申请。
- 主管或 HR 正常在企业微信审批;OA 同步审批详情、审批历史、附件、状态回调和假期余额。
- 审批通过后,OA 使用企微审批和打卡数据更新团队状态、日历和考勤镜像。
- 企微故障时,管理员人工开启 OA 应急模式;企微恢复后,OA 通过 `wecom_recovery_writeback_v1` dry-run 后自动回写,冲突进入人工确认。
### 7.3 验收
- 请假提交、审批、撤回、驳回后状态正确。
- 已批准请假能影响团队状态或日历展示。
- 文档和界面不引导员工去企业微信原生审批提交请假或补卡。
- 企微正常时员工优先在企业微信提交请假、补卡、外出和加班;OA 展示同步记录和应急入口状态。
### 7.4 当前完成度校正
@@ -238,7 +250,7 @@ REQAUD 复核后,ATTV1 已按“企业微信打卡、OA 审批解释”口径
| --- | --- | --- |
| 请假申请、审批、撤回、编辑和移动查看 | `DONE` | 已有 `leave_requests`、统一审批、PC/移动页面和回归证据。 |
| 请假影响团队状态/日历 | `DONE` | 已批准请假可进入团队状态和日历展示。 |
| 企业微信入口、免登/绑定、通知 deeplink 回 OA | `DONE` | 企业微信只作为入口、身份和提醒,审批动作仍回 OA。 |
| 企业微信入口、免登/绑定、通知和 HR/考勤审批 | `REPLANNED_BY_WFOC` | 企业微信继续作为入口、身份和提醒;HR/考勤/行政审批优先在企微处理,OA 同步镜像;OA 主办审批仍回 OA。 |
| 企业微信打卡运营使用 | `DONE` | 员工继续按公司要求在企业微信打卡;这是企业微信侧能力,不代表 OA 已同步打卡 API。 |
| 企业微信打卡 API 同步到 OA | `PARTIAL` | 已新增 `attendance_unified_v1` 同步批次和打卡摘要表;有已授权调用打卡 API 的自建应用 Secret/API 权限时可同步,缺配置时按 `SKIP` 记录,不伪造通过。`WECOM_CHECKIN_SECRET` 显式优先,未配置时复用已授权工作台应用的 `WECOM_AGENT_SECRET`。 |
| 员工补卡申请审批 | `DONE` | 已新增 OA 考勤修正申请,补卡只解释企微缺卡,不向企业微信写回。 |
@@ -300,16 +312,16 @@ REQAUD 复核后,ATTV1 已按“企业微信打卡、OA 审批解释”口径
### 9.3 消息通知
- 企业微信消息只做提醒,审批动作必须回到 OA 页面完成。
- OA 主办审批的企业微信消息只做提醒,审批动作回到 OA 页面完成;企微主办 HR/考勤审批在企业微信内处理,OA 同步镜像。
- 消息内容最小化:标题、业务编号、状态、处理入口。
- 发送失败应可重试,不阻断主业务提交或审批。
- 不在消息中发送合同正文、完整发票、敏感报价、银行卡、身份证等敏感内容。
### 9.4 打卡原始采集
- 企业微信打卡数据是 OA 同步的原始来源。
- `attendance_unified_v1` 只同步打卡摘要、批次、脱敏错误码和 raw hash,不保存完整位置、人脸、设备明文或原始 payload。
- 正式考勤统计必须结合 OA 的请假、补卡、外出、加班审批结果。
- 企业微信打卡数据、打卡规则、日报和月报是 OA 考勤镜像的原始来源。
- `attendance_unified_v1` 当前只同步打卡摘要、批次、脱敏错误码和 raw hash;WFOC 后续目标是扩展为打卡规则、排班、记录、日报、月报和异常摘要完整镜像。
- 正式考勤统计必须结合企微请假/补卡/外出/加班审批、OA 应急单和恢复回写结果。
---
@@ -357,7 +369,7 @@ REQAUD 复核后,ATTV1 已按“企业微信打卡、OA 审批解释”口径
首批 MVP 不做以下事项:
- 不接入飞书,不保留飞书登录、通知、审批、文档或项目管理路线。
- 不使用企业微信原生审批作为正式审批流。
- 不把企业微信原生审批用于报销、财务付款、采购、合同、项目等 OA 主办流程;HR/考勤/行政审批按 WFOC 口径优先复用企微。
- 不开发复杂 BPM 流程设计器,不做并行会签建模。
- 不依赖付费低代码平台、付费第三方应用或付费项目管理套件。
- 不重造企业微信打卡的定位、人脸识别、Wi-Fi、排班规则。
@@ -371,11 +383,11 @@ REQAUD 复核后,ATTV1 已按“企业微信打卡、OA 审批解释”口径
### 12.1 产品验收
- 老板能在 OA 中看到审批待办、项目/费用摘要和关键风险。
- 员工能在 PC 或手机端完成报销、请假、采购等核心申请。
- 审批人能在 PC 和移动端处理待办。
- 员工能在 OA 完成报销、采购等 OA 主办申请,并在企业微信完成请假、补卡、外出、加班等 HR/考勤申请。
- 审批人能在 OA 处理 OA 主办待办,并在企业微信处理 HR/考勤原生审批;OA 能同步镜像。
- 财务能完成发票查重、付款标记和导出。
- 管理员能维护人员、权限、企业微信入口和基础配置。
- 企业微信只作为入口和提醒,不产生正式审批分叉。
- 企业微信作为 HR/考勤/行政审批主操作端,OA 作为镜像和应急接管;不得产生无法对账的双轨审批。
### 12.2 流程验收
+43 -18
查看文件
@@ -1,20 +1,20 @@
# hyb-oa 管理员手册(10 人以下团队版)
**当前状态(2026-05-17 / HCLT)**:R7E、PRELAUNCH、CASHIER-VOUCHER-V1、LAUNCH-DEPLOY-FINANCE、FIN-PROD-ENABLE、ACCOUNTING-HANDOFF-V1、ATTV1、HR-WECOM-DIRECTORY-V1 和 HRWD-CONTACT-LIVE-TEST 均已收口;SYSTEM-COMPLETE-GATE 结论为 `GO_TO_USE`。公网 `payment_batch_v1=force_on`,`erp_sync=force_off`。企业微信通讯录同步已完成公网 create/update/disable 真实写入验证。公司当前无 ERP/独立财务系统,且 ERP 未来不接入 OA;财务闭环以 OA 内审批、台账、付款批次、银行对公付款回单和月度代账交接为准。
**当前状态(2026-05-18 / WFOC)**:R7E、PRELAUNCH、CASHIER-VOUCHER-V1、LAUNCH-DEPLOY-FINANCE、FIN-PROD-ENABLE、ACCOUNTING-HANDOFF-V1、ATTV1、HR-WECOM-DIRECTORY-V1 和 HRWD-CONTACT-LIVE-TEST 均已收口;SYSTEM-COMPLETE-GATE 结论为 `GO_TO_USE`。WFOC 已冻结“企微优先 + OA 无痛接管”需求方向:HR/考勤/行政审批优先复用企业微信,OA 做完整镜像、人工接管、恢复回写、财务闭环和审计中台。本轮只更新需求口径,不代表运行时代码已完成迁移。公网 `payment_batch_v1=force_on`,`erp_sync=force_off`。公司当前无 ERP/独立财务系统,且 ERP 未来不接入 OA;财务闭环以 OA 内审批、台账、付款批次、银行对公付款回单和月度代账交接为准。
## 1. 适用范围
- 适用于 `small_team_internal` 工作区模式。
- 适用于单公司、少部门、全员账号密码登录的小团队。
- 目标是把内部高频管理动作收口到 `hyb-oa`;企业微信只作为入口、通讯录账号、身份、通知和打卡底座。
- 目标是把财务、报销、审计、镜像和接管能力收口到 `hyb-oa`;企业微信优先承担通讯录、人事助手、打卡、HR/考勤/行政审批和移动入口。
## 2. 管理员每周固定动作
- 周一:查看 `审批待办`、报销/OCR 异常、请假/补卡/外出/加班审批、项目风险和本周关键付款/归档事项。
- 周一:查看 `审批待办`、报销/OCR 异常、企微 HR/考勤审批镜像、项目风险和本周关键付款/归档事项。
- 周中:处理报销退回、重复发票例外、企业微信绑定异常、人员权限和审批规则缺口。
- 周五:复核未完成审批、未付款报销、待归档合同/附件、采购/费用申请和下周请假安排。
## 3. 首次上线最小配置
1. 进入 `工作区设置`,确认产品模式为 `small_team_internal`。
2. 首批主路径优先保留:`Portal`、`审批待办`、`报销`、`票据/OCR`、`请假`、`项目`、`采购/费用`、`合同/附件`。
2. 首批主路径优先保留:`Portal`、`审批待办`、`报销`、`票据/OCR`、`项目`、`采购/费用`、`合同/附件`、企微 HR/考勤镜像和 OA 应急接管状态。请假、补卡、外出、加班的正常提交入口后续迁往企业微信。
3. `团队状态`、`周报`、`待办`、`公告`、`人员`、`资产` 可按真实试运行需要开启;`支付批次` 和 `AP 运营` 已作为财务闭环正式能力面向出纳、财务和管理员开放,普通员工不显示该入口;`预算`、`AI`、完整差旅能力仍作为备用或历史能力,ERP 不再规划接入。
4. 在 `用户管理` 中按推荐预设配置:老板 / 管理员 / 主管 / 员工。
- 正式审批组织口径:`majianyong` 配置为员工可见直属主管和 `manager`;`wangshunli` 配置为后台公司负责人 `ceo + admin`,不配置为普通 `manager`。
@@ -24,11 +24,12 @@
5. 检查功能开关:
- 建议开启:`portal_home_v1`、企业微信入口相关开关、报销/OCR、审批待办、请假、项目基础能力和 `payment_batch_v1`。
- 按需开启:`announcements_v1`、`presence_board_v1`、`weekly_report_v1`、`employee_lifecycle_v1`、`hr_wecom_directory_sync_v1`、`todo_board_v1`、`global_search_v1`。
- 后续按独立合同评估:`wecom_hr_master_sync_v1`、`wecom_native_approval_mirror_v1`、`oa_hr_emergency_mode_v1`、`wecom_recovery_writeback_v1`、`wecom_ruleops_v1`。
- 建议保留备用:`cutover_console_v1`、预算、AI 和完整差旅相关开关;`erp_sync` 保持关闭且不再作为后续接入目标。
### 3.1 ORG8 组织账号与角色边界
OA 员工账号是权限、审批、业务数据和审计的主事实源;企业微信作为通讯录账号、入口、免登、通知和打卡采集基础设施。管理员维护组织账号时,先保证 OA 员工主数据完整,再配置角色、企业微信通讯录同步和绑定状态。
WFOC 后,企微/人事助手是员工主数据源,OA 是员工镜像、账号权限、财务业务、接管状态和审计事实源。管理员维护组织账号时,先确认企微通讯录、人事助手和员工绑定状态,再检查 OA 员工镜像、角色、账号状态和应急接管配置。
最小必填主数据:
@@ -163,7 +164,31 @@ WHERE e.status = 'active'
ORDER BY e.employee_no;
```
### 3.2 正式财务闭环与代账交接
### 3.2 WFOC 企微优先与 OA 接管
正常运行时:
1. HR 先在企业微信通讯录或人事助手维护员工、部门、主管、职位、手机号、邮箱和在职状态。
2. OA 后续通过 `wecom_hr_master_sync_v1` 同步员工镜像,自动生成或更新 OA 员工档案、账号、角色、企业微信绑定和审计记录。
3. 员工请假、补卡、外出、加班优先在企业微信原生审批中提交和处理。
4. OA 后续通过 `wecom_native_approval_mirror_v1` 同步审批详情、审批历史、附件、状态回调、打卡规则、排班、记录、日报、月报和异常摘要。
5. 报销、PDF OCR、付款批次、银行回单、AP 台账和代账交接仍在 OA 内完成,不迁移到企业微信。
企微不可用时:
1. 管理员人工判断故障后开启 `oa_hr_emergency_mode_v1`,不得因短时 API 异常完全自动切换。
2. 开启时必须填写原因、影响范围、预计结束时间和责任人。
3. OA 临时开放请假、补卡、外出、加班提交和审批,所有单据带 `EMERGENCY` 标记。
4. 故障结束后关闭应急入口,执行恢复对账。
5. `wecom_recovery_writeback_v1` 先 dry-run,再对无冲突应急数据自动回写企微;冲突、权限不足、API 不支持或风险过高时进入人工确认。
RuleOps:
- `wecom_ruleops_v1` 允许 AI 草拟企微审批模板、打卡规则、排班、假期余额和人事字段配置建议。
- 正式写入前必须人工确认;每次写入保存前后快照、确认人、API `errcode`、失败原因、回滚建议和审计记录。
- 不得在报告、日志或截图中暴露 Secret、access token、完整位置、人脸数据、身份证号、完整手机号或原始密钥材料。
### 3.3 正式财务闭环与代账交接
公司当前没有 ERP 或独立财务系统,OA 不生成 ERP 实时凭证,也不接真实支付接口。正式财务闭环如下:
@@ -195,7 +220,7 @@ ORDER BY e.employee_no;
- 代账如发现金额、收款方、日期或票据状态不一致,先回查 OA 报销单、付款批次、银行回单和审计日志,再决定是否由出纳补充说明。
- 若代账方后续要求一键交接包,再另建开发合同,明确包内文件、权限、脱敏、审计和下载回滚规则。
### 3.3 首周正式使用运营
### 3.4 首周正式使用运营
首周支持分工:
@@ -249,23 +274,23 @@ ORDER BY e.employee_no;
### 4.2 转正 / 调岗
- `转正`:记录事件并将员工状态改为 `active`。
- `调岗`:记录部门、直属上级、职位调整,同时生成调岗交接 checklist;若通讯录同步已开启,会尝试更新企业微信成员资料。
- `调岗`:当前记录部门、直属上级、职位调整,同时生成调岗交接 checklist;WFOC 后目标是从企微/人事助手同步到 OA,OA 管理员修复需写原因和审计。
- 这两个动作只做管理留痕,不引入复杂审批流。
### 4.3 离职
1. 发起 `离职` 后,系统自动生成离职 checklist:资产归还、权限回收、费用与审批清理、交接说明。
2. 若员工仍有名下资产或待处理审批任务,系统不会自动完成离职。
3. checklist 完成且阻塞清零后,OA 账号会被停用并吊销现有会话,主业务入口对该账号不可再用。
4. 离职完成后系统默认尝试禁用企业微信成员,不删除企业微信成员;同步失败时保留记录并允许管理员重试。
4. 当前离职完成后系统默认尝试禁用企业微信成员,不删除企业微信成员;WFOC 后目标是企微离职/禁用状态同步到 OA,OA 禁用账号并吊销会话。
## 5. 团队状态与考勤口径
- 员工每天可在 `Portal` 或 `团队` 页更新状态:在岗 / 居家 / 外出 / 出差。
- 已批准请假会自动覆盖当天状态为 `请假`。
- 企业微信打卡只作为原始采集工具;定位、人脸、Wi-Fi 和排班规则不在 OA 内重造。
- 当前 OA 已完成请假审批、补卡/外出/加班修正审批和月度考勤解释。
- 企业微信打卡作为原始采集和规则执行工具;定位、人脸、Wi-Fi、设备和排班规则不在 OA 内重造。
- 当前 OA 已完成请假审批、补卡/外出/加班修正审批和月度考勤解释;WFOC 后这些能力默认作为历史查询和应急接管基础。
- 历史 `attendance_v1` 是 OA 极简打卡和管理员补卡能力,不等同于企业微信打卡风控;该入口已关闭,旧写接口返回可解释 409,历史表保留。
- OA 同步企业微信打卡摘要后,应结合 OA 请假、补卡、外出、加班审批形成正式考勤口径;缺企微打卡 Secret 或 API 权限时,同步批次按 `SKIP` 记录。
- 请假和考勤修正审批均在 OA 内完成,不使用企业微信原生审批,也不向企业微信写回补卡或加班结果。
- OA 后续同步企业微信打卡规则、排班、记录、日报、月报和 HR/考勤审批镜像,形成正式考勤口径;缺企微打卡 Secret 或 API 权限时,同步批次按 `SKIP` 记录。
- 请假、补卡、外出、加班正常在企业微信内完成;OA 仅在管理员开启应急模式时接管,恢复后 dry-run 并自动回写企微。
## 6. 周报与待办
- 周报固定三段:本周完成 / 当前阻塞 / 下周计划。
@@ -284,7 +309,7 @@ ORDER BY e.employee_no;
- 审批待办
## 8. 备用模块治理
- 采购/费用、合同/附件和项目轻管理属于 P1 轻量能力,可在 P0 审批、报销/OCR、请假和企业微信入口稳定后逐步开放。
- 采购/费用、合同/附件和项目轻管理属于 P1 轻量能力,可在 P0 报销/OCR、财务闭环、企微 HR/考勤镜像和企业微信入口稳定后逐步开放。
- 支付批次和 AP 运营已作为正式财务闭环开放给出纳、财务和管理员;普通员工仍不显示财务运营入口。
- 预算、AI、完整差旅、资产深度管理等保留代码和历史数据,但不作为当前 MVP 首批主路径;ERP 保持关闭,不再规划接入。
- 若短期完全不用,保持管理员可见即可,不必删除。
@@ -294,15 +319,15 @@ ORDER BY e.employee_no;
1. 先完成账号、角色、部门、企业微信自建应用入口和账号密码回退路径。
2. 再启用 `OA 统一审批中心 + 报销/发票/OCR/附件`,跑通提交、审批、退回、查重、付款和导出闭环。
3. 同步启用付款批次、AP 台账和银行回单附件,付款动作仍由出纳在 OA 外通过银行渠道完成。
4. 同步启用已完成的 `请假`、补卡、外出、加班 OA 审批和月度考勤解释;企业微信打卡仍作为原始采集和风控底座。
4. 先以企业微信作为请假、补卡、外出、加班和打卡主操作端;OA 侧按后续合同逐步启用 HR 主数据镜像、企微审批/考勤镜像、人工接管和恢复回写。
5. 在 P0 稳定后开放 P1:`采购/费用审批`、`合同/附件归档`、`项目轻管理`。
6. 最后按真实需要评估周报、团队状态、公告、人员生命周期、资产、预算、AI 和完整差旅;ERP 不进入评估队列。
6. 最后按真实需要评估周报、团队状态、公告、资产、预算、AI 和完整差旅;ERP 不进入评估队列。
## 10. 试点验收口径
- 全员都能账号密码登录;已绑定员工能从企业微信 `海音达工作台` 进入移动工作台。
- 至少 1 笔报销完成:上传发票或附件 -> OCR/查重 -> 提交 -> OA 审批 -> 财务复核/付款标记 -> 导出。
- 至少 1 个付款批次完成:出纳创建 -> 管理员复核 -> 出纳上传银行回单 -> 执行 OA 已付款标记 -> AP 台账和审计可查。
- 至少 1 条请假和 1 条考勤修正完成:员工提交 -> OA 审批 -> 月度考勤解释可查;日常打卡仍在企业微信。
- 后续 WFOC POC 至少 1 条企微请假和 1 条企微考勤修正完成:员工在企微提交 -> 企微审批 -> OA 镜像可查;应急模式另以测试窗口验证,不默认常开。
- 至少 1 个审批待办从企业微信提醒 deeplink 回到 OA 页面处理。
- P1 试点时,至少 1 条采购/费用申请、1 条合同台账、1 个项目关联事项可创建、审批或归档。
- 正式使用前至少完成一次备份可用性核对;真实恢复演练必须另建批准合同,并记录恢复后的 `/ready` 结果。
@@ -337,7 +362,7 @@ ORDER BY e.employee_no;
- `WECOM_ALLOWED_RETURN_HOSTS=oa.hyinda.com`
5. 先让管理员用账号密码登录,在 `个人设置` 完成一次绑定,再测试企业微信工作台直达;已绑定用户从手机企业微信进入时应直接看到移动工作台。
6. 若启用 OA 同步企业微信打卡数据,在企业微信打卡 API「可调用接口的应用」中授权 `海音达工作台`。OA 默认可复用 `WECOM_AGENT_SECRET`;只有单独创建考勤同步应用时才额外配置 `WECOM_CHECKIN_SECRET`。
7. 不配置企业微信原生审批模板作为正式流程;审批提醒使用企业微信消息,审批动作回到 OA 页面完成。
7. HR/考勤/行政审批后续配置企业微信原生审批模板作为主流程;报销、财务、采购、合同和项目类 OA 主办审批仍使用企业微信消息提醒并回到 OA 页面完成。
### 员工会看到的典型状态
- 未绑定:登录页会提示“当前企业微信账号尚未绑定”,回退到账号密码登录。
+1 -1
查看文件
@@ -4,7 +4,7 @@
**快照日期**:2026-03-12
**当前基线**:`P19+IM-1`、`P19+ERP-1`、`P19+ERP-2`、`P19+ERP-3`、`P19+MCP-1`、`P19+AI-1`、`P20+TRAVEL-1`、`P20+TRAVEL-2`、`P20+TRAVEL-3`、`P21+PWA-1` 与 `P21+PWA-2` 已完成;当前运行时已落地企微群机器人 + 深链 + Outbox 异步派发的一期协同适配,以及 ERP 主数据 Pull、报销付款凭证切片、采购双阶段 journal / 归档摘要出站、资产台账摘要出站、Postgres MCP 只读工具基线、报销 / 采购 / 资产详情页 AI 只读建议挂件、差旅申请主单 / 行程段 / 审批预算锁定 / `travel_orders` 关联入站、混合双轨对公支付闭环与批次级对账摘要桥的三期差旅基线,以及浏览器 PWA 下的移动资产扫码、盘点快捷录入与离线队列重放、移动审批 deep link 直达、本地会话快照离线守卫与审批草稿重放。
**目标**:在保持核心域稳定的前提下,冻结 ERP / IM / AI / MCP / TRAVEL / PWA 的长期边界,并记录 IM 一期、ERP 三期、AI 一期、差旅三期与 PWA 两期的已实现范围、禁入规则以及 R10 主线闭环后的固定收口结论。
**当前路线说明**:2026-05-17 HRWD 后,ERP 从“冻结待办”调整为“未来不接入 OA”;财务闭环固定为 OA 内审批/台账/付款批次/银行回单 + 月度代账交接。2026-05-09 之后首批 MVP 固定为 `hyb-oa` 唯一审批中心 + 企业微信基础设施。飞书路线已废弃;钉钉、小程序、外部 IM 回调审批和付费第三方套件不进入首批。
**当前路线说明**:2026-05-17 HRWD 后,ERP 从“冻结待办”调整为“未来不接入 OA”;财务闭环固定为 OA 内审批/台账/付款批次/银行回单 + 月度代账交接。2026-05-18 WFOC 后,HR/考勤/行政审批优先复用企业微信成熟能力,OA 做完整镜像、人工接管、恢复回写、财务闭环和审计中台;财务、报销、付款批次、AP 和代账交接继续由 OA 主办。飞书路线已废弃;钉钉、小程序、外部 IM 回调审批和付费第三方套件不进入首批。
**不得误读**:本文是技术参考和历史证据,不作为当前 MVP 扩大 ERP、AI、TRAVEL、PWA 或外部 IM 适配范围的依据;ERP 相关历史实现和接口不代表后续路线,不再规划对接外部 ERP。
## 1. 总体原则
+56 -27
查看文件
@@ -6,7 +6,7 @@
**上级事实源**:[海音达OA-MVP需求规格说明书](./海音达OA-MVP需求规格说明书.md)
**相关事实源**:[需求 - 统一审批中心规约](./需求-统一审批中心规约.md)
本规约细化企业微信在 `hyb-oa` 中的基础设施边界、入口、免登/绑定、通讯录身份、消息通知、deeplink 和打卡原始采集要求。后续企业微信相关开发必须先从本规约拆分 Issue CSV,再进入技术方案和代码实现。
本规约细化企业微信在 `hyb-oa` 中的基础设施边界、入口、免登/绑定、通讯录身份、消息通知、deeplink、打卡、人事助手、原生审批、OA 镜像、人工接管和恢复回写要求。WFOC 起产品方向调整为“企微优先 + OA 无痛接管”:能用企业微信成熟能力的 HR/考勤/行政审批优先使用企业微信,OA 做完整镜像、备份接管、财务闭环和审计中台。后续企业微信相关开发必须先从本规约拆分 Issue CSV,再进入技术方案和代码实现。
---
@@ -14,19 +14,33 @@
### 1.1 目标
- 企业微信作为 `hyb-oa` 的手机工作台入口、通讯录账号、身份辅助、消息通知和打卡原始采集底座。
- 企业微信作为 `hyb-oa` 的手机工作台入口、通讯录账号、身份辅助、消息通知、打卡、人事助手和 HR/考勤/行政审批主操作端。
- 员工在手机企业微信中进入唯一自建应用 `海音达工作台`,默认落到 OA 移动端。
- 企业微信消息只做提醒和跳转,审批动作、业务填写、附件查看和正式留痕都在 OA 内完成。
- 企业微信打卡只作为原始采集来源,后续结合 OA 请假、补卡、外出、加班审批形成正式考勤口径。
- OA 主办的报销、财务、采购、合同和项目类审批仍由企业微信消息提醒并 deeplink 回 OA 处理。
- HR/考勤/行政审批优先复用企业微信原生审批和打卡能力,OA 同步完整镜像、附件、审批历史、规则快照和审计记录。
- 企业微信不可用时,由管理员人工开启 OA HR/考勤应急模式;企微恢复后,OA 对应急数据执行 dry-run、自动回写、失败重试和冲突清单。
### 1.2 不做范围
- 不使用企业微信原生审批作为公司正式审批流。
- 不把企业微信聊天、文件或审批记录作为财务附件主库、业务单据主库或正式审计事实源。
- 不把企业微信聊天、文件或审批记录作为财务附件主库、报销 OCR 主库、付款批次主库或代账交接主库。
- OA 不重造企业微信打卡采集和风控;ATTV1 起只同步企微打卡摘要并做 OA 考勤解释。
- 首批不在 OA 内重造企业微信打卡的定位、人脸识别、Wi-Fi、排班、设备和防作弊规则。
- 首批不在 OA 内重造企业微信打卡的定位、人脸识别、Wi-Fi、排班、设备和防作弊规则;长期无痛接管目标也不要求复刻所有企微风控细节。
- 不接入飞书、钉钉或其他办公平台作为首批入口。
### 1.3 WFOC 能力分层
| 能力 | 企微能力 | OA 使用程度 | 当前状态 |
| --- | --- | --- | --- |
| 通讯录 | 成员创建、读取、更新、禁用或删除 | 近期已验证 OA 写企微;后续改为企微主源同步 OA,OA 保留修复和审计 | `CAN_REUSE` |
| 人事助手 | 员工字段配置、花名册读取、花名册更新 | 作为员工主数据源,驱动 OA 员工、账号、角色、绑定和状态镜像 | `NEEDS_API_POC` |
| 打卡 | 打卡记录、员工规则、日报、月报、排班、补卡、规则管理 | 企微主办规则和采集,OA 同步完整镜像和应急对账 | `CAN_REUSE` |
| 审批 | 模板详情、提交审批、审批状态回调、审批详情、模板创建/更新、假期余额 | HR/考勤/行政审批企微主办,OA 同步镜像;OA 主办财务和报销审批不迁移 | `NEEDS_API_POC` |
| 工作台和消息 | 自建应用入口、应用消息、deeplink | 继续作为 OA 移动入口和通知渠道 | `CAN_REUSE` |
| 财务/报销 | 企微不提供本项目需要的 PDF OCR、付款批次、银行回单和代账闭环 | OA 主办 | `KEEP_OA_PRIMARY` |
| 真实支付、ERP、图片 OCR、银行流水导入 | 非本路线目标 | 不进入当前路线 | `NOT_IN_SCOPE` |
官方能力依据包括企业微信开发者中心及文档路径:通讯录创建成员 `90195`,打卡概述 `90261`,获取打卡记录 `90262`,获取员工打卡规则 `90263`,审批概述 `91854`,提交审批申请 `91853`,获取审批详情 `91983`,人事助手概述 `99130`,员工字段配置 `99131`,花名册读取 `99132`,花名册更新 `99133`。真实接口权限、回调配置和可调用应用范围必须在后续 POC 合同中以 `NEEDS_CONFIG` 或 `SKIP/BLOCKED_BY_EXTERNAL_CONFIG` 记录。
---
## 2. 角色与权限
@@ -34,12 +48,12 @@
| 角色 | 使用目标 | 可做动作 | 权限边界 |
| --- | --- | --- | --- |
| 员工 | 从手机进入 OA、接收提醒、完成绑定 | 进入移动工作台、绑定企业微信身份、点击消息 deeplink、查看本人相关业务 | 不能通过企业微信绕过 OA 权限 |
| 审批人 | 在手机端收到待办提醒并回 OA 处理 | 点击通知进入 OA 审批页、在 OA 内审批 | 不能在企业微信原生审批里完成正式审批 |
| 管理员/HR | 管理入口、人员、通讯录同步、绑定异常和离职停用 | 配置可见范围、协助绑定、触发通讯录创建/更新/禁用、处理离职停用、查看通知失败 | 不得手工把一个企业微信身份绑定到多个员工;通讯录同步失败不得回滚 OA 人事主数据 |
| 系统管理员 | 维护企业微信应用配置和消息通道 | 配置 CorpID、AgentID、回调、可信域名、消息开关和重试策略 | 不处理业务审批,不暴露 secret |
| 审批人 | 在手机端处理企微主办审批或从消息回 OA 处理 OA 主办审批 | HR/考勤/行政审批在企微处理;财务、报销、采购、合同等 OA 主办审批回 OA 处理 | 不得把企微 HR 审批结果当作财务付款或报销依据,必须等 OA 镜像和财务规则确认 |
| 管理员/HR | 管理入口、人员、通讯录同步、绑定异常、离职停用和应急接管 | 配置可见范围、协助绑定、同步企微主数据、查看镜像状态、人工开启/关闭 OA 应急模式 | 不得手工把一个企业微信身份绑定到多个员工;不得无审计开启应急入口或静默覆盖企微数据 |
| 系统管理员 | 维护企业微信应用配置、消息通道、回调和 RuleOps | 配置 CorpID、AgentID、Secret、回调、可信域名、消息开关、重试策略和规则写入权限 | 不处理业务审批,不暴露 secret;AI 规则建议必须人工确认后才能写入企微 |
| 财务/老板 | 接收关键待办或状态提醒 | 点击 deeplink 回 OA 查看或处理 | 消息中不得出现完整发票、合同正文、敏感报价、银行卡、身份证 |
OA 是员工、账号、角色、数据范围、审批任务和审计的主事实源。企业微信身份和通讯录账号服务于入口、通知、打卡采集和移动工作台,不替代 OA 权限判断。
WFOC 后,企微/人事助手是 HR 员工主数据源;OA 是员工镜像、账号权限、财务业务、接管状态、审计和导出事实源。企业微信身份和通讯录账号服务于入口、通知、打卡采集、HR/考勤审批和移动工作台,但 OA 仍负责自己的权限判断、财务动作和审计边界。
---
@@ -122,7 +136,8 @@ OA 是员工、账号、角色、数据范围、审批任务和审计的主事
| 业务场景 | Deeplink 目标 | 要求 |
| --- | --- | --- |
| 审批待办 | `/mobile/approvals` 或具体任务详情 | 点击后在 OA 内处理审批 |
| OA 主办审批待办 | `/mobile/approvals` 或具体任务详情 | 点击后在 OA 内处理报销、采购、合同和财务类审批 |
| 企微主办 HR 审批 | 企业微信原生审批页 | 请假、补卡、外出、加班优先在企业微信处理,OA 同步镜像 |
| 报销提醒 | 移动报销详情或审批任务 | 展示脱敏摘要,附件和发票需按 OA 权限加载 |
| 请假/补卡/外出/加班 | 移动申请详情或审批任务 | 支持查看状态和处理待办 |
| 移动工作台 | `/mobile` | 作为兜底入口 |
@@ -132,8 +147,8 @@ deeplink 必须校验目标地址白名单,避免跳转到非 OA 域名或未
### 5.3 通知验收
- 待办产生后,目标审批人能收到脱敏提醒。
- 点击消息后进入 OA 对应移动页面,而不是企业微信原生审批。
- OA 主办待办产生后,目标审批人能收到脱敏提醒。
- OA 主办消息点击后进入 OA 对应移动页面;企微主办 HR/考勤审批在企业微信处理,OA 后续同步结果。
- 未登录或会话过期时,完成登录后应尽量回到原 deeplink 目标。
- 通知失败时业务流程仍成功,管理员可查看失败原因和重试状态。
@@ -141,9 +156,9 @@ deeplink 必须校验目标地址白名单,避免跳转到非 OA 域名或未
## 6. 通讯录身份边界
- HRWD 起,OA 驱动企业微信通讯录成员创建、更新和禁用;OA 员工表仍是权限、审批、业务数据和审计的主事实源。
- HRWD 已证明 OA 驱动企业微信通讯录成员创建、更新和禁用可行;WFOC 起后续主方向调整为企微/人事助手作为员工主数据源,OA 同步员工镜像、账号、角色、绑定和审计。
- HCLT 已完成公网真实写入验证:测试员工 `HRWDTEST-20260517214548` 已完成企业微信通讯录 create/update/disable,三次同步均为 `wecom_contact_synced` 且 `errcode=0`。
- 新员工在 OA 创建账号和入职记录后,可在 `hr_wecom_directory_sync_v1` 开启且配置完整时同步创建企业微信成员,并写入 `wecom_identity_bindings.external_user_id`。
- 新员工后续目标流程为先在企微/人事助手创建,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 具备通讯录写权限。
@@ -156,17 +171,18 @@ deeplink 必须校验目标地址白名单,避免跳转到非 OA 域名或未
| --- | --- | --- |
| OA 员工生命周期 | `DONE` | 支持入职、转正、调岗、离职 checklist、账号禁用、会话失效和审计。 |
| OA 驱动企微通讯录创建/更新/禁用 | `DONE_LIVE_VERIFIED` | 代码、同步记录、员工管理状态和重试入口已部署;HCLT 公网真实写入闭环通过,`HRWDTEST-20260517214548` create/update/disable 均返回 `errcode=0`。其他环境缺 Secret、默认部门或通讯录 API 权限时仍按 `SKIP/BLOCKED_BY_EXTERNAL_CONFIG` 或失败可重试处理。 |
| 企业微信原生审批 | `FROZEN` | 不作为正式审批流,入离职、请假、补卡、外出、加班审批均在 OA 内留痕。 |
| 企微 HR 主数据同步 OA | `PLANNED_BY_WFOC` | 后续以 `wecom_hr_master_sync_v1` 拆实现合同,员工主数据从企微/人事助手同步到 OA。 |
| 企业微信原生审批 | `PARTIAL_REUSE_BY_WFOC` | HR/考勤/行政审批优先复用企业微信,OA 同步完整镜像;报销、财务、采购、合同等 OA 主办审批不迁移。 |
---
## 7. 打卡原始采集边界
- 企业微信打卡用于原始采集,保留其定位、人脸识别、Wi-Fi、排班和设备能力。
- OA 首批不重造打卡定位、人脸识别、Wi-Fi、排班、设备绑定、防作弊和异常判断引擎。
- ATTV1 新增企微打卡摘要同步、同步批次和 raw hash 留痕;缺已授权自建应用 Secret 或 API 权限时同步批次记录 `SKIP`。若工作台应用已在企业微信打卡 API「可调用接口的应用」中授权,OA 可复用现有 `WECOM_AGENT_SECRET`;`WECOM_CHECKIN_SECRET` 仅作为单独考勤同步应用的显式覆盖。
- OA 把企业微信打卡摘要与 OA 请假、补卡、外出、加班审批结果合并,形成正式考勤解释。
- 企业微信打卡异常不直接等于最终考勤异常;最终解释必须结合 OA 审批记录。
- 企业微信打卡用于原始采集和规则执行,保留其定位、人脸识别、Wi-Fi、排班、设备和防作弊能力。
- OA 不重造打卡定位、人脸识别、Wi-Fi、排班、设备绑定、防作弊和异常判断引擎;长期无痛接管目标优先保障关键申请和审计,不复刻企微所有风控能力。
- ATTV1 新增企微打卡摘要同步、同步批次和 raw hash 留痕;WFOC 后后续目标扩展为打卡规则、排班、记录、日报、月报和异常摘要完整镜像。
- 请假、补卡、外出、加班优先走企业微信原生审批;OA 同步企微审批结果并形成考勤解释。
- 企业微信不可用时,管理员人工开启 `oa_hr_emergency_mode_v1`,OA 应急单据带 `EMERGENCY` 标记;企微恢复后由 `wecom_recovery_writeback_v1` 执行 dry-run、自动回写和冲突清单。
REQAUD 复核后,ATTV1 已完成统一入口实现,企业微信打卡边界进一步固定为:
@@ -175,7 +191,15 @@ REQAUD 复核后,ATTV1 已完成统一入口实现,企业微信打卡边界
| 企业微信打卡运营使用 | `DONE` | 员工继续按公司要求使用企业微信打卡,定位、人脸、Wi-Fi、设备和防作弊由企业微信侧承担。 |
| OA 同步企业微信打卡 API | `PARTIAL` | 同步表、批次、摘要和脱敏错误码已实现;公网真实同步取决于已授权调用打卡 API 的自建应用 Secret 和企微打卡 API 权限。默认显式 `WECOM_CHECKIN_SECRET` 优先;未配置时复用已授权工作台应用的 `WECOM_AGENT_SECRET`。 |
| OA 历史 `attendance_v1` 极简打卡 | `FROZEN_CLOSED` | 该模块已从正式入口关闭;旧表保留,旧写接口返回 409,不作为企微打卡能力。 |
| 正式考勤解释 | `DONE` | OA 已支持请假、补卡、外出、加班审批和月度解释;不向企业微信原生审批或补卡接口写回。 |
| 正式考勤解释 | `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、完整位置、人脸数据或原始密钥材料。
---
@@ -187,7 +211,10 @@ REQAUD 复核后,ATTV1 已完成统一入口实现,企业微信打卡边界
| 未绑定回退 | 未绑定员工从企业微信进入 | 提示未绑定,可使用账号密码登录后绑定 |
| 重复绑定阻断 | 管理员或员工尝试把同一企业微信身份绑定多个员工 | 操作失败并留下审计记录 |
| 离职停用拦截 | 已停用员工从企业微信入口进入 | 不能进入 OA 业务页面 |
| 审批通知回 OA | 审批待办产生后发送企业微信提醒 | 点击消息进入 OA 审批页,审批动作在 OA 完成 |
| OA 主办审批通知回 OA | 报销、采购、合同或财务待办产生后发送企业微信提醒 | 点击消息进入 OA 审批页,审批动作在 OA 完成 |
| 企微主办 HR 审批镜像 | 员工在企业微信提交请假、补卡、外出或加班 | OA 同步审批单、审批历史、附件、状态回调和审计镜像 |
| OA 应急接管 | 管理员人工开启应急模式后,员工在 OA 提交 HR/考勤应急申请 | 单据带 `EMERGENCY` 标记,进入恢复回写队列 |
| 恢复回写 | 企业微信恢复后执行 dry-run 和回写 | 成功、失败、冲突和人工确认项均可审计 |
| 报销通知脱敏 | 报销状态变化发送提醒 | 消息只有标题、编号、状态和入口,不含完整发票或附件 |
| 通知失败不阻断 | 模拟企业微信消息发送失败 | 主业务成功,通知进入失败可重试 |
| 打卡边界确认 | 员工使用企业微信打卡,OA 查看考勤相关说明 | 文档和界面不暗示 OA 已重造定位、人脸或排班 |
@@ -202,8 +229,10 @@ REQAUD 复核后,ATTV1 已完成统一入口实现,企业微信打卡边界
- A4:离职停用、组织权限和绑定异常拦截。
- A5:企业微信通知 provider 和失败重试,不阻断主业务。
- A6:deeplink 白名单和移动目标页回跳。
- A7:通讯录辅助字段和后续同步边界。
- A8:企业微信打卡 live 同步配置和权限稳定化,缺配置时继续按 `SKIP` 记录。
- A9:企业微信真机 smoke 清单,覆盖工作台入口、绑定、通知和回跳。
- A7:`wecom_hr_master_sync_v1`,企微/人事助手员工主数据同步 OA。
- A8:`wecom_native_approval_mirror_v1`,企微请假、补卡、外出、加班审批和打卡数据完整镜像。
- A9:`oa_hr_emergency_mode_v1`,OA 人工接管 HR/考勤应急提交。
- A10:`wecom_recovery_writeback_v1`,企微恢复后 dry-run、自动回写、失败重试和冲突清单。
- A11:`wecom_ruleops_v1`,AI 草拟、人工确认、API 写入和配置快照审计。
涉及真实企业微信凭据、回调域名、可信域名、生产配置或真机验证的 Issue,必须在技术方案中写明配置项、回滚路径和无法自动化时的人工验收步骤。
+35 -24
查看文件
@@ -5,7 +5,7 @@
**状态**:模块级开发规约
**上级事实源**:[海音达OA-MVP需求规格说明书](./海音达OA-MVP需求规格说明书.md)
本规约细化 `hyb-oa` 统一审批中心的产品边界、角色权限、状态模型、异常规则、留痕要求和验收场景。后续审批相关开发必须先从本规约拆分 Issue CSV,再进入技术方案和代码实现。
本规约细化 `hyb-oa` 审批中心和企业微信原生审批镜像的产品边界、角色权限、状态模型、异常规则、留痕要求和验收场景。WFOC 起,审批按主办方分层:报销、财务、采购、合同和项目类审批继续由 OA 主办;HR/考勤/行政审批优先由企业微信主办,OA 同步完整镜像并保留人工接管和恢复回写能力。后续审批相关开发必须先从本规约拆分 Issue CSV,再进入技术方案和代码实现。
---
@@ -13,31 +13,41 @@
### 1.1 目标
- `hyb-oa` 是公司唯一业务主系统和唯一正式审批中心。
- 所有正式审批在 OA 内提交、审批、留痕、归档。
- PC、移动端和企业微信入口看到的是同一批审批任务和同一套审批记录。
- 企业微信只做入口、身份、通知和 deeplink;审批动作必须回到 OA 页面完成。
- R5 已在公网验证企业微信工作台入口、免登录、个人应用消息通知和移动审批回流;R6 之后继续沿用“OA 内审批、企业微信提醒回流”的正式口径。
- `hyb-oa` 是财务审批、报销、采购、合同、项目和审计镜像中心。
- HR/考勤/行政审批优先复用企业微信原生审批;OA 同步审批单、审批历史、附件、状态回调和审计镜像。
- PC、移动端和企业微信入口应能区分 OA 主办审批、企微主办审批镜像和 OA 应急接管单据。
- 企业微信消息继续作为 OA 主办审批的提醒和 deeplink;企微主办审批在企业微信内完成,OA 负责镜像和恢复对账。
- 企微不可用时,管理员可人工开启 `oa_hr_emergency_mode_v1`,临时由 OA 接管 HR/考勤应急审批;企微恢复后通过 `wecom_recovery_writeback_v1` 回写和对账。
### 1.2 适用对象
首批及后续默认纳入 OA 审批中心的正式审批包括:
首批及后续默认纳入 OA 主办审批中心的正式审批包括:
- 报销审批。
- 请假、补卡、外出、加班、出差等考勤相关审批。
- 采购审批。
- 费用审批。
- 合同审批、合同变更审批和合同归档相关审批。
- 资产领用、归还、调拨、盘点中需要正式留痕的动作。
- 后续新增业务审批,除非另有明确产品决策,否则默认接入统一审批中心。
- 后续新增财务、采购、合同、项目和高风险业务审批,除非另有明确产品决策,否则默认接入 OA 主办审批中心。
企业微信主办审批第一批包括:
- 请假。
- 补卡。
- 外出。
- 加班。
- 与上述事项关联的假期余额和考勤解释。
OA 中既有请假、补卡、外出、加班能力转为历史只读、镜像展示和应急接管能力;正常情况下不再作为员工日常提交入口。
### 1.3 暂不做范围
- 不使用企业微信原生审批作为公司正式审批流。
- 不接入飞书登录、飞书审批、飞书通知或飞书项目管理。
- 首批不做复杂 BPM 设计器、自由拖拽流程、并行会签、条件分支可视化建模。
- 首批不做跨公司多租户审批市场化配置。
- 首批不做审批动作离线处理;移动端必须在线提交动作。
- 不把企业微信 HR/考勤审批结果直接用于报销付款、财务复核或 AP 台账;财务动作必须在 OA 内完成。
- 不让 AI 直接改正式审批模板;`wecom_ruleops_v1` 只能先草拟和 dry-run,人工确认后才允许写入企微。
---
@@ -48,9 +58,9 @@
| 申请人 | 普通员工、主管、财务、HR | 创建草稿、提交、查看自己的单据、撤回允许撤回的单据、按退回意见修改后重提 | 只能编辑草稿、已退回、已驳回且规则允许重提的本人单据;当前不允许审批自己的待办;未来如需自审例外,必须另拆规则并强审计 |
| 审批人 | 主管、项目负责人、老板、被转审人 | 查看分配给自己的待办,通过、驳回、退回、转审、查看审批历史 | 只能处理当前分配给自己的任务;不能越权处理他人待办 |
| 财务 | 财务人员、财务主管 | 处理报销复核、付款标记、财务导出、重复发票例外审批中与财务相关的动作 | 不默认拥有系统管理权限;财务例外动作必须留痕 |
| HR/行政 | HR、行政负责人 | 处理请假、补卡、外出、加班等行政审批或复核;维护基础人员与组织配置 | 不能绕过审批流直接改业务结果,必要修正必须审计 |
| HR/行政 | HR、行政负责人 | 在企业微信处理请假、补卡、外出、加班等行政审批;在 OA 查看镜像、处理应急接管和恢复对账 | 不能绕过审批流直接改业务结果,必要修正必须审计 |
| 老板/总经理 | 公司负责人 | 处理大额、高风险或最终节点审批,查看公司级待办和摘要 | 操作仍需写入审批历史和审计日志 |
| 系统管理员 | 运维或后台系统负责人 | 配置角色、权限、企业微信入口、通知、基础字典和功能开关 | `admin` 只代表系统管理权限,不自动获得业务单据审批权;直接数据修复必须另有运维流程和审计 |
| 系统管理员 | 运维或后台系统负责人 | 配置角色、权限、企业微信入口、通知、基础字典、功能开关、应急模式和 RuleOps | `admin` 只代表系统管理权限,不自动获得业务单据审批权;应急模式、回写和规则写入必须有审计 |
权限判定以服务端为准,前端按钮显隐只是体验优化,不作为授权依据。
@@ -104,7 +114,7 @@
| PC 审批待办 | `/workflow/tasks` | 审批人集中处理待办、已办、抄送或历史任务 | 应在 PC 主导航清晰可达 |
| 移动审批 | `/mobile/approvals` | 手机端处理待办和查看审批历史 | 应适配企业微信 WebView 和普通手机浏览器 |
| 业务详情页 | 报销、请假、采购、合同等详情页 | 从具体单据查看审批流和执行动作 | 状态、当前节点、历史记录必须与待办一致 |
| 企业微信消息 | deeplink 到 OA 页面 | 只做提醒和跳转 | 不在企业微信原生审批里完成正式审批 |
| 企业微信消息 | deeplink 到 OA 页面或企微原生审批 | OA 主办审批回 OA,HR/考勤企微主办审批在企业微信处理 | 必须区分主办方,不把企微 HR 审批当作财务审批 |
| Portal 待办摘要 | `/portal` 或首页卡片 | 提醒当前待处理数量 | 点击后进入 `/workflow/tasks` 或对应详情页 |
### 3.2 任务列表要求
@@ -149,11 +159,10 @@
| 采购 | `<=1000` 元 | 直属主管 | 视费用类型抽查 | 老板/总经理 | 审批完成前允许撤回 | 允许转给项目负责人或上级 |
| 采购 | `1000-5000` 元 | 直属主管 -> 老板/总经理 | 视付款方式财务复核 | 老板/总经理 | 老板审批前允许撤回 | 允许转审但不得绕过老板节点 |
| 采购 | `>5000` 元 | 直属主管 -> 老板/总经理 | 财务复核,建议关联合同或附件 | 老板/总经理 | 老板审批前允许撤回 | 允许转审但必须保留原因 |
| 请假 | `<=1` 天 | 直属主管 | 无 | HR/行政 | 开始时间前允许撤回 | 允许转给上级或 HR/行政 |
| 请假 | `>1` 天 | 直属主管 | HR/行政复核 | 老板/总经理 | HR 复核前允许撤回 | 允许转给上级或 HR/行政 |
| 补卡 | 所有 | 直属主管 | HR/行政复核 | HR/行政 | 审批完成前允许撤回 | 允许转给 HR/行政 |
| 外出 | 所有 | 直属主管 | HR/行政按需复核 | HR/行政 | 审批完成前允许撤回 | 允许转给上级或 HR/行政 |
| 加班 | 所有 | 直属主管 | HR/行政复核 | HR/行政 | 审批完成前允许撤回 | 允许转给上级或 HR/行政 |
| 请假 | 由企微模板配置 | 企业微信原生审批 | 按企微模板和公司制度 | OA 应急时按管理员临时规则 | 按企微能力或 OA 应急规则 | 企微正常时在企微处理,OA 只同步镜像 |
| 补卡 | 由企微模板配置 | 企业微信原生审批 | 按企微模板和公司制度 | OA 应急时按管理员临时规则 | 按企微能力或 OA 应急规则 | 企微正常时在企微处理,OA 只同步镜像 |
| 外出 | 由企微模板配置 | 企业微信原生审批 | 按企微模板和公司制度 | OA 应急时按管理员临时规则 | 按企微能力或 OA 应急规则 | 企微正常时在企微处理,OA 只同步镜像 |
| 加班 | 由企微模板配置 | 企业微信原生审批 | 按企微模板和公司制度 | OA 应急时按管理员临时规则 | 按企微能力或 OA 应急规则 | 企微正常时在企微处理,OA 只同步镜像 |
| 合同 | 所有 | 负责人主管 -> 老板/总经理 | 财务按金额或付款条款复核 | 老板/总经理 | 老板审批前允许撤回 | 允许转审但不得绕过老板节点 |
规则匹配优先级为:业务类型 -> 金额或天数阈值 -> 项目/部门特殊规则 -> 默认规则。若找不到审批人、缺直属主管、主管链断裂、审批人停用或节点解析为申请人本人,提交必须阻断并提示管理员修正组织或审批规则,不得生成半截流程。
@@ -249,7 +258,7 @@ WF8 阶段只做轻量转审扩展,不进入复杂 BPM、审批设计器、并
- 首批覆盖报销、请假、采购三类已接入统一审批中心的待办。
- 合同、差旅、资产等后续业务沿用同一原则,但必须另走对应连续 Issue 验收。
- 企业微信只做通知和 deeplink 回 OA,不在企业微信原生审批中完成转审。
- OA 主办审批通过企业微信通知和 deeplink 回 OA;HR/考勤企微主办审批允许在企业微信原生审批中完成转审或流转,OA 同步最终详情。
发起人规则:
@@ -340,7 +349,7 @@ WF8-3、WF8-4、WF8-5 实现前必须基于本设计给技术方案;实现后
- 企业微信消息只发送脱敏提醒:标题、业务编号、状态、处理入口。
- 企业微信 deeplink 必须指向 OA 审批页或业务详情页。
- 用户点击消息后,在 OA 内查看详情并执行审批动作。
- 企业微信原生审批不参与正式审批流,不生成公司认可的正式审批记录。
- 企业微信原生审批参与 HR/考勤/行政审批正式流程,OA 通过 `wecom_native_approval_mirror_v1` 同步为可查询、可导出、可审计的镜像记录。报销、财务、采购、合同和项目类 OA 主办审批仍不得在企业微信原生审批中替代完成。
- 若企业微信返回 `invaliduser`、`unlicenseduser`、不可见范围或权限类错误,业务提交和审批动作不应回滚,但通知记录必须可审计、可重试,并提示管理员修正企业微信应用可见范围或账号绑定。
- 真机验收以企业微信手机端收到应用消息并可点击回流为准;系统级弹窗是否出现受客户端通知权限影响,不作为 OA 通知链路硬门槛。
@@ -367,9 +376,11 @@ WF8 当前正式验收通道为站内通知和企业微信个人应用消息。
| 场景 | 步骤 | 预期结果 |
| --- | --- | --- |
| 正常审批通过 | 申请人提交报销或请假;审批人在 PC 通过;查看业务详情 | 单据从草稿到审批中再到已通过;历史、当前状态、通知记录一致 |
| OA 主办审批通过 | 申请人提交报销、采购或合同事项;审批人在 PC 通过;查看业务详情 | 单据从草稿到审批中再到已通过;历史、当前状态、通知记录一致 |
| 移动端审批 | 申请人提交单据;审批人从 `/mobile/approvals` 打开待办并通过 | 移动端可完成审批;PC 待办同步消失或进入已办 |
| 企业微信通知回 OA | 待办产生后发送企业微信提醒;审批人点击 deeplink | 打开 OA 对应审批页;不能在企业微信原生审批完成动作 |
| 企业微信通知回 OA | OA 主办待办产生后发送企业微信提醒;审批人点击 deeplink | 打开 OA 对应审批页;审批动作在 OA 完成 |
| 企微 HR 审批镜像 | 员工在企业微信提交请假、补卡、外出或加班;审批人在企业微信处理 | OA 通过 `wecom_native_approval_mirror_v1` 同步审批详情、历史、附件和状态 |
| OA 应急 HR 审批 | 管理员人工开启 `oa_hr_emergency_mode_v1` 后,员工在 OA 提交 HR/考勤应急单 | 单据带 `EMERGENCY` 标记,进入恢复回写队列 |
| 企业微信个人应用消息 | 触发待办后向绑定企业微信成员发送个人应用消息 | delivery 为成功且无 `invaliduser`;手机端可收到消息并点击回到 OA 移动审批 |
| 驳回重提 | 审批人填写原因驳回;申请人查看原因后复制或重建申请 | 原流程留痕完整;新流程有新的提交记录 |
| 退回修改 | 审批人退回;申请人修改后重提 | 保留同一业务单号和退回历史;重新进入审批中 |
@@ -394,8 +405,8 @@ WF8 当前正式验收通道为站内通知和企业微信个人应用消息。
- A2:通用状态转换与并发保护,覆盖提交、通过、驳回、退回、撤回、转审。
- A3:审批权限与当前处理人校验,覆盖越权、自审、停用账号和角色待办。
- A4:审批历史、审计日志和通知记录一致性。
- A5:企业微信通知 deeplink 回 OA 验证,不新增企业微信原生审批。
- A6:报销、请假、采购等业务模块逐个接入统一审批验收。
- A5:企业微信通知 deeplink 回 OA 验证,覆盖 OA 主办审批回 OA 和企微主办 HR/考勤审批镜像。
- A6:报销、采购、合同等 OA 主办业务逐个接入统一审批验收;请假、补卡、外出、加班按 `wecom_native_approval_mirror_v1` 单独接入镜像。
- A7:审批回归脚本与 Playwright PC/移动/企业微信 UA 验证。
- A8:审批规则配置矩阵落地,覆盖金额阈值、天数阈值、兜底审批人、转审和撤回。
- A9:权限与数据范围矩阵落地,覆盖附件下载、导出、例外处理和系统管理员最小授权。
+48 -41
查看文件
@@ -7,7 +7,7 @@
**相关事实源**:[需求 - 统一审批中心规约](./需求-统一审批中心规约.md)、[需求 - 企业微信基础设施规约](./需求-企业微信基础设施规约.md)
**体验总依据**:[产品设计规则基线](./产品设计规则.md)
本规约细化请假、补卡、外出、加班与考勤修正的产品要求。正式审批记录以 OA 为准;企业微信打卡只作为原始采集来源,不直接决定最终考勤结论。PC 和移动页面体验以产品设计规则基线为依据,不重复定义通用审批链和移动导航规则。
本规约细化请假、补卡、外出、加班与考勤修正的产品要求。WFOC 起,企业微信作为 HR/考勤/行政审批和打卡规则主操作端;OA 负责完整镜像、应急接管、恢复回写、查询导出和审计。PC 和移动页面体验以产品设计规则基线为依据,不重复定义通用审批链和移动导航规则。
---
@@ -15,10 +15,11 @@
### 1.1 目标
- 员工能在 OA PC 或移动端提交请假、补卡、外出、加班申请。
- 主管、HR/管理员在 OA 内审批并留痕。
- 已通过的考勤修正影响团队状态、日历展示和后续正式考勤口径。
- 企业微信打卡原始记录由 OA 按摘要同步,必须结合 OA 审批结果解释。
- 员工正常在企业微信提交请假、补卡、外出、加班申请,并继续使用企业微信打卡。
- 主管、HR/管理员正常在企业微信处理 HR/考勤审批;OA 同步审批单、审批历史、附件、状态回调、假期余额和打卡数据。
- OA 保存完整原始归档和规范化镜像,用于团队状态、日历展示、考勤解释、审计和导出。
- 企业微信不可用时,管理员可人工开启 OA 应急模式,临时开放请假、补卡、外出、加班提交和审批。
- 企微恢复后,OA 对应急单据执行 dry-run、自动回写、失败重试和冲突清单。
### 1.2 适用对象
@@ -30,11 +31,11 @@
### 1.3 不做范围
- 不使用企业微信原生审批处理请假、补卡、外出、加班。
- 不在企微正常可用时引导员工绕开企业微信到 OA 提交 HR/考勤新单。
- 首批不重造企业微信打卡的定位、人脸识别、Wi-Fi、排班和防作弊规则。
- 不在 OA 内重造企业微信打卡采集和风控;OA 只同步摘要并做审批解释。
- 不在 OA 内重造企业微信打卡采集和风控;OA 同步记录、规则、日报、月报和异常摘要并做镜像解释。
- 首批不做复杂假期余额、调休余额、薪资计算、排班引擎和法定节假日自动规则。
- 不把企业微信打卡异常直接作为 OA 最终考勤结论。
- 不把企业微信打卡异常直接作为 OA 最终考勤结论;最终解释需结合企微审批、OA 应急单和恢复对账结果。
### 1.4 当前实现状态
@@ -42,14 +43,17 @@ REQAUD 复核后,ATTV1 已完成统一入口实现,当前运行时完成度
| 能力 | 状态 | 当前口径 |
| --- | --- | --- |
| 请假申请、审批、撤回、编辑、移动查看 | `DONE` | 已接入统一审批中心和 PC/移动页面。 |
| 请假申请、审批、撤回、编辑、移动查看 | `DONE_AS_OA_FALLBACK` | 当前已接入统一审批中心和 PC/移动页面;WFOC 后默认转为历史查询和应急接管能力。 |
| 请假对团队状态/日历的影响 | `DONE` | 已批准请假可作为团队状态和日历依据。 |
| 企业微信打卡作为原始采集 | `DONE` | 由企业微信侧承载定位、人脸、Wi-Fi、设备和防作弊能力;OA 不重造。 |
| 企业微信打卡 API 同步 | `PARTIAL` | 已新增同步批次和企微打卡摘要表;有已授权调用打卡 API 的自建应用 Secret 和企微权限时同步,缺配置时记录 `SKIP`。`WECOM_CHECKIN_SECRET` 可作为单独考勤同步应用的显式覆盖;未配置时复用已授权工作台应用的 `WECOM_AGENT_SECRET`。 |
| 员工补卡申请审批 | `DONE` | 员工可在 OA 提交补卡修正,进入统一审批;通过后用于月度考勤解释,不写回企业微信。 |
| 外出申请审批 | `DONE` | 员工可在 OA 提交外出修正,记录地点摘要和事由,审批后用于月度解释。 |
| 加班申请审批 | `DONE` | 员工可在 OA 提交加班修正,记录时间、原因和补偿口径,审批后用于月度解释。 |
| 企微 HR/考勤审批镜像 | `PLANNED_BY_WFOC` | 后续通过 `wecom_native_approval_mirror_v1` 同步企微请假、补卡、外出、加班审批详情、历史、附件和状态。 |
| 员工补卡申请审批 | `DONE_AS_OA_FALLBACK` | 当前 OA 能提交补卡修正;WFOC 后正常入口迁往企微,OA 仅在应急模式开放并进入恢复回写。 |
| 外出申请审批 | `DONE_AS_OA_FALLBACK` | 当前 OA 能提交外出修正;WFOC 后正常入口迁往企微,OA 仅在应急模式开放并进入恢复回写。 |
| 加班申请审批 | `DONE_AS_OA_FALLBACK` | 当前 OA 能提交加班修正;WFOC 后正常入口迁往企微,OA 仅在应急模式开放并进入恢复回写。 |
| 历史 OA 极简打卡 `attendance_v1` | `FROZEN_CLOSED` | 自建上下班打卡、管理员补卡和自建月度统计已关闭正式入口;旧表保留,旧写接口返回可解释 409。 |
| OA 应急模式 | `PLANNED_BY_WFOC` | `oa_hr_emergency_mode_v1` 默认关闭,企微不可用时由管理员人工开启。 |
| 恢复回写 | `PLANNED_BY_WFOC` | `wecom_recovery_writeback_v1` 在企微恢复后 dry-run 并自动回写应急数据,冲突转人工确认。 |
---
@@ -57,9 +61,9 @@ REQAUD 复核后,ATTV1 已完成统一入口实现,当前运行时完成度
| 角色 | 可做动作 | 权限边界 |
| --- | --- | --- |
| 申请人 | 新建草稿、提交、撤回、查看自己的申请、按退回意见修改重提 | 只能编辑本人草稿、已退回或允许重提的申请 |
| 主管/审批人 | 查看分配给自己的待办,通过、驳回、退回、转审 | 只能处理当前分配给自己的 OA 审批任务 |
| HR/管理员 | 复核请假、补卡、外出、加班,维护基础假别和考勤口径 | 不能绕过流程直接改审批结果;必要修正必须审计 |
| 申请人 | 正常在企业微信提交和查看请假、补卡、外出、加班;应急模式下在 OA 提交 | OA 应急提交必须在管理员开启窗口内,且单据带 `EMERGENCY` 标记 |
| 主管/审批人 | 正常在企业微信处理 HR/考勤审批;OA 主办或应急待办在 OA 处理 | 只能处理分配给自己的待办;企微和 OA 结果必须可对账 |
| HR/管理员 | 配置企微 HR/考勤规则,查看 OA 镜像,开启/关闭应急模式,处理恢复回写冲突 | 不能绕过流程直接改业务结果;应急开启、回写和人工修正必须审计 |
| 老板/总经理 | 处理长假、高风险或特殊事项 | 操作仍需写入审批历史和审计日志 |
| 系统管理员 | 维护权限、通知、入口、基础配置 | 默认不具备业务审批权 |
@@ -71,9 +75,9 @@ REQAUD 复核后,ATTV1 已完成统一入口实现,当前运行时完成度
| 入口 | 场景 | 要求 |
| --- | --- | --- |
| PC 请假/考勤修正页 | 批量查看、较复杂申请、管理员复核 | 可查看完整字段、审批历史和团队影响 |
| 移动工作台 | 员工日常提交请假、补卡、外出、加班 | 操作路径短,适合手机填写 |
| 移动审批 | 主管或 HR 处理待办 | 进入 OA 审批页处理,不进入企业微信原生审批 |
| PC 请假/考勤修正页 | 查看企微镜像、历史 OA 单据、应急单和恢复回写状态 | 默认不作为新单日常入口;应急模式开启时才开放提交 |
| 移动工作台 | 查看镜像状态、历史和应急入口提示 | 企微正常时引导员工到企业微信处理日常 HR/考勤申请 |
| 移动审批 | 主管或 HR 处理 OA 主办或应急待办 | 企微主办 HR 审批在企业微信处理,OA 只显示镜像 |
| 团队状态页 | 查看今天谁在岗、请假、外出、出差 | 使用已批准申请影响展示 |
| 日历视图 | 查看请假和外出安排 | 首批可轻量展示,不做复杂排班 |
| 企业微信 deeplink | 通知提醒和跳转 | 点击后回 OA 页面 |
@@ -115,7 +119,7 @@ REQAUD 复核后,ATTV1 已完成统一入口实现,当前运行时完成度
### 5.1 审批规则
以下是 10 人以下公司试运行建议值,不等于最终公司制度。正式制度可由管理员配置调整。
WFOC 后,正常审批规则优先以企业微信审批模板和打卡/假期配置为准;OA 中以下规则保留为应急接管建议值,不等于最终公司制度。正式制度可由管理员配置调整,并通过 `wecom_ruleops_v1` 先 dry-run、人工确认后写入企微。
| 类型 | 阈值 | 默认审批链 | HR/管理员复核 | 兜底审批人 |
| --- | --- | --- | --- | --- |
@@ -148,9 +152,9 @@ REQAUD 复核后,ATTV1 已完成统一入口实现,当前运行时完成度
### 6.1 基本原则
- 企业微信打卡记录是原始采集事实。
- OA 请假、补卡、外出、加班审批是考勤解释事实。
- 最终正式考勤口径应由企业微信打卡原始记录加 OA 审批结果共同形成。
- 企业微信打卡记录、打卡规则和 HR/考勤审批是正常情况下的原始业务事实。
- OA 镜像记录、历史 OA 单据和应急单据是审计、查询、接管和恢复对账事实。
- 最终正式考勤口径应由企业微信打卡原始记录、企微审批结果、OA 应急单和恢复回写结果共同形成。
- 企业微信打卡异常不直接等于最终考勤异常。
- OA 首批不重造定位、人脸识别、Wi-Fi、排班和防作弊规则。
@@ -158,10 +162,11 @@ REQAUD 复核后,ATTV1 已完成统一入口实现,当前运行时完成度
| 场景 | 原始打卡 | OA 审批 | 正式解释 |
| --- | --- | --- | --- |
| 已批准请假 | 无打卡或不完整 | 请假已通过 | 按请假处理,不直接记异常 |
| 忘打卡 | 缺少上班或下班卡 | 补卡已通过 | 按补卡修正解释 |
| 客户现场 | 打卡地点异常或无办公室打卡 | 外出已通过 | 按外出处理 |
| 晚间工作 | 正常下班后继续工作 | 加班已通过 | 记录加班事实,补偿另按制度处理 |
| 已批准请假 | 无打卡或不完整 | 企微请假已通过,OA 已同步镜像 | 按请假处理,不直接记异常 |
| 忘打卡 | 缺少上班或下班卡 | 企微补卡已通过,OA 已同步镜像 | 按补卡修正解释 |
| 客户现场 | 打卡地点异常或无办公室打卡 | 企微外出已通过,OA 已同步镜像 | 按外出处理 |
| 晚间工作 | 正常下班后继续工作 | 企微加班已通过,OA 已同步镜像 | 记录加班事实,补偿另按制度处理 |
| 企微故障应急 | 无法提交企微审批 | OA `EMERGENCY` 应急单已通过,恢复后已回写或待对账 | 按 OA 应急单和回写结果解释 |
| 无审批异常 | 缺卡或迟到 | 无有效 OA 审批 | 保持异常待处理或人工复核 |
---
@@ -188,7 +193,7 @@ REQAUD 复核后,ATTV1 已完成统一入口实现,当前运行时完成度
| 权限不足 | 服务端拒绝 | “无权处理该申请” |
| 团队状态更新失败 | 审批保持成功,生效状态进入失败可重试 | “申请已审批通过,状态同步稍后重试” |
| 已生效后取消 | 仅授权 HR/管理员处理,必须填写原因 | “已生效申请取消需管理员处理” |
| 企业微信打卡未同步 | 不影响 OA 申请审批 | “打卡原始记录暂未同步,审批结果已在 OA 留痕” |
| 企业微信打卡或审批未同步 | 不影响企微已完成事实;OA 镜像进入可重试或待配置状态 | “企业微信数据暂未同步,稍后重试或联系管理员” |
---
@@ -196,26 +201,28 @@ REQAUD 复核后,ATTV1 已完成统一入口实现,当前运行时完成度
| 场景 | 步骤 | 预期结果 |
| --- | --- | --- |
| 请假主管审批 | 员工提交 `0.5` 天请假;主管通过 | 申请已通过,并影响团队状态 |
| 长假 HR 复核 | 员工提交 `2` 天请假;主管通过;HR 复核 | 审批链完整,HR 复核后生效 |
| 补卡审批 | 员工提交缺失下班卡补卡;主管和 HR 通过 | 补卡记录影响考勤解释 |
| 外出审批 | 员工提交客户现场外出;主管通过 | 团队状态显示外出或相关摘要 |
| 加班审批 | 员工提交晚间加班;主管和 HR 通过 | 加班记录留痕,补偿口径被记录 |
| 退回修改 | 审批人退回申请;员工修改后重提 | 保留退回历史,重新进入审批 |
| 企微请假镜像 | 员工在企业微信提交 `0.5` 天请假;主管通过;OA 同步 | OA 可查看审批详情、历史、附件和团队状态影响 |
| 企微补卡镜像 | 员工在企业微信提交缺失下班卡补卡;主管或 HR 通过;OA 同步 | 补卡记录影响考勤解释 |
| 企微外出镜像 | 员工在企业微信提交客户现场外出;主管通过;OA 同步 | 团队状态显示外出或相关摘要 |
| 企微加班镜像 | 员工在企业微信提交晚间加班;主管或 HR 通过;OA 同步 | 加班记录留痕,补偿口径被记录 |
| OA 应急提交 | 管理员开启 `oa_hr_emergency_mode_v1` 后员工在 OA 提交 HR/考勤应急单 | 单据带 `EMERGENCY` 标记并进入恢复回写队列 |
| 恢复回写 | 企业微信恢复后,OA 对应急单 dry-run 并回写 | 成功、失败、冲突和人工确认项均可追溯 |
| 退回修改 | 企微审批或 OA 应急审批退回后,员工按对应入口修改重提 | 保留退回历史,重新进入审批 |
| 撤回 | 员工在审批完成前撤回 | 审批待办失效,历史保留 |
| 无审批人阻断 | 删除或缺失主管后提交 | 提交失败,不生成半截流程 |
| 企业微信提醒回 OA | 待办产生后发送企业微信提醒 | 点击 deeplink 回 OA 审批页处理 |
| 无审批人阻断 | 企业微信模板或 OA 应急规则找不到审批人 | 提交失败,不生成半截流程 |
| OA 主办提醒回 OA | 报销、采购、合同或财务待办产生后发送企业微信提醒 | 点击 deeplink 回 OA 审批页处理 |
| 团队状态失败不破坏审批 | 模拟团队状态更新失败 | 审批保持已通过,生效状态可重试 |
---
## 10. 后续开发拆分建议
- 已完成:补卡/外出/加班申请对象、统一审批接入、月度考勤解释页、移动入口和企业微信 deeplink 回 OA。
- 后续 A1:企微打卡 live 同步配置稳定化,覆盖 Secret/API 权限、短窗口同步、错误码和脱敏证据。
- 后续 A2:团队状态和日历生效逻辑增强,按真实使用反馈决定是否把外出/加班进一步展示到团队状态或日历。
- 后续 A3:移动端提交与审批体验优化,覆盖普通手机和企业微信 WebView 的真实反馈。
- 后续 A4:请假考勤主链路回归脚本和人工验收数据集。
- 后续 A5:出差完整流程专项,不进入当前正式首批能力。
- 已完成:OA 侧补卡/外出/加班申请对象、统一审批接入、月度考勤解释页、移动入口和企业微信 deeplink 回 OA;WFOC 后这些能力默认作为历史查询和应急接管基础。
- 后续 A1:`wecom_native_approval_mirror_v1`,同步企微请假、补卡、外出、加班审批、附件、历史和状态回调。
- 后续 A2:企微打卡规则、排班、记录、日报、月报完整镜像,覆盖 Secret/API 权限、短窗口同步、错误码和脱敏证据。
- 后续 A3:`oa_hr_emergency_mode_v1`,管理员人工接管、应急提交、应急审批和恢复队列。
- 后续 A4:`wecom_recovery_writeback_v1`,企微恢复后 dry-run、自动回写、失败重试和冲突清单。
- 后续 A5:团队状态和日历按企微镜像、OA 应急单和回写结果统一解释。
- 后续 A6:出差完整流程专项,不进入当前正式首批能力。
涉及审批状态、团队状态、生效记录或后续打卡同步的 Issue,必须写明失败重试、回滚策略和人工修正路径。