diff --git a/docs/feature-matrix.md b/docs/feature-matrix.md index f35262dc..82f94e5a 100644 --- a/docs/feature-matrix.md +++ b/docs/feature-matrix.md @@ -76,7 +76,7 @@ | I1 | 集成框架(Outbox+Adapter) | §16 Phase 2(外部集成) | 2026-02-09_23-30-00-p6-p8-remaining-work-master.csv | 2026-02-09_23-30-00-p6-p8-remaining-work-master.csv | 2026-02-09 | DONE | server/scripts/regression-integrations.sh | none | | I2 | ERP最小集成(paid同步) | §16 Phase 2(ERP 集成) | 2026-02-09_23-30-00-p6-p8-remaining-work-master.csv | 2026-02-09_23-30-00-p6-p8-remaining-work-master.csv | 2026-02-09 | DONE | server/scripts/regression-integrations.sh | 默认关闭,按需灰度 | | I3 | 差旅单导入与报销关联 | §16 Phase 2(差旅闭环) | 2026-02-09_23-30-00-p6-p8-remaining-work-master.csv | 2026-02-09_23-30-00-p6-p8-remaining-work-master.csv | 2026-02-09 | DONE | server/scripts/regression-integrations.sh | 默认关闭,按需灰度 | -| I4 | 通知渠道扩展(企微/钉钉) | §4.6(多渠道通知) | 2026-02-09_23-30-00-p6-p8-remaining-work-master.csv | 2026-02-09_23-30-00-p6-p8-remaining-work-master.csv | 2026-02-09 | DONE | server/scripts/regression-integrations.sh | 默认关闭,按需灰度 | +| I4 | 通知渠道扩展(企微/钉钉) | §4.6(多渠道通知) | 2026-03-13_21-04-30-p23-im2-wecom-productionization-refresh.csv | 2026-03-13_21-04-30-p23-im2-wecom-productionization-refresh.csv | 2026-03-13 | DONE | server/scripts/regression-im-notifier.sh | 已完成企微 webhook 生产化与密钥加固;飞书 / 钉钉 provider 继续 backlog | | S1 | 企业卡/虚拟卡管控预研 | N/A(ADR 决策项) | 2026-02-09_23-30-00-p6-p8-remaining-work-master.csv | 2026-02-09_23-30-00-p6-p8-remaining-work-master.csv | 2026-02-09 | DONE | manual | docs/adr/adr-enterprise-card-control.md | | S2 | 移动端路线决策预研 | N/A(ADR 决策项) | 2026-02-09_23-30-00-p6-p8-remaining-work-master.csv | 2026-02-09_23-30-00-p6-p8-remaining-work-master.csv | 2026-02-09 | DONE | manual | docs/adr/adr-mobile-strategy.md | diff --git a/docs/integration-boundaries.md b/docs/integration-boundaries.md index 9c3433f6..380cbae2 100644 --- a/docs/integration-boundaries.md +++ b/docs/integration-boundaries.md @@ -82,6 +82,7 @@ - 已接入企微群机器人两种模式: - `mock` - `wecom_webhook` +- 企微 `wecom_webhook` 已补齐生产化护栏:Webhook Secret 加密存储、遮罩回显、测试接口诊断与迁移脚本。 - 已支持三维路由过滤: - `roleCodes` - `domainScopes` @@ -112,7 +113,7 @@ - 即使 IM 全部关闭,站内通知与邮件仍继续工作 ### 3.5 后续专项建议 -- `P19+IM-2`:飞书 / 钉钉适配器 +- `P23+IM-2`:真实 IM 适配器 refresh;已完成企微 webhook 生产化,飞书 / 钉钉 provider 继续 backlog - `P19+IM-3`:个人直达与 IM 身份映射 - `P19+IM-4`:消息卡片交互与回调审批(仍必须回到 OA 鉴权) @@ -198,7 +199,7 @@ - 已升级 `vite-plugin-pwa` 的 runtime cache:静态资源使用 `StaleWhileRevalidate`,审批相关 GET API 使用 `NetworkFirst`,导航仍通过 `navigateFallback=/index.html` 回到 SPA 壳。 ### 5.9 PWA 二期明确不做 -- 不做钉钉 / 企微真实消息适配器、JS-SDK、开放平台回调审批;本期仅承接同源 H5 deep link 打开体验。 +- 不做飞书 / 钉钉真实消息适配器、JS-SDK、开放平台回调审批;本期企微只承接群机器人 webhook 出站,不引入消息卡片与回调审批。 - 不做 Background Sync、Push、原生 App、小程序、双栈移动壳,也不把审批动作 POST 请求交给 Service Worker 代理。 - 不做完整离线登录、全量待办镜像、复杂冲突合并或离线自动修复;未缓存的待办详情离线仍要求联网重试。 - 不改写现有 workflow 动作 API,不给 `approve` 新增 comment,也不把 `return / transfer` 纳入离线草稿范围。 @@ -283,6 +284,6 @@ - PWA 路线已按浏览器 / PWA 栈闭环,不引入原生 App、小程序或双栈移动壳。 ### 9.5 后置 backlog -- `P19+IM-2 / IM-3 / IM-4`、`P22+VEH-1`、`P22+ASSET-FIN-1` 明确列为后置 backlog,本轮不进入主线。 +- `P23+IM-2` 已完成企微真实 webhook 出站;飞书 / 钉钉 provider 子项与 `IM-3 / IM-4`、`P22+VEH-1`、`P22+ASSET-FIN-1` 继续作为后置 backlog。 - 这些方向只保留“触发条件 / 进入时机”的规划地位,不提前写入已完成矩阵或事实源校验器。 - 若后续优先级发生变化,必须通过新的路线合同显式改序,不直接口头跳 phase。 diff --git a/docs/requirements-specification.md b/docs/requirements-specification.md index 64e55e8e..5e545283 100644 --- a/docs/requirements-specification.md +++ b/docs/requirements-specification.md @@ -372,12 +372,12 @@ cancelled (作废/终止,终态) --- -### 4.6 通知系统(P0) +### 4.6 通知系统 | 场景 | 通知方式 | | :--- | :--- | -| 待审批提醒 | 站内 + 邮件(P1:企微/钉钉) | -| 审批结果 | 站内 + 邮件 | -| 付款完成 | 站内 + 邮件 | +| 待审批提醒 | 站内 + 邮件 + 企微群机器人(已实现);飞书 / 钉钉继续 backlog | +| 审批结果 | 站内 + 邮件 + 企微群机器人(按渠道配置) | +| 付款完成 | 站内 + 邮件 + 企微群机器人(按渠道配置) | --- @@ -514,7 +514,7 @@ cancelled (作废/终止,终态) #### 4.11.1 范围与边界 - 当前集成层只通过边界适配核心域,不向报销、采购、资产、差旅等事务主表注入 ERP / IM 私有字段。 -- 已实现范围包括:共享主数据同步、IM-1 通知渠道、ERP-1 报销付款凭证切片、ERP-2 采购 commitment/archive、ERP-3 资产摘要、TRAVEL-3 批次级 `erp.travel.export`。 +- 已实现范围包括:共享主数据同步、IM-1 通知渠道、IM-2 企微 `wecom_webhook` 真实出站生产化、ERP-1 报销付款凭证切片、ERP-2 采购 commitment/archive、ERP-3 资产摘要、TRAVEL-3 批次级 `erp.travel.export`。 - `docs/integration-boundaries.md` 与 `docs/domain-events.md` 是本章的边界与事件语义事实源;本规格只吸收已实现部分。 #### 4.11.2 角色与权限 @@ -526,7 +526,7 @@ cancelled (作废/终止,终态) - 集成统一采用“业务事务提交成功 -> Outbox 异步派发 -> Binding / Track 回写”的交付模型;外部失败不回滚业务主事务。 - `IntegrationOutbox` 负责 `pending/processed/dead-letter` 等投递状态、重试窗口与 `dedupe_key` 幂等;`IntegrationBinding` 负责本地实体与外部编号映射;`IntegrationSyncState` 负责主数据资源级同步状态。 - 公开业务事件名保持最小集;`erp.travel.export`、`erp.journal.export` 等属于集成事件,不等同于新的业务领域事件名。 -- 当前后置 backlog 固定包括 `IM-2/IM-3/IM-4`、`P22+VEH-1`、`P22+ASSET-FIN-1`,不进入本轮已实现范围。 +- 当前后置 backlog 固定包括 `IM-2` 的飞书 / 钉钉 provider 子项、`IM-3/IM-4`、`P22+VEH-1`、`P22+ASSET-FIN-1`,不进入本轮已实现范围。 #### 4.11.4 核心数据对象 | 对象 | 作用 | @@ -538,7 +538,7 @@ cancelled (作废/终止,终态) #### 4.11.5 显式不做项 - 不直接在核心事务表写入第三方私有字段或回调状态列。 -- 不在本轮实现 `IM-2/3/4`、车辆管理、资产财务深化,也不把这些方向提前写入已完成事实源。 +- 不在本轮实现飞书 / 钉钉 provider、`IM-3/IM-4`、车辆管理、资产财务深化,也不把这些方向提前写入已完成事实源。 - 不把 AI、MCP、PWA、生产化治理并入本章主体;这些能力继续由边界文档和运维文档承载。 ## 5. 工作流引擎(Workflow,P0 采用) @@ -1244,6 +1244,10 @@ cancelled (作废/终止,终态) | GET | `/api/integrations/erp/travel/reconciliation-batches/:batchId/track` | 登录即可(服务端鉴权) | 查看差旅对账批次 ERP 轨道 | | POST | `/api/integrations/erp/travel/reconciliation-batches/:batchId/requeue` | `integration.manage` | 补发或重试差旅 ERP 摘要桥 | | POST | `/api/integrations/erp/sync/:reimbursementId` | `integration.manage` | 兼容性手工同步入口 | +| GET | `/api/notifications/channels` | `notification.channel.manage` | 查看通知渠道列表;返回 `secretConfigured` 与 `secretMasked`,不回显明文 secret | +| POST | `/api/notifications/channels` | `notification.channel.manage` | 创建通知渠道;`configJson.secret` 为只写字段,服务端以 `secretEncrypted` 落库 | +| PATCH | `/api/notifications/channels/:id` | `notification.channel.manage` | 更新通知渠道;支持保留 / 替换 / 清空 Webhook Secret | +| POST | `/api/notifications/channels/:id/test` | `notification.channel.manage` | 同步测试企微通道,返回 `code`、`message`、`retryable` 与消息预览 | ### 13.3 配置读取 API(P0 只读) | 方法 | 路径 | 权限码 | 说明 | | :--- | :--- | :--- | :--- |