@sokeai/cli 1.0.34 → 1.0.39

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.
@@ -1,318 +0,0 @@
1
- ---
2
- name: soke-exam
3
- summary: 授客考试管理(考试列表/分类/考试用户成绩/详情),通过 soke-cli 查询
4
- version: 1.0.0
5
- description: "授客考试管理:查询考试、考试用户和成绩。查询考试列表、考试分类、考试用户成绩、考试详情。当用户需要查询考试成绩、查看考试列表、查询考试用户信息、查看考试分类时使用。"
6
- metadata:
7
- requires:
8
- bins: ["soke-cli"]
9
- cliHelp: "soke-cli exam --help"
10
- ---
11
-
12
- # 考试管理 (exam)
13
-
14
- **CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../soke-shared/SKILL.md`](../soke-shared/SKILL.md),其中包含认证、配置、权限处理**
15
-
16
- ## 核心概念
17
-
18
- - **Exam(考试)**: 考试实体,包含标题、时间范围、状态等信息,通过 `uuid` 标识
19
- - **ExamUser(考试用户)**: 用户的考试记录,包含成绩、状态、答题时间等,通过 `target_id` 标识
20
- - **Category(考试分类)**: 考试分类,支持层级结构,通过 `uuid` 标识
21
- - **DeptUser(部门用户)**: 企业内的用户,通过 `dept_user_id` 标识
22
-
23
- ## 资源关系
24
-
25
- ```
26
- Exam (考试)
27
- ├── ExamUser (考试用户记录)
28
- │ ├── dept_user_id (用户ID)
29
- │ ├── score (成绩)
30
- │ ├── exam_status (考试状态)
31
- │ └── submit_time (提交时间)
32
- └── Category (考试分类)
33
- ```
34
-
35
- ## Shortcuts(推荐优先使用)
36
-
37
- Shortcut 是对常用操作的高级封装(`soke-cli exam +<verb> [flags]`)。有 Shortcut 的操作优先使用。
38
-
39
- | Shortcut | 说明 |
40
- |----------|------|
41
- | [`+list-exams`](#list-exams) | 列出考试列表,支持时间范围和状态筛选 |
42
- | [`+list-exam-users`](#list-exam-users) | 列出考试用户成绩列表,支持用户筛选和时间范围 |
43
- | [`+get-exam-user`](#get-exam-user) | 获取单个考试用户的详细成绩信息 |
44
- | [`+list-categories`](#list-categories) | 列出考试分类 |
45
-
46
- ## 命令详解
47
-
48
- ### +list-exams
49
-
50
- 列出考试列表,支持按时间范围和状态筛选。
51
-
52
- **命令格式**:
53
- ```bash
54
- soke-cli exam +list-exams \
55
- --start-time <timestamp> \
56
- --end-time <timestamp> \
57
- [--status <status>] \
58
- [--page <page>] \
59
- [--page-size <size>]
60
- ```
61
-
62
- **参数说明**:
63
- - `--start-time`: 开始时间(Unix时间戳,毫秒)**必需**
64
- - `--end-time`: 结束时间(Unix时间戳,毫秒)**必需**
65
- - `--status`: 考试状态(可选)
66
- - `--page`: 页码,从1开始(默认: 1)
67
- - `--page-size`: 每页数量,最大100(默认: 100)
68
-
69
- **返回字段**:
70
- - `uuid`: 考试ID
71
- - `title`: 考试标题
72
- - `start_time`: 开始时间
73
- - `end_time`: 结束时间
74
- - `status`: 考试状态
75
-
76
- **示例**:
77
- ```bash
78
- # 查询2023年的所有考试
79
- soke-cli exam +list-exams \
80
- --start-time 1672502400000 \
81
- --end-time 1704038400000
82
-
83
- # 查询进行中的考试
84
- soke-cli exam +list-exams \
85
- --start-time 1672502400000 \
86
- --end-time 1704038400000 \
87
- --status "进行中"
88
- ```
89
-
90
- **权限要求**: `exam:exam:readonly`
91
-
92
- ---
93
-
94
- ### +list-exam-users
95
-
96
- 列出考试用户成绩列表,支持按用户ID和完成时间筛选。
97
-
98
- **命令格式**:
99
- ```bash
100
- soke-cli exam +list-exam-users \
101
- --exam-id <exam_id> \
102
- [--userid-list <user_ids>] \
103
- [--finish-start-time <timestamp>] \
104
- [--finish-end-time <timestamp>] \
105
- [--page <page>] \
106
- [--page-size <size>]
107
- ```
108
-
109
- **参数说明**:
110
- - `--exam-id`: 考试ID **必需**
111
- - `--userid-list`: 用户ID列表,逗号分隔,最多100个(可选)
112
- - `--finish-start-time`: 完成开始时间(Unix时间戳,毫秒)(可选)
113
- - `--finish-end-time`: 完成结束时间(Unix时间戳,毫秒)(可选)
114
- - `--page`: 页码,从1开始(默认: 1)
115
- - `--page-size`: 每页数量,最大100(默认: 100)
116
-
117
- **返回字段**:
118
- - `target_id`: 考试用户记录ID
119
- - `dept_user_id`: 部门用户ID
120
- - `score`: 成绩
121
- - `exam_status`: 考试状态
122
- - `create_time`: 创建时间
123
-
124
- **示例**:
125
- ```bash
126
- # 查询某个考试的所有用户成绩
127
- soke-cli exam +list-exam-users --exam-id exam123
128
-
129
- # 查询特定用户的成绩
130
- soke-cli exam +list-exam-users \
131
- --exam-id exam123 \
132
- --userid-list "user1,user2,user3"
133
-
134
- # 查询某个时间段内完成的考试
135
- soke-cli exam +list-exam-users \
136
- --exam-id exam123 \
137
- --finish-start-time 1672502400000 \
138
- --finish-end-time 1704038400000
139
- ```
140
-
141
- **权限要求**: `exam:examUser:readonly`
142
-
143
- ---
144
-
145
- ### +get-exam-user
146
-
147
- 获取单个考试用户的详细成绩信息,包含答题详情。
148
-
149
- **命令格式**:
150
- ```bash
151
- soke-cli exam +get-exam-user \
152
- --exam-id <exam_id> \
153
- --dept-user-id <dept_user_id>
154
- ```
155
-
156
- **参数说明**:
157
- - `--exam-id`: 考试ID **必需**
158
- - `--dept-user-id`: 部门用户ID **必需**
159
-
160
- **返回字段**:
161
- - `target_id`: 考试用户记录ID
162
- - `target_title`: 考试标题
163
- - `dept_user_id`: 部门用户ID
164
- - `score`: 成绩
165
- - `exam_status`: 考试状态
166
- - `start_time`: 开始时间
167
- - `submit_time`: 提交时间
168
- - `question_count`: 题目数量
169
- - `create_time`: 创建时间
170
-
171
- **示例**:
172
- ```bash
173
- # 查询张三的考试成绩
174
- soke-cli exam +get-exam-user \
175
- --exam-id exam123 \
176
- --dept-user-id user456
177
- ```
178
-
179
- **权限要求**: `exam:examUser:readonly`
180
-
181
- **使用场景**:
182
- - 当用户询问"查询某人的考试成绩"时使用
183
- - 需要同时提供考试ID和用户ID
184
- - 如果只知道用户名,需要先通过 `soke-cli contact +search-user` 查询用户ID
185
-
186
- ---
187
-
188
- ### +list-categories
189
-
190
- 列出考试分类,支持分页。
191
-
192
- **命令格式**:
193
- ```bash
194
- soke-cli exam +list-categories \
195
- [--page <page>] \
196
- [--page-size <size>]
197
- ```
198
-
199
- **参数说明**:
200
- - `--page`: 页码,从1开始(默认: 1)
201
- - `--page-size`: 每页数量,最大100(默认: 100)
202
-
203
- **返回字段**:
204
- - `uuid`: 分类ID
205
- - `title`: 分类名称
206
- - `parent_id`: 父分类ID
207
- - `create_time`: 创建时间
208
-
209
- **示例**:
210
- ```bash
211
- # 查询所有考试分类
212
- soke-cli exam +list-categories
213
-
214
- # 分页查询
215
- soke-cli exam +list-categories --page 1 --page-size 20
216
- ```
217
-
218
- **权限要求**: `exam:category:readonly`
219
-
220
- ## 通用API调用
221
-
222
- 如果Shortcuts不满足需求,可以使用通用API调用:
223
-
224
- ```bash
225
- soke-cli api <METHOD> <path> [--params <json>]
226
- ```
227
-
228
- 示例:
229
- ```bash
230
- soke-cli api GET /exam/exam/list --params '{"start_time":"1672502400000","end_time":"1704038400000"}'
231
- ```
232
-
233
- ## 权限表
234
-
235
- | 操作 | 所需权限 |
236
- |------|---------|
237
- | `+list-exams` | `exam:exam:readonly` |
238
- | `+list-exam-users` | `exam:examUser:readonly` |
239
- | `+get-exam-user` | `exam:examUser:readonly` |
240
- | `+list-categories` | `exam:category:readonly` |
241
-
242
- ## 常见工作流
243
-
244
- ### 工作流1: 查询用户考试成绩
245
-
246
- 当用户询问"查询张三的考试成绩"时:
247
-
248
- **步骤1**: 如果只知道用户名,先查询用户ID
249
- ```bash
250
- soke-cli contact +search-user --name "张三"
251
- ```
252
-
253
- **步骤2**: 获取考试列表,找到目标考试ID
254
- ```bash
255
- soke-cli exam +list-exams \
256
- --start-time 1672502400000 \
257
- --end-time 1704038400000
258
- ```
259
-
260
- **步骤3**: 查询该用户的考试成绩
261
- ```bash
262
- soke-cli exam +get-exam-user \
263
- --exam-id <exam_id> \
264
- --dept-user-id <dept_user_id>
265
- ```
266
-
267
- ### 工作流2: 统计考试完成情况
268
-
269
- 当用户询问"统计某个考试的完成情况"时:
270
-
271
- **步骤1**: 获取考试用户列表
272
- ```bash
273
- soke-cli exam +list-exam-users --exam-id <exam_id>
274
- ```
275
-
276
- **步骤2**: 分析返回的数据
277
- - 统计 `exam_status` 字段的分布
278
- - 计算平均分(`score` 字段)
279
- - 统计完成人数
280
-
281
- ### 工作流3: 查询某个时间段的考试
282
-
283
- 当用户询问"查询本月的考试"时:
284
-
285
- **步骤1**: 计算时间范围(Unix时间戳,毫秒)
286
- ```bash
287
- # 例如:2024年1月1日 00:00:00 = 1704038400000
288
- # 2024年1月31日 23:59:59 = 1706716799000
289
- ```
290
-
291
- **步骤2**: 查询考试列表
292
- ```bash
293
- soke-cli exam +list-exams \
294
- --start-time 1704038400000 \
295
- --end-time 1706716799000
296
- ```
297
-
298
- ## 注意事项
299
-
300
- 1. **时间格式**: 所有时间参数使用Unix时间戳(毫秒),不是秒
301
- 2. **分页**: 默认每页100条,最大100条,超过需要分页查询
302
- 3. **用户ID**: `dept_user_id` 是企业内的用户ID,不是用户名
303
- 4. **考试ID**: `exam-id` 和 `uuid` 是同一个字段,都表示考试ID
304
- 5. **权限**: 所有操作都需要先完成认证(`soke-cli auth login`)
305
-
306
- ## 错误处理
307
-
308
- ### 权限不足
309
- 如果遇到权限错误,参考 [`../soke-shared/SKILL.md`](../soke-shared/SKILL.md) 中的权限处理章节。
310
-
311
- ### 参数错误
312
- 使用 `--help` 查看命令参数说明:
313
- ```bash
314
- soke-cli exam +get-exam-user --help
315
- ```
316
-
317
- ### 数据不存在
318
- 如果查询的考试或用户不存在,API会返回空数据或错误提示。
@@ -1,212 +0,0 @@
1
- # +get-exam-user - 获取考试用户详细成绩
2
-
3
- ## 概述
4
-
5
- 获取单个用户在特定考试中的详细成绩信息,包括分数、状态、答题时间等。
6
-
7
- ## 命令格式
8
-
9
- ```bash
10
- soke-cli exam +get-exam-user \
11
- --exam-id <exam_id> \
12
- --dept-user-id <dept_user_id>
13
- ```
14
-
15
- ## 参数说明
16
-
17
- ### 必需参数
18
-
19
- | 参数 | 类型 | 说明 |
20
- |------|------|------|
21
- | `--exam-id` | string | 考试ID(uuid) |
22
- | `--dept-user-id` | string | 部门用户ID |
23
-
24
- ### 可选参数
25
-
26
- | 参数 | 类型 | 默认值 | 说明 |
27
- |------|------|--------|------|
28
- | `--format` | string | json | 输出格式(json/table) |
29
-
30
- ## 返回数据
31
-
32
- ### JSON格式
33
-
34
- ```json
35
- {
36
- "code": 0,
37
- "msg": "success",
38
- "data": {
39
- "target_id": "exam_user_123",
40
- "target_title": "2024年度安全培训考试",
41
- "dept_user_id": "user456",
42
- "score": 85,
43
- "exam_status": "已完成",
44
- "start_time": 1704038400000,
45
- "submit_time": 1704042000000,
46
- "question_count": 20,
47
- "create_time": 1704038400000
48
- }
49
- }
50
- ```
51
-
52
- ### 表格格式
53
-
54
- ```
55
- target_id | target_title | dept_user_id | score | exam_status | start_time | submit_time | question_count | create_time
56
- exam_user_123 | 2024年度安全培训考试 | user456 | 85 | 已完成 | 1704038400000 | 1704042000000 | 20 | 1704038400000
57
- ```
58
-
59
- ## 字段说明
60
-
61
- | 字段 | 类型 | 说明 |
62
- |------|------|------|
63
- | `target_id` | string | 考试用户记录ID |
64
- | `target_title` | string | 考试标题 |
65
- | `dept_user_id` | string | 部门用户ID |
66
- | `score` | number | 考试成绩(分数) |
67
- | `exam_status` | string | 考试状态(如:已完成、进行中、未开始) |
68
- | `start_time` | number | 开始答题时间(Unix时间戳,毫秒) |
69
- | `submit_time` | number | 提交时间(Unix时间戳,毫秒) |
70
- | `question_count` | number | 题目总数 |
71
- | `create_time` | number | 记录创建时间(Unix时间戳,毫秒) |
72
-
73
- ## 使用示例
74
-
75
- ### 示例1: 查询单个用户成绩
76
-
77
- ```bash
78
- soke-cli exam +get-exam-user \
79
- --exam-id exam123 \
80
- --dept-user-id user456
81
- ```
82
-
83
- ### 示例2: 以表格格式输出
84
-
85
- ```bash
86
- soke-cli exam +get-exam-user \
87
- --exam-id exam123 \
88
- --dept-user-id user456 \
89
- --format table
90
- ```
91
-
92
- ## 常见场景
93
-
94
- ### 场景1: 用户询问自己的成绩
95
-
96
- **用户输入**: "我的考试成绩是多少?"
97
-
98
- **处理步骤**:
99
- 1. 获取当前用户的 `dept_user_id`(通过 `soke-cli api GET /users/me`)
100
- 2. 确认考试ID(可能需要先列出考试)
101
- 3. 执行查询命令
102
-
103
- ```bash
104
- # 步骤1: 获取当前用户信息
105
- soke-cli api GET /users/me
106
-
107
- # 步骤2: 查询成绩
108
- soke-cli exam +get-exam-user \
109
- --exam-id exam123 \
110
- --dept-user-id <从步骤1获取的user_id>
111
- ```
112
-
113
- ### 场景2: 管理员查询员工成绩
114
-
115
- **用户输入**: "查询张三的考试成绩"
116
-
117
- **处理步骤**:
118
- 1. 通过姓名查询用户ID(使用 `soke-cli contact +search-user`)
119
- 2. 确认考试ID
120
- 3. 执行查询命令
121
-
122
- ```bash
123
- # 步骤1: 查询用户ID
124
- soke-cli contact +search-user --name "张三"
125
-
126
- # 步骤2: 查询成绩
127
- soke-cli exam +get-exam-user \
128
- --exam-id exam123 \
129
- --dept-user-id <从步骤1获取的dept_user_id>
130
- ```
131
-
132
- ### 场景3: 批量查询多个用户成绩
133
-
134
- **用户输入**: "查询所有人的考试成绩"
135
-
136
- **处理步骤**:
137
- 使用 `+list-exam-users` 更合适,可以一次获取所有用户的成绩列表。
138
-
139
- ```bash
140
- soke-cli exam +list-exam-users --exam-id exam123
141
- ```
142
-
143
- ## 权限要求
144
-
145
- - **所需权限**: `exam:examUser:readonly`
146
- - **认证方式**: 需要先执行 `soke-cli auth login` 完成用户认证
147
-
148
- ## 错误处理
149
-
150
- ### 错误1: 考试不存在
151
-
152
- ```json
153
- {
154
- "code": 404,
155
- "msg": "考试不存在"
156
- }
157
- ```
158
-
159
- **解决方案**: 检查 `exam-id` 是否正确
160
-
161
- ### 错误2: 用户未参加考试
162
-
163
- ```json
164
- {
165
- "code": 404,
166
- "msg": "用户未参加该考试"
167
- }
168
- ```
169
-
170
- **解决方案**: 确认用户是否已参加该考试
171
-
172
- ### 错误3: 权限不足
173
-
174
- ```json
175
- {
176
- "code": 403,
177
- "msg": "权限不足"
178
- }
179
- ```
180
-
181
- **解决方案**:
182
- 1. 确认已执行 `soke-cli auth login`
183
- 2. 联系管理员开通 `exam:examUser:readonly` 权限
184
-
185
- ### 错误4: 参数缺失
186
-
187
- ```bash
188
- Error: required flag(s) "exam-id", "dept-user-id" not set
189
- ```
190
-
191
- **解决方案**: 检查是否提供了所有必需参数
192
-
193
- ## API详情
194
-
195
- - **HTTP方法**: GET
196
- - **API路径**: `/exam/user/info`
197
- - **请求参数**:
198
- - `exam_id`: 考试ID
199
- - `dept_user_id`: 部门用户ID
200
-
201
- ## 相关命令
202
-
203
- - `+list-exam-users`: 列出考试用户成绩列表
204
- - `+list-exams`: 列出考试列表
205
- - `soke-cli contact +search-user`: 查询用户信息
206
-
207
- ## 注意事项
208
-
209
- 1. **时间戳格式**: 所有时间字段都是Unix时间戳(毫秒),不是秒
210
- 2. **用户ID**: 必须使用 `dept_user_id`,不能使用用户名或其他标识
211
- 3. **考试状态**: 状态值可能因系统配置而异,常见值包括:已完成、进行中、未开始、已过期
212
- 4. **成绩计算**: 成绩字段可能为null(如果考试未完成或未提交)