@lovrabet/sdk 1.1.26 → 1.2.0-beta.2

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.
@@ -74,6 +74,24 @@ export declare class LovrabetClient implements ILovrabetClient {
74
74
  * 2. 支持动态获取配置中的所有模型
75
75
  */
76
76
  getModelList(): string[];
77
+ /**
78
+ * 获取所有模型的详细信息,包含别名和名称
79
+ * 用于 UI 展示人类友好的模型列表
80
+ *
81
+ * @returns 模型详情数组,每个元素包含:
82
+ * - value: 用于访问的 dataset_xxx 格式
83
+ * - label: 人类友好的显示名称,格式为 "alias[name]" 或 "dataset_xxx"
84
+ * - alias: 别名(如果有)
85
+ * - name: 模型名称(如果有)
86
+ * - datasetCode: 原始 datasetCode
87
+ */
88
+ getModelListDetails(): Array<{
89
+ value: string;
90
+ label: string;
91
+ alias?: string;
92
+ name?: string;
93
+ datasetCode: string;
94
+ }>;
77
95
  /**
78
96
  * 根据索引或名称获取模型实例
79
97
  * 为什么提供这个方法:
@@ -5,13 +5,22 @@ import type { HttpClient } from '../http/http-client';
5
5
  * 定义所有模型的通用接口和基础实现
6
6
  */
7
7
  export declare abstract class AbstractBaseModel implements BaseModelMethods {
8
+ /** 数据集代码(用于 API 调用) */
9
+ protected datasetCode: string;
10
+ /** @deprecated 使用 datasetCode 代替 */
8
11
  protected modelName: string;
9
12
  protected httpClient: HttpClient;
10
13
  protected config: ModelConfig;
11
14
  protected appCode: string;
12
15
  protected globalConfig: ClientConfig;
13
- constructor(modelName: string, httpClient: HttpClient, globalConfig: ClientConfig);
14
- private resolveModelConfig;
16
+ /**
17
+ * 构造函数
18
+ * @param datasetCode 数据集代码
19
+ * @param httpClient HTTP 客户端
20
+ * @param globalConfig 全局配置
21
+ * @param modelConfig 模型配置(直接传入,不再从 globalConfig 中查找)
22
+ */
23
+ constructor(datasetCode: string, httpClient: HttpClient, globalConfig: ClientConfig, modelConfig: ModelConfig);
15
24
  protected abstract getApiPath(method: string): string;
16
25
  protected abstract buildRequestBody(method: string, data: any, sortList?: SortList): any;
17
26
  getList<T = any>(params?: ListParams, sortList?: SortList): Promise<ListResponse<T>>;
@@ -1,4 +1,4 @@
1
- import type { BaseModelMethods, ClientConfig } from '../types';
1
+ import type { BaseModelMethods, ClientConfig, ModelConfig } from '../types';
2
2
  import type { HttpClient } from '../http/http-client';
3
3
  /**
4
4
  * 模型工厂类
@@ -7,8 +7,12 @@ import type { HttpClient } from '../http/http-client';
7
7
  export declare class ModelFactory {
8
8
  /**
9
9
  * 创建模型实例
10
+ * @param datasetCode 数据集代码(作为模型标识)
11
+ * @param httpClient HTTP 客户端
12
+ * @param globalConfig 全局配置
13
+ * @param modelConfig 模型配置(直接传入,不再从 globalConfig 中查找)
10
14
  */
11
- static createModel(modelName: string, httpClient: HttpClient, globalConfig: ClientConfig): BaseModelMethods;
15
+ static createModel(datasetCode: string, httpClient: HttpClient, globalConfig: ClientConfig, modelConfig: ModelConfig): BaseModelMethods;
12
16
  /**
13
17
  * 判断是否为 OpenAPI 模式
14
18
  */
@@ -1,17 +1,83 @@
1
- import type { ModelManager as IModelManager, ClientConfig, BaseModelMethods } from '../types';
1
+ import type { ModelManager as IModelManager, ClientConfig, BaseModelMethods, ModelConfig } from '../types';
2
2
  import type { HttpClient } from '../http/http-client';
3
+ /**
4
+ * 模型管理器
5
+ *
6
+ * 支持三种访问方式:
7
+ * 1. dataset_{datasetCode} - 标准方式,直接通过 datasetCode 访问
8
+ * 2. alias - 通过配置的别名访问
9
+ * 3. key(老格式)- 通过对象配置的 key 访问(key 作为默认 alias)
10
+ */
3
11
  export declare class ModelManager implements IModelManager {
4
12
  private httpClient;
5
13
  private config;
6
14
  private modelCache;
15
+ private datasetCodeMap;
16
+ private aliasMap;
7
17
  constructor(httpClient: HttpClient, config: ClientConfig);
8
- private getModel;
18
+ /**
19
+ * 构建内部映射表
20
+ */
21
+ private buildMaps;
22
+ /**
23
+ * 解析访问名称,返回 datasetCode
24
+ * @param accessName 访问名称,可能是 dataset_{datasetCode} 格式或 alias
25
+ *
26
+ * 支持两种访问方式:
27
+ * 1. dataset_{datasetCode} - 标准格式,明确表示这是一个 datasetCode
28
+ * 2. alias - 通过别名访问(老格式中 key 作为默认 alias)
29
+ */
30
+ private resolveDatasetCode;
31
+ /**
32
+ * 通过 datasetCode 获取模型实例
33
+ */
34
+ private getModelByDatasetCode;
9
35
  getCachedModels(): string[];
10
36
  clearCache(): void;
11
- addModel(modelName: string, config: {
37
+ /**
38
+ * 动态添加模型配置
39
+ * 支持两种调用方式:
40
+ * 1. addModel(modelConfig) - 新格式
41
+ * 2. addModel(name, config) - 老格式(向下兼容)
42
+ */
43
+ addModel(modelNameOrConfig: string | ModelConfig, config?: {
12
44
  tableName: string;
13
45
  datasetCode: string;
14
46
  }): void;
47
+ /**
48
+ * 获取所有可用模型的 datasetCode 列表(带 dataset_ 前缀)
49
+ * 返回格式与访问方式一致,便于 AI/LLM 直接使用
50
+ */
15
51
  list(): string[];
52
+ /**
53
+ * 获取所有可用的别名列表
54
+ */
55
+ listAliases(): string[];
56
+ /**
57
+ * 获取所有模型的详细信息,包含别名和名称
58
+ * 用于 UI 展示人类友好的模型列表
59
+ *
60
+ * @returns 模型详情数组,每个元素包含:
61
+ * - value: 用于访问的 dataset_xxx 格式
62
+ * - label: 人类友好的显示名称,格式为 "alias[name]" 或 "dataset_xxx"
63
+ * - alias: 别名(如果有)
64
+ * - name: 模型名称(如果有)
65
+ * - datasetCode: 原始 datasetCode
66
+ */
67
+ listDetails(): Array<{
68
+ value: string;
69
+ label: string;
70
+ alias?: string;
71
+ name?: string;
72
+ datasetCode: string;
73
+ }>;
74
+ /**
75
+ * 根据索引、datasetCode 或 alias 获取模型实例
76
+ *
77
+ * 支持三种访问方式:
78
+ * 1. 数字索引 - 按 datasetCode 列表顺序获取
79
+ * 2. dataset_{datasetCode} - 直接通过 datasetCode 访问
80
+ * 3. alias - 通过别名访问
81
+ */
16
82
  get(indexOrName: number | string): BaseModelMethods;
17
83
  }
@@ -176,16 +176,33 @@ export interface SelectOptionsParams {
176
176
  export interface ModelConfig {
177
177
  /** 数据表名称 */
178
178
  tableName: string;
179
- /** 数据集代码 */
179
+ /** 数据集代码(唯一标识) */
180
180
  datasetCode: string;
181
181
  /** 数据集名称 */
182
182
  name?: string;
183
+ /** 别名,用于人类友好的访问方式(可选) */
184
+ alias?: string;
183
185
  }
184
186
  /**
185
187
  * 模型配置集合接口
186
188
  * @description 包含应用代码和所有模型配置的集合
189
+ *
190
+ * 支持两种格式:
191
+ * 1. 数组格式(推荐):ModelConfig[]
192
+ * 2. 对象格式(向下兼容):Record<string, ModelConfig>,key 作为默认 alias
193
+ *
187
194
  * @example
188
195
  * ```typescript
196
+ * // 新格式(数组)
197
+ * const config: ModelsConfig = {
198
+ * appCode: 'my-app',
199
+ * models: [
200
+ * { tableName: 'users', datasetCode: 'dataset_abc', alias: 'users' },
201
+ * { tableName: 'posts', datasetCode: 'dataset_def' }
202
+ * ]
203
+ * };
204
+ *
205
+ * // 老格式(对象,向下兼容)
189
206
  * const config: ModelsConfig = {
190
207
  * appCode: 'my-app',
191
208
  * models: {
@@ -198,8 +215,12 @@ export interface ModelConfig {
198
215
  export interface ModelsConfig {
199
216
  /** 应用代码,用于标识不同的应用 */
200
217
  appCode: string;
201
- /** 模型配置映射,键为模型名称,值为模型配置 */
202
- models: Record<string, ModelConfig>;
218
+ /**
219
+ * 模型配置
220
+ * - 数组格式(推荐):直接使用 datasetCode 访问
221
+ * - 对象格式(兼容):key 作为默认 alias
222
+ */
223
+ models: ModelConfig[] | Record<string, ModelConfig>;
203
224
  }
204
225
  /**
205
226
  * 客户端配置接口
@@ -237,8 +258,12 @@ export interface ClientConfig {
237
258
  secretKey?: string;
238
259
  /** 是否需要认证,默认为 true */
239
260
  requiresAuth?: boolean;
240
- /** 模型配置映射,直接传入的模型配置 */
241
- models?: Record<string, ModelConfig>;
261
+ /**
262
+ * 模型配置
263
+ * - 数组格式(推荐):直接使用 datasetCode 访问
264
+ * - 对象格式(兼容):key 作为默认 alias
265
+ */
266
+ models?: ModelConfig[] | Record<string, ModelConfig>;
242
267
  /**
243
268
  * 引用已注册的 API 配置名称
244
269
  * @description 当指定此字段时,会从配置注册表中获取对应的模型配置
@@ -399,13 +424,18 @@ export interface ModelManager {
399
424
  clearCache(): void;
400
425
  /**
401
426
  * 动态添加模型配置
402
- * @param modelName 模型名称
403
- * @param config 模型配置信息
427
+ * @param modelNameOrConfig 模型名称(老格式)或 ModelConfig(新格式)
428
+ * @param config 模型配置信息(老格式时使用)
404
429
  */
405
- addModel(modelName: string, config: {
430
+ addModel(modelNameOrConfig: string | ModelConfig, config?: {
406
431
  tableName: string;
407
432
  datasetCode: string;
408
433
  }): void;
434
+ /**
435
+ * 获取所有可用的别名列表
436
+ * @returns 返回已配置的所有别名数组
437
+ */
438
+ listAliases(): string[];
409
439
  /**
410
440
  * 获取所有可用模型列表
411
441
  * @returns 返回已配置的所有模型名称数组
@@ -429,6 +459,25 @@ export interface ModelManager {
429
459
  * ```
430
460
  */
431
461
  get(indexOrName: number | string): BaseModelMethods;
462
+ /**
463
+ * 获取所有模型的详细信息,包含别名和名称
464
+ * @returns 模型详情数组,用于 UI 展示人类友好的模型列表
465
+ * @example
466
+ * ```typescript
467
+ * const details = client.getModelListDetails();
468
+ * // [
469
+ * // { value: 'dataset_xxx', label: 'projects[项目]', alias: 'projects', name: '项目', datasetCode: 'xxx' },
470
+ * // { value: 'dataset_yyy', label: 'dataset_yyy', datasetCode: 'yyy' }
471
+ * // ]
472
+ * ```
473
+ */
474
+ listDetails(): Array<{
475
+ value: string;
476
+ label: string;
477
+ alias?: string;
478
+ name?: string;
479
+ datasetCode: string;
480
+ }>;
432
481
  }
433
482
  /**
434
483
  * 认证请求头接口
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lovrabet/sdk",
3
- "version": "1.1.26",
3
+ "version": "1.2.0-beta.2",
4
4
  "license": "SEE LICENSE IN LICENSE",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",