spec.md 3.5 KB

ADDED Requirements

Requirement: 用户管理完整覆盖

DDClient_Contacts SHALL 提供对钉钉官方通讯录用户管理 endpoint 的完整对齐。所有方法 MUST 遵守 mjava-baseline §3.4.2 的签名规则。

Scenario: 创建用户(完整字段)

  • WHEN 调用 createUser_v2(access_token, name, mobile, dept_id_list, body_ext)
  • THEN body_ext 必须支持官方文档列出的所有可选字段(userid / hired_date / job_number / title / email / senior_mode / extension / ...)
  • AND javadoc 必须枚举这些字段并注明类型

Scenario: 更新用户

  • WHEN 调用 updateUser(access_token, userid, body_ext)
  • THEN userid 必填,其他字段全部通过 body_ext 传入
  • AND 不传的字段保持钉钉侧原值不变

Scenario: 按 unionId 查询

  • WHEN 调用 getUserByUnionId(access_token, union_id)
  • THEN 返回 userid(二次调用 getUser_v2 获取详情)

Scenario: 查询管理员

  • WHEN 调用 listAdmins(access_token)
  • THEN 返回管理员 userid 列表,含主管理员与子管理员区分字段

Scenario: 查询未激活员工

  • WHEN 调用 listInactiveUsers(access_token, is_active, offset, size, body_ext)
  • THEN 支持按激活状态过滤

Requirement: 部门管理完整覆盖

DDClient_Contacts SHALL 提供部门 CRUD 与层级查询的完整对齐。所有方法 MUST 对应钉钉官方部门管理 endpoint。

Scenario: 部门 CRUD

  • WHEN 依次调用 createDepartment_v2 / updateDepartment / deleteDepartment / getDepartment_v2
  • THEN 每个方法参数完整对齐官方文档
  • AND body_ext 支持 hide_dept / dept_permits / user_permits / outer_dept / source_identifier 等全部可选项

Scenario: 父部门链查询

  • WHEN 调用 listParentByDept(access_token, dept_id)
  • THEN 返回目标部门到根部门的父链

Requirement: 角色管理

DDClient_Contacts SHALL 提供角色的增删改查与批量员工授权能力。

Scenario: 新增角色

  • WHEN 调用 addRole(access_token, roleName, groupId)
  • THEN 返回 roleId

Scenario: 批量分配角色

  • WHEN 调用 addRolesForEmps(access_token, roleIds, userIds)
  • THEN 一次调用同时为多员工授权多角色

Scenario: 查询角色成员

  • WHEN 调用 listRoleEmployees(access_token, role_id, size, offset)
  • THEN 分页返回角色下员工列表

Requirement: 员工字段可见性

DDClient_Contacts SHALL 提供员工档案字段隐藏规则的管理能力。

Scenario: 隐藏字段设置

  • WHEN 调用 upsertHideField(access_token, name, field, userIds, deptIds)
  • THEN 对指定员工或部门隐藏指定员工档案字段

Scenario: 查询隐藏字段

  • WHEN 调用 listHideFields(access_token, size, offset)
  • THEN 返回企业当前生效的字段隐藏规则列表

Requirement: 参数透传约束

本 capability 所有方法 MUST 满足官方可选参数完整透传与文档化要求,不得因 Java 侧建模省事而过滤字段。

Scenario: body_ext 不得过滤官方可选参数

  • WHEN 调用方通过 body_ext 传入官方文档支持的任意可选字段
  • THEN 实现必须原样透传到 HTTP 请求体,不得删除或改写
  • AND 方法 javadoc 必须列出所有已知 body_ext key 并注明类型

Scenario: 方法必须有 apiNote

  • WHEN 新增任一 Client 方法
  • THEN javadoc 必须含 @apiNote 链到该 endpoint 的钉钉官方文档页