@sokeai/cli 1.0.59 → 1.0.61

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sokeai/cli",
3
- "version": "1.0.59",
3
+ "version": "1.0.61",
4
4
  "description": "授客AI官方CLI工具 - 支持AI Agent Skills",
5
5
  "bin": {
6
6
  "soke-cli": "scripts/run.js"
package/skills/README.md CHANGED
@@ -64,7 +64,6 @@ cp -r skills/soke-exam .claude/skills/
64
64
  - 遇到权限错误
65
65
 
66
66
  **关键内容**:
67
- - 配置初始化(`soke-cli config init`)
68
67
  - 用户认证(`soke-cli auth login`)
69
68
  - 权限不足处理
70
69
  - 错误处理规范
@@ -43,7 +43,7 @@ Pool (题库)
43
43
  | [`+get-exam`](#get-exam) | 获取单个考试详情 |
44
44
  | [`+list-exam-users`](#list-exam-users) | 列出考试用户成绩列表 |
45
45
  | [`+get-exam-user`](#get-exam-user) | 获取单个考试用户的详细成绩 |
46
- | [`+list-categories`](#list-categories) | 列出考试分类(旧称) |
46
+ | [`+list-exam-categories`](#list-exam-categories) | 列出考试分类(通过 API) |
47
47
  | [`+list-pool-categories`](#list-pool-categories) | 列出题库分类 |
48
48
  | [`+list-pools`](#list-pools) | 列出题库列表 |
49
49
  | [`+get-pool`](#get-pool) | 获取题库详情 |
@@ -123,6 +123,29 @@ soke-cli exam +create-question \
123
123
 
124
124
  ---
125
125
 
126
+ ## ⚠️ 题库分类 vs 考试分类
127
+
128
+ **这是两个独立的分类系统,UUID 不能混用:**
129
+
130
+ | 类型 | 用途 | 查询方式 |
131
+ |------|------|---------|
132
+ | **题库分类** (Pool Category) | 用于 `+create-pool --path` | `soke-cli exam +list-pool-categories` |
133
+ | **考试分类** (Exam Category) | 用于 `+create-exam --path` 和 `+update-exam --path` | `soke-cli api GET /skills/examCategory/list` |
134
+
135
+ **常见错误**:在 `+create-exam` 或 `+update-exam --action publish` 的 `--path` 中传入题库分类 UUID → 报"设置失败"/"分类不能为空"。
136
+
137
+ ### +list-exam-categories
138
+
139
+ 列出考试分类(通过 API 查询)。
140
+
141
+ ```bash
142
+ soke-cli api GET /skills/examCategory/list
143
+ ```
144
+
145
+ 返回 JSON,从 `data.list.list[].uuid` 获取考试分类 UUID。
146
+
147
+ ---
148
+
126
149
  ## 命令详解
127
150
 
128
151
  ### +create-exam
@@ -134,7 +157,7 @@ soke-cli exam +create-exam \
134
157
  --title <考试标题> \
135
158
  [--is-papers 1] \
136
159
  [--source self] \
137
- [--path '["<category_uuid>"]']
160
+ [--path '["<exam_category_uuid>"]']
138
161
  ```
139
162
 
140
163
  | 参数 | 必需 | 说明 |
@@ -145,7 +168,7 @@ soke-cli exam +create-exam \
145
168
  | `--is-offline` | 否 | 是否线下考试:0=否 1=是(默认 0) |
146
169
  | `--set-time` | 否 | 是否设置考试时间(默认 0) |
147
170
  | `--source` | 否 | 来源:self/mall/public(默认 self) |
148
- | `--path` | | 分类 ID 数组,JSON 格式 |
171
+ | `--path` | 条件 | **考试分类** ID 数组(不是题库分类),JSON 格式,发布考试时必传 |
149
172
 
150
173
  ---
151
174
 
@@ -261,7 +284,7 @@ soke-cli exam +update-exam \
261
284
  --exam-id <exam_uuid> \
262
285
  --title <考试标题> \
263
286
  --action publish \
264
- --path '["<category_uuid>"]'
287
+ --path '["<exam_category_uuid>"]'
265
288
 
266
289
  # 仅更新标题
267
290
  soke-cli exam +update-exam \
@@ -274,7 +297,7 @@ soke-cli exam +update-exam \
274
297
  | `--exam-id` | 是 | 考试 UUID |
275
298
  | `--title` | 条件 | 发布时必传,避免标题被清空 |
276
299
  | `--action` | 否 | `publish`=发布考试,留空仅更新信息 |
277
- | `--path` | 条件 | 发布时必传,考试分类 ID 数组 JSON |
300
+ | `--path` | 条件 | 发布时必传,**考试分类** UUID 数组 JSON(不是题库分类) |
278
301
 
279
302
  **发布前提**:
280
303
  1. 考试创建时已设置 `--path`(分类),否则发布时分类检查不通过
@@ -298,7 +321,7 @@ soke-cli exam +assign-exam \
298
321
  | `--exam-id` | 是 | 考试 UUID |
299
322
  | `--user-ids` | 是 | 用户 dept_user_id 数组,JSON 格式 |
300
323
 
301
- **查找用户 ID**:`soke-cli contact +search-user --dept-user-name "姓名"`
324
+ **查找用户 ID**:`soke-cli assign +list-users --keyword "姓名"`
302
325
 
303
326
  ---
304
327
 
@@ -319,9 +342,16 @@ soke-cli exam +get-assign --exam-id <exam_uuid>
319
342
  ```bash
320
343
  soke-cli exam +import-paper \
321
344
  --exam-id <exam_uuid> \
322
- --paper-id <paper_uuid>
345
+ --paper-id <paper_uuid> \
346
+ [--is-papers 1]
323
347
  ```
324
348
 
349
+ | 参数 | 必需 | 说明 |
350
+ |------|------|------|
351
+ | `--exam-id` | 是 | 考试 UUID |
352
+ | `--paper-id` | 是 | 试卷 UUID |
353
+ | `--is-papers` | 否 | 是否多试卷模式(默认 0)。**如果考试是用 `--is-papers 1` 创建的,此处也必须传 `--is-papers 1`**,否则 paperId 会以字符串而非数组格式发送,导致发布时 crash |
354
+
325
355
  ---
326
356
 
327
357
  ### +get-exam
@@ -475,25 +505,30 @@ soke-cli exam +update-paper \
475
505
  --title "试卷名" \
476
506
  --action publish
477
507
 
478
- # 6. 创建考试(必须带 --path 才能发布)
508
+ # 5.5 ⚠️ 查找考试分类(注意:考试分类 ≠ 题库分类!)
509
+ # 题库分类 UUID 用于 pool,考试分类 UUID 用于 exam。两者不同!
510
+ # 查询已有考试分类:
511
+ soke-cli api GET /skills/examCategory/list
512
+ # → 从中选择一个分类 UUID(如无合适的,请联系管理员创建)
513
+
514
+ # 6. 创建考试(--path 必须使用考试分类 UUID,不是题库分类 UUID)
479
515
  soke-cli exam +create-exam \
480
516
  --title "考试名" \
481
- --is-papers 1 \
482
- --path '["<category_uuid>"]'
517
+ --path '["<exam_category_uuid>"]'
483
518
 
484
519
  # 7. 关联试卷到考试
485
520
  soke-cli exam +import-paper \
486
521
  --exam-id "<exam_uuid>" \
487
522
  --paper-id "<paper_uuid>"
488
523
 
489
- # 8. 发布考试(title + path 必传)
524
+ # 8. 发布考试(title + path 必传,path 必须用考试分类 UUID)
490
525
  soke-cli exam +update-exam \
491
526
  --exam-id "<exam_uuid>" \
492
527
  --title "考试名" \
493
528
  --action publish \
494
- --path '["<category_uuid>"]'
529
+ --path '["<exam_category_uuid>"]'
495
530
 
496
- # 9. 指派考试给用户
531
+ # 9. 指派考试给用户(先通过 soke-cli assign +list-users --keyword "姓名" 查 user ID)
497
532
  soke-cli exam +assign-exam \
498
533
  --exam-id "<exam_uuid>" \
499
534
  --user-ids '["<dept_user_id>"]'
@@ -12,7 +12,7 @@ metadata:
12
12
 
13
13
  # 学习地图管理 (soke-learning-map)
14
14
 
15
- **CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../soke-shared/SKILL.md`](../soke-shared/SKILL.md),其中包含认证、配置、权限处理**
15
+ **CRITICAL — 开始前 MUST 先用 Read 工具读取 [`./soke-cli安装指南.md`](./soke-cli安装指南.md),其中包含认证、配置、权限处理**
16
16
 
17
17
  ## 使用前提
18
18
 
@@ -0,0 +1,397 @@
1
+ # 授客CLI 工具 - 快速上手指南
2
+
3
+ 本文档将指导你从零开始安装 `soke-cli`,完成用户登录授权,并开始使用授客AI开放平台的各项功能。
4
+
5
+ ---
6
+
7
+ ## 📋 目录
8
+
9
+ - [前置要求](#前置要求)
10
+ - [安装步骤](#安装步骤)
11
+ - [用户登录授权](#用户登录授权)
12
+ - [验证安装](#验证安装)
13
+ - [常见问题](#常见问题)
14
+ - [下一步](#下一步)
15
+
16
+ ---
17
+
18
+ ## 前置要求
19
+
20
+ 在开始之前,请确保你的系统满足以下要求:
21
+
22
+ ### 必需条件
23
+ - **Node.js**: 版本 >= 14.0.0(用于 NPM 安装)
24
+ - **网络连接**: 能够访问授客AI开放平台 API(默认:`https://opendev.soke.cn`)
25
+ - **浏览器**: 用于完成 OAuth 授权流程
26
+
27
+ > 💡 **提示**: 使用 `soke-cli` 无需预先配置任何凭证,所有配置将在登录授权过程中自动完成。
28
+
29
+ ---
30
+
31
+ ## 安装步骤
32
+
33
+ ### 通过 NPM 安装
34
+
35
+ 这是推荐的安装方式,简单快捷,适合所有用户。
36
+
37
+ #### macOS / Linux 安装
38
+
39
+ 打开终端,执行以下命令:
40
+
41
+ ```bash
42
+ npm install -g @sokeai/cli@latest
43
+ ```
44
+
45
+ #### Windows 安装
46
+
47
+ **方式一:使用 PowerShell(推荐)**
48
+
49
+ 1. 以管理员身份打开 PowerShell:
50
+ - 按 `Win + X`,选择"Windows PowerShell (管理员)"
51
+ - 或在开始菜单搜索"PowerShell",右键选择"以管理员身份运行"
52
+
53
+ 2. 执行安装命令:
54
+ ```powershell
55
+ npm install -g @sokeai/cli@latest
56
+ ```
57
+
58
+ **方式二:使用 CMD 命令提示符**
59
+
60
+ 1. 以管理员身份打开命令提示符:
61
+ - 按 `Win + R`,输入 `cmd`,按 `Ctrl + Shift + Enter`
62
+ - 或在开始菜单搜索"cmd",右键选择"以管理员身份运行"
63
+
64
+ 2. 执行安装命令:
65
+ ```cmd
66
+ npm install -g @sokeai/cli@latest
67
+ ```
68
+
69
+ > 💡 **Windows 提示**:
70
+ > - 如果提示"npm 不是内部或外部命令",请先安装 [Node.js](https://nodejs.org/)
71
+ > - 安装过程中可能需要管理员权限
72
+ > - 如果遇到权限问题,确保以管理员身份运行终端
73
+
74
+ ---
75
+
76
+ ### 安装过程说明
77
+
78
+ 无论使用哪个平台,安装过程都是自动化的:
79
+
80
+ 1. NPM 会自动下载 `@sokeai/cli` 包
81
+ 2. 安装脚本会根据你的操作系统(macOS/Linux/Windows)和架构(x64/arm64)自动下载对应的二进制文件
82
+ 3. 二进制文件会被放置在对应的目录:
83
+ - **macOS/Linux**: `$(npm root -g)/@sokeai/cli/bin/soke-cli`
84
+ - **Windows**: `%APPDATA%\npm\node_modules\@sokeai\cli\bin\soke-cli.exe`
85
+ 4. 如果你安装了 AI Agent(如 Claude Code),相关的 Skills 会自动同步到对应目录
86
+
87
+ ---
88
+
89
+ ### 验证安装
90
+
91
+ 安装完成后,验证是否安装成功:
92
+
93
+ **macOS / Linux**:
94
+ ```bash
95
+ soke-cli --version
96
+ ```
97
+
98
+ **Windows (PowerShell / CMD)**:
99
+ ```cmd
100
+ soke-cli --version
101
+ ```
102
+
103
+ 如果显示版本号(如 `1.0.15`),说明安装成功。
104
+
105
+ **如果提示"命令未找到"**,请参考[常见问题](#常见问题)章节。
106
+
107
+ ---
108
+
109
+ ## 用户登录授权
110
+
111
+ 安装完成后,直接执行登录命令即可开始使用。无需预先配置,所有必要的配置信息将在授权过程中自动获取并保存。
112
+
113
+ ### OAuth 浏览器授权流程
114
+
115
+ `soke-cli` 使用 OAuth 2.0 授权码流程(Authorization Code Flow),通过浏览器完成安全授权。
116
+
117
+ ### 执行登录命令
118
+
119
+ ```bash
120
+ soke-cli auth login
121
+ ```
122
+
123
+ ### 授权步骤
124
+
125
+ 1. **自动打开浏览器**
126
+
127
+ 命令执行后,会自动在默认浏览器中打开授权页面。如果浏览器没有自动打开,会显示授权链接:
128
+ ```
129
+ ℹ️ 未找到登录信息,开始授权流程
130
+
131
+ 请在浏览器中打开以下链接进行授权:
132
+ http://127.0.0.1:8080/callback?redirect_uri=...
133
+
134
+ 等待授权中...
135
+ ```
136
+
137
+ 2. **浏览器授权**
138
+
139
+ 在浏览器授权页面中:
140
+ - 如果未登录授客AI平台,先完成登录
141
+ - 查看应用请求的权限列表
142
+ - 勾选"一并开通审批的常用权限"(可选)
143
+ - 点击"开通并授权"按钮
144
+
145
+ 3. **授权成功**
146
+
147
+ 授权完成后,浏览器会显示成功页面,CLI 终端会显示:
148
+ ```
149
+ ✅ 已登录,Token 仍然有效
150
+ 企业 ID: corp_123456
151
+ ```
152
+
153
+ 4. **配置自动保存**
154
+
155
+ 授权成功后,以下信息会自动保存到 `~/.soke-cli/config.json`:
156
+ - 用户访问令牌(`user_token`)
157
+ - 企业 ID(`corpid`)
158
+ - 部门用户 ID(`dept_user_id`)
159
+ - Token 过期时间
160
+
161
+ ### Token 有效期
162
+
163
+ - **访问令牌(Access Token)**: 默认有效期根据平台设置,通常为数小时到数天
164
+ - **自动检查**: 每次执行命令时,CLI 会自动检查 Token 是否有效
165
+ - **自动续期**: Token 过期后,再次执行 `soke-cli auth login` 即可重新授权
166
+
167
+ ### 强制重新登录
168
+
169
+ 如果需要切换账号或强制重新授权,可以使用 `--force` 参数:
170
+
171
+ ```bash
172
+ soke-cli auth login --force
173
+ ```
174
+
175
+ ### 退出登录
176
+
177
+ 如果需要退出登录,清除本地保存的令牌:
178
+
179
+ ```bash
180
+ soke-cli auth logout
181
+ ```
182
+
183
+ 输出:
184
+ ```
185
+ ✓ 已退出登录
186
+ ```
187
+
188
+ ---
189
+
190
+ ## 验证安装
191
+
192
+ 完成登录授权后,让我们验证一切是否正常工作。
193
+
194
+ ### 1. 查看配置信息
195
+
196
+ ```bash
197
+ soke-cli config show
198
+ ```
199
+
200
+ 确认配置信息已自动保存:
201
+ ```
202
+ 当前配置:
203
+ app_key: (未设置)
204
+ app_secret: (未设置)
205
+ api_base_url:
206
+ corpid: corp_123456
207
+ dept_user_id: user_789012
208
+ user_token: eyJh...xyz
209
+ bot_token: (未设置)
210
+ ```
211
+
212
+ > 💡 **说明**: `app_key` 和 `app_secret` 在当前版本中不需要手动配置,授权流程会自动处理所有必要的认证信息。
213
+
214
+ ### 2. 测试 API 调用
215
+
216
+ 尝试调用一个简单的 API:
217
+
218
+ ```bash
219
+ soke-cli api GET /users/me
220
+ ```
221
+
222
+ 如果返回你的用户信息(JSON 格式),说明一切配置正确!
223
+
224
+ ### 3. 使用业务命令
225
+
226
+ 尝试使用一个业务快捷命令,例如查看考试列表:
227
+
228
+ ```bash
229
+ soke-cli exam +list-exams --page 1 --page-size 10
230
+ ```
231
+
232
+ ---
233
+
234
+ ## 常见问题
235
+
236
+ ### Q1: 安装时提示 "网络连接失败"
237
+
238
+ **原因**: 无法从 GitHub Releases 下载二进制文件。
239
+
240
+ **解决方案**:
241
+ 1. 检查网络连接
242
+ 2. 如果在国内,可能需要配置代理
243
+ 3. 尝试重新安装:`npm install -g @sokeai/cli`
244
+
245
+ ### Q2: 执行 `soke-cli` 提示 "command not found" 或 "不是内部或外部命令"
246
+
247
+ **原因**: 二进制文件不在系统 PATH 中。
248
+
249
+ **解决方案**:
250
+
251
+ **macOS/Linux**:
252
+ ```bash
253
+ # 检查安装位置
254
+ which soke-cli
255
+
256
+ # 如果没有输出,手动创建软链接
257
+ sudo ln -s $(npm root -g)/@sokeai/cli/bin/soke-cli /usr/local/bin/soke-cli
258
+ ```
259
+
260
+ **Windows**:
261
+
262
+ 1. **检查 NPM 全局路径是否在 PATH 中**
263
+
264
+ 打开 PowerShell,执行:
265
+ ```powershell
266
+ npm config get prefix
267
+ ```
268
+
269
+ 记下输出的路径(例如:`C:\Users\YourName\AppData\Roaming\npm`)
270
+
271
+ 2. **添加到系统 PATH**
272
+
273
+ - 按 `Win + X`,选择"系统"
274
+ - 点击"高级系统设置"
275
+ - 点击"环境变量"
276
+ - 在"用户变量"或"系统变量"中找到 `Path`
277
+ - 点击"编辑",添加上面的 NPM 路径
278
+ - 点击"确定"保存
279
+
280
+ 3. **重启终端**
281
+
282
+ 关闭并重新打开 PowerShell 或 CMD,再次尝试:
283
+ ```cmd
284
+ soke-cli --version
285
+ ```
286
+
287
+ **或者使用完整路径运行**:
288
+ ```cmd
289
+ # Windows 示例
290
+ %APPDATA%\npm\soke-cli --version
291
+
292
+ # 或者
293
+ C:\Users\YourName\AppData\Roaming\npm\soke-cli.exe --version
294
+ ```
295
+
296
+ ### Q3: 登录时浏览器没有自动打开
297
+
298
+ **原因**: 系统无法自动打开默认浏览器。
299
+
300
+ **解决方案**:
301
+ 1. 复制终端显示的授权链接
302
+ 2. 手动在浏览器中打开该链接
303
+ 3. 完成授权流程
304
+
305
+ ### Q4: 浏览器授权后,CLI 仍显示 "等待授权中..."
306
+
307
+ **原因**:
308
+ - 浏览器授权未成功完成
309
+ - 本地回调服务器端口被占用
310
+ - 网络连接问题
311
+
312
+ **解决方案**:
313
+ 1. 确认浏览器页面显示"授权成功"
314
+ 2. 检查防火墙是否阻止了本地端口(127.0.0.1)
315
+ 3. 按 `Ctrl+C` 取消,重新执行 `soke-cli auth login`
316
+
317
+ ### Q5: API 调用返回 "401 Unauthorized"
318
+
319
+ **原因**: Token 已过期或无效。
320
+
321
+ **解决方案**:
322
+ ```bash
323
+ # 重新登录
324
+ soke-cli auth logout
325
+ soke-cli auth login
326
+ ```
327
+
328
+ ### Q6: 如何在 AI Agent 中使用?
329
+
330
+ **解决方案**:
331
+
332
+ 安装 AI Agent Skills:
333
+ ```bash
334
+ npx skills add liuchenlong1111/soke-cli -y -g
335
+ ```
336
+
337
+ 然后在 AI Agent(如 Claude Code)中直接用自然语言:
338
+ - "查询考试成绩"
339
+ - "列出最近的考试"
340
+
341
+ AI 会自动调用相应的 `soke-cli` 命令。
342
+
343
+ ---
344
+
345
+ ## 下一步
346
+
347
+ 恭喜!你已经成功安装并配置了 `soke-cli`。接下来你可以:
348
+
349
+ ### 📚 学习更多命令
350
+
351
+ 查看所有可用命令:
352
+ ```bash
353
+ soke-cli --help
354
+ ```
355
+
356
+ 查看特定模块的命令:
357
+ ```bash
358
+ soke-cli course --help
359
+ soke-cli exam --help
360
+ soke-cli contact --help
361
+ ```
362
+
363
+ ### 🚀 使用业务功能
364
+
365
+ - **课程管理**: `soke-cli course +list-courses`
366
+ - **考试管理**: `soke-cli exam +list-exams`
367
+ - **通讯录**: `soke-cli contact +list-users`
368
+ - **学习地图**: `soke-cli learning-map +list-maps`
369
+
370
+ ### 🤖 安装 AI Agent Skills(推荐)
371
+
372
+ ```bash
373
+ npx skills add liuchenlong1111/soke-cli -y -g
374
+ ```
375
+
376
+ 安装后,在 AI Agent 中可以用自然语言操作授客AI平台,无需记忆复杂命令。
377
+
378
+ ### 📖 阅读详细文档
379
+
380
+ - [README.md](../README.md) - 项目概览
381
+ - [CLAUDE.md](../CLAUDE.md) - 项目架构和开发规范
382
+ - [skills/README.md](../skills/README.md) - AI Agent Skills 详细说明
383
+
384
+ ---
385
+
386
+ ## 获取帮助
387
+
388
+ 如果遇到问题:
389
+
390
+ 1. **查看帮助文档**: `soke-cli --help`
391
+ 2. **查看配置**: `soke-cli config show`
392
+ 3. **访问开放平台**: https://opendev.soke.cn
393
+ 4. **提交 Issue**: https://github.com/liuchenlong1111/soke-cli/issues
394
+
395
+ ---
396
+
397
+ **祝你使用愉快!** 🎉
@@ -2,7 +2,7 @@
2
2
  name: soke-shared
3
3
  summary: 授客CLI共享基础(配置/登录/权限/错误处理/安全规则)
4
4
  version: 1.0.0
5
- description: "授客CLI共享基础:应用配置初始化、认证登录(auth login)、权限管理、错误处理、安全规则。当用户需要第一次配置(soke-cli config init)、使用登录授权(soke-cli auth login)、遇到权限不足、或首次使用soke-cli时触发。"
5
+ description: "授客CLI共享基础:应用配置初始化、认证登录(auth login)、权限管理、错误处理、安全规则。当用户需要第一次配置(soke-cli auth login)、使用登录授权(soke-cli auth login)、遇到权限不足、或首次使用soke-cli时触发。"
6
6
  ---
7
7
 
8
8
  # soke-cli 共享规则
@@ -11,13 +11,13 @@ description: "授客CLI共享基础:应用配置初始化、认证登录(aut
11
11
 
12
12
  ## 配置初始化
13
13
 
14
- 首次使用需运行 `soke-cli config init` 完成应用配置。
14
+ 首次使用需运行 `soke-cli auth login` 完成应用配置。
15
15
 
16
16
  当你帮用户初始化配置时,引导用户按照交互式提示完成配置:
17
17
 
18
18
  ```bash
19
19
  # 初始化配置
20
- soke-cli config init
20
+ soke-cli auth login
21
21
  ```
22
22
 
23
23
  配置项包括:
@@ -159,7 +159,7 @@ A: 重新执行 `soke-cli auth login` 进行授权。
159
159
 
160
160
  ### Q: 如何切换企业?
161
161
 
162
- A: 运行 `soke-cli config init` 重新配置,或直接编辑 `~/.soke-cli/config.json` 文件。
162
+ A: 运行 `soke-cli auth login` 重新配置,或直接编辑 `~/.soke-cli/config.json` 文件。
163
163
 
164
164
  ### Q: 支持哪些业务模块?
165
165