@plolink/sdk 0.0.8 → 0.0.10

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 (58) hide show
  1. package/README.md +58 -4
  2. package/dist/{chunk-LHNCGCWW.js → chunk-4H4RACSE.js} +3 -137
  3. package/dist/chunk-4H4RACSE.js.map +1 -0
  4. package/dist/{chunk-WFBN23AH.cjs → chunk-NS3DJP2O.cjs} +2 -141
  5. package/dist/chunk-NS3DJP2O.cjs.map +1 -0
  6. package/dist/chunk-PJAJFV7D.js +139 -0
  7. package/dist/chunk-PJAJFV7D.js.map +1 -0
  8. package/dist/chunk-V6NFRYO2.cjs +145 -0
  9. package/dist/chunk-V6NFRYO2.cjs.map +1 -0
  10. package/dist/client-CAjIQKPm.d.cts +193 -0
  11. package/dist/client-CwNikk7i.d.ts +193 -0
  12. package/dist/common/index.cjs +19 -18
  13. package/dist/common/index.d.cts +2 -126
  14. package/dist/common/index.d.ts +2 -126
  15. package/dist/common/index.js +2 -1
  16. package/dist/index.cjs +18 -751
  17. package/dist/index.cjs.map +1 -1
  18. package/dist/index.d.cts +4 -410
  19. package/dist/index.d.ts +4 -410
  20. package/dist/index.js +4 -735
  21. package/dist/index.js.map +1 -1
  22. package/dist/modules/billing/index.cjs +1 -1
  23. package/dist/modules/billing/index.d.cts +1 -1
  24. package/dist/modules/billing/index.d.ts +1 -1
  25. package/dist/modules/billing/index.js +1 -1
  26. package/dist/modules/info-sync/index.cjs +275 -0
  27. package/dist/modules/info-sync/index.cjs.map +1 -0
  28. package/dist/modules/info-sync/index.d.cts +431 -0
  29. package/dist/modules/info-sync/index.d.ts +431 -0
  30. package/dist/modules/info-sync/index.js +269 -0
  31. package/dist/modules/info-sync/index.js.map +1 -0
  32. package/dist/modules/psychology-test/index.cjs +474 -0
  33. package/dist/modules/psychology-test/index.cjs.map +1 -0
  34. package/dist/{client-DXKAtLg1.d.ts → modules/psychology-test/index.d.cts} +34 -200
  35. package/dist/{client-l6cekf09.d.cts → modules/psychology-test/index.d.ts} +34 -200
  36. package/dist/modules/psychology-test/index.js +472 -0
  37. package/dist/modules/psychology-test/index.js.map +1 -0
  38. package/dist/modules/rbac/index.d.cts +1 -1
  39. package/dist/modules/rbac/index.d.ts +1 -1
  40. package/dist/modules/report-writer/index.cjs +282 -0
  41. package/dist/modules/report-writer/index.cjs.map +1 -0
  42. package/dist/modules/report-writer/index.d.cts +476 -0
  43. package/dist/modules/report-writer/index.d.ts +476 -0
  44. package/dist/modules/report-writer/index.js +280 -0
  45. package/dist/modules/report-writer/index.js.map +1 -0
  46. package/dist/modules/team/index.d.cts +1 -1
  47. package/dist/modules/team/index.d.ts +1 -1
  48. package/dist/modules/video-psych-analysis/index.cjs +1 -1
  49. package/dist/modules/video-psych-analysis/index.d.cts +1 -1
  50. package/dist/modules/video-psych-analysis/index.d.ts +1 -1
  51. package/dist/modules/video-psych-analysis/index.js +1 -1
  52. package/dist/modules/virtual-account/index.d.cts +1 -1
  53. package/dist/modules/virtual-account/index.d.ts +1 -1
  54. package/dist/signature-B5LL3Zij.d.cts +126 -0
  55. package/dist/signature-B5LL3Zij.d.ts +126 -0
  56. package/package.json +17 -1
  57. package/dist/chunk-LHNCGCWW.js.map +0 -1
  58. package/dist/chunk-WFBN23AH.cjs.map +0 -1
@@ -1,5 +1,6 @@
1
- import { b as LoggerFunction, S as SDKConfig } from './core-77EbLgbp.js';
2
- import { AxiosInstance, AxiosRequestConfig } from 'axios';
1
+ import { P as PlolinkClient } from '../../client-CAjIQKPm.cjs';
2
+ import '../../core-77EbLgbp.cjs';
3
+ import 'axios';
3
4
 
4
5
  /**
5
6
  * 心理评测模块类型定义
@@ -303,6 +304,34 @@ interface PsychologyTestDetail {
303
304
  /** 删除时间(软删除) */
304
305
  deletedAt: string | null;
305
306
  }
307
+ /**
308
+ * Webhook 通知数据结构
309
+ */
310
+ interface PsychologyTestWebhookData {
311
+ /** 事件类型 */
312
+ event: 'psychology_test.analysis_completed';
313
+ /** 时间戳(毫秒) */
314
+ timestamp: number;
315
+ /** 事件数据 */
316
+ data: {
317
+ /** 评测会话ID */
318
+ sessionId: string;
319
+ /** 业务模块 */
320
+ businessModule: string;
321
+ /** 业务码 */
322
+ businessCode: string;
323
+ /** 业务ID */
324
+ businessId: string;
325
+ /** 评测状态 */
326
+ status: string;
327
+ /** 分析状态 */
328
+ analysisStatus: string;
329
+ /** AI分析结果 */
330
+ analysisResult?: string;
331
+ /** 完成时间 */
332
+ completedAt: string;
333
+ };
334
+ }
306
335
  /**
307
336
  * 题库组简要信息
308
337
  */
@@ -336,8 +365,6 @@ interface ListPsychologyTestSessionsParams {
336
365
  startDate?: string;
337
366
  /** 结束日期(ISO字符串) */
338
367
  endDate?: string;
339
- /** 团队ID */
340
- teamId?: string;
341
368
  }
342
369
  /**
343
370
  * 列表查询心理评测会话响应
@@ -353,107 +380,6 @@ interface ListPsychologyTestSessionsResponse {
353
380
  size: number;
354
381
  }
355
382
 
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
383
  /**
458
384
  * 心理评测模块
459
385
  *
@@ -683,7 +609,7 @@ declare class PsychologyTest {
683
609
  *
684
610
  * @description
685
611
  * 查询心理评测会话列表,支持分页和多条件筛选。
686
- * 此接口通常用于管理后台或业务系统查询评测记录。
612
+ * 团队成员可访问该团队的评测数据(teamId 由后端从认证信息中自动获取)。
687
613
  *
688
614
  * @param params - 查询参数
689
615
  * @returns 会话列表和分页信息
@@ -718,7 +644,7 @@ declare class PsychologyTest {
718
644
  *
719
645
  * @description
720
646
  * 软删除心理评测会话记录。删除后数据不会真正从数据库移除,
721
- * 但在正常查询中不会显示。此接口通常用于管理后台。
647
+ * 但在正常查询中不会显示。团队成员可删除该团队的评测数据。
722
648
  *
723
649
  * @param sessionId - 评测会话ID
724
650
  * @returns void
@@ -753,96 +679,4 @@ declare class PsychologyTest {
753
679
  listBankGroups(): Promise<PsychologyBankGroupSummary[]>;
754
680
  }
755
681
 
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 };
682
+ export { type AnswerRecord, type CreatePsychologyTestSessionParams, type CreatePsychologyTestSessionResponse, type GetSessionQuestionsResponse, type GroupSummary, type InitiatePsychologyTestParams, type InitiatePsychologyTestResponse, type ListPsychologyTestSessionsParams, type ListPsychologyTestSessionsResponse, PsychologyAnalysisStatus, type PsychologyBankGroupSummary, PsychologyTest, type PsychologyTestAnswerDetail, type PsychologyTestDetail, PsychologyTestStatus, type PsychologyTestWebhookData, type QuestionDependency, type QuestionInfo, type QuestionMetadata, type QuestionOption, type QuestionType, type SubmitPsychologyTestParams, type SubmitPsychologyTestResponse, type TestCalculationResult };
@@ -1,5 +1,6 @@
1
- import { b as LoggerFunction, S as SDKConfig } from './core-77EbLgbp.cjs';
2
- import { AxiosInstance, AxiosRequestConfig } from 'axios';
1
+ import { P as PlolinkClient } from '../../client-CwNikk7i.js';
2
+ import '../../core-77EbLgbp.js';
3
+ import 'axios';
3
4
 
4
5
  /**
5
6
  * 心理评测模块类型定义
@@ -303,6 +304,34 @@ interface PsychologyTestDetail {
303
304
  /** 删除时间(软删除) */
304
305
  deletedAt: string | null;
305
306
  }
307
+ /**
308
+ * Webhook 通知数据结构
309
+ */
310
+ interface PsychologyTestWebhookData {
311
+ /** 事件类型 */
312
+ event: 'psychology_test.analysis_completed';
313
+ /** 时间戳(毫秒) */
314
+ timestamp: number;
315
+ /** 事件数据 */
316
+ data: {
317
+ /** 评测会话ID */
318
+ sessionId: string;
319
+ /** 业务模块 */
320
+ businessModule: string;
321
+ /** 业务码 */
322
+ businessCode: string;
323
+ /** 业务ID */
324
+ businessId: string;
325
+ /** 评测状态 */
326
+ status: string;
327
+ /** 分析状态 */
328
+ analysisStatus: string;
329
+ /** AI分析结果 */
330
+ analysisResult?: string;
331
+ /** 完成时间 */
332
+ completedAt: string;
333
+ };
334
+ }
306
335
  /**
307
336
  * 题库组简要信息
308
337
  */
@@ -336,8 +365,6 @@ interface ListPsychologyTestSessionsParams {
336
365
  startDate?: string;
337
366
  /** 结束日期(ISO字符串) */
338
367
  endDate?: string;
339
- /** 团队ID */
340
- teamId?: string;
341
368
  }
342
369
  /**
343
370
  * 列表查询心理评测会话响应
@@ -353,107 +380,6 @@ interface ListPsychologyTestSessionsResponse {
353
380
  size: number;
354
381
  }
355
382
 
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
383
  /**
458
384
  * 心理评测模块
459
385
  *
@@ -683,7 +609,7 @@ declare class PsychologyTest {
683
609
  *
684
610
  * @description
685
611
  * 查询心理评测会话列表,支持分页和多条件筛选。
686
- * 此接口通常用于管理后台或业务系统查询评测记录。
612
+ * 团队成员可访问该团队的评测数据(teamId 由后端从认证信息中自动获取)。
687
613
  *
688
614
  * @param params - 查询参数
689
615
  * @returns 会话列表和分页信息
@@ -718,7 +644,7 @@ declare class PsychologyTest {
718
644
  *
719
645
  * @description
720
646
  * 软删除心理评测会话记录。删除后数据不会真正从数据库移除,
721
- * 但在正常查询中不会显示。此接口通常用于管理后台。
647
+ * 但在正常查询中不会显示。团队成员可删除该团队的评测数据。
722
648
  *
723
649
  * @param sessionId - 评测会话ID
724
650
  * @returns void
@@ -753,96 +679,4 @@ declare class PsychologyTest {
753
679
  listBankGroups(): Promise<PsychologyBankGroupSummary[]>;
754
680
  }
755
681
 
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 };
682
+ export { type AnswerRecord, type CreatePsychologyTestSessionParams, type CreatePsychologyTestSessionResponse, type GetSessionQuestionsResponse, type GroupSummary, type InitiatePsychologyTestParams, type InitiatePsychologyTestResponse, type ListPsychologyTestSessionsParams, type ListPsychologyTestSessionsResponse, PsychologyAnalysisStatus, type PsychologyBankGroupSummary, PsychologyTest, type PsychologyTestAnswerDetail, type PsychologyTestDetail, PsychologyTestStatus, type PsychologyTestWebhookData, type QuestionDependency, type QuestionInfo, type QuestionMetadata, type QuestionOption, type QuestionType, type SubmitPsychologyTestParams, type SubmitPsychologyTestResponse, type TestCalculationResult };