## 0. 文档抓取(前置) > 已完成:apifox 公开站抓 5 个接口字段详情,结果固化在 `design.md` 覆盖度矩阵 + 风险章节。 > 风险:apifox 文档可能与生产 API 漂移,实施冒烟时需联调验证。 ## 1. 配置类 + 响应包装 + yml 段 - [x] 1.1 新建 `mjava/src/main/java/com/malk/server/integration/INTPConf.java`,`@ConfigurationProperties("integration")`,字段 `baseUrl` / `clientId` / `clientSecret` + 4 个 path 常量 + 缓存 key — 2026-04-26 - [x] 1.2 新建 `mjava/src/main/java/com/malk/server/integration/INTPR.java`,extends `VenR`,字段 `result` / `error` / `error_description` / `data` + `access_token`/`expires_in`(兼容 token endpoint)+ `assertSuccess` 抛 `McException` + 静态 `doPost/doGet` — 2026-04-26 - [x] 1.3 `VenR` 加 `RC_INTP = "com.malk.server.integration.INTPR"` 常量 — 2026-04-26 - [x] 1.4 `mjava/src/main/resources/application-prod.yml.example` 加 `integration:` 段 — 2026-04-26 - [x] 1.5 `mjava-mcli` / `mjava-shunfeng` / `mjava-guangming` 三个 `application-prod.yml.example` 加 `integration:` 段 — 2026-04-26 - [x] 1.6 真实 dev/prod yml 不动(敏感凭据由用户自填) ## 2. Client 接口与实现 - [x] 2.1 新建 `service/integration/INTPClient_User.java`(接口),5 方法(含 `getAccessToken()`) — 2026-04-26 - [x] 2.2 javadoc 完整枚举 `body_ext` 与 `query` 的可选字段(含子对象字段如 tag/group_positions) — 2026-04-26 - [x] 2.3 新建 `service/integration/impl/INTPImplClient_User.java`,依赖 `INTPConf` — 2026-04-26 - [x] 2.4 `getAccessToken()` 公开方法:缓存命中返回;miss 调 `POST {baseUrl}/iam/token` 走 form body 拿 token,TTL=`(expires_in - 60) * 1000` 毫秒入 `UtilToken.put` — 2026-04-26 - [x] 2.5 4 个 CRUD 方法实现:拼 URL + Header `Authorization: Bearer` + `INTPR.doPost/doGet` 或 `UtilHttp.doPatch(... INTPR.class)` + `INTPR.assertSuccess` 自动抛业务异常 — 2026-04-26 ## 3. 验证 - [x] 3.1 `mvn -pl mjava -am clean compile` 通过(2.5s,仅历史 warning) — 2026-04-26 - [x] 3.2 `mvn clean package -DskipTests` 全 reactor 7 模块 BUILD SUCCESS(5.5s) — 2026-04-26 - [ ] 3.3 联调冒烟(任选一个客户环境,待真实凭据): - 拿 clientId/clientSecret 配进 dev yml - 写一个临时 Controller 调 `getAccessToken()` + `createUser(token, "test_user", "Pwd@123", null)` - 验证服务端真实创建一条记录 + 返回数据正确 - 重复调用验证 token 缓存命中(不再发 `/iam/token` 请求) - [ ] 3.4 `openspec validate add-integration-user-api --strict` 通过(待 openspec CLI 可用时跑) ## 4. 归档 - [ ] 4.1 `/opsx:archive add-integration-user-api` → 移到 `openspec/changes/archive/2026-04-XX-add-integration-user-api/` - [ ] 4.2 spec 合并到 `openspec/specs/integration-user-api/` - [ ] 4.3 BACKLOG.md 标 ✅;mjava-baseline.md vendor 表加一行 integration ## 5. 后续 change(不在本期范围) - 集成平台 org / 部门管理(`/iam/api/orgs/*`) - 集成平台 角色管理(`/iam/api/tags/*`) - 集成平台 启用/禁用用户 + 改密码(`/iam/api/users/status` / `/iam/api/users/password`) - Webhook 接收(`/iam/api/open/event/...`) - mjava-pro 多租户 `DynamicIntpService`