@plolink/sdk 0.0.5 → 0.0.8

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.
Files changed (56) hide show
  1. package/README.md +40 -26
  2. package/dist/{chunk-4H4RACSE.js → chunk-LHNCGCWW.js} +137 -3
  3. package/dist/chunk-LHNCGCWW.js.map +1 -0
  4. package/dist/{chunk-NS3DJP2O.cjs → chunk-WFBN23AH.cjs} +141 -2
  5. package/dist/chunk-WFBN23AH.cjs.map +1 -0
  6. package/dist/client-DXKAtLg1.d.ts +848 -0
  7. package/dist/client-l6cekf09.d.cts +848 -0
  8. package/dist/common/index.cjs +18 -14
  9. package/dist/common/index.d.cts +126 -1
  10. package/dist/common/index.d.ts +126 -1
  11. package/dist/common/index.js +1 -1
  12. package/dist/index.cjs +751 -13
  13. package/dist/index.cjs.map +1 -1
  14. package/dist/index.d.cts +410 -3
  15. package/dist/index.d.ts +410 -3
  16. package/dist/index.js +735 -3
  17. package/dist/index.js.map +1 -1
  18. package/dist/modules/billing/index.cjs +1 -1
  19. package/dist/modules/billing/index.d.cts +1 -1
  20. package/dist/modules/billing/index.d.ts +1 -1
  21. package/dist/modules/billing/index.js +1 -1
  22. package/dist/modules/rbac/index.d.cts +1 -1
  23. package/dist/modules/rbac/index.d.ts +1 -1
  24. package/dist/modules/team/index.d.cts +1 -1
  25. package/dist/modules/team/index.d.ts +1 -1
  26. package/dist/modules/video-psych-analysis/index.cjs +123 -4
  27. package/dist/modules/video-psych-analysis/index.cjs.map +1 -1
  28. package/dist/modules/video-psych-analysis/index.d.cts +231 -93
  29. package/dist/modules/video-psych-analysis/index.d.ts +231 -93
  30. package/dist/modules/video-psych-analysis/index.js +123 -4
  31. package/dist/modules/video-psych-analysis/index.js.map +1 -1
  32. package/dist/modules/virtual-account/index.d.cts +1 -1
  33. package/dist/modules/virtual-account/index.d.ts +1 -1
  34. package/package.json +1 -16
  35. package/dist/chunk-4H4RACSE.js.map +0 -1
  36. package/dist/chunk-NS3DJP2O.cjs.map +0 -1
  37. package/dist/client-CAjIQKPm.d.cts +0 -193
  38. package/dist/client-CwNikk7i.d.ts +0 -193
  39. package/dist/modules/agent/index.cjs +0 -21
  40. package/dist/modules/agent/index.cjs.map +0 -1
  41. package/dist/modules/agent/index.d.cts +0 -71
  42. package/dist/modules/agent/index.d.ts +0 -71
  43. package/dist/modules/agent/index.js +0 -19
  44. package/dist/modules/agent/index.js.map +0 -1
  45. package/dist/modules/chat/index.cjs +0 -20
  46. package/dist/modules/chat/index.cjs.map +0 -1
  47. package/dist/modules/chat/index.d.cts +0 -68
  48. package/dist/modules/chat/index.d.ts +0 -68
  49. package/dist/modules/chat/index.js +0 -18
  50. package/dist/modules/chat/index.js.map +0 -1
  51. package/dist/modules/psych/index.cjs +0 -20
  52. package/dist/modules/psych/index.cjs.map +0 -1
  53. package/dist/modules/psych/index.d.cts +0 -69
  54. package/dist/modules/psych/index.d.ts +0 -69
  55. package/dist/modules/psych/index.js +0 -18
  56. package/dist/modules/psych/index.js.map +0 -1
@@ -0,0 +1,848 @@
1
+ import { b as LoggerFunction, S as SDKConfig } from './core-77EbLgbp.cjs';
2
+ import { AxiosInstance, AxiosRequestConfig } from 'axios';
3
+
4
+ /**
5
+ * 心理评测模块类型定义
6
+ */
7
+ /**
8
+ * 评测状态枚举
9
+ */
10
+ declare enum PsychologyTestStatus {
11
+ /** 进行中 */
12
+ IN_PROGRESS = "IN_PROGRESS",
13
+ /** 已完成 */
14
+ COMPLETED = "COMPLETED"
15
+ }
16
+ /**
17
+ * 分析状态枚举
18
+ */
19
+ declare enum PsychologyAnalysisStatus {
20
+ /** 无需分析 */
21
+ NOT_NEEDED = "NOT_NEEDED",
22
+ /** 待分析 */
23
+ PENDING = "PENDING",
24
+ /** 分析中 */
25
+ ANALYZING = "ANALYZING",
26
+ /** 已完成 */
27
+ COMPLETED = "COMPLETED",
28
+ /** 失败 */
29
+ FAILED = "FAILED"
30
+ }
31
+ /**
32
+ * 题目类型
33
+ */
34
+ type QuestionType = 'single_choice' | 'multiple_choice' | 'text' | 'scale' | 'matrix';
35
+ /**
36
+ * 题目依赖条件
37
+ */
38
+ interface QuestionDependency {
39
+ /** 依赖的题目代码 */
40
+ questionCode: string;
41
+ /** 依赖的答案值 */
42
+ expectedAnswer: string | string[];
43
+ }
44
+ /**
45
+ * 题目选项
46
+ */
47
+ interface QuestionOption {
48
+ /** 选项标签 */
49
+ label: string;
50
+ /** 选项值 */
51
+ value: string;
52
+ }
53
+ /**
54
+ * 题目元数据
55
+ */
56
+ interface QuestionMetadata {
57
+ /** 题目选项(单选/多选题) */
58
+ options?: QuestionOption[];
59
+ /** 量表范围(量表题) */
60
+ scale?: {
61
+ min: number;
62
+ max: number;
63
+ minLabel?: string;
64
+ maxLabel?: string;
65
+ };
66
+ /** 其他自定义元数据 */
67
+ [key: string]: unknown;
68
+ }
69
+ /**
70
+ * 题目信息
71
+ */
72
+ interface QuestionInfo {
73
+ /** 题组代码 */
74
+ groupCode: string;
75
+ /** 题组名称 */
76
+ groupName: string;
77
+ /** 子题库ID */
78
+ bankId: string;
79
+ /** 子题库名称 */
80
+ bankName: string;
81
+ /** 题目ID */
82
+ questionId: string;
83
+ /** 题目UUID */
84
+ questionUuid: string;
85
+ /** 题目代码(可为null) */
86
+ questionCode: string | null;
87
+ /** 题目类型 */
88
+ questionType: QuestionType;
89
+ /** 题目内容 */
90
+ content: string;
91
+ /** 题目元数据 */
92
+ metadata: QuestionMetadata;
93
+ /** 依赖条件(可为null) */
94
+ dependsOn: QuestionDependency | null;
95
+ /** 排序顺序 */
96
+ sortOrder: number;
97
+ }
98
+ /**
99
+ * 题组摘要信息
100
+ */
101
+ interface GroupSummary {
102
+ /** 题组名称 */
103
+ groupName: string;
104
+ /** 子题库ID */
105
+ bankId: string;
106
+ /** 子题库名称 */
107
+ bankName: string;
108
+ /** 题目数量 */
109
+ questionCount: number;
110
+ }
111
+ /**
112
+ * 创建心理评测会话参数
113
+ */
114
+ interface CreatePsychologyTestSessionParams {
115
+ /** 题组代码列表 */
116
+ groupCodes: string[];
117
+ /** 业务模块 */
118
+ businessModule: string;
119
+ /** 业务码 */
120
+ businessCode: string;
121
+ /** 业务ID */
122
+ businessId: string;
123
+ /** 是否需要AI分析 */
124
+ needAnalysis: boolean;
125
+ /** 分析提示词(needAnalysis为true时必填) */
126
+ analysisPrompt?: string;
127
+ }
128
+ /**
129
+ * 创建心理评测会话响应
130
+ */
131
+ interface CreatePsychologyTestSessionResponse {
132
+ /** 评测会话ID */
133
+ sessionId: string;
134
+ }
135
+ /**
136
+ * 获取会话题目响应
137
+ */
138
+ interface GetSessionQuestionsResponse {
139
+ /** 题目列表 */
140
+ questions: QuestionInfo[];
141
+ /** 总题数 */
142
+ totalCount: number;
143
+ /** 题组摘要(按题组代码分组) */
144
+ groupSummary: Record<string, GroupSummary>;
145
+ }
146
+ /**
147
+ * 发起心理评测参数
148
+ * @deprecated 请使用 CreatePsychologyTestSessionParams
149
+ */
150
+ interface InitiatePsychologyTestParams {
151
+ /** 题组代码列表 */
152
+ groupCodes: string[];
153
+ /** 业务模块 */
154
+ businessModule: string;
155
+ /** 业务码 */
156
+ businessCode: string;
157
+ /** 业务ID */
158
+ businessId: string;
159
+ /** 是否需要AI分析 */
160
+ needAnalysis: boolean;
161
+ /** 分析提示词(needAnalysis为true时必填) */
162
+ analysisPrompt?: string;
163
+ }
164
+ /**
165
+ * 发起心理评测响应
166
+ * @deprecated 请使用 CreatePsychologyTestSessionResponse + GetSessionQuestionsResponse
167
+ */
168
+ interface InitiatePsychologyTestResponse {
169
+ /** 评测会话ID */
170
+ sessionId: string;
171
+ /** 题目列表 */
172
+ questions: QuestionInfo[];
173
+ /** 总题数 */
174
+ totalCount: number;
175
+ /** 题组摘要(按题组代码分组) */
176
+ groupSummary: Record<string, GroupSummary>;
177
+ }
178
+ /**
179
+ * 答题记录
180
+ */
181
+ interface AnswerRecord {
182
+ /** 题组代码 */
183
+ groupCode: string;
184
+ /** 子题库ID */
185
+ bankId: string;
186
+ /** 题目ID */
187
+ questionId: string;
188
+ /** 题目代码(可为null) */
189
+ questionCode: string | null;
190
+ /** 答案(JSON字符串) */
191
+ answer: string;
192
+ /** 单题用时(毫秒) */
193
+ timeSpent?: number;
194
+ }
195
+ /**
196
+ * 提交心理评测参数
197
+ */
198
+ interface SubmitPsychologyTestParams {
199
+ /** 评测会话ID */
200
+ sessionId: string;
201
+ /** 答题记录列表 */
202
+ answers: AnswerRecord[];
203
+ /** 总用时(毫秒) */
204
+ duration?: number;
205
+ }
206
+ /**
207
+ * 计算结果(单个题库)
208
+ */
209
+ interface TestCalculationResult {
210
+ /** 测试结果数据(具体结构取决于题库类型) */
211
+ testResult: Record<string, unknown>;
212
+ /** Markdown格式的得分描述 */
213
+ markdown: string;
214
+ }
215
+ /**
216
+ * 提交心理评测响应
217
+ */
218
+ interface SubmitPsychologyTestResponse {
219
+ /** 评测会话ID */
220
+ sessionId: string;
221
+ /** 计算结果(按题组代码分组) */
222
+ calculationResults: Record<string, TestCalculationResult>;
223
+ /** 完整的得分描述Markdown */
224
+ scoreDescription: string;
225
+ }
226
+ /**
227
+ * 答题记录详情
228
+ */
229
+ interface PsychologyTestAnswerDetail {
230
+ /** 答题记录ID */
231
+ id: string;
232
+ /** 评测会话ID */
233
+ sessionId: string;
234
+ /** 题组代码 */
235
+ groupCode: string;
236
+ /** 子题库ID */
237
+ bankId: string;
238
+ /** 题目ID */
239
+ questionId: string;
240
+ /** 题目代码 */
241
+ questionCode: string | null;
242
+ /** 答案 */
243
+ answer: string;
244
+ /** 单题用时(毫秒) */
245
+ timeSpent: number;
246
+ /** 版本号 */
247
+ version: number;
248
+ /** 创建时间 */
249
+ createdAt: string;
250
+ /** 更新时间 */
251
+ updatedAt: string;
252
+ /** 删除时间(软删除) */
253
+ deletedAt: string | null;
254
+ }
255
+ /**
256
+ * 心理评测详情
257
+ */
258
+ interface PsychologyTestDetail {
259
+ /** 评测会话ID */
260
+ id: string;
261
+ /** 业务模块 */
262
+ businessModule: string;
263
+ /** 业务码 */
264
+ businessCode: string;
265
+ /** 业务ID */
266
+ businessId: string;
267
+ /** 题组代码列表(JSON字符串) */
268
+ groupCodes: string;
269
+ /** 评测状态 */
270
+ status: PsychologyTestStatus;
271
+ /** 总题数 */
272
+ totalQuestions: number;
273
+ /** 答题用时(毫秒) */
274
+ duration: number;
275
+ /** 计算结果(JSON字符串) */
276
+ calculationResults: string;
277
+ /** 解析后的计算结果 */
278
+ calculationResultsParsed: Record<string, TestCalculationResult>;
279
+ /** 得分描述Markdown */
280
+ scoreDescription: string;
281
+ /** 是否需要AI分析 */
282
+ needAnalysis: boolean;
283
+ /** 分析提示词 */
284
+ analysisPrompt: string | null;
285
+ /** 分析状态 */
286
+ analysisStatus: PsychologyAnalysisStatus;
287
+ /** AI分析结果Markdown */
288
+ analysisResult: string | null;
289
+ /** 分析错误信息 */
290
+ analysisError: string | null;
291
+ /** 分析完成时间 */
292
+ analysisCompletedAt: string | null;
293
+ /** 创建者ID */
294
+ creatorId: string;
295
+ /** 团队ID */
296
+ teamId: string;
297
+ /** 版本号 */
298
+ version: number;
299
+ /** 创建时间 */
300
+ createdAt: string;
301
+ /** 更新时间 */
302
+ updatedAt: string;
303
+ /** 删除时间(软删除) */
304
+ deletedAt: string | null;
305
+ }
306
+ /**
307
+ * 题库组简要信息
308
+ */
309
+ interface PsychologyBankGroupSummary {
310
+ /** 题库组ID */
311
+ id: string;
312
+ /** 题库组名称 */
313
+ name: string;
314
+ /** 题库组代码 */
315
+ code: string;
316
+ /** 测试目标 */
317
+ testObjective: string;
318
+ }
319
+ /**
320
+ * 列表查询心理评测会话参数
321
+ */
322
+ interface ListPsychologyTestSessionsParams {
323
+ /** 页码(从1开始) */
324
+ page?: number;
325
+ /** 每页数量 */
326
+ size?: number;
327
+ /** 业务模块 */
328
+ businessModule?: string;
329
+ /** 业务码 */
330
+ businessCode?: string;
331
+ /** 评测状态 */
332
+ status?: string;
333
+ /** 分析状态 */
334
+ analysisStatus?: string;
335
+ /** 开始日期(ISO字符串) */
336
+ startDate?: string;
337
+ /** 结束日期(ISO字符串) */
338
+ endDate?: string;
339
+ /** 团队ID */
340
+ teamId?: string;
341
+ }
342
+ /**
343
+ * 列表查询心理评测会话响应
344
+ */
345
+ interface ListPsychologyTestSessionsResponse {
346
+ /** 会话列表 */
347
+ list: PsychologyTestDetail[];
348
+ /** 总数 */
349
+ total: number;
350
+ /** 当前页码 */
351
+ page: number;
352
+ /** 每页数量 */
353
+ size: number;
354
+ }
355
+
356
+ /**
357
+ * SDK 内部日志器
358
+ *
359
+ * @description
360
+ * 提供统一的日志接口,支持用户自定义日志钩子。
361
+ * 默认使用 console 输出,用户可以通过配置自定义 logger 函数来集成 Sentry 等监控系统。
362
+ *
363
+ * @example
364
+ * ```typescript
365
+ * const logger = new InternalLogger((level, message, data) => {
366
+ * // 自定义日志处理,例如发送到 Sentry
367
+ * console.log(`[${level}] ${message}`, data);
368
+ * });
369
+ *
370
+ * logger.info('Operation started', { userId: '123' });
371
+ * logger.error('Operation failed', { error: 'Network timeout' });
372
+ * ```
373
+ */
374
+ declare class InternalLogger {
375
+ /**
376
+ * 用户自定义的日志钩子函数
377
+ */
378
+ private readonly userLogger?;
379
+ /**
380
+ * 是否启用日志输出
381
+ * 可以通过环境变量 PLOLINK_SDK_DEBUG 控制
382
+ */
383
+ private readonly isDebugEnabled;
384
+ /**
385
+ * 创建一个 InternalLogger 实例
386
+ *
387
+ * @param userLogger - 用户自定义的日志钩子函数
388
+ */
389
+ constructor(userLogger?: LoggerFunction);
390
+ /**
391
+ * 记录信息级别日志
392
+ *
393
+ * @param message - 日志消息
394
+ * @param context - 附加上下文数据
395
+ */
396
+ info(message: string, context?: unknown): void;
397
+ /**
398
+ * 记录警告级别日志
399
+ *
400
+ * @param message - 日志消息
401
+ * @param context - 附加上下文数据
402
+ */
403
+ warn(message: string, context?: unknown): void;
404
+ /**
405
+ * 记录错误级别日志
406
+ *
407
+ * @param message - 日志消息
408
+ * @param context - 附加上下文数据
409
+ */
410
+ error(message: string, context?: unknown): void;
411
+ /**
412
+ * 记录调试级别日志
413
+ * 只有在 debug 模式下才会输出
414
+ *
415
+ * @param message - 日志消息
416
+ * @param context - 附加上下文数据
417
+ */
418
+ debug(message: string, context?: unknown): void;
419
+ /**
420
+ * 内部日志记录方法
421
+ *
422
+ * @param level - 日志级别
423
+ * @param message - 日志消息
424
+ * @param context - 附加上下文数据
425
+ */
426
+ private log;
427
+ /**
428
+ * 创建一个带有固定上下文的子 logger
429
+ *
430
+ * @param context - 固定的上下文数据
431
+ * @returns 新的 logger 实例
432
+ *
433
+ * @example
434
+ * ```typescript
435
+ * const logger = new InternalLogger();
436
+ * const moduleLogger = logger.withContext({ module: 'billing' });
437
+ * moduleLogger.info('Payment processed'); // 日志会自动带上 module: 'billing'
438
+ * ```
439
+ */
440
+ withContext(context: Record<string, unknown>): InternalLogger;
441
+ }
442
+
443
+ /**
444
+ * 为 Axios 实例添加类型安全的请求方法
445
+ *
446
+ * @description
447
+ * 这些方法封装了 Axios 的原始方法,提供更好的类型推断。
448
+ */
449
+ interface TypedAxiosInstance extends AxiosInstance {
450
+ get<T = unknown>(url: string, config?: AxiosRequestConfig): Promise<T>;
451
+ post<T = unknown>(url: string, data?: unknown, config?: AxiosRequestConfig): Promise<T>;
452
+ put<T = unknown>(url: string, data?: unknown, config?: AxiosRequestConfig): Promise<T>;
453
+ patch<T = unknown>(url: string, data?: unknown, config?: AxiosRequestConfig): Promise<T>;
454
+ delete<T = unknown>(url: string, config?: AxiosRequestConfig): Promise<T>;
455
+ }
456
+
457
+ /**
458
+ * 心理评测模块
459
+ *
460
+ * @description
461
+ * 提供心理评测相关功能,包括:
462
+ * - 发起心理评测会话
463
+ * - 提交心理评测答题
464
+ * - 获取评测详情和结果
465
+ * - 获取答题记录
466
+ *
467
+ * @example
468
+ * ```typescript
469
+ * import { PlolinkClient } from '@plolink/sdk';
470
+ *
471
+ * const client = new PlolinkClient({
472
+ * token: 'sk-your-api-key'
473
+ * });
474
+ *
475
+ * // 发起心理评测
476
+ * const initResult = await client.psychologyTest.initiate({
477
+ * groupCodes: ['family_parenting', 'disc'],
478
+ * businessModule: 'talent_assessment',
479
+ * businessCode: 'job_match',
480
+ * businessId: 'clxxxx123456',
481
+ * needAnalysis: true,
482
+ * analysisPrompt: '请结合家庭养育方式和DISC行为模式,分析候选人的性格特点。'
483
+ * });
484
+ * console.log(`评测会话已创建: ${initResult.sessionId}`);
485
+ * console.log(`共 ${initResult.totalCount} 道题目`);
486
+ *
487
+ * // 用户答题...
488
+ * const answers = initResult.questions.map(q => ({
489
+ * groupCode: q.groupCode,
490
+ * bankId: q.bankId,
491
+ * questionId: q.questionId,
492
+ * questionCode: q.questionCode,
493
+ * answer: getUserAnswer(q), // 获取用户答案
494
+ * timeSpent: getTimeSpent(q) // 获取答题时间
495
+ * }));
496
+ *
497
+ * // 提交心理评测
498
+ * const submitResult = await client.psychologyTest.submit({
499
+ * sessionId: initResult.sessionId,
500
+ * answers,
501
+ * duration: 480000
502
+ * });
503
+ * console.log('得分描述:', submitResult.scoreDescription);
504
+ *
505
+ * // 查询评测详情
506
+ * const detail = await client.psychologyTest.getDetail(initResult.sessionId);
507
+ * if (detail.analysisStatus === 'COMPLETED') {
508
+ * console.log('AI分析结果:', detail.analysisResult);
509
+ * }
510
+ * ```
511
+ *
512
+ * @module psychology-test
513
+ */
514
+
515
+ /**
516
+ * 心理评测模块
517
+ */
518
+ declare class PsychologyTest {
519
+ private client;
520
+ constructor(client: PlolinkClient);
521
+ /**
522
+ * 创建心理评测会话
523
+ *
524
+ * @description
525
+ * 创建心理评测会话记录(不返回题目)。
526
+ * 创建后需要调用 getSessionQuestions() 获取题目列表。
527
+ *
528
+ * @param params - 创建会话参数
529
+ * @returns 会话信息,包含会话ID
530
+ * @throws {PlolinkError} 当参数验证失败或创建失败时抛出
531
+ *
532
+ * @example
533
+ * ```typescript
534
+ * // 1. 创建会话
535
+ * const { sessionId } = await client.psychologyTest.createTestSession({
536
+ * groupCodes: ['family_parenting', 'disc'],
537
+ * businessModule: 'talent_assessment',
538
+ * businessCode: 'job_match',
539
+ * businessId: 'clxxxx123456',
540
+ * needAnalysis: true,
541
+ * analysisPrompt: '请结合家庭养育方式和DISC行为模式,分析候选人的性格特点。'
542
+ * });
543
+ *
544
+ * console.log(`评测会话已创建: ${sessionId}`);
545
+ *
546
+ * // 2. 获取题目
547
+ * const questions = await client.psychologyTest.getSessionQuestions(sessionId);
548
+ * ```
549
+ */
550
+ createTestSession(params: CreatePsychologyTestSessionParams): Promise<CreatePsychologyTestSessionResponse>;
551
+ /**
552
+ * 获取会话题目
553
+ *
554
+ * @description
555
+ * 获取心理评测会话的题目列表(动态生成,每次调用都会重新打乱题目顺序)。
556
+ *
557
+ * @param sessionId - 评测会话ID
558
+ * @returns 题目列表和题组摘要
559
+ * @throws {PlolinkError} 当会话不存在或获取失败时抛出
560
+ *
561
+ * @example
562
+ * ```typescript
563
+ * const questions = await client.psychologyTest.getSessionQuestions('clxxxx789012');
564
+ *
565
+ * console.log(`共 ${questions.totalCount} 道题目`);
566
+ * console.log('题组摘要:', questions.groupSummary);
567
+ *
568
+ * // 展示题目
569
+ * questions.questions.forEach((q, index) => {
570
+ * console.log(`题目 ${index + 1}: ${q.content}`);
571
+ * });
572
+ * ```
573
+ */
574
+ getSessionQuestions(sessionId: string): Promise<GetSessionQuestionsResponse>;
575
+ /**
576
+ * 发起心理评测(已废弃)
577
+ *
578
+ * @deprecated 此方法已废弃,将在 v2.0 中移除。请使用 createTestSession() + getSessionQuestions() 替代。
579
+ *
580
+ * @description
581
+ * 根据题组代码列表发起心理评测会话,系统会自动生成打乱后的题目列表并返回。
582
+ *
583
+ * **迁移建议**:
584
+ * ```typescript
585
+ * // 旧方式(已废弃)
586
+ * const result = await client.psychologyTest.initiate(params);
587
+ *
588
+ * // 新方式(推荐)
589
+ * const { sessionId } = await client.psychologyTest.createTestSession(params);
590
+ * const result = await client.psychologyTest.getSessionQuestions(sessionId);
591
+ * ```
592
+ *
593
+ * @param params - 发起评测参数
594
+ * @returns 评测会话信息,包含会话ID和题目列表
595
+ * @throws {PlolinkError} 当参数验证失败或发起失败时抛出
596
+ */
597
+ initiate(params: InitiatePsychologyTestParams): Promise<InitiatePsychologyTestResponse>;
598
+ /**
599
+ * 提交心理评测
600
+ *
601
+ * @description
602
+ * 提交心理评测答题数据,系统会自动计算得分并生成 Markdown 描述。
603
+ * 如需 AI 分析则会加入异步队列,分析完成后会通过 Webhook 通知。
604
+ *
605
+ * @param params - 提交评测参数
606
+ * @returns 提交结果,包含计算结果和得分描述
607
+ * @throws {PlolinkError} 当参数验证失败或提交失败时抛出
608
+ *
609
+ * @example
610
+ * ```typescript
611
+ * const result = await client.psychologyTest.submit({
612
+ * sessionId: 'clxxxx789012',
613
+ * answers: [
614
+ * {
615
+ * groupCode: 'family_parenting',
616
+ * bankId: 'bank_123',
617
+ * questionId: 'q_001',
618
+ * questionCode: 'FP001A',
619
+ * answer: '1',
620
+ * timeSpent: 3500
621
+ * },
622
+ * // ... 更多答题记录
623
+ * ],
624
+ * duration: 480000
625
+ * });
626
+ *
627
+ * console.log('得分描述:', result.scoreDescription);
628
+ * console.log('计算结果:', result.calculationResults);
629
+ * ```
630
+ */
631
+ submit(params: SubmitPsychologyTestParams): Promise<SubmitPsychologyTestResponse>;
632
+ /**
633
+ * 获取心理评测详情
634
+ *
635
+ * @description
636
+ * 获取心理评测会话的完整信息,包括基本信息、计算结果、得分描述、AI分析结果等。
637
+ *
638
+ * @param sessionId - 评测会话ID
639
+ * @returns 评测会话详情
640
+ * @throws {PlolinkError} 当会话不存在或查询失败时抛出
641
+ *
642
+ * @example
643
+ * ```typescript
644
+ * const detail = await client.psychologyTest.getDetail('clxxxx789012');
645
+ *
646
+ * console.log('评测状态:', detail.status);
647
+ * console.log('得分描述:', detail.scoreDescription);
648
+ *
649
+ * // 检查分析状态
650
+ * if (detail.analysisStatus === 'COMPLETED') {
651
+ * console.log('AI分析结果:', detail.analysisResult);
652
+ * } else if (detail.analysisStatus === 'ANALYZING') {
653
+ * console.log('AI分析进行中,请稍后查询');
654
+ * } else if (detail.analysisStatus === 'FAILED') {
655
+ * console.error('分析失败:', detail.analysisError);
656
+ * }
657
+ * ```
658
+ */
659
+ getDetail(sessionId: string): Promise<PsychologyTestDetail>;
660
+ /**
661
+ * 获取心理评测答题记录
662
+ *
663
+ * @description
664
+ * 获取心理评测会话的所有答题记录。
665
+ *
666
+ * @param sessionId - 评测会话ID
667
+ * @returns 答题记录列表
668
+ * @throws {PlolinkError} 当会话不存在或查询失败时抛出
669
+ *
670
+ * @example
671
+ * ```typescript
672
+ * const answers = await client.psychologyTest.getAnswers('clxxxx789012');
673
+ *
674
+ * console.log(`共 ${answers.length} 条答题记录`);
675
+ * answers.forEach(answer => {
676
+ * console.log(`题目 ${answer.questionCode}: ${answer.answer}`);
677
+ * });
678
+ * ```
679
+ */
680
+ getAnswers(sessionId: string): Promise<PsychologyTestAnswerDetail[]>;
681
+ /**
682
+ * 列表查询心理评测会话
683
+ *
684
+ * @description
685
+ * 查询心理评测会话列表,支持分页和多条件筛选。
686
+ * 此接口通常用于管理后台或业务系统查询评测记录。
687
+ *
688
+ * @param params - 查询参数
689
+ * @returns 会话列表和分页信息
690
+ * @throws {PlolinkError} 当查询失败时抛出
691
+ *
692
+ * @example
693
+ * ```typescript
694
+ * // 查询所有评测会话
695
+ * const result = await client.psychologyTest.listTestSessions({
696
+ * page: 1,
697
+ * size: 20
698
+ * });
699
+ *
700
+ * console.log(`共 ${result.total} 条记录`);
701
+ * result.list.forEach(session => {
702
+ * console.log(`会话ID: ${session.id}, 状态: ${session.status}`);
703
+ * });
704
+ *
705
+ * // 按条件筛选
706
+ * const filtered = await client.psychologyTest.listTestSessions({
707
+ * page: 1,
708
+ * size: 20,
709
+ * businessModule: 'talent_assessment',
710
+ * status: 'COMPLETED',
711
+ * analysisStatus: 'COMPLETED'
712
+ * });
713
+ * ```
714
+ */
715
+ listTestSessions(params?: ListPsychologyTestSessionsParams): Promise<ListPsychologyTestSessionsResponse>;
716
+ /**
717
+ * 删除心理评测会话
718
+ *
719
+ * @description
720
+ * 软删除心理评测会话记录。删除后数据不会真正从数据库移除,
721
+ * 但在正常查询中不会显示。此接口通常用于管理后台。
722
+ *
723
+ * @param sessionId - 评测会话ID
724
+ * @returns void
725
+ * @throws {PlolinkError} 当会话不存在或删除失败时抛出
726
+ *
727
+ * @example
728
+ * ```typescript
729
+ * // 删除评测会话
730
+ * await client.psychologyTest.deleteTestSession('clxxxx789012');
731
+ * console.log('评测会话已删除');
732
+ * ```
733
+ */
734
+ deleteTestSession(sessionId: string): Promise<void>;
735
+ /**
736
+ * 获取题库组列表
737
+ *
738
+ * @description
739
+ * 获取所有启用状态的题库组列表,返回基本信息用于选择。
740
+ * 此接口不需要管理员权限,普通用户即可调用。
741
+ *
742
+ * @returns 题库组列表
743
+ * @throws {PlolinkError} 当查询失败时抛出
744
+ *
745
+ * @example
746
+ * ```typescript
747
+ * const groups = await client.psychologyTest.listBankGroups();
748
+ * groups.forEach(g => {
749
+ * console.log(`${g.name} (${g.code}): ${g.testObjective}`);
750
+ * });
751
+ * ```
752
+ */
753
+ listBankGroups(): Promise<PsychologyBankGroupSummary[]>;
754
+ }
755
+
756
+ /**
757
+ * Plolink SDK 客户端主类
758
+ *
759
+ * @description
760
+ * PlolinkClient 是 SDK 的核心类,负责:
761
+ * - 管理 SDK 配置(认证 Token、API 地址等)
762
+ * - 初始化 Axios 实例并配置拦截器
763
+ * - 提供统一的日志接口
764
+ * - 作为所有业务模块的基础依赖
765
+ *
766
+ * @example
767
+ * ```typescript
768
+ * // 使用 ApiKey
769
+ * const client = new PlolinkClient({
770
+ * token: 'sk-123456789',
771
+ * logger: (level, msg, data) => {
772
+ * console.log(`[${level}] ${msg}`, data);
773
+ * }
774
+ * });
775
+ *
776
+ * // 使用 SessionId (登录后获取)
777
+ * const client = new PlolinkClient({
778
+ * token: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890',
779
+ * baseUrl: 'https://api.plolink.com'
780
+ * });
781
+ * ```
782
+ */
783
+ declare class PlolinkClient {
784
+ /**
785
+ * SDK 配置对象(已填充默认值)
786
+ */
787
+ readonly config: Required<SDKConfig>;
788
+ /**
789
+ * Axios 实例,用于发起 HTTP 请求
790
+ */
791
+ readonly axiosInstance: TypedAxiosInstance;
792
+ /**
793
+ * 内部日志记录器
794
+ */
795
+ readonly logger: InternalLogger;
796
+ /**
797
+ * 心理评测模块
798
+ */
799
+ readonly psychologyTest: PsychologyTest;
800
+ /**
801
+ * 创建一个 PlolinkClient 实例
802
+ *
803
+ * @param config - SDK 配置对象
804
+ * @throws {PlolinkError} 当配置验证失败时抛出
805
+ *
806
+ * @example
807
+ * ```typescript
808
+ * const client = new PlolinkClient({
809
+ * token: 'sk-your-api-key'
810
+ * });
811
+ * ```
812
+ */
813
+ constructor(config: SDKConfig);
814
+ /**
815
+ * 验证 SDK 配置
816
+ *
817
+ * @param config - SDK 配置对象
818
+ * @throws {PlolinkError} 当配置不合法时抛出
819
+ * @private
820
+ */
821
+ private validateConfig;
822
+ /**
823
+ * 获取当前 SDK 版本
824
+ *
825
+ * @returns SDK 版本号
826
+ */
827
+ getVersion(): string;
828
+ /**
829
+ * 检查客户端健康状态
830
+ *
831
+ * @returns 健康状态信息
832
+ *
833
+ * @example
834
+ * ```typescript
835
+ * const health = client.healthCheck();
836
+ * console.log(health);
837
+ * // { status: 'ok', baseUrl: '...', version: '...' }
838
+ * ```
839
+ */
840
+ healthCheck(): {
841
+ status: 'ok';
842
+ baseUrl: string;
843
+ version: string;
844
+ hasToken: boolean;
845
+ };
846
+ }
847
+
848
+ export { InternalLogger as I, PlolinkClient as P, PsychologyTest as a };