proposal.md 2.2 KB

状态(2026-04-26 立项):规则定义阶段 优先级:中(Phase B.1 第三个 vendor 专项) 依赖:基座 UtilHttp / UtilToken / McR 已就绪

Why

后续多个客户项目要调用「集成平台」(IAM / 身份治理产品)的用户管理接口,做"钉钉用户 → 集成平台用户"的同步与对接。集成平台官方接口为 RESTful + OAuth2 client_credentials 模式,与 mjava 现有 vendor(dingtalk/aliwork/...)模式不同,需要:

  • 独立的 service/integration/ 包承载;类前缀 INTPClient_* / INTPConf / INTPR(与 dingtalk DD* / aliwork YD* 全大写惯例一致)
  • 独立的 IntpConf(baseUrl / clientId / clientSecret),配置段 integration.* 与 dingtalk/aliwork 平级
  • token 走 UtilToken 缓存,按"过期前刷"策略(OAuth2 返回 expires_in

本 change 只覆盖用户域写操作 + 鉴权:getAccessToken / createUser / updateUser / deleteUser。其它能力(org、角色、查询、Webhook、连接器事件)按需另立 change。

What Changes

新增 vendor 包:

  • server/integration/INTPConf.java:配置类(baseUrl / clientId / clientSecret)
  • server/integration/INTPR.java:响应包装(继承 VenR),字段 result/error/error_description/data + assertSuccess
  • service/integration/INTPClient_User.java(接口):4 个对外原子方法
    • createUser(access_token, username, password, body_ext)
    • updateUser(access_token, username, body_ext)
    • deleteUsers(access_token, usernames)
    • queryUsers(access_token, query) —— 顺手对齐 GET 接口,便于联调校验
  • service/integration/impl/INTPImplClient_User.java:基于 INTPR.doPost/doGet/doPatch + UtilToken 缓存 access_token 的实现(getAccessToken() 为 private 方法,不进 Client 接口)
  • 三个客户子模块的 application-{dev,prod}.yml.exampleintegration: 段占位

不涉及:

  • mjava-pro 多租户化(按用户决策"基座单租户")
  • Service 层业务封装(按用户决策"不需要")
  • 其它 18 个非用户接口(org / 角色 / Webhook / 连接器)

Capabilities

New Capabilities

  • integration-user-api:集成平台用户域的鉴权与 CRUD 原子接口集