@zhizai/cli 0.0.1

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,901 @@
1
+ # 智在记录 · 笔记
2
+
3
+ 通过开放 API 完成笔记检索、问答总结、CRUD、上传与下载。不要凭印象猜字段;机器调用以本文件「接口协议」为准。
4
+
5
+ ## 统一结果判定
6
+
7
+ 先看 HTTP:`400`/`401`/`406` → 无权限(检查 `ZHIZAI_REC_API_KEY`)。再看 JSON:`resultCode == "0"` 为成功。
8
+
9
+ ```json
10
+ {
11
+ "resultCode": "0",
12
+ "resultMsg": "success",
13
+ "resultObject": {},
14
+ "stack": "",
15
+ "errorInfos": null,
16
+ "guidance": null
17
+ }
18
+ ```
19
+
20
+ 对用户:可用 `resultMsg` 短句;禁止展示完整 Key、`stack`、未脱敏 `errorInfos`。限流 ≤2 次/秒。
21
+
22
+ `ZHIZAI_BASE_URL` = `https://openapi.zzjilu.com/api/v1`。Header:`Authorization: ${ZHIZAI_REC_API_KEY}`(无 Bearer)。
23
+
24
+ ## 动态模版管线(基于笔记作答 / 总结 · 强制)
25
+
26
+ **可跳过**(仅限):纯新建/编辑/删除、上传、下录音、视频笔记创建、文字总结 SSE、以及不依赖多篇笔记成文的操作。
27
+
28
+ 否则必须:
29
+
30
+ 1. **归一化**:主题词、时间词、用户自带模版。
31
+ 2. **查模版**:`GET /know/queryStandardInputOutputByCommand?command=`(URL 编码)。先关键词;`output` 空再用完整原句;两次仍空则语义兜底。
32
+ 3. **查笔记**:`POST /note/queryNoteList`(时间范围、`pageSize` 默认 100 翻页);需要正文再 `GET /note/querySingleNoteDetail`。
33
+ 4. **成文**:用户模版 > 接口 `output` > 语义兜底(概览→发现→建议)。无相关笔记则柔和说明,禁止编造。
34
+
35
+ ### 时间粒度
36
+
37
+ | 表述 | startTime | endTime |
38
+ |---|---|---|
39
+ | 本周 | 本周一 00:00:00 | 本周日 23:59:59 |
40
+ | 本月 | 本月 1 日 00:00:00 | 本月最后一天 23:59:59 |
41
+ | 本季度 | 本季首月 1 日 00:00:00 | 本季末月最后一天 23:59:59 |
42
+ | 本年 | 1 月 1 日 00:00:00 | 12 月 31 日 23:59:59 |
43
+
44
+ 不得跨入未来。「上周/上月」等减一个周期。
45
+
46
+ ### note_type 中文映射
47
+
48
+ | 值 | 中文 |
49
+ |---|---|
50
+ | text | 文本 |
51
+ | voice | 录音 |
52
+ | document | 文档 |
53
+ | link | 链接 |
54
+ | image | 图片 |
55
+ | knowCard | 知识卡片 |
56
+
57
+ ### noteState(仅进度,非正文)
58
+
59
+ `completed` 已完成 / `pending` 处理中 / `recognizing` 转写中 / `analyzing` 总结中 / `failed` 失败。
60
+
61
+ ## 意图路由
62
+
63
+ | 意图 | 接口入口 |
64
+ |---|---|
65
+ | 标准输出模版 | `GET /know/queryStandardInputOutputByCommand` |
66
+ | 列表筛选 | `POST /note/queryNoteList` |
67
+ | 详情 | `GET /note/querySingleNoteDetail` |
68
+ | 构建进度 | `GET /note/queryNoteStatus` |
69
+ | 删除 | `GET /note/deleteNote`(先确认) |
70
+ | 修改标题/摘要/总结 | `POST /note/updateNoteInfo` |
71
+ | 上传文件 | `POST /file/uploadSingleFile` |
72
+ | 创建笔记 | `POST /note/createNote` |
73
+ | 文字总结(SSE) | `POST /note/createTextNoteSummary` |
74
+ | 视频建笔记 | `POST /note/addVideoLinkNoteByFileId` |
75
+ | 下载录音 | `GET /note/downloadNoteAudio` |
76
+ | 问小智 URL 配置 | `GET /note/addOrUpdateParamsByCode` |
77
+
78
+ ## 新建与文件依赖
79
+
80
+ | 场景 | noteType | 须先上传 |
81
+ |---|---|---|
82
+ | 文本 | text | 否 |
83
+ | 链接 | link | 否 |
84
+ | 文档 | document | 是 → `documentContent.fileId` |
85
+ | 图片 | image | 是 → `imageContent.fileIds[].fileId` |
86
+ | 录音 | voice | 是 → `voiceContent.voiceFileId` |
87
+ | 视频笔记 | — | 是 → `addVideoLinkNoteByFileId.fileId` |
88
+
89
+ 推荐:`uploadSingleFile` → `createNote`(或视频接口)→ 必要时 `queryNoteStatus`。
90
+
91
+ ## 结果呈现
92
+
93
+ - 列表:`id`、`title`、中文类型、`create_time`;有 `summary` 用总结否则 `abstract`。
94
+ - 保存成功:真实 ID、标题、`note_state`;处理中勿伪造成文完成。
95
+ - 进度接口只谈系统阶段,内容问题必须用列表/详情。
96
+
97
+ ## 接口协议
98
+
99
+ ### POST `/note/queryNoteList` 查询笔记列表
100
+
101
+ **接口说明**:获取用户笔记列表,支持模糊查询,支持分页,支持按是否返回详情查询
102
+
103
+ #### 请求参数
104
+
105
+ | 参数名 | 类型 | 必填 | 说明 |
106
+ | --- | --- | --- | --- |
107
+ | title | string | 否 | 标题(模糊匹配) |
108
+ | abstractContent | string | 否 | 摘要(模糊匹配) |
109
+ | summary | string | 否 | 总结(模糊匹配) |
110
+ | content | string | 否 | 内容(模糊匹配) |
111
+ | noteType | string | 否 | 笔记类型(voice/text/image/document/link) |
112
+ | noteCategory | integer | 否 | 笔记分类 |
113
+ | startTime | string | 否 | 开始时间 |
114
+ | endTime | string | 否 | 结束时间 |
115
+ | pageNum | integer | 否 | 当前页码(默认1) |
116
+ | pageSize | integer | 否 | 每页条数(默认10) |
117
+ | withContent | string | 否 | 是否返回内容(true/false) |
118
+
119
+ #### 请求示例
120
+
121
+ ```bash
122
+ curl --request POST \
123
+ --url https://openapi.zzjilu.com/api/v1/note/queryNoteList \
124
+ --header 'Authorization: your api-key' \
125
+ --header 'content-type: application/json' \
126
+ --data '{
127
+ "title": "语音识别",
128
+ "abstractContent": "",
129
+ "summary": "",
130
+ "content": "",
131
+ "noteType": "",
132
+ "noteCategory": null,
133
+ "startTime": "",
134
+ "endTime": "",
135
+ "pageNum": 1,
136
+ "pageSize": 20,
137
+ "withContent": ""
138
+ }'
139
+ ```
140
+
141
+ #### 响应参数
142
+
143
+ | 参数名 | 类型 | 必填 | 说明 |
144
+ | --- | --- | --- | --- |
145
+ | resultCode | string | 是 | 结果码,0表示成功 |
146
+ | resultMsg | string | 是 | 结果信息,成功时为success |
147
+ | resultObject | object | 是 | 返回数据对象 |
148
+ | resultObject.startRow | string | 否 | 起始行 |
149
+ | resultObject.pageNum | integer | 是 | 当前页码 |
150
+ | resultObject.pageSize | integer | 是 | 每页条数 |
151
+ | resultObject.total | string | 是 | 总记录数 |
152
+ | resultObject.pages | integer | 是 | 总页数 |
153
+ | resultObject.size | integer | 是 | 当前页实际记录数 |
154
+ | resultObject.hasNextPage | boolean | 是 | 是否TF有下一页 |
155
+ | resultObject.hasPreviousPage | boolean | 是 | 是否TF有上一页 |
156
+ | resultObject.isFirstPage | boolean | 是 | 是否TFT第一页 |
157
+ | resultObject.isLastPage | boolean | 是 | 是否TFT最后一页 |
158
+ | resultObject.prePage | integer | 否 | 上一页页码 |
159
+ | resultObject.nextPage | integer | 否 | 下一页页码 |
160
+ | resultObject.navigateFirstPage | integer | 否 | 导航第一页 |
161
+ | resultObject.navigateLastPage | integer | 否 | 导航最后一页 |
162
+ | resultObject.navigatepageNums | array | 否 | 导航页码数组 |
163
+ | resultObject.navigatePages | integer | 是 | 导航页码数量 |
164
+ | resultObject.list | array | 是 | 数据列表 |
165
+ | resultObject.list[].id | string | 是 | 记录ID |
166
+ | resultObject.list[].title | string | 是 | 标题 |
167
+ | resultObject.list[].summary | string | 是 | 总结 |
168
+ | resultObject.list[].abstract | string | 是 | 摘要 |
169
+ | resultObject.list[].content | object | 否 | 内容(录音笔记为转写数组,文本/文档类型为字符串,可为空) |
170
+ | resultObject.list[].status | string | 是 | 状态码 |
171
+ | resultObject.list[].note_type | string | 是 | 笔记类型 |
172
+ | resultObject.list[].note_state | string | 是 | 笔记状态 |
173
+ | resultObject.list[].create_time | string | 是 | 创建时间 |
174
+ | resultObject.list[].creator_id | string | 是 | 创建人ID |
175
+ | resultObject.list[].scene_name | string | 是 | 场景名称 |
176
+ | resultObject.list[].scene_id | string | 是 | 场景ID |
177
+ | resultObject.list[].source_note_id | string | 否 | 来源笔记ID |
178
+ | resultObject.list[].note_category | integer | 否 | 笔记分类 |
179
+ | resultObject.list[].device_sn | string | 否 | 录音卡SN码(仅录音笔记返回) |
180
+ | resultObject.list[].latitude | string | 否 | 录音地理位置纬度(仅录音笔记返回) |
181
+ | resultObject.list[].longitude | string | 否 | 录音地理位置经度(仅录音笔记返回) |
182
+ | resultObject.list[].rec_end_time | string | 否 | 录制结束时间(仅录音笔记返回) |
183
+ | resultObject.list[].account_num | string | 否 | 创建者账号/手机号(仅录音笔记返回) |
184
+ | stack | string | 否 | 异常堆栈信息 |
185
+ | errorInfos | array | 否 | 错误信息列表 |
186
+ | guidance | string | 否 | 引导信息 |
187
+
188
+ #### 响应示例
189
+
190
+ ```json
191
+ {
192
+ "resultCode": "0",
193
+ "resultMsg": "success",
194
+ "resultObject": {
195
+ "startRow": "0",
196
+ "navigatepageNums": null,
197
+ "prePage": 0,
198
+ "hasNextPage": false,
199
+ "nextPage": 0,
200
+ "pageSize": 20,
201
+ "endRow": "0",
202
+ "list": [
203
+ {
204
+ "id": "31023",
205
+ "title": "语音识别技术进展",
206
+ "summary": "![ai:1351071340606681088](https://lingxi.iwhalecloud.com/LCDP-RECORD/lcdp-app/server/app/file/file/id/1351071340606681088?appId=1277144354029191168&width=1736&height=1920)\n\n## 模块升级进展\n- **语音转文字模块升级**:多模型切换策略\n- **说话人分离模块效果提升**:说话人日志错误率从37%降到6%\n- **声纹向量模块升级**:维度从192维升到256维",
207
+ "content": [],
208
+ "status": "00A",
209
+ "abstract": "讨论语音识别模块升级、测试反馈及数据收集方案,包括方言处理和英文识别优化",
210
+ "note_type": "voice",
211
+ "create_time": "2026-03-17 13:45:18",
212
+ "creator_id": "8912493637529600",
213
+ "note_state": "completed",
214
+ "scene_name": "智能场景",
215
+ "source_note_id": null,
216
+ "scene_id": "0",
217
+ "note_category": null,
218
+ "device_sn": "1234567890",
219
+ "latitude": "32.060255",
220
+ "longitude": "118.796877",
221
+ "rec_end_time": "2026-03-17 13:45:18",
222
+ "account_num": "13900001111"
223
+ }
224
+ ],
225
+ "pageNum": 1,
226
+ "navigatePages": 0,
227
+ "total": "1",
228
+ "navigateFirstPage": 0,
229
+ "pages": 0,
230
+ "size": 1,
231
+ "isLastPage": false,
232
+ "hasPreviousPage": false,
233
+ "navigateLastPage": 0,
234
+ "isFirstPage": false
235
+ },
236
+ "stack": "",
237
+ "errorInfos": null,
238
+ "guidance": null
239
+ }
240
+ ```
241
+
242
+ ### GET `/note/querySingleNoteDetail` 查询笔记
243
+
244
+ **接口说明**:查询单条笔记信息,支持按笔记ID查询笔记详情
245
+
246
+ #### 请求参数
247
+
248
+ | 参数名 | 类型 | 必填 | 说明 |
249
+ | --- | --- | --- | --- |
250
+ | noteId | string | 是 | 笔记ID |
251
+
252
+ #### 请求示例
253
+
254
+ ```bash
255
+ curl --request GET \
256
+ --url 'https://openapi.zzjilu.com/api/v1/note/querySingleNoteDetail?noteId=30480' \
257
+ --header 'Authorization: your api-key'
258
+ ```
259
+
260
+ #### 响应参数
261
+
262
+ | 参数名 | 类型 | 必填 | 说明 |
263
+ | --- | --- | --- | --- |
264
+ | resultCode | string | 是 | 结果码,0表示成功 |
265
+ | resultMsg | string | 是 | 结果信息,成功时为success |
266
+ | resultObject | object | 是 | 返回数据对象 |
267
+ | resultObject.id | string | 是 | 笔记ID |
268
+ | resultObject.title | string | 是 | 标题 |
269
+ | resultObject.summary | string | 是 | 总结内容 |
270
+ | resultObject.abstract | string | 是 | 摘要 |
271
+ | resultObject.content | object | 是 | 详细内容(录音笔记为转写数组,文本/文档类型为字符串) |
272
+ | resultObject.status | string | 是 | 状态码 |
273
+ | resultObject.note_type | string | 是 | 笔记类型 |
274
+ | resultObject.note_state | string | 是 | 笔记状态 |
275
+ | resultObject.create_time | string | 是 | 创建时间 |
276
+ | resultObject.creator_id | string | 是 | 创建人ID |
277
+ | resultObject.scene_name | string | 是 | 场景名称 |
278
+ | resultObject.scene_id | string | 是 | 场景ID |
279
+ | resultObject.source_note_id | string | 否 | 来源笔记ID |
280
+ | resultObject.note_category | integer | 否 | 笔记分类 |
281
+ | resultObject.device_sn | string | 否 | 录音卡SN码(仅录音笔记返回) |
282
+ | resultObject.latitude | string | 否 | 录音地理位置纬度(仅录音笔记返回) |
283
+ | resultObject.longitude | string | 否 | 录音地理位置经度(仅录音笔记返回) |
284
+ | resultObject.rec_end_time | string | 否 | 录制结束时间(仅录音笔记返回) |
285
+ | resultObject.account_num | string | 否 | 创建者账号/手机号(仅录音笔记返回) |
286
+ | stack | string | 否 | 异常堆栈信息 |
287
+ | errorInfos | array | 否 | 错误信息列表 |
288
+ | guidance | string | 否 | 引导信息 |
289
+
290
+ #### 响应示例
291
+
292
+ ```json
293
+ {
294
+ "resultCode": "0",
295
+ "resultMsg": "success",
296
+ "resultObject": {
297
+ "id": "30480",
298
+ "title": "通话测试确认",
299
+ "summary": "## 会议目标\n- 进行通话设备测试。\n\n## 关键信息\n- 通话开始阶段,陈楚旭多次重复“喂”和“你好”,并进行“测试测试”的呼叫。",
300
+ "content": [
301
+ {
302
+ "recording_id": "14853",
303
+ "transcript": [
304
+ {
305
+ "raw_text": "嗯,喂喂喂喂喂喂,你好,你好,你好喂喂喂,测试测试",
306
+ "start": 280,
307
+ "end": 7245,
308
+ "tn_text": "嗯,",
309
+ "text": "嗯,喂喂喂喂喂喂,你好,你好,你好喂喂喂,测试测试。",
310
+ "spk": "陈楚旭"
311
+ }
312
+ ],
313
+ "duration": "7",
314
+ "start_time": null,
315
+ "create_time": "2026-01-26 10:52:40"
316
+ }
317
+ ],
318
+ "status": "00A",
319
+ "abstract": "通话开始前的设备测试和连接确认过程",
320
+ "note_type": "voice",
321
+ "create_time": "2026-01-26 10:52:40",
322
+ "creator_id": "8912493637529600",
323
+ "note_state": "completed",
324
+ "scene_name": "智能场景",
325
+ "source_note_id": null,
326
+ "scene_id": "0",
327
+ "note_category": null,
328
+ "device_sn": "0012345678",
329
+ "latitude": null,
330
+ "longitude": null,
331
+ "rec_end_time": "2026-01-26 10:52:47",
332
+ "account_num": "13900001111"
333
+ },
334
+ "stack": "",
335
+ "errorInfos": null,
336
+ "guidance": null
337
+ }
338
+ ```
339
+
340
+ ### GET `/note/deleteNote` 删除笔记
341
+
342
+ **接口说明**:删除笔记,支持按笔记ID删除笔记
343
+
344
+ #### 请求参数
345
+
346
+ | 参数名 | 类型 | 必填 | 说明 |
347
+ | --- | --- | --- | --- |
348
+ | noteId | string | 是 | 笔记ID |
349
+
350
+ #### 请求示例
351
+
352
+ ```bash
353
+ curl --request GET \
354
+ --url 'https://openapi.zzjilu.com/api/v1/note/deleteNote?noteId=31559' \
355
+ --header 'Authorization: your api-key'
356
+ ```
357
+
358
+ #### 响应参数
359
+
360
+ | 参数名 | 类型 | 必填 | 说明 |
361
+ | --- | --- | --- | --- |
362
+ | resultCode | string | 是 | 结果码 |
363
+ | resultMsg | string | 是 | 结果信息 |
364
+ | resultObject | null | 是 | 返回数据对象(为null) |
365
+ | stack | string | 是 | 异常堆栈信息 |
366
+ | errorInfos | null | 是 | 错误信息列表(为null) |
367
+ | guidance | null | 是 | 引导信息(为null) |
368
+
369
+ #### 响应示例
370
+
371
+ ```json
372
+ {
373
+ "resultCode": "0",
374
+ "resultMsg": "success",
375
+ "resultObject": null,
376
+ "stack": "",
377
+ "errorInfos": null,
378
+ "guidance": null
379
+ }
380
+ ```
381
+
382
+ ### GET `/note/queryNoteStatus` 查询笔记状态
383
+
384
+ **接口说明**:查询笔记处理进度,completed:已完成;pending:处理中;recognizing:转写中;analyzing:总结中;failed:失败
385
+
386
+ #### 请求参数
387
+
388
+ | 参数名 | 类型 | 必填 | 说明 |
389
+ | --- | --- | --- | --- |
390
+ | noteId | string | 是 | 笔记ID |
391
+
392
+ #### 请求示例
393
+
394
+ ```bash
395
+ curl --request GET \
396
+ --url 'https://openapi.zzjilu.com/api/v1/note/queryNoteStatus?noteId=31560' \
397
+ --header 'Authorization: your api-key'
398
+ ```
399
+
400
+ #### 响应参数
401
+
402
+ | 参数名 | 类型 | 必填 | 说明 |
403
+ | --- | --- | --- | --- |
404
+ | resultCode | string | 是 | 结果码,0表示成功 |
405
+ | resultMsg | string | 是 | 结果信息,成功时为success |
406
+ | resultObject | object | 是 | 返回数据对象 |
407
+ | resultObject.noteState | string | 是 | 笔记状态(completed:已完成) |
408
+ | stack | string | 是 | 异常堆栈信息 |
409
+ | errorInfos | null | 是 | 错误信息列表 |
410
+ | guidance | null | 是 | 引导信息 |
411
+
412
+ #### 响应示例
413
+
414
+ ```json
415
+ {
416
+ "resultCode": "0",
417
+ "resultMsg": "success",
418
+ "resultObject": {
419
+ "noteState": "completed"
420
+ },
421
+ "stack": "",
422
+ "errorInfos": null,
423
+ "guidance": null
424
+ }
425
+ ```
426
+
427
+ ### POST `/note/updateNoteInfo` 修改笔记
428
+
429
+ **接口说明**:修改笔记,部分修改笔记标题、短摘要或AI录音总结;未传或空白的字段保持不变
430
+
431
+ #### 请求参数
432
+
433
+ | 参数名 | 类型 | 必填 | 说明 |
434
+ | --- | --- | --- | --- |
435
+ | noteId | string | 是 | 笔记ID |
436
+ | title | string | 否 | 笔记标题(未传或空白保持不变) |
437
+ | abstractContent | string | 否 | 笔记摘要(未传或空白保持不变) |
438
+ | summary | string | 否 | 笔记总结(未传或空白保持不变) |
439
+
440
+ #### 请求示例
441
+
442
+ ```bash
443
+ curl --request POST \
444
+ --url https://openapi.zzjilu.com/api/v1/note/updateNoteInfo \
445
+ --header 'Authorization: your api-key' \
446
+ --header 'content-type: application/json' \
447
+ --data '{
448
+ "noteId": "31560",
449
+ "title": "测试1",
450
+ "abstractContent": "",
451
+ "summary": ""
452
+ }'
453
+ ```
454
+
455
+ #### 响应参数
456
+
457
+ | 参数名 | 类型 | 必填 | 说明 |
458
+ | --- | --- | --- | --- |
459
+ | resultCode | string | 是 | 结果码 |
460
+ | resultMsg | string | 是 | 结果信息 |
461
+ | resultObject | null | 是 | 返回数据对象(为null) |
462
+ | stack | string | 是 | 异常堆栈信息 |
463
+ | errorInfos | null | 是 | 错误信息列表(为null) |
464
+ | guidance | null | 是 | 引导信息(为null) |
465
+
466
+ #### 响应示例
467
+
468
+ ```json
469
+ {
470
+ "resultCode": "0",
471
+ "resultMsg": "success",
472
+ "resultObject": null,
473
+ "stack": "",
474
+ "errorInfos": null,
475
+ "guidance": null
476
+ }
477
+ ```
478
+
479
+ ### POST `/note/createNote` 创建笔记
480
+
481
+ **接口说明**:创建新笔记,支持创建录音、文档、图片、链接、文字等类型的笔记,支持按指定场景总结
482
+
483
+ #### 请求参数
484
+
485
+ | 参数名 | 类型 | 必填 | 说明 |
486
+ | --- | --- | --- | --- |
487
+ | noteType | string | 是 | 笔记类型(voice/text/image/document/link) |
488
+ | sceneId | Long | 否 | 场景ID(按指定场景总结) |
489
+ | voiceContent | object | 否 | 录音笔记内容(noteType=voice时传入) |
490
+ | voiceContent.text | string | 否 | 随手记(语音转文字内容) |
491
+ | voiceContent.voiceFileId | string | 否 | 音频文件ID |
492
+ | voiceContent.recStartTime | string | 否 | 录制开始时间 |
493
+ | voiceContent.recEndTime | string | 否 | 录制结束时间(yyyy-MM-dd HH:mm:ss) |
494
+ | voiceContent.duration | string | 否 | 录音时长 |
495
+ | voiceContent.imageFileIds | array | 否 | 随手拍图片文件ID列表 |
496
+ | voiceContent.appendNoteId | string | 否 | 追加笔记ID |
497
+ | voiceContent.deviceSn | string | 否 | 录音卡SN码 |
498
+ | voiceContent.latitude | string | 否 | 录音地理位置纬度 |
499
+ | voiceContent.longitude | string | 否 | 录音地理位置经度 |
500
+ | textContent | object | 否 | 文字笔记内容(noteType=text时传入) |
501
+ | textContent.title | string | 否 | 笔记标题 |
502
+ | textContent.content | string | 否 | 文字内容 |
503
+ | imageContent | object | 否 | 图片笔记内容(noteType=image时传入) |
504
+ | imageContent.fileIds | array | 否 | 图片文件列表 |
505
+ | imageContent.fileIds[].fileId | string | 否 | 图片文件ID |
506
+ | imageContent.fileIds[].remark | string | 否 | 图片备注 |
507
+ | documentContent | object | 否 | 文档笔记内容(noteType=document时传入) |
508
+ | documentContent.fileId | string | 否 | 文件ID |
509
+ | documentContent.fileName | string | 否 | 文件名称 |
510
+ | linkContent | object | 否 | 链接笔记内容(noteType=link时传入) |
511
+ | linkContent.url | string | 否 | 链接地址 |
512
+
513
+ #### 请求示例
514
+
515
+ ```bash
516
+ curl --request POST \
517
+ --url https://openapi.zzjilu.com/api/v1/note/createNote \
518
+ --header 'Authorization: your api-key' \
519
+ --header 'content-type: application/json' \
520
+ --data '{
521
+ "noteType" : "document",
522
+ "documentContent" : {
523
+ "fileId" : "1357179569765883904",
524
+ "fileName" : "开店选址手册.docx"
525
+ }
526
+ }'
527
+ ```
528
+
529
+ #### 响应参数
530
+
531
+ | 参数名 | 类型 | 必填 | 说明 |
532
+ | --- | --- | --- | --- |
533
+ | resultCode | string | 是 | 结果码,0表示成功 |
534
+ | resultMsg | string | 是 | 结果信息,成功时为success |
535
+ | resultObject | object | 是 | 返回数据对象 |
536
+ | resultObject.id | string | 是 | 笔记ID |
537
+ | resultObject.title | string | 是 | 标题 |
538
+ | resultObject.summary | string | 是 | 总结内容(处理中时为提示文案) |
539
+ | resultObject.abstract | string | 是 | 摘要(处理中时为提示文案) |
540
+ | resultObject.content | object | 否 | 详细内容(处理中时为null;录音笔记为转写数组,文本/文档类型为字符串) |
541
+ | resultObject.status | string | 是 | 状态码 |
542
+ | resultObject.note_type | string | 是 | 笔记类型 |
543
+ | resultObject.note_state | string | 是 | 笔记状态(pending:处理中,completed:已完成) |
544
+ | resultObject.create_time | string | 是 | 创建时间 |
545
+ | resultObject.creator_id | string | 是 | 创建人ID |
546
+ | resultObject.scene_name | string | 否 | 场景名称(pending时为null) |
547
+ | resultObject.scene_id | string | 否 | 场景ID(pending时为null) |
548
+ | resultObject.source_note_id | string | 否 | 来源笔记ID |
549
+ | resultObject.note_category | integer | 否 | 笔记分类 |
550
+ | resultObject.device_sn | string | 否 | 录音卡SN码(仅录音笔记返回) |
551
+ | resultObject.latitude | string | 否 | 录音地理位置纬度(仅录音笔记返回) |
552
+ | resultObject.longitude | string | 否 | 录音地理位置经度(仅录音笔记返回) |
553
+ | resultObject.rec_end_time | string | 否 | 录制结束时间(仅录音笔记返回) |
554
+ | resultObject.account_num | string | 否 | 创建者账号/手机号(仅录音笔记返回) |
555
+ | stack | string | 否 | 异常堆栈信息 |
556
+ | errorInfos | array | 否 | 错误信息列表 |
557
+ | guidance | string | 否 | 引导信息 |
558
+
559
+ #### 响应示例
560
+
561
+ ```json
562
+ {
563
+ "resultCode": "0",
564
+ "resultMsg": "success",
565
+ "resultObject": {
566
+ "id": "31561",
567
+ "title": "开店选址手册.docx",
568
+ "summary": "等待约 1 分钟!整理下桌面的便利贴,把杂乱归位,记录就新鲜出炉咯~",
569
+ "content": null,
570
+ "status": "00A",
571
+ "abstract": "等待约 1 分钟!整理下桌面的便利贴,把杂乱归位,记录就新鲜出炉咯~",
572
+ "note_type": "document",
573
+ "create_time": "2026-04-08 17:17:48",
574
+ "creator_id": "8912493637529600",
575
+ "note_state": "pending",
576
+ "scene_name": null,
577
+ "source_note_id": null,
578
+ "scene_id": null,
579
+ "note_category": null,
580
+ "device_sn": null,
581
+ "latitude": null,
582
+ "longitude": null,
583
+ "rec_end_time": null,
584
+ "account_num": null
585
+ },
586
+ "stack": "",
587
+ "errorInfos": null,
588
+ "guidance": null
589
+ }
590
+ ```
591
+
592
+ ### POST `/note/createTextNoteSummary` 生成文字笔记总结
593
+
594
+ **接口说明**:生成文字笔记总结
595
+
596
+ #### 请求参数
597
+
598
+ | 参数名 | 类型 | 必填 | 说明 |
599
+ | --- | --- | --- | --- |
600
+ | content | string | 是 | 笔记内容 |
601
+ | sceneId | string | 是 | 场景ID(用于AI总结的场景) |
602
+
603
+ #### 请求示例
604
+
605
+ ```bash
606
+ curl --request POST \
607
+ --url 'https://openapi.zzjilu.com/api/v1/note/createTextNoteSummary' \
608
+ --header 'Authorization: your api-key' \
609
+ --header 'content-type: application/json' \
610
+ --data '{
611
+ "content" : "笔记内容",
612
+ "sceneId" : "场景ID"
613
+ }'
614
+ ```
615
+
616
+ #### 响应参数
617
+
618
+ | 参数名 | 类型 | 必填 | 说明 |
619
+ | --- | --- | --- | --- |
620
+ | Content-Type | header | 是 | text/event-stream,SSE流式响应 |
621
+ | data | string | 是 | SSE事件流数据,每个data事件为AI总结的增量文本片段,逐块推送直至流结束 |
622
+
623
+ #### 响应示例
624
+
625
+ ```json
626
+ data: ## 会议目标
627
+ data: - 进行通话设备测试。
628
+ data: (SSE流式响应,每个data事件为AI总结增量文本片段,直至流结束)
629
+ ```
630
+
631
+ ### POST `/note/addVideoLinkNoteByFileId` 根据视频文件ID新增视频链接笔记
632
+
633
+ **接口说明**:根据视频文件ID创建视频链接笔记,服务端自动完成音频提取、转写、AI总结与知识库同步(异步处理)
634
+
635
+ #### 请求参数
636
+
637
+ | 参数名 | 类型 | 必填 | 说明 |
638
+ | --- | --- | --- | --- |
639
+ | fileId | Long | 是 | 视频文件ID(文件服务中的文件ID,需先调用文件上传接口获取) |
640
+
641
+ #### 请求示例
642
+
643
+ ```bash
644
+ curl --request POST \
645
+ --url https://openapi.zzjilu.com/api/v1/note/addVideoLinkNoteByFileId \
646
+ --header 'Authorization: your api-key' \
647
+ --header 'content-type: application/json' \
648
+ --data '{
649
+ "fileId" : 1410460000000000123
650
+ }'
651
+ ```
652
+
653
+ #### 响应参数
654
+
655
+ | 参数名 | 类型 | 必填 | 说明 |
656
+ | --- | --- | --- | --- |
657
+ | resultCode | string | 是 | 结果码,0表示成功,-1表示失败 |
658
+ | resultMsg | string | 是 | 结果信息,成功时为success,失败时为失败原因描述 |
659
+ | resultObject | object | 是 | 返回数据对象;失败时若笔记已创建仍会返回 |
660
+ | resultObject.mainNoteId | string | 是 | 主笔记ID;部分失败场景(转写失败)笔记已创建时也会返回 |
661
+ | resultObject.notesCount | integer | 是 | 当前用户有效笔记数量(排除demo来源笔记);失败时为null |
662
+ | stack | string | 否 | 异常堆栈信息 |
663
+ | errorInfos | array | 否 | 错误信息列表 |
664
+ | guidance | string | 否 | 引导信息 |
665
+
666
+ #### 响应示例
667
+
668
+ ```json
669
+ {
670
+ "resultCode": "0",
671
+ "resultMsg": "success",
672
+ "resultObject": {
673
+ "mainNoteId": "1410461159968960512",
674
+ "notesCount": 23
675
+ },
676
+ "stack": "",
677
+ "errorInfos": null,
678
+ "guidance": null
679
+ }
680
+ ```
681
+
682
+ ### POST `/file/uploadSingleFile` 文件上传
683
+
684
+ **接口说明**:文件上传,仅支持单个文件上传,可以通过设置compressFile控制是否压缩存储
685
+
686
+ #### 请求参数
687
+
688
+ | 参数名 | 类型 | 必填 | 说明 |
689
+ | --- | --- | --- | --- |
690
+ | compressFile | boolean | 否 | 是否压缩存储 |
691
+ | file | file | 是 | 上传的文件(支持图片、文档等) |
692
+
693
+ #### 请求示例
694
+
695
+ ```bash
696
+ curl --request POST \
697
+ --url https://openapi.zzjilu.com/api/v1/file/uploadSingleFile \
698
+ --header 'Authorization: your api-key' \
699
+ --header 'content-type: multipart/form-data' \
700
+ --form file=@/Users/xxx/Desktop/20260408_085359_8922_0.m4a
701
+ ```
702
+
703
+ #### 响应参数
704
+
705
+ | 参数名 | 类型 | 必填 | 说明 |
706
+ | --- | --- | --- | --- |
707
+ | resultCode | string | 是 | 结果码,0表示成功 |
708
+ | resultMsg | string | 是 | 结果信息,成功时为success |
709
+ | resultObject | object | 是 | 返回数据对象 |
710
+ | resultObject.fileId | string | 是 | 文件ID |
711
+ | resultObject.storeType | string | 是 | 存储类型 |
712
+ | resultObject.filePathInServer | string | 是 | 服务器文件路径 |
713
+ | resultObject.fileName | string | 是 | 文件名称 |
714
+ | resultObject.fileDesc | string | 否 | 文件描述 |
715
+ | resultObject.createDate | string | 是 | 创建时间 |
716
+ | resultObject.statusCd | string | 是 | 状态码 |
717
+ | resultObject.statusDate | string | 是 | 状态时间 |
718
+ | resultObject.appId | string | 是 | 应用ID |
719
+ | resultObject.fileSize | string | 否 | 文件大小 |
720
+ | resultObject.fileType | string | 否 | 文件类型 |
721
+ | resultObject.isPicture | string | 否 | TF为图片 |
722
+ | stack | string | 是 | 异常堆栈信息 |
723
+ | errorInfos | null | 是 | 错误信息列表 |
724
+ | guidance | null | 是 | 引导信息 |
725
+
726
+ #### 响应示例
727
+
728
+ ```json
729
+ {
730
+ "resultCode": "0",
731
+ "resultMsg": "success",
732
+ "resultObject": {
733
+ "fileId": "1359112903776927744",
734
+ "storeType": "MINIO",
735
+ "filePathInServer": "lcdp-g/2026/04/08/a7cfe905-108f-4e38-b495-320ae3545f25.m4a",
736
+ "fileName": "20260408_085359_8922_0.m4a",
737
+ "fileDesc": null,
738
+ "createDate": "2026-04-08 18:29:28",
739
+ "statusCd": "00A",
740
+ "statusDate": "2026-04-08 18:29:28",
741
+ "appId": "1358762423120310272",
742
+ "fileSize": null,
743
+ "fileType": null,
744
+ "isPicture": null
745
+ },
746
+ "stack": "",
747
+ "errorInfos": null,
748
+ "guidance": null
749
+ }
750
+ ```
751
+
752
+ ### GET `/note/downloadNoteAudio` 下载录音笔记音频
753
+
754
+ **接口说明**:根据笔记ID下载当前用户录音笔记的音频文件;单个音频直接返回音频文件,多个音频打包为ZIP压缩包下载
755
+
756
+ #### 请求参数
757
+
758
+ | 参数名 | 类型 | 必填 | 说明 |
759
+ | --- | --- | --- | --- |
760
+ | noteId | Long | 是 | 笔记ID |
761
+
762
+ #### 请求示例
763
+
764
+ ```bash
765
+ curl --request GET \
766
+ --url 'https://openapi.zzjilu.com/api/v1/note/downloadNoteAudio?noteId=30480' \
767
+ --header 'Authorization: your api-key' \
768
+ --output 'note-audio.zip'
769
+ ```
770
+
771
+ #### 响应参数
772
+
773
+ | 参数名 | 类型 | 必填 | 说明 |
774
+ | --- | --- | --- | --- |
775
+ | Content-Type | header | 是 | 单个音频返回音频文件MIME类型(如audio/mpeg);多个音频打包返回application/octet-stream |
776
+ | Content-Disposition | header | 是 | 单个音频为inline;filename=笔记标题.扩展名;多个音频为attachment;filename=笔记标题.zip |
777
+ | responseBody | binary | 是 | 二进制文件流,单个音频为音频文件,多个音频为ZIP压缩包 |
778
+ | HTTP 404 | error | 否 | 笔记不存在或录音文件不存在 |
779
+ | HTTP 400 | error | 否 | 当前笔记不是录音笔记 |
780
+
781
+ #### 响应示例
782
+
783
+ ```json
784
+ {
785
+ "description": "成功时返回二进制文件流(单个音频文件或ZIP压缩包),非JSON格式",
786
+ "successResponse": {
787
+ "status": 200,
788
+ "headers": {
789
+ "Content-Type": "application/octet-stream",
790
+ "Content-Disposition": "attachment; filename*=UTF-8''通话测试确认.zip"
791
+ },
792
+ "body": "<binary file stream>"
793
+ },
794
+ "errorResponses": [
795
+ {
796
+ "status": 404,
797
+ "message": "笔记不存在"
798
+ },
799
+ {
800
+ "status": 400,
801
+ "message": "当前笔记不是录音笔记"
802
+ },
803
+ {
804
+ "status": 404,
805
+ "message": "录音文件不存在"
806
+ },
807
+ {
808
+ "status": 404,
809
+ "message": "录音文件不存在: <fileId>"
810
+ }
811
+ ]
812
+ }
813
+ ```
814
+
815
+ ### GET `/know/queryStandardInputOutputByCommand` 按指令查询标准输入输出模板
816
+
817
+ **接口说明**:按指令查询标准输入输出模板,支持控制问小智指定大模型的输入输出格式
818
+
819
+ #### 请求参数
820
+
821
+ | 参数名 | 类型 | 必填 | 说明 |
822
+ | --- | --- | --- | --- |
823
+ | command | string | 是 | 指令 |
824
+
825
+ #### 请求示例
826
+
827
+ ```bash
828
+ curl --request GET \
829
+ --url 'https://openapi.zzjilu.com/api/v1/know/queryStandardInputOutputByCommand?command=生成周报' \
830
+ --header 'Authorization: your api-key'
831
+ ```
832
+
833
+ #### 响应参数
834
+
835
+ | 参数名 | 类型 | 必填 | 说明 |
836
+ | --- | --- | --- | --- |
837
+ | resultCode | string | 是 | 结果码,0表示成功 |
838
+ | resultMsg | string | 是 | 结果信息,查询成功 |
839
+ | resultObject | object | 是 | 返回数据对象 |
840
+ | resultObject.input | string | 是 | 查询输入提示词/检索条件描述 |
841
+ | resultObject.output | string | 是 | 查询输出结果/周报内容 |
842
+ | stack | string | 是 | 异常堆栈信息 |
843
+ | errorInfos | null | 否 | 错误信息列表 |
844
+ | guidance | null | 否 | 引导信息 |
845
+
846
+ #### 响应示例
847
+
848
+ ```json
849
+ {
850
+ "resultCode": "0",
851
+ "resultMsg": "查询成功",
852
+ "resultObject": {
853
+ "input": "检索知识库中本周(2024年11月18日-2024年11月24日)【部门例会/项目评审会/跨部门协调会/研谈沟通】类工作会议笔记:1. 周报基础信息:姓名{姓名}、岗位{岗位}、周期{YYYY.MM.DD-YYYY.MM.DD}、汇报对象{汇报对象};2 核心工作模块:{模块1(优先级1)、模块2(优先级2)、模块3(优先级3)};3. 量化指标:{指标1、指标2、指标3};4. 特殊要求:{重点内容+新增模块+汇报风格};要求输出格式:含\"工作概述、核心成果、数据复盘、问题与改进、下周计划\"五大模块,核心成果需关联知识库笔记来源。",
854
+ "output": "【{周/月/季/年报标题}】{用户姓名}-2025.11.10-2025.11.16{周/月/季/年}报(汇报对象:{汇报人姓名})<br>一、工作概述<br>本周聚焦核心项目V2.0版本开发迭代目标,完成3个核心功能模块开发,修复线上Bug12个(修复率92.3%),编写技术文档5份;重点攻克\"用户登录权限加密\"技术难点,确保模块按时交付;同步配合测试部完成首轮功能测试,整体工作符合项目排期,开发任务完成率100%。<br><br>二、核心成果(按优先级排序)<br>1. 项目V2.0核心功能开发完成(重点成果)<br>成果内容:独立完成\"用户登录权限加密\"\"数据批量导出\"\"异常日志自动上报\"3个核心模块开发,代码提交量2100行,通过内部代码评审(通过率100%),按时交付测试部,较计划提前0.5个工作日。<br>关键动作:11月10日拆解模块开发任务并制定时间表、11月11-13日完成\"权限加密\"模块开发与自测、11月14-15日完成剩余2个模块开发、11月16日提交代码评审并交付测试。<br><br>2. 线上Bug高效修复<br>成果内容:本周接收线上Bug工单13个,完成修复12个,修复率92.3%,平均修复时长2.5小时(目标4小时);其中2个高优先级Bug(影响10%用户登录)1小时内响应并修复,未造成用户流失。<br>关键动作:11月12日建立\"Bug优先级分级处理机制\"、每日早会同步Bug修复进度、晚间复盘修复方案优化点。<br><br>3. 技术文档规范化编写<br>成果内容:完成《V2.0权限加密模块开发文档》《Bug修复方案汇总》等5份技术文档编写,其中3份被纳入部门\"技术文档规范案例\",为后续迭代及新人交接提供支撑。<br>关键动作:11月13-15日分模块同步编写文档、11月16日结合代码评审意见优化文档细节。"
855
+ },
856
+ "stack": "",
857
+ "errorInfos": null,
858
+ "guidance": null
859
+ }
860
+ ```
861
+
862
+ ### GET `/note/addOrUpdateParamsByCode` 添加或修改问小智URL配置
863
+
864
+ **接口说明**:添加或修改问小智URL配置
865
+
866
+ #### 请求参数
867
+
868
+ | 参数名 | 类型 | 必填 | 说明 |
869
+ | --- | --- | --- | --- |
870
+ | teamId | string | 是 | 团队ID |
871
+ | url | string | 是 | 问小智配置链接地址 |
872
+
873
+ #### 请求示例
874
+
875
+ ```bash
876
+ curl --request GET \
877
+ --url https://openapi.zzjilu.com/api/v1/note/addOrUpdateParamsByCode?teamId=&url= \
878
+ --header 'Authorization: your api-key'
879
+ ```
880
+
881
+ #### 响应参数
882
+
883
+ | 参数名 | 类型 | 必填 | 说明 |
884
+ | --- | --- | --- | --- |
885
+ | resultCode | string | 是 | 状态码,0 表示成功, 其它均为失败 |
886
+ | resultMsg | string | 是 | 提示信息 |
887
+ | resultObject | string | 是 | 返回结果字符串 |
888
+ | stack | string | 是 | 异常堆栈信息 |
889
+ | errorInfos | array | 否 | 错误信息列表 |
890
+ | guidance | string | 否 | 引导信息 |
891
+
892
+ #### 响应示例
893
+
894
+ ```json
895
+ {
896
+ "resultCode": "",
897
+ "resultMsg": "",
898
+ "resultObject": "",
899
+ "stack": ""
900
+ }
901
+ ```