@sokeai/cli 1.0.17 → 1.0.19

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.
@@ -0,0 +1,480 @@
1
+ # 课程查询使用示例
2
+
3
+ 本文档提供了使用 `soke-course` skill 的实际示例。
4
+
5
+ ## 示例1: 查询本月的课程
6
+
7
+ ### 需求
8
+ 查询2024年5月创建的所有已发布课程。
9
+
10
+ ### 步骤
11
+
12
+ **1. 计算时间戳**
13
+
14
+ ```javascript
15
+ // 2024年5月1日 00:00:00
16
+ const startTime = new Date('2024-05-01 00:00:00').getTime();
17
+ console.log(startTime); // 1714492800000
18
+
19
+ // 2024年5月31日 23:59:59
20
+ const endTime = new Date('2024-05-31 23:59:59').getTime();
21
+ console.log(endTime); // 1717171199000
22
+ ```
23
+
24
+ **2. 执行查询**
25
+
26
+ ```bash
27
+ soke-cli course +list-courses \
28
+ --start-time 1714492800000 \
29
+ --end-time 1717171199000 \
30
+ --status 1
31
+ ```
32
+
33
+ **3. 预期输出**
34
+
35
+ ```
36
+ uuid title category_id status lesson_num create_time
37
+ ------------------------------------ ----------------- ----------- ------ ---------- -------------
38
+ abc123-def456-ghi789 Go语言入门 cat001 1 20 1714492800000
39
+ xyz789-uvw456-rst123 Python基础教程 cat002 1 15 1714579200000
40
+ ```
41
+
42
+ ---
43
+
44
+ ## 示例2: 统计课程完成率
45
+
46
+ ### 需求
47
+ 统计某个课程的学习完成情况,包括完成人数、平均进度等。
48
+
49
+ ### 步骤
50
+
51
+ **1. 获取课程学习记录**
52
+
53
+ ```bash
54
+ soke-cli course +list-course-users \
55
+ --course-id "abc123-def456-ghi789" \
56
+ --page-size 100
57
+ ```
58
+
59
+ **2. 分析返回数据**
60
+
61
+ 假设返回数据如下:
62
+
63
+ ```json
64
+ {
65
+ "data": {
66
+ "list": [
67
+ {
68
+ "dept_user_id": "user001",
69
+ "dept_user_name": "张三",
70
+ "study_progress": 100,
71
+ "finish_status": 1,
72
+ "study_duration": 7200
73
+ },
74
+ {
75
+ "dept_user_id": "user002",
76
+ "dept_user_name": "李四",
77
+ "study_progress": 50,
78
+ "finish_status": 0,
79
+ "study_duration": 3600
80
+ },
81
+ {
82
+ "dept_user_id": "user003",
83
+ "dept_user_name": "王五",
84
+ "study_progress": 100,
85
+ "finish_status": 1,
86
+ "study_duration": 6800
87
+ }
88
+ ]
89
+ }
90
+ }
91
+ ```
92
+
93
+ **3. 计算统计数据**
94
+
95
+ ```javascript
96
+ const data = response.data.list;
97
+
98
+ // 总人数
99
+ const totalUsers = data.length; // 3
100
+
101
+ // 完成人数
102
+ const completedUsers = data.filter(u => u.finish_status === 1).length; // 2
103
+
104
+ // 完成率
105
+ const completionRate = (completedUsers / totalUsers * 100).toFixed(2); // 66.67%
106
+
107
+ // 平均进度
108
+ const avgProgress = (data.reduce((sum, u) => sum + u.study_progress, 0) / totalUsers).toFixed(2); // 83.33%
109
+
110
+ // 平均学习时长(小时)
111
+ const avgDuration = (data.reduce((sum, u) => sum + u.study_duration, 0) / totalUsers / 3600).toFixed(2); // 1.62小时
112
+
113
+ console.log(`总人数: ${totalUsers}`);
114
+ console.log(`完成人数: ${completedUsers}`);
115
+ console.log(`完成率: ${completionRate}%`);
116
+ console.log(`平均进度: ${avgProgress}%`);
117
+ console.log(`平均学习时长: ${avgDuration}小时`);
118
+ ```
119
+
120
+ ---
121
+
122
+ ## 示例3: 查询用户的学习情况
123
+
124
+ ### 需求
125
+ 查询"张三"在某个课程的学习情况。
126
+
127
+ ### 步骤
128
+
129
+ **1. 查询用户ID**
130
+
131
+ ```bash
132
+ soke-cli contact +search-user --name "张三"
133
+ ```
134
+
135
+ 假设返回:
136
+ ```json
137
+ {
138
+ "data": {
139
+ "dept_user_id": "user001",
140
+ "dept_user_name": "张三"
141
+ }
142
+ }
143
+ ```
144
+
145
+ **2. 查询课程学习记录**
146
+
147
+ ```bash
148
+ soke-cli course +get-course-user \
149
+ --course-id "abc123-def456-ghi789" \
150
+ --dept-user-id "user001"
151
+ ```
152
+
153
+ **3. 预期输出**
154
+
155
+ ```json
156
+ {
157
+ "data": {
158
+ "target_id": "record001",
159
+ "dept_user_id": "user001",
160
+ "dept_user_name": "张三",
161
+ "study_progress": 100,
162
+ "finish_status": 1,
163
+ "study_duration": 7200,
164
+ "create_time": 1714492800000,
165
+ "update_time": 1714579200000
166
+ }
167
+ }
168
+ ```
169
+
170
+ **4. 解读结果**
171
+
172
+ - 学习进度: 100%(已完成)
173
+ - 完成状态: 1(已完成)
174
+ - 学习时长: 7200秒(2小时)
175
+ - 开始时间: 2024-05-01
176
+ - 最后更新: 2024-05-02
177
+
178
+ ---
179
+
180
+ ## 示例4: 查询课程的课件学习详情
181
+
182
+ ### 需求
183
+ 查询某个课程的所有课件,并统计每个课件的学习情况。
184
+
185
+ ### 步骤
186
+
187
+ **1. 获取课程课件列表**
188
+
189
+ ```bash
190
+ soke-cli course +list-lessons \
191
+ --course-id "abc123-def456-ghi789"
192
+ ```
193
+
194
+ **2. 预期输出**
195
+
196
+ ```json
197
+ {
198
+ "data": {
199
+ "list": [
200
+ {
201
+ "uuid": "lesson001",
202
+ "title": "第1课:Go语言简介",
203
+ "type": "video",
204
+ "duration": 1800,
205
+ "sort": 1
206
+ },
207
+ {
208
+ "uuid": "lesson002",
209
+ "title": "第2课:环境搭建",
210
+ "type": "video",
211
+ "duration": 2400,
212
+ "sort": 2
213
+ }
214
+ ]
215
+ }
216
+ }
217
+ ```
218
+
219
+ **3. 查询每个课件的学习记录**
220
+
221
+ ```bash
222
+ # 查询第1课的学习记录
223
+ soke-cli course +list-lesson-learns --lesson-id "lesson001"
224
+
225
+ # 查询第2课的学习记录
226
+ soke-cli course +list-lesson-learns --lesson-id "lesson002"
227
+ ```
228
+
229
+ **4. 统计分析**
230
+
231
+ ```javascript
232
+ // 假设lesson001有50人学习,40人完成
233
+ // 假设lesson002有50人学习,30人完成
234
+
235
+ const lessonStats = [
236
+ { title: "第1课:Go语言简介", total: 50, completed: 40, rate: "80%" },
237
+ { title: "第2课:环境搭建", total: 50, completed: 30, rate: "60%" }
238
+ ];
239
+
240
+ console.table(lessonStats);
241
+ ```
242
+
243
+ ---
244
+
245
+ ## 示例5: 按分类查询课程
246
+
247
+ ### 需求
248
+ 查询"技术培训"分类下的所有已发布课程。
249
+
250
+ ### 步骤
251
+
252
+ **1. 获取课程分类列表**
253
+
254
+ ```bash
255
+ soke-cli course +list-categories
256
+ ```
257
+
258
+ **2. 找到目标分类**
259
+
260
+ 假设返回:
261
+ ```json
262
+ {
263
+ "data": {
264
+ "list": [
265
+ {
266
+ "uuid": "cat001",
267
+ "title": "技术培训",
268
+ "parent_id": "0"
269
+ },
270
+ {
271
+ "uuid": "cat002",
272
+ "title": "管理培训",
273
+ "parent_id": "0"
274
+ }
275
+ ]
276
+ }
277
+ }
278
+ ```
279
+
280
+ **3. 查询该分类下的课程**
281
+
282
+ ```bash
283
+ soke-cli course +list-courses \
284
+ --start-time 1704038400000 \
285
+ --end-time 1735660799000 \
286
+ --category-id "cat001" \
287
+ --status 1
288
+ ```
289
+
290
+ ---
291
+
292
+ ## 示例6: 查询人脸识别记录
293
+
294
+ ### 需求
295
+ 查询某个课件的人脸识别记录,确保学员本人学习。
296
+
297
+ ### 步骤
298
+
299
+ **1. 查询课件的人脸识别记录**
300
+
301
+ ```bash
302
+ soke-cli course +list-lesson-faces \
303
+ --lesson-id "lesson001" \
304
+ --start-time 1714492800000 \
305
+ --end-time 1717171199000
306
+ ```
307
+
308
+ **2. 预期输出**
309
+
310
+ ```json
311
+ {
312
+ "data": {
313
+ "list": [
314
+ {
315
+ "uuid": "face001",
316
+ "dept_user_id": "user001",
317
+ "dept_user_name": "张三",
318
+ "face_status": 1,
319
+ "face_time": 1714492800000
320
+ },
321
+ {
322
+ "uuid": "face002",
323
+ "dept_user_id": "user002",
324
+ "dept_user_name": "李四",
325
+ "face_status": 2,
326
+ "face_time": 1714493400000
327
+ }
328
+ ]
329
+ }
330
+ }
331
+ ```
332
+
333
+ **3. 分析识别结果**
334
+
335
+ - `face_status = 1`: 识别成功(张三)
336
+ - `face_status = 2`: 识别失败(李四)
337
+
338
+ ---
339
+
340
+ ## 示例7: 批量查询多个用户的学习记录
341
+
342
+ ### 需求
343
+ 查询多个用户在某个课程的学习情况。
344
+
345
+ ### 步骤
346
+
347
+ **1. 准备用户ID列表**
348
+
349
+ ```bash
350
+ # 用户ID列表(逗号分隔,最多100个)
351
+ USER_IDS="user001,user002,user003,user004,user005"
352
+ ```
353
+
354
+ **2. 批量查询**
355
+
356
+ ```bash
357
+ soke-cli course +list-course-users \
358
+ --course-id "abc123-def456-ghi789" \
359
+ --userid-list "$USER_IDS"
360
+ ```
361
+
362
+ **3. 预期输出**
363
+
364
+ ```json
365
+ {
366
+ "data": {
367
+ "list": [
368
+ {
369
+ "dept_user_id": "user001",
370
+ "dept_user_name": "张三",
371
+ "study_progress": 100,
372
+ "finish_status": 1
373
+ },
374
+ {
375
+ "dept_user_id": "user002",
376
+ "dept_user_name": "李四",
377
+ "study_progress": 50,
378
+ "finish_status": 0
379
+ }
380
+ // ... 其他用户
381
+ ]
382
+ }
383
+ }
384
+ ```
385
+
386
+ ---
387
+
388
+ ## 示例8: 查询某个时间段完成的学习记录
389
+
390
+ ### 需求
391
+ 查询2024年5月完成课程学习的所有用户。
392
+
393
+ ### 步骤
394
+
395
+ **1. 计算时间范围**
396
+
397
+ ```javascript
398
+ const finishStartTime = new Date('2024-05-01 00:00:00').getTime(); // 1714492800000
399
+ const finishEndTime = new Date('2024-05-31 23:59:59').getTime(); // 1717171199000
400
+ ```
401
+
402
+ **2. 查询完成记录**
403
+
404
+ ```bash
405
+ soke-cli course +list-course-users \
406
+ --course-id "abc123-def456-ghi789" \
407
+ --finish-start-time 1714492800000 \
408
+ --finish-end-time 1717171199000
409
+ ```
410
+
411
+ **3. 筛选已完成的记录**
412
+
413
+ ```javascript
414
+ const data = response.data.list;
415
+ const completedUsers = data.filter(u => u.finish_status === 1);
416
+
417
+ console.log(`5月完成学习的用户数: ${completedUsers.length}`);
418
+ completedUsers.forEach(u => {
419
+ console.log(`- ${u.dept_user_name}: ${u.study_progress}%`);
420
+ });
421
+ ```
422
+
423
+ ---
424
+
425
+ ## 常用脚本
426
+
427
+ ### 脚本1: 课程完成率统计脚本
428
+
429
+ ```bash
430
+ #!/bin/bash
431
+
432
+ COURSE_ID="abc123-def456-ghi789"
433
+
434
+ # 获取学习记录
435
+ RESULT=$(soke-cli course +list-course-users --course-id "$COURSE_ID" --page-size 100)
436
+
437
+ # 使用jq解析JSON(需要安装jq)
438
+ TOTAL=$(echo "$RESULT" | jq '.data.list | length')
439
+ COMPLETED=$(echo "$RESULT" | jq '[.data.list[] | select(.finish_status == 1)] | length')
440
+ RATE=$(echo "scale=2; $COMPLETED * 100 / $TOTAL" | bc)
441
+
442
+ echo "课程ID: $COURSE_ID"
443
+ echo "总人数: $TOTAL"
444
+ echo "完成人数: $COMPLETED"
445
+ echo "完成率: $RATE%"
446
+ ```
447
+
448
+ ### 脚本2: 批量导出课程数据
449
+
450
+ ```bash
451
+ #!/bin/bash
452
+
453
+ START_TIME=1704038400000
454
+ END_TIME=1735660799000
455
+ OUTPUT_FILE="courses.json"
456
+
457
+ # 导出所有课程
458
+ soke-cli course +list-courses \
459
+ --start-time "$START_TIME" \
460
+ --end-time "$END_TIME" \
461
+ --page-size 100 > "$OUTPUT_FILE"
462
+
463
+ echo "课程数据已导出到: $OUTPUT_FILE"
464
+ ```
465
+
466
+ ---
467
+
468
+ ## 注意事项
469
+
470
+ 1. **时间戳格式**: 所有时间参数必须使用毫秒级Unix时间戳
471
+ 2. **分页处理**: 如果数据量大,需要循环分页查询
472
+ 3. **权限检查**: 确保已完成认证并有相应权限
473
+ 4. **错误处理**: 建议在脚本中添加错误处理逻辑
474
+ 5. **API限流**: 注意API调用频率限制
475
+
476
+ ## 相关资源
477
+
478
+ - [SKILL.md](./SKILL.md) - 完整文档
479
+ - [README.md](./README.md) - 快速开始
480
+ - [course-list-courses.md](./references/course-list-courses.md) - 详细参考