@lovrabet/cli 1.2.1-beta.4 → 1.2.3
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/lib/add-page/input-page-router.js +1 -1
- package/lib/add-page/main.js +1 -1
- package/lib/add-page/select-page-template.js +1 -1
- package/lib/api/api-doc-ui.js +1 -1
- package/lib/api/api-doc.js +1 -1
- package/lib/api/api-pull-ui.js +1 -1
- package/lib/api/fetch-model-list.js +1 -1
- package/lib/api/generate-api-file.js +1 -1
- package/lib/api/main.js +1 -1
- package/lib/api/pull-silent.js +1 -1
- package/lib/app-menu/app-menu-sync-ui.js +1 -1
- package/lib/app-menu/create-menu.js +1 -1
- package/lib/app-menu/get-local-pages.js +1 -1
- package/lib/app-menu/get-online-menu-list.js +1 -1
- package/lib/app-menu/use-get-online-menu-list.js +1 -1
- package/lib/app-menu/utils.js +1 -1
- package/lib/app-menu/valid-url.js +1 -1
- package/lib/app-menu-update-cdn/current-content.js +1 -1
- package/lib/app-menu-update-cdn/input-cdn-asset.js +1 -1
- package/lib/app-menu-update-cdn/main.js +1 -1
- package/lib/app-menu-update-cdn/update-menu-cdn-url.js +1 -1
- package/lib/auth/auth-server-ui.js +1 -1
- package/lib/auth/auth-server.js +1 -1
- package/lib/auth/constant.js +1 -1
- package/lib/auth/get-cookie.js +1 -1
- package/lib/auth/is-session-valid.js +1 -1
- package/lib/auth/logout.js +1 -1
- package/lib/cli.js +1 -1
- package/lib/cmd/build-watch.js +1 -1
- package/lib/cmd/build.js +1 -1
- package/lib/cmd/logs.js +1 -1
- package/lib/cmd/preview.js +1 -1
- package/lib/cmd/start.js +1 -1
- package/lib/config/config-help.js +1 -1
- package/lib/config/main.js +1 -1
- package/lib/constant/domain.js +1 -1
- package/lib/constant/env.js +1 -1
- package/lib/create-app/enhanced-guided-create.js +1 -1
- package/lib/create-app/format-elapsed.js +1 -1
- package/lib/create-app/main.js +1 -1
- package/lib/create-app/task-finished.js +1 -1
- package/lib/create-app/task-loading.js +1 -1
- package/lib/create-app/task-running.js +1 -1
- package/lib/create-app/task-time.js +1 -1
- package/lib/create-app/use-copy-project-template.js +1 -1
- package/lib/create-app/use-format-code.js +1 -1
- package/lib/create-app/use-install-dependencies.js +1 -1
- package/lib/help.js +1 -1
- package/lib/init/main.js +1 -1
- package/lib/mcp/cursor.js +1 -1
- package/lib/mcp/main.js +1 -1
- package/lib/utils/check-sdk-version.js +1 -1
- package/lib/utils/config.js +1 -1
- package/lib/utils/copy-directory.js +1 -1
- package/lib/utils/http-client.js +1 -1
- package/lib/utils/logger.js +1 -1
- package/lib/utils/router-updater.js +1 -1
- package/lib/utils/sleep.js +1 -1
- package/lib/utils/template-replacer.js +1 -1
- package/package.json +3 -3
- package/templates/projects/sub-app-react-demo/package.json +2 -2
- package/templates/projects/sub-app-react-demo/src/api/api.ts +42 -25
- package/templates/projects/sub-app-react-demo/src/api/client.ts +11 -10
- package/templates/projects/sub-app-react-demo/src/pages/sdk-demo/index.tsx +72 -19
- package/templates/projects/sub-app-react-demo/package-lock.json +0 -4062
|
@@ -19,22 +19,34 @@ export default function SdkDemo() {
|
|
|
19
19
|
const [loading, setLoading] = useState(false);
|
|
20
20
|
const [data, setData] = useState<any[]>([]);
|
|
21
21
|
const [columns, setColumns] = useState<any[]>([]);
|
|
22
|
-
const [modelList, setModelList] = useState<
|
|
22
|
+
const [modelList, setModelList] = useState<
|
|
23
|
+
Array<{
|
|
24
|
+
value: string;
|
|
25
|
+
label: string;
|
|
26
|
+
alias?: string;
|
|
27
|
+
name?: string;
|
|
28
|
+
datasetCode: string;
|
|
29
|
+
}>
|
|
30
|
+
>([]);
|
|
23
31
|
const [selectedModel, setSelectedModel] = useState<string>("");
|
|
24
32
|
const [selectOptions, setSelectOptions] = useState<any[]>([]);
|
|
25
33
|
const [codeField, setCodeField] = useState<string>("id");
|
|
26
34
|
const [labelField, setLabelField] = useState<string>("");
|
|
27
35
|
|
|
36
|
+
// 获取选中模型的信息(用于代码示例展示 alias)
|
|
37
|
+
const selectedModelInfo = modelList.find((m) => m.value === selectedModel);
|
|
38
|
+
|
|
28
39
|
/**
|
|
29
40
|
* 加载可用的数据模型列表
|
|
30
41
|
*/
|
|
31
42
|
useEffect(() => {
|
|
32
43
|
try {
|
|
33
|
-
|
|
44
|
+
// 使用 getModelListDetails 获取人类友好的模型列表
|
|
45
|
+
const models = lovrabetClient.getModelListDetails();
|
|
34
46
|
setModelList(models);
|
|
35
47
|
// 默认选择第一个模型
|
|
36
48
|
if (models.length > 0) {
|
|
37
|
-
setSelectedModel(models[0]);
|
|
49
|
+
setSelectedModel(models[0].value);
|
|
38
50
|
}
|
|
39
51
|
} catch (error) {
|
|
40
52
|
console.error("获取模型列表失败:", error);
|
|
@@ -93,6 +105,16 @@ export default function SdkDemo() {
|
|
|
93
105
|
column.title || column.dataIndex || column.key || String(column),
|
|
94
106
|
dataIndex: column.dataIndex || column.key || String(column),
|
|
95
107
|
key: column.dataIndex || column.key || String(column),
|
|
108
|
+
// 处理对象/数组类型的值,避免 React Error #31
|
|
109
|
+
render: (value: any) => {
|
|
110
|
+
if (value === null || value === undefined) {
|
|
111
|
+
return "-";
|
|
112
|
+
}
|
|
113
|
+
if (typeof value === "object") {
|
|
114
|
+
return JSON.stringify(value);
|
|
115
|
+
}
|
|
116
|
+
return String(value);
|
|
117
|
+
},
|
|
96
118
|
}));
|
|
97
119
|
setColumns(tableColumns);
|
|
98
120
|
} else if (tableData.length > 0) {
|
|
@@ -103,6 +125,16 @@ export default function SdkDemo() {
|
|
|
103
125
|
title: key,
|
|
104
126
|
dataIndex: key,
|
|
105
127
|
key: key,
|
|
128
|
+
// 处理对象/数组类型的值,避免 React Error #31
|
|
129
|
+
render: (value: any) => {
|
|
130
|
+
if (value === null || value === undefined) {
|
|
131
|
+
return "-";
|
|
132
|
+
}
|
|
133
|
+
if (typeof value === "object") {
|
|
134
|
+
return JSON.stringify(value);
|
|
135
|
+
}
|
|
136
|
+
return String(value);
|
|
137
|
+
},
|
|
106
138
|
}));
|
|
107
139
|
setColumns(tableColumns);
|
|
108
140
|
}
|
|
@@ -182,13 +214,12 @@ export default function SdkDemo() {
|
|
|
182
214
|
<Space>
|
|
183
215
|
<Select
|
|
184
216
|
placeholder="选择要查询的数据模型"
|
|
185
|
-
style={{ width:
|
|
217
|
+
style={{ width: 350 }}
|
|
186
218
|
value={selectedModel}
|
|
187
219
|
onChange={setSelectedModel}
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
}))}
|
|
220
|
+
showSearch
|
|
221
|
+
optionFilterProp="label"
|
|
222
|
+
options={modelList}
|
|
192
223
|
/>
|
|
193
224
|
<Button
|
|
194
225
|
type="primary"
|
|
@@ -215,28 +246,39 @@ export default function SdkDemo() {
|
|
|
215
246
|
overflow: "auto",
|
|
216
247
|
}}
|
|
217
248
|
>
|
|
218
|
-
{`//
|
|
249
|
+
{`// ========== 方式一:标准 dataset_code 模式(推荐 AI/LLM 使用)==========
|
|
219
250
|
const response = await lovrabetClient
|
|
220
|
-
.models
|
|
251
|
+
.models['${selectedModel || "dataset_xxx"}'].filter({
|
|
221
252
|
currentPage: 1,
|
|
222
253
|
pageSize: 10
|
|
223
254
|
});
|
|
224
|
-
|
|
225
|
-
|
|
255
|
+
${
|
|
256
|
+
selectedModelInfo?.alias
|
|
257
|
+
? `
|
|
258
|
+
// ========== 方式二:人类友好的 alias 模式 ==========
|
|
259
|
+
const response = await lovrabetClient
|
|
260
|
+
.models.${selectedModelInfo.alias}.filter({
|
|
261
|
+
currentPage: 1,
|
|
262
|
+
pageSize: 10
|
|
263
|
+
});
|
|
264
|
+
`
|
|
265
|
+
: ""
|
|
266
|
+
}
|
|
267
|
+
// ========== 完整查询示例(所有参数均为可选)==========
|
|
226
268
|
const response = await lovrabetClient
|
|
227
|
-
.models
|
|
269
|
+
.models['${selectedModel || "dataset_xxx"}'].filter({
|
|
228
270
|
// where: 条件查询(可选)
|
|
229
271
|
// where: {
|
|
230
272
|
// age: { $gte: 18 },
|
|
231
273
|
// status: { $eq: 'active' }
|
|
232
274
|
// },
|
|
233
|
-
|
|
275
|
+
|
|
234
276
|
// select: 字段选择(可选)
|
|
235
277
|
// select: ['id', 'name', 'age'],
|
|
236
|
-
|
|
278
|
+
|
|
237
279
|
// orderBy: 排序(可选)
|
|
238
280
|
// orderBy: [{ createTime: 'desc' }],
|
|
239
|
-
|
|
281
|
+
|
|
240
282
|
// 分页参数(必需)
|
|
241
283
|
currentPage: 1,
|
|
242
284
|
pageSize: 10
|
|
@@ -345,13 +387,24 @@ const response = await lovrabetClient
|
|
|
345
387
|
border: "1px solid #d9d9d9",
|
|
346
388
|
}}
|
|
347
389
|
>
|
|
348
|
-
{`//
|
|
390
|
+
{`// ========== 方式一:标准 dataset_code 模式(推荐 AI/LLM 使用)==========
|
|
349
391
|
const options = await lovrabetClient
|
|
350
|
-
.models
|
|
392
|
+
.models['${selectedModel || "dataset_xxx"}'].getSelectOptions({
|
|
351
393
|
code: "${codeField || "id"}",
|
|
352
394
|
label: "${labelField || "name"}"
|
|
353
395
|
});
|
|
354
|
-
|
|
396
|
+
${
|
|
397
|
+
selectedModelInfo?.alias
|
|
398
|
+
? `
|
|
399
|
+
// ========== 方式二:人类友好的 alias 模式 ==========
|
|
400
|
+
const options = await lovrabetClient
|
|
401
|
+
.models.${selectedModelInfo.alias}.getSelectOptions({
|
|
402
|
+
code: "${codeField || "id"}",
|
|
403
|
+
label: "${labelField || "name"}"
|
|
404
|
+
});
|
|
405
|
+
`
|
|
406
|
+
: ""
|
|
407
|
+
}
|
|
355
408
|
// 返回格式:[{ label: "显示文本", value: "选项值" }]`}
|
|
356
409
|
</pre>
|
|
357
410
|
</Space>
|