yida-app-permission · git:20260825.ad1c86c · 2026-08-25 · sha256 93f154fb9d83ae48
yida-app-permission git:20260825.ad1c86cA
Immutable. This exact content is served forever at /api/v1/blob/93f154fb9d83ae48.
--- name: yida-app-permission description: 应用级管理员设置。查询和维护单个宜搭应用的应用主管理员、数据管理员、开发成员。适用于调整某个应用的管理员角色分配。 --- # 应用级管理员设置 ## 适用范围 用户要求维护某一个 appType 的应用主管理员、数据管理员或开发成员时使用本技能。 `app-permission main` 是单个应用内的 `MAIN` 应用主管理员。`corp-manager app` 是组织级 `applicationCreateRole` 应用管理员。两者接口、作用域和成员列表不同,不能互换。 ## 铁律 1. **人员身份必须明确**:添加成员前运行 `search-user`;同名人员用 userId 和部门路径区分。 2. **main 必须保留成员**:`MAIN` 是单应用最高管理员角色,after 至少包含一个 userId。 3. **set 是整组替换**:执行前展示完整 before/after;`--clear` 只用于 data 或 dev。 4. **平台状态是真相源**:每次修改都查询、确认并重查;本技能不使用 memory 保存管理员状态。 ## 标准流程 1. **查询**:运行 `openyida app-permission get <appType>`,记录目标角色的 userIds。 2. **差异预览**:根据 add、remove、set 或 clear 计算并输出明确的 before/after。 3. **确认**:向用户确认 appType、角色、人员身份和完整 after;修改 main 时再次确认最高权限变化。 4. **写入**:只执行一次目标命令。 5. **重查验证**:再次运行 get,比较实际 userIds 与 after;输出 expected/actual,不一致时报告失败。 ## 命令 查询应用角色: ```bash openyida app-permission get <appType> ``` 搜索人员: ```bash openyida app-permission search-user "姓名或关键词" --dept "部门关键词" ``` 增量添加或移除: ```bash openyida app-permission add <appType> <main|data|dev> --users <userId1,userId2> openyida app-permission remove <appType> <main|data|dev> --users <userId1,userId2> ``` 整组替换或清空: ```bash openyida app-permission set <appType> <main|data|dev> --users <userId1,userId2> openyida app-permission set <appType> <data|dev> --clear ``` | CLI 角色 | 单应用含义 | 接口 adminType | |----------|------------|----------------| | `main` | 应用主管理员 | `MAIN` | | `data` | 数据管理员 | `DATA` | | `dev` | 开发成员 | `DEV` | 写命令的 JSON 输出包含写入结果和 `currentRole`。Agent 仍以独立 get 结果作为最终验证证据。 ## 失败处理 | 结果 | 动作 | |------|------| | 搜索到同名人员 | 展示 userId 和部门路径,由用户确认目标 | | main after 为空 | 零写入;要求至少保留一个主管理员 | | 查询或登录态失败 | 零写入;运行 `openyida auth status` 并处理账号/组织 | | 写入失败 | 停止;保留 before 和错误响应,不自动重复写入 | | 重查不一致 | 输出 expected/actual,不宣称完成 | | 网络超时 | 先运行 get 判断实际状态;无法证明时停止 |