@sokeai/cli 1.0.41 → 1.0.53
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -24
- package/package.json +2 -2
- package/scripts/build-binaries.sh +1 -30
- package/scripts/e2e-test.sh +63 -3
- package/scripts/install.js +52 -110
- package/scripts/local-test.js +10 -85
- package/scripts/local-test.sh +52 -7
- package/scripts/push.sh +12 -4
- package/scripts/release.sh +50 -40
- package/scripts/test-auto-detect.js +71 -48
- package/skills/README.md +0 -1
- package/skills/oss-upload/skill.md +50 -0
- package/skills/oss-upload/upload.py +355 -0
- package/skills/soke-assign/README.md +310 -0
- package/skills/soke-assign/SKILL.md +383 -0
- package/skills/soke-course/README.md +168 -92
- package/skills/soke-course/SKILL.md +372 -460
- package/skills/soke-exam/SKILL.md +565 -0
- package/skills/soke-exam/references/exam-get-exam-user.md +212 -0
- package/skills/soke-learning-map/SKILL.md +544 -0
- package/skills/soke-learning-profile/SKILL.md +0 -1
- package/skills/soke-lesson/README.md +53 -0
- package/skills/soke-lesson/SKILL.md +510 -0
- package/skills/soke-material/README.md +49 -0
- package/skills/soke-material/SKILL.md +390 -0
- package/scripts/ci/check-legacy-constants.sh +0 -27
- package/scripts/ci/check-yaml-env-whitelist.sh +0 -33
- package/scripts/mcp-stdout-scan.sh +0 -46
- package/scripts/regress-auth.sh +0 -56
- package/scripts/regress-baseline.md +0 -84
- package/scripts/test-local-reconcile.js +0 -55
- package/skills/soke-business-training-report/SKILL.md +0 -58
- package/skills/soke-course/SUMMARY.md +0 -236
- package/skills/soke-course/templates/batch-create-from-excel.md +0 -75
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: soke-assign
|
|
3
|
+
summary: 授客学堂指派管理(创建指派/查询指派/查询部门/查询用户),支持课程、考试、学习地图等多种模块的指派操作
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
description: "授客学堂指派管理:通用的学习资源指派系统,支持将课程、考试、学习地图等学习资源指派给部门、用户、群组、职位或角色。提供完整的指派生命周期管理,包括创建指派、查询指派列表、查询可用部门和用户。支持必修和选修两种学习类型,支持批量指派和消息通知。当用户需要为部门或用户分配学习任务时使用。"
|
|
6
|
+
metadata:
|
|
7
|
+
requires:
|
|
8
|
+
bins: ["soke-cli"]
|
|
9
|
+
cliHelp: "soke-cli assign --help"
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# 指派管理 (assign)
|
|
13
|
+
|
|
14
|
+
**CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../soke-shared/SKILL.md`](../soke-shared/SKILL.md),其中包含认证、配置、权限处理**
|
|
15
|
+
|
|
16
|
+
## ⚠️ 使用前提
|
|
17
|
+
|
|
18
|
+
本 skill 基于 **soke-cli** 命令行工具,使用前必须完成以下步骤:
|
|
19
|
+
|
|
20
|
+
1. **安装 soke-cli**:确保已安装 `@sokeai/cli` NPM 包或 soke-cli 二进制文件
|
|
21
|
+
2. **用户登录授权**:运行 `soke-cli auth login` 完成 OAuth 设备码授权流程,获取用户访问令牌
|
|
22
|
+
|
|
23
|
+
**快速开始**:
|
|
24
|
+
```bash
|
|
25
|
+
# 1. 用户登录授权(必须)
|
|
26
|
+
soke-cli auth login
|
|
27
|
+
|
|
28
|
+
# 2. 验证登录状态
|
|
29
|
+
soke-cli config show
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
未完成登录授权将无法调用任何指派管理相关的 API。详细的认证配置说明请参考 [soke-shared/SKILL.md](../soke-shared/SKILL.md)。
|
|
33
|
+
|
|
34
|
+
## 核心概念
|
|
35
|
+
|
|
36
|
+
- **Assign(指派)**: 将学习资源分配给特定对象的操作,通过 `uuid` 标识
|
|
37
|
+
- **Module(模块)**: 学习资源类型,如 course(课程)、exam(考试)、learning_map(学习地图)
|
|
38
|
+
- **Target(目标)**: 被指派的学习资源,通过 `target_id` 标识
|
|
39
|
+
- **AssignType(指派类型)**: 指派对象类型,包括 dept(部门)、user(用户)、group(群组)、position(职位)、role(角色)
|
|
40
|
+
- **LearnType(学习类型)**: required(必修)或 optional(选修)
|
|
41
|
+
|
|
42
|
+
## 支持的模块
|
|
43
|
+
|
|
44
|
+
- **course** - 课程指派
|
|
45
|
+
- **exam** - 考试指派
|
|
46
|
+
- **learning_map** - 学习地图指派
|
|
47
|
+
- 其他模块(根据系统配置)
|
|
48
|
+
|
|
49
|
+
## 支持的指派类型
|
|
50
|
+
|
|
51
|
+
- **dept(部门)**: 部门下所有成员都可以学习
|
|
52
|
+
- **user(用户)**: 只有指定的用户可以学习
|
|
53
|
+
|
|
54
|
+
## 可用命令
|
|
55
|
+
|
|
56
|
+
### 1. 查询部门列表
|
|
57
|
+
|
|
58
|
+
查询可用的部门列表,用于指派前选择目标部门。
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
soke-cli assign +list-departments [flags]
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
**参数**:
|
|
65
|
+
- `--page` - 页码(默认:1)
|
|
66
|
+
- `--limit` - 每页数量(默认:10)
|
|
67
|
+
- `--parent-id` - 父部门ID(默认:1,查询顶级部门)
|
|
68
|
+
- `--keyword` - 搜索关键词(部门名称)
|
|
69
|
+
|
|
70
|
+
**示例**:
|
|
71
|
+
```bash
|
|
72
|
+
# 查询顶级部门
|
|
73
|
+
soke-cli assign +list-departments
|
|
74
|
+
|
|
75
|
+
# 搜索部门
|
|
76
|
+
soke-cli assign +list-departments --keyword "研发"
|
|
77
|
+
|
|
78
|
+
# 查询子部门
|
|
79
|
+
soke-cli assign +list-departments --parent-id "130110584"
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**输出信息**:
|
|
83
|
+
- 部门ID(用于创建指派)
|
|
84
|
+
- 部门名称
|
|
85
|
+
- 父部门ID
|
|
86
|
+
- 成员数量
|
|
87
|
+
- 子部门数量
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
### 2. 查询用户列表
|
|
92
|
+
|
|
93
|
+
查询可用的用户列表,用于指派前选择目标用户。
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
soke-cli assign +list-users [flags]
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
**参数**:
|
|
100
|
+
- `--dept-id` - 部门ID
|
|
101
|
+
- `--keyword` - 搜索关键词
|
|
102
|
+
- `--search-target` - 搜索目标:name(姓名)/phone(手机号)/job_number(工号),默认:name
|
|
103
|
+
- `--is-in` - 是否在权限范围内:0否/1是
|
|
104
|
+
- `--is-new` - 是否新用户:0否/1是(默认:0)
|
|
105
|
+
- `--page` - 页码(默认:1)
|
|
106
|
+
- `--limit` - 每页数量(默认:20)
|
|
107
|
+
|
|
108
|
+
**示例**:
|
|
109
|
+
```bash
|
|
110
|
+
# 查询所有用户
|
|
111
|
+
soke-cli assign +list-users
|
|
112
|
+
|
|
113
|
+
# 查询指定部门的用户
|
|
114
|
+
soke-cli assign +list-users --dept-id "130110584"
|
|
115
|
+
|
|
116
|
+
# 按姓名搜索
|
|
117
|
+
soke-cli assign +list-users --keyword "张三" --search-target "name"
|
|
118
|
+
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
**输出信息**:
|
|
122
|
+
- 用户ID(用于创建指派)
|
|
123
|
+
- 姓名
|
|
124
|
+
- 部门ID
|
|
125
|
+
- 职位
|
|
126
|
+
- 工号
|
|
127
|
+
- 在职状态
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
### 3. 创建指派
|
|
132
|
+
|
|
133
|
+
将学习资源指派给部门、用户、群组、职位或角色。
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
soke-cli assign +create [flags]
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
**必填参数**:
|
|
140
|
+
- `--module` - 模块类型:course(课程)、exam(考试)、learning_map(学习地图)
|
|
141
|
+
- `--target-id` - 目标ID(如课程ID、考试ID等)
|
|
142
|
+
|
|
143
|
+
**可选参数**:
|
|
144
|
+
- `--learn-type` - 学习类型:required(必修)、optional(选修),默认:required
|
|
145
|
+
- `--dept-ids` - 部门ID列表,逗号分隔
|
|
146
|
+
- `--dept-names` - 部门名称列表,逗号分隔,与dept-ids对应
|
|
147
|
+
- `--user-ids` - 用户ID列表,逗号分隔
|
|
148
|
+
- `--user-names` - 用户名称列表,逗号分隔,与user-ids对应
|
|
149
|
+
- `--message-content` - 通知消息内容
|
|
150
|
+
- `--message-switch` - 消息开关:0关闭/1开启,默认:1
|
|
151
|
+
|
|
152
|
+
**示例**:
|
|
153
|
+
```bash
|
|
154
|
+
# 指派课程给部门(必修)
|
|
155
|
+
soke-cli assign +create \
|
|
156
|
+
--module "course" \
|
|
157
|
+
--target-id "E08464D0-D567-4A01-8FAB-BD41AFFDB271" \
|
|
158
|
+
--dept-ids "130110584" \
|
|
159
|
+
--dept-names "研发部" \
|
|
160
|
+
--learn-type "required" \
|
|
161
|
+
--message-content "新课程已为您安排,请及时学习!"
|
|
162
|
+
|
|
163
|
+
# 指派课程给用户
|
|
164
|
+
soke-cli assign +create \
|
|
165
|
+
--module "course" \
|
|
166
|
+
--target-id "E08464D0-D567-4A01-8FAB-BD41AFFDB271" \
|
|
167
|
+
--user-ids "1241453468881932" \
|
|
168
|
+
--user-names "张三" \
|
|
169
|
+
--learn-type "required"
|
|
170
|
+
|
|
171
|
+
# 同时指派给部门和用户
|
|
172
|
+
soke-cli assign +create \
|
|
173
|
+
--module "course" \
|
|
174
|
+
--target-id "E08464D0-D567-4A01-8FAB-BD41AFFDB271" \
|
|
175
|
+
--dept-ids "130110584,130110585" \
|
|
176
|
+
--dept-names "研发部,测试部" \
|
|
177
|
+
--user-ids "1241453468881932" \
|
|
178
|
+
--user-names "张三" \
|
|
179
|
+
--learn-type "required"
|
|
180
|
+
|
|
181
|
+
# 指派考试给部门
|
|
182
|
+
soke-cli assign +create \
|
|
183
|
+
--module "exam" \
|
|
184
|
+
--target-id "EXAM-UUID-12345" \
|
|
185
|
+
--dept-ids "130110584" \
|
|
186
|
+
--dept-names "研发部" \
|
|
187
|
+
--learn-type "required"
|
|
188
|
+
|
|
189
|
+
# 创建选修课指派
|
|
190
|
+
soke-cli assign +create \
|
|
191
|
+
--module "course" \
|
|
192
|
+
--target-id "E08464D0-D567-4A01-8FAB-BD41AFFDB271" \
|
|
193
|
+
--dept-ids "130110584" \
|
|
194
|
+
--dept-names "研发部" \
|
|
195
|
+
--learn-type "optional"
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
**重要提示**:
|
|
199
|
+
- 至少需要指定一种指派类型(部门或用户)
|
|
200
|
+
- 支持批量指派,使用逗号分隔多个ID和名称
|
|
201
|
+
- ID和名称的顺序要一一对应
|
|
202
|
+
- 默认开启消息通知,可通过 `--message-switch 0` 关闭
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
### 4. 查询指派列表
|
|
207
|
+
|
|
208
|
+
查询已创建的指派记录。
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
soke-cli assign +list [flags]
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
**参数**:
|
|
215
|
+
- `--target-id` - 目标ID(筛选特定资源的指派)
|
|
216
|
+
- `--module` - 模块类型:course/exam/learning_map等
|
|
217
|
+
- `--learn-type` - 学习类型:required/optional
|
|
218
|
+
- `--assign-type` - 指派类型:dept/user/group/position/role
|
|
219
|
+
- `--keyword` - 搜索关键词(部门名、用户名等)
|
|
220
|
+
- `--page` - 页码(默认:1)
|
|
221
|
+
- `--limit` - 每页数量(默认:10)
|
|
222
|
+
|
|
223
|
+
**示例**:
|
|
224
|
+
```bash
|
|
225
|
+
# 查询特定课程的所有指派
|
|
226
|
+
soke-cli assign +list \
|
|
227
|
+
--module "course" \
|
|
228
|
+
--target-id "E08464D0-D567-4A01-8FAB-BD41AFFDB271"
|
|
229
|
+
|
|
230
|
+
# 查询特定课程的部门指派
|
|
231
|
+
soke-cli assign +list \
|
|
232
|
+
--module "course" \
|
|
233
|
+
--target-id "E08464D0-D567-4A01-8FAB-BD41AFFDB271" \
|
|
234
|
+
--assign-type "dept"
|
|
235
|
+
|
|
236
|
+
# 按关键词搜索
|
|
237
|
+
soke-cli assign +list \
|
|
238
|
+
--module "course" \
|
|
239
|
+
--target-id "E08464D0-D567-4A01-8FAB-BD41AFFDB271" \
|
|
240
|
+
--keyword "研发"
|
|
241
|
+
|
|
242
|
+
# 查询必修课指派
|
|
243
|
+
soke-cli assign +list \
|
|
244
|
+
--module "course" \
|
|
245
|
+
--learn-type "required"
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
**输出信息**:
|
|
249
|
+
- 指派UUID
|
|
250
|
+
- 指派对象名称
|
|
251
|
+
- 指派类型
|
|
252
|
+
- 目标ID
|
|
253
|
+
- 学习类型
|
|
254
|
+
- 创建时间
|
|
255
|
+
- 创建人
|
|
256
|
+
- 状态信息
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
## 完整工作流
|
|
261
|
+
|
|
262
|
+
### 场景1:为新员工培训课程创建指派
|
|
263
|
+
|
|
264
|
+
```bash
|
|
265
|
+
# 步骤1: 查询部门列表,找到目标部门
|
|
266
|
+
soke-cli assign +list-departments --keyword "研发"
|
|
267
|
+
# 输出:部门ID: 130110584, 部门名称: 研发部
|
|
268
|
+
|
|
269
|
+
# 步骤2: 查询该部门的用户(可选)
|
|
270
|
+
soke-cli assign +list-users --dept-id "130110584"
|
|
271
|
+
# 输出:用户列表
|
|
272
|
+
|
|
273
|
+
# 步骤3: 创建课程指派
|
|
274
|
+
soke-cli assign +create \
|
|
275
|
+
--module "course" \
|
|
276
|
+
--target-id "E08464D0-D567-4A01-8FAB-BD41AFFDB271" \
|
|
277
|
+
--dept-ids "130110584" \
|
|
278
|
+
--dept-names "研发部" \
|
|
279
|
+
--learn-type "required" \
|
|
280
|
+
--message-content "新员工培训课程已为您安排,请在一周内完成学习!"
|
|
281
|
+
|
|
282
|
+
# 步骤4: 验证指派是否成功
|
|
283
|
+
soke-cli assign +list \
|
|
284
|
+
--module "course" \
|
|
285
|
+
--target-id "E08464D0-D567-4A01-8FAB-BD41AFFDB271"
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
### 场景2:为考试创建多维度指派
|
|
289
|
+
|
|
290
|
+
```bash
|
|
291
|
+
# 同时指派给部门和用户
|
|
292
|
+
soke-cli assign +create \
|
|
293
|
+
--module "exam" \
|
|
294
|
+
--target-id "EXAM-UUID-12345" \
|
|
295
|
+
--dept-ids "130110584,130110585" \
|
|
296
|
+
--dept-names "研发部,测试部" \
|
|
297
|
+
--user-ids "1241453468881932" \
|
|
298
|
+
--user-names "张三" \
|
|
299
|
+
--learn-type "required" \
|
|
300
|
+
--message-content "年度考核考试已开放,请按时参加!"
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
---
|
|
304
|
+
|
|
305
|
+
## 注意事项
|
|
306
|
+
|
|
307
|
+
1. **指派前准备**
|
|
308
|
+
- 确保目标资源已创建(如课程已发布)
|
|
309
|
+
- 使用 `+list-departments` 和 `+list-users` 查询可用的部门和用户
|
|
310
|
+
- 记录部门ID和用户ID用于创建指派
|
|
311
|
+
|
|
312
|
+
2. **批量指派**
|
|
313
|
+
- 支持同时指派给多个对象
|
|
314
|
+
- 使用逗号分隔多个ID和名称
|
|
315
|
+
- ID和名称的顺序要一一对应
|
|
316
|
+
|
|
317
|
+
3. **必修 vs 选修**
|
|
318
|
+
- 必修(required):用户必须完成学习
|
|
319
|
+
- 选修(optional):用户可选择性学习
|
|
320
|
+
|
|
321
|
+
4. **消息通知**
|
|
322
|
+
- 默认开启消息通知
|
|
323
|
+
- 可自定义消息内容
|
|
324
|
+
- 可通过 `--message-switch 0` 关闭通知
|
|
325
|
+
|
|
326
|
+
5. **权限要求**
|
|
327
|
+
- 需要具有指派的读写权限
|
|
328
|
+
- 只能查询和操作权限范围内的部门和用户
|
|
329
|
+
|
|
330
|
+
---
|
|
331
|
+
|
|
332
|
+
## 常见问题
|
|
333
|
+
|
|
334
|
+
### Q1: 如何获取课程ID?
|
|
335
|
+
```bash
|
|
336
|
+
soke-cli course +list-courses --page 1 --limit 10
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
### Q2: 如何获取部门ID?
|
|
340
|
+
```bash
|
|
341
|
+
soke-cli assign +list-departments --keyword "研发"
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
### Q3: 如何获取用户ID?
|
|
345
|
+
```bash
|
|
346
|
+
soke-cli assign +list-users --dept-id "1" --keyword "张三"
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
### Q4: 指派失败怎么办?
|
|
350
|
+
检查以下几点:
|
|
351
|
+
1. 目标资源是否已发布
|
|
352
|
+
2. 部门ID和用户ID是否正确
|
|
353
|
+
3. 是否有足够的权限
|
|
354
|
+
4. module 参数是否正确
|
|
355
|
+
|
|
356
|
+
### Q5: 可以同时指派给多种类型吗?
|
|
357
|
+
可以!在一次指派中可以同时指定部门、用户、群组、职位和角色。
|
|
358
|
+
|
|
359
|
+
---
|
|
360
|
+
|
|
361
|
+
## API 接口
|
|
362
|
+
|
|
363
|
+
本 skill 使用以下 API 接口:
|
|
364
|
+
|
|
365
|
+
- `GET /skills/department/list` - 查询部门列表
|
|
366
|
+
- `GET /skills/user/list` - 查询用户列表
|
|
367
|
+
- `POST /skills/assignLog/create` - 创建指派
|
|
368
|
+
- `GET /skills/assignLog/list` - 查询指派列表
|
|
369
|
+
|
|
370
|
+
详细的 API 文档请参考 [API_PROXY_INTERFACES_2.0.md](../../docs/API_PROXY_INTERFACES_2.0.md)。
|
|
371
|
+
|
|
372
|
+
---
|
|
373
|
+
|
|
374
|
+
## 相关 Skills
|
|
375
|
+
|
|
376
|
+
- **soke-course** - 课程管理,创建和管理课程
|
|
377
|
+
- **soke-exam** - 考试管理,创建和管理考试
|
|
378
|
+
- **soke-learning-profile** - 学习地图管理
|
|
379
|
+
|
|
380
|
+
---
|
|
381
|
+
|
|
382
|
+
**版本**: 1.0.0
|
|
383
|
+
**最后更新**: 2026-05-28
|