@lovrabet/rabetbase-cli 2.2.4 → 2.2.5-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.
- package/README.md +1 -1
- package/lib/api/api-doc.js +1 -1
- package/lib/api/fetch-model-list.js +1 -1
- package/lib/api/generate-api-file.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/get-session-user.js +1 -1
- package/lib/auth/is-session-valid.js +1 -1
- package/lib/auth/login-success-html.js +1 -1
- package/lib/auth/logout.js +1 -1
- package/lib/cli-flags.js +1 -1
- package/lib/cli.js +1 -1
- package/lib/commands/api/generate.js +1 -1
- package/lib/commands/api/index.js +1 -1
- package/lib/commands/api/list.js +1 -1
- package/lib/commands/api/pull.js +1 -1
- package/lib/commands/api/shared.js +1 -1
- package/lib/commands/app/add.js +1 -1
- package/lib/commands/app/discover.js +1 -1
- package/lib/commands/app/index.js +1 -1
- package/lib/commands/app/list.js +1 -1
- package/lib/commands/app/remove.js +1 -1
- package/lib/commands/app/shared.js +1 -1
- package/lib/commands/app/use.js +1 -1
- package/lib/commands/app-config/delete.js +1 -0
- package/lib/commands/app-config/get.js +1 -0
- package/lib/commands/app-config/index.js +1 -0
- package/lib/commands/app-config/list.js +1 -0
- package/lib/commands/app-config/set.js +1 -0
- package/lib/commands/app-config/shared.js +1 -0
- package/lib/commands/auth/index.js +1 -1
- package/lib/commands/bff/create.js +1 -1
- package/lib/commands/bff/delete.js +1 -1
- package/lib/commands/bff/detail.js +1 -1
- package/lib/commands/bff/index.js +1 -1
- package/lib/commands/bff/list.js +1 -1
- package/lib/commands/bff/pull.js +1 -1
- package/lib/commands/bff/push.js +1 -1
- package/lib/commands/bff/status.js +1 -1
- package/lib/commands/cli-update.js +1 -1
- package/lib/commands/codegen/index.js +1 -1
- package/lib/commands/codegen/sdk.js +1 -1
- package/lib/commands/codegen/sql.js +1 -1
- package/lib/commands/common/app-selector.js +1 -1
- package/lib/commands/common/flags.js +1 -1
- package/lib/commands/common/validate.js +1 -1
- package/lib/commands/config/get.js +1 -1
- package/lib/commands/config/index.js +1 -1
- package/lib/commands/config/list.js +1 -1
- package/lib/commands/config/set.js +1 -1
- package/lib/commands/config/shared.js +1 -1
- package/lib/commands/data/filter.js +1 -1
- package/lib/commands/data/getOne.js +1 -1
- package/lib/commands/data/index.js +1 -1
- package/lib/commands/data/shared.js +1 -1
- package/lib/commands/dataset/business-group-update.js +1 -0
- package/lib/commands/dataset/capability.js +1 -1
- package/lib/commands/dataset/delete.js +1 -1
- package/lib/commands/dataset/detail.js +1 -1
- package/lib/commands/dataset/extend-update.js +1 -1
- package/lib/commands/dataset/field-update.js +1 -1
- package/lib/commands/dataset/index.js +1 -1
- package/lib/commands/dataset/list.js +1 -1
- package/lib/commands/dataset/operations.js +1 -1
- package/lib/commands/dataset/relation-create.js +1 -1
- package/lib/commands/dataset/relation-delete.js +1 -1
- package/lib/commands/dataset/relation-shared.js +1 -1
- package/lib/commands/dataset/relation-update.js +1 -1
- package/lib/commands/dataset/relations.js +1 -1
- package/lib/commands/dataset/rename.js +1 -1
- package/lib/commands/dataset/restore.js +1 -0
- package/lib/commands/db/analyze-cancel.js +1 -1
- package/lib/commands/db/analyze-start.js +1 -1
- package/lib/commands/db/analyze-status.js +1 -1
- package/lib/commands/db/create.js +1 -1
- package/lib/commands/db/delete.js +1 -1
- package/lib/commands/db/detail.js +1 -1
- package/lib/commands/db/diff.js +1 -1
- package/lib/commands/db/index.js +1 -1
- package/lib/commands/db/list.js +1 -1
- package/lib/commands/db/shared.js +1 -1
- package/lib/commands/db/tables.js +1 -1
- package/lib/commands/db/test.js +1 -1
- package/lib/commands/db/update.js +1 -1
- package/lib/commands/doctor.js +1 -1
- package/lib/commands/init/index.js +1 -1
- package/lib/commands/issue/index.js +1 -1
- package/lib/commands/issue/nudge.js +1 -1
- package/lib/commands/issue/report.js +1 -1
- package/lib/commands/issue/shared.js +1 -1
- package/lib/commands/logs/index.js +1 -1
- package/lib/commands/menu/index.js +1 -1
- package/lib/commands/menu/list.js +1 -1
- package/lib/commands/menu/shared/compare-table.js +1 -1
- package/lib/commands/menu/shared/index.js +1 -1
- package/lib/commands/menu/shared/inquirer.js +1 -1
- package/lib/commands/menu/shared/local-pages.js +1 -1
- package/lib/commands/menu/shared/logic.js +1 -1
- package/lib/commands/menu/shared/service.js +1 -1
- package/lib/commands/menu/shared/sync-core.js +1 -1
- package/lib/commands/menu/shared/update-core.js +1 -1
- package/lib/commands/menu/shared/valid-url.js +1 -1
- package/lib/commands/menu/sync.js +1 -1
- package/lib/commands/menu/update.js +1 -1
- package/lib/commands/page/generate-start.js +1 -1
- package/lib/commands/page/generate-status.js +1 -1
- package/lib/commands/page/index.js +1 -1
- package/lib/commands/page/pull.js +1 -1
- package/lib/commands/page/push.js +1 -1
- package/lib/commands/page/relation-audit.js +1 -1
- package/lib/commands/page/shared.js +1 -1
- package/lib/commands/page/standard-page-status.js +1 -1
- package/lib/commands/page/sync.js +1 -1
- package/lib/commands/project/create/enhanced-guided-create.js +1 -1
- package/lib/commands/project/create/format-elapsed.js +1 -1
- package/lib/commands/project/create/main.js +1 -1
- package/lib/commands/project/create/non-interactive.js +1 -1
- package/lib/commands/project/create/project-template-path.js +1 -1
- package/lib/commands/project/create/use-copy-project-template.js +1 -1
- package/lib/commands/project/create/use-format-code.js +1 -1
- package/lib/commands/project/create/use-install-dependencies.js +1 -1
- package/lib/commands/project/index.js +1 -1
- package/lib/commands/project/init.js +1 -1
- package/lib/commands/project/upgrade.js +1 -1
- package/lib/commands/registry.js +1 -1
- package/lib/commands/run/index.js +1 -1
- package/lib/commands/schema.js +1 -1
- package/lib/commands/skill/index.js +1 -1
- package/lib/commands/sql/create.js +1 -1
- package/lib/commands/sql/delete.js +1 -1
- package/lib/commands/sql/detail.js +1 -1
- package/lib/commands/sql/exec.js +1 -1
- package/lib/commands/sql/index.js +1 -1
- package/lib/commands/sql/list.js +1 -1
- package/lib/commands/sql/pull.js +1 -1
- package/lib/commands/sql/push.js +1 -1
- package/lib/commands/sql/save.js +1 -1
- package/lib/commands/sql/shared.js +1 -1
- package/lib/commands/sql/status.js +1 -1
- package/lib/commands/sql/validate.js +1 -1
- package/lib/commands/workspace/index.js +1 -1
- package/lib/config/schema.js +1 -1
- package/lib/constant/cdn.js +1 -1
- package/lib/constant/cli.js +1 -1
- package/lib/constant/defaults.js +1 -1
- package/lib/constant/domain.js +1 -1
- package/lib/constant/env.js +1 -1
- package/lib/constant/output.js +1 -1
- package/lib/constant/paths.js +1 -1
- package/lib/constant/risk.js +1 -1
- package/lib/context/app-resolver.js +1 -1
- package/lib/context/auth-resolver.js +1 -1
- package/lib/context/config-loader.js +1 -1
- package/lib/context.js +1 -1
- package/lib/core/alias-resolver.js +1 -1
- package/lib/core/api-client.js +1 -1
- package/lib/core/bff/config.js +1 -1
- package/lib/core/bff/file-system.js +1 -1
- package/lib/core/bff/hash.js +1 -1
- package/lib/core/bff/lock.js +1 -1
- package/lib/core/bff/utils.js +1 -1
- package/lib/core/db-resolver.js +1 -1
- package/lib/core/page/file-system.js +1 -1
- package/lib/core/page/hash.js +1 -1
- package/lib/core/page/lock.js +1 -1
- package/lib/core/sql-sync/config.js +1 -1
- package/lib/core/sql-sync/file-system.js +1 -1
- package/lib/core/sql-sync/hash.js +1 -1
- package/lib/core/sql-sync/lock.js +1 -1
- package/lib/core/sql-sync/utils.js +1 -1
- package/lib/core/sql-validator.js +1 -1
- package/lib/errors.js +1 -1
- package/lib/framework/build-all-flags.js +1 -1
- package/lib/framework/flags.js +1 -1
- package/lib/framework/help.js +1 -1
- package/lib/framework/index.js +1 -1
- package/lib/framework/output.js +1 -1
- package/lib/framework/response.js +1 -1
- package/lib/framework/runner-alias.js +1 -1
- package/lib/framework/runner.js +1 -1
- package/lib/framework/schema-export.js +1 -1
- package/lib/framework/types.js +1 -1
- package/lib/generated/build-info.js +1 -1
- package/lib/help.js +1 -1
- package/lib/skills/main.js +1 -1
- package/lib/skills/npx-skills-add.js +1 -1
- package/lib/telemetry/cli-command-trace.js +1 -1
- package/lib/telemetry/cli-help-trace.js +1 -1
- package/lib/telemetry/ensure-cli-otel-config.js +1 -1
- package/lib/telemetry/register-otel-exit-shutdown.js +1 -1
- package/lib/telemetry/send-cli-trace-log.js +1 -1
- package/lib/telemetry/send-platform-issue-collect-log.js +1 -1
- package/lib/utils/ai_config.js +1 -1
- package/lib/utils/apply-jq-filter.js +1 -1
- package/lib/utils/cdn-config.js +1 -1
- package/lib/utils/check-sdk-version.js +1 -1
- package/lib/utils/cli-version-check.js +1 -1
- package/lib/utils/cli-version-policy.js +1 -1
- package/lib/utils/config.js +1 -1
- package/lib/utils/copy-directory.js +1 -1
- package/lib/utils/entity-with-id.js +1 -1
- package/lib/utils/file-utils.js +1 -1
- package/lib/utils/guides-cdn.js +1 -1
- package/lib/utils/http-client.js +1 -1
- package/lib/utils/is-non-interactive.js +1 -1
- package/lib/utils/logger.js +1 -1
- package/lib/utils/params.js +1 -1
- package/lib/utils/platform.js +1 -1
- package/lib/utils/rules-cdn.js +1 -1
- package/lib/utils/sleep.js +1 -1
- package/lib/utils/template-replacer.js +1 -1
- package/lib/utils/update-notice.js +1 -1
- package/lib/utils/version.js +1 -1
- package/lib/utils/with-active-cookie.js +1 -1
- package/lib/utils/write-cli-side-channel.js +1 -1
- package/package.json +1 -1
- package/templates/README.md +15 -25
- package/templates/generate-api/api.ts.tpl +2 -2
- package/templates/generate-api/client.ts.tpl +2 -2
- package/templates/projects/sub-app-react-demo/CHANGELOG.md +15 -1
- package/templates/projects/sub-app-react-demo/README.md +159 -231
- package/templates/projects/sub-app-react-demo/docs/quick-start.md +145 -426
- package/templates/projects/sub-app-react-demo/src/api/api.ts +8 -65
- package/templates/projects/sub-app-react-demo/src/api/client.ts +10 -42
- package/templates/projects/sub-app-react-demo/src/components/demo-page-container/DemoPageContainer.module.css +28 -0
- package/templates/projects/sub-app-react-demo/src/components/demo-page-container/DemoPageContainer.tsx +55 -0
- package/templates/projects/sub-app-react-demo/src/layouts/MainLayout.tsx +6 -9
- package/templates/projects/sub-app-react-demo/src/main.tsx +10 -6
- package/templates/projects/sub-app-react-demo/src/pages/dashboard/index.tsx +3 -5
- package/templates/projects/sub-app-react-demo/src/pages/data-screen/index.tsx +153 -148
- package/templates/projects/sub-app-react-demo/src/pages/index.module.css +500 -0
- package/templates/projects/sub-app-react-demo/src/pages/index.tsx +517 -343
- package/templates/projects/sub-app-react-demo/src/pages/sdk-demo/index.tsx +325 -242
- package/templates/projects/sub-app-react-demo/src/pages/workbench/index.module.css +8 -6
- package/templates/projects/sub-app-react-demo/src/pages/workbench/index.tsx +174 -87
- package/templates/projects/sub-app-react-demo/src/style.css +19 -3
- package/templates/projects/sub-app-react-demo/src/vite-env.d.ts +1 -1
- package/templates/projects/sub-app-react-demo/docs/API_RULE_CHANGE.md +0 -212
package/templates/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Rabetbase CLI 模板说明
|
|
2
2
|
|
|
3
|
-
此目录包含
|
|
3
|
+
此目录包含 Rabetbase CLI 工具的模板文件。
|
|
4
4
|
|
|
5
5
|
## 目录结构
|
|
6
6
|
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
templates/
|
|
9
9
|
├── README.md # 本说明文档
|
|
10
10
|
├── generate-api/ # API 生成模板
|
|
11
|
-
└── projects/ # 项目模板,用于 `
|
|
12
|
-
└── sub-app-react-demo/ #
|
|
11
|
+
└── projects/ # 项目模板,用于 `rabetbase project create` 命令
|
|
12
|
+
└── sub-app-react-demo/ # React 微前端项目模板快照
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
## API 生成模板
|
|
@@ -18,30 +18,17 @@ templates/
|
|
|
18
18
|
|
|
19
19
|
## 项目模板
|
|
20
20
|
|
|
21
|
-
###
|
|
21
|
+
### 远程模板同步
|
|
22
22
|
|
|
23
|
-
`projects/sub-app-react-demo/`
|
|
24
|
-
**仓库地址**: https://github.com/lovrabet
|
|
23
|
+
`projects/sub-app-react-demo/` 目录是从模板真源仓同步来的快照:
|
|
24
|
+
**仓库地址**: https://github.com/lovrabet/sub-app-react-demo
|
|
25
25
|
|
|
26
26
|
#### 开发者:同步模板
|
|
27
27
|
|
|
28
28
|
更新项目模板到最新版本:
|
|
29
29
|
|
|
30
30
|
```bash
|
|
31
|
-
|
|
32
|
-
npm run sync
|
|
33
|
-
|
|
34
|
-
# 方法二:手动 git 子模块命令
|
|
35
|
-
git submodule update --remote --merge
|
|
36
|
-
git add templates/projects/sub-app-react-demo
|
|
37
|
-
git commit -m "Update project template to latest version"
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
#### 初始设置(新克隆时)
|
|
41
|
-
|
|
42
|
-
```bash
|
|
43
|
-
# 初始化并更新所有子模块
|
|
44
|
-
git submodule update --init --recursive
|
|
31
|
+
npm run sync-template
|
|
45
32
|
```
|
|
46
33
|
|
|
47
34
|
### 模板结构
|
|
@@ -63,8 +50,11 @@ git submodule update --init --recursive
|
|
|
63
50
|
|
|
64
51
|
## 注意事项
|
|
65
52
|
|
|
66
|
-
-
|
|
67
|
-
-
|
|
53
|
+
- `templates/projects/sub-app-react-demo/` 是项目模板快照,不是独立 Git 仓
|
|
54
|
+
- `rabetbase project create` 会复制项目模板,并更新 `package.json` 与 `.rabetbase.json`
|
|
55
|
+
- 有 AppCode 时,CLI 会重新生成 `src/api/api.ts` 和 `src/api/client.ts`
|
|
56
|
+
- 项目模板中不要保留真实 AppCode、真实数据集模型、`.git`、`node_modules`、`dist` 或个人配置
|
|
57
|
+
- CLI 使用 `TemplateReplacer` 工具处理 `.tpl` 类模板
|
|
68
58
|
- 生成的文件包含显示生成元数据的头部注释
|
|
69
59
|
- 所有模板支持国际化并可根据需要扩展
|
|
70
60
|
|
|
@@ -72,12 +62,12 @@ git submodule update --init --recursive
|
|
|
72
62
|
|
|
73
63
|
### 用途
|
|
74
64
|
|
|
75
|
-
`rules/` 目录包含 Cursor Rules 模板,用于指导 AI 助手(Claude、GPT 等)正确使用 Lovrabet SDK
|
|
65
|
+
`rules/` 目录包含 Cursor Rules 模板,用于指导 AI 助手(Claude、GPT 等)正确使用 Lovrabet SDK。
|
|
76
66
|
|
|
77
67
|
### 功能特性
|
|
78
68
|
|
|
79
69
|
- ✅ **SDK 使用规范** - 完整的 API 调用指南
|
|
80
|
-
- ✅ **
|
|
70
|
+
- ✅ **Agent 开发约束** - 约定模型读取、数据调用和页面开发方式
|
|
81
71
|
- ✅ **性能优化** - 避免不必要的 API 调用
|
|
82
72
|
- ✅ **错误处理** - 完善的错误处理模式
|
|
83
73
|
- ✅ **类型安全** - TypeScript 最佳实践
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Generated by
|
|
2
|
+
* Generated by Rabetbase CLI
|
|
3
3
|
* Created: {CreatedAt}
|
|
4
4
|
*
|
|
5
5
|
* 这个文件包含了项目的模型配置,并自动注册到 SDK 中
|
|
@@ -44,4 +44,4 @@ registerModels({VarPrefix}_MODELS_CONFIG, {ConfigName});
|
|
|
44
44
|
* appCode: 'other-project',
|
|
45
45
|
* models: [...]
|
|
46
46
|
* }, 'project-b');
|
|
47
|
-
*/
|
|
47
|
+
*/
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Lovrabet SDK 客户端实例
|
|
3
|
-
* Generated by
|
|
3
|
+
* Generated by Rabetbase CLI
|
|
4
4
|
* Created: {CreatedAt}
|
|
5
5
|
*
|
|
6
6
|
* 这个文件负责创建和导出统一的客户端实例,供整个应用使用
|
|
@@ -61,4 +61,4 @@ export const lovrabetClient = createClient({ClientConfigParam});
|
|
|
61
61
|
* 5. 多项目支持示例:
|
|
62
62
|
* export const projectAClient = createClient('project-a');
|
|
63
63
|
* export const projectBClient = createClient('project-b');
|
|
64
|
-
*/
|
|
64
|
+
*/
|
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# 更新记录
|
|
2
2
|
|
|
3
|
+
## 2026-06-30
|
|
4
|
+
|
|
5
|
+
### 更新初始化项目说明
|
|
6
|
+
|
|
7
|
+
同步刷新 README 和快速开始文档,使初始化后的项目介绍与当前模板代码一致。
|
|
8
|
+
|
|
9
|
+
**变更**:
|
|
10
|
+
|
|
11
|
+
- 移除旧 `/hello-world`、`/chart-fetch`、`/intro` 实操路径,改为当前 `src/pages` 自动路由页面。
|
|
12
|
+
- 统一本地启动、构建、预览命令为 `rabetbase run start/build/preview`。
|
|
13
|
+
- 补充 `rabetbase project create`、`rabetbase config set appcode`、`rabetbase project init`、`rabetbase api pull` 的使用时机。
|
|
14
|
+
- 补充 SDK 配置、微前端接入、CDN 产物和 Lovrabet 主应用页面配置说明。
|
|
15
|
+
- 重做首页为 Prompt 开发入口,展示 AppCode 状态、Agent 场景示例、飞书文库导航、内置页面入口和主应用接入检查清单。
|
|
16
|
+
|
|
3
17
|
## 2025-11-30
|
|
4
18
|
|
|
5
19
|
### 📝 完善项目文档
|
|
@@ -8,7 +22,7 @@
|
|
|
8
22
|
|
|
9
23
|
**变更**:
|
|
10
24
|
|
|
11
|
-
-
|
|
25
|
+
- **项目结构更新**:更新为当时目录结构,包含页面示例和数据展示页面
|
|
12
26
|
- **功能特性完善**:分为核心功能和技术特性两部分,详细描述各页面功能
|
|
13
27
|
- **SDK 使用指南**:更新为实际的 SDK 调用方式(filter、getOne、create、update、delete),添加动态获取模型列表说明
|
|
14
28
|
- **路由说明更新**:更新为当前实际的路由映射,补充布局系统说明
|
|
@@ -1,318 +1,246 @@
|
|
|
1
|
-
[
|
|
1
|
+
[项目更新记录](./CHANGELOG.md)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
# Rabetbase React 微前端模板
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
这是 `rabetbase project create` 使用的 React 项目模板,用于演示如何把一个 React 18 + Vite 应用接入 Lovrabet 主应用,并通过 `@lovrabet/sdk` 调用平台数据模型。
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
这个模板的日常使用方式不是让开发者记住一组命令,而是在 Claude Code、Cursor、Codex 等 Agent 环境里直接描述开发目标。`rabetbase` 提供项目配置、模型同步、构建检查、菜单接入等能力,Agent 根据你的 Prompt 调用这些能力完成开发任务。
|
|
8
|
+
|
|
9
|
+
这个模板适合以下场景:
|
|
10
|
+
|
|
11
|
+
- 本地独立开发一个 Lovrabet 子应用;
|
|
12
|
+
- 构建后以 icestark 微前端方式嵌入 Lovrabet 主应用;
|
|
13
|
+
- 让 Agent 基于 `rabetbase` 能力刷新 SDK 模型配置;
|
|
14
|
+
- 基于已有页面案例,用 Prompt 继续二次开发。
|
|
15
|
+
|
|
16
|
+
## 在线文库
|
|
17
|
+
|
|
18
|
+
README 只说明模板本地运行方式。完整的 Agent 开发流程、Prompt 示例、SDK 使用方式和发布路径,以飞书文库为准。
|
|
19
|
+
|
|
20
|
+
- [Rabetbase CLI 文库首页](https://qizhiyuntu.feishu.cn/wiki/EaApwb1Wpi2j0ykAkhNcya0ZnEh)
|
|
21
|
+
- [入门与上手](https://qizhiyuntu.feishu.cn/wiki/T5gJwrcQqixLCikNYO2caZYDnsc)
|
|
22
|
+
- [核心研发能力](https://qizhiyuntu.feishu.cn/wiki/S71hw5c2HiwyoHkLgyecKrI8n3M)
|
|
23
|
+
- [系统页面开发:用 SDK 完成业务页面](https://qizhiyuntu.feishu.cn/wiki/XCdWwnN7ViYOc0knRu8c411uneh)
|
|
24
|
+
- [TypeScript SDK 文档](https://qizhiyuntu.feishu.cn/wiki/B1PLw34AwiDtNmkCAlCcO3T2ngh)
|
|
8
25
|
|
|
9
26
|
## 技术栈
|
|
10
27
|
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
-
|
|
19
|
-
- **vite-plugin-pages** - 基于文件系统的约定式路由
|
|
28
|
+
- `@lovrabet/sdk`:Lovrabet TypeScript SDK 与模型客户端。
|
|
29
|
+
- React 18 + TypeScript:页面开发与类型约束。
|
|
30
|
+
- React Router v6:页面路由。
|
|
31
|
+
- Ant Design v5:企业级 UI 组件。
|
|
32
|
+
- Vite v7:本地开发与生产构建。
|
|
33
|
+
- `@ice/stark-app`:icestark 微前端运行环境识别与 basename 适配。
|
|
34
|
+
- `vite-plugin-pages`:基于 `src/pages` 的文件系统路由。
|
|
35
|
+
- ECharts:图表和数据大屏示例。
|
|
20
36
|
|
|
21
|
-
##
|
|
37
|
+
## 目录结构
|
|
22
38
|
|
|
23
|
-
```
|
|
39
|
+
```text
|
|
40
|
+
.
|
|
24
41
|
├── src/
|
|
25
|
-
│ ├── api/
|
|
26
|
-
│ │ ├── api.ts
|
|
27
|
-
│ │ └── client.ts
|
|
28
|
-
│ ├── layouts/
|
|
29
|
-
│ │ └── MainLayout.tsx
|
|
30
|
-
│ ├── pages/
|
|
31
|
-
│ │ ├── index.tsx
|
|
32
|
-
│ │ ├──
|
|
33
|
-
│ │
|
|
34
|
-
│ │ ├──
|
|
35
|
-
│ │
|
|
36
|
-
│
|
|
37
|
-
│
|
|
38
|
-
│
|
|
39
|
-
│
|
|
40
|
-
|
|
41
|
-
│
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
│ │ └── api.ts # API 请求封装
|
|
46
|
-
│ ├── main.tsx # 微前端应用入口(导出 mount/unmount)
|
|
47
|
-
│ ├── style.css # 全局样式
|
|
48
|
-
│ └── vite-env.d.ts # Vite 类型定义
|
|
49
|
-
├── docs/ # 项目文档
|
|
50
|
-
│ ├── quick-start.md # 快速开始指南
|
|
51
|
-
│ └── API_RULE_CHANGE.md # API 变更指南
|
|
52
|
-
├── vite.config.ts # Vite 配置文件(含微前端配置)
|
|
53
|
-
├── tsconfig.json # TypeScript 配置
|
|
54
|
-
├── CHANGELOG.md # 更新记录
|
|
55
|
-
└── package.json # 项目依赖
|
|
42
|
+
│ ├── api/
|
|
43
|
+
│ │ ├── api.ts # CLI 生成的 SDK 模型配置
|
|
44
|
+
│ │ └── client.ts # 统一导出的 Lovrabet SDK 客户端
|
|
45
|
+
│ ├── layouts/
|
|
46
|
+
│ │ └── MainLayout.tsx
|
|
47
|
+
│ ├── pages/
|
|
48
|
+
│ │ ├── index.tsx
|
|
49
|
+
│ │ ├── sdk-demo/index.tsx
|
|
50
|
+
│ │ ├── workbench/index.tsx
|
|
51
|
+
│ │ ├── dashboard/index.tsx
|
|
52
|
+
│ │ └── data-screen/index.tsx
|
|
53
|
+
│ ├── router/index.tsx
|
|
54
|
+
│ ├── utils/api.ts
|
|
55
|
+
│ ├── main.tsx
|
|
56
|
+
│ └── style.css
|
|
57
|
+
├── docs/
|
|
58
|
+
│ └── quick-start.md
|
|
59
|
+
├── vite.config.ts
|
|
60
|
+
├── tsconfig.json
|
|
61
|
+
└── package.json
|
|
56
62
|
```
|
|
57
63
|
|
|
58
|
-
##
|
|
64
|
+
## 内置页面
|
|
59
65
|
|
|
60
|
-
|
|
66
|
+
项目使用 `vite-plugin-pages`,路由由 `src/pages` 下的文件自动生成。
|
|
61
67
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
+
| 文件 | 路由 | 用途 |
|
|
69
|
+
| --------------------------------- | -------------- | ------------------------------------------ |
|
|
70
|
+
| `src/pages/index.tsx` | `/` | Prompt 开发入口、项目状态和 Agent 场景示例 |
|
|
71
|
+
| `src/pages/sdk-demo/index.tsx` | `/sdk-demo` | `@lovrabet/sdk` 模型列表和数据操作示例 |
|
|
72
|
+
| `src/pages/workbench/index.tsx` | `/workbench` | 工作台类业务页面示例 |
|
|
73
|
+
| `src/pages/dashboard/index.tsx` | `/dashboard` | 数据看板示例 |
|
|
74
|
+
| `src/pages/data-screen/index.tsx` | `/data-screen` | 数据大屏示例 |
|
|
68
75
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
- 🚀 **自动路由生成** - 基于 `vite-plugin-pages` 的文件系统约定式路由,零配置开发
|
|
72
|
-
- 🔌 **微前端支持** - 通过 `@ice/stark-app` 实现与主应用的无缝集成
|
|
73
|
-
- 📱 **响应式设计** - 支持桌面端和移动端,自适应布局
|
|
74
|
-
- 🎨 **现代化 UI** - 基于 Ant Design v5 的美观界面,包含完整的布局系统
|
|
75
|
-
- ⚡ **极速构建** - Vite v7 + ES Modules,开发体验极佳
|
|
76
|
-
- 🔒 **HTTPS 开发环境** - 开发环境自动配置 HTTPS,解决跨域问题
|
|
77
|
-
- 📦 **外部依赖优化** - React、Ant Design 等通过 CDN 加载,减小包体积
|
|
78
|
-
- 🌐 **CDN 部署支持** - 支持版本化 CDN 部署,便于多版本管理
|
|
76
|
+
新增页面时,在 `src/pages` 下添加 `.tsx` 文件即可。例如 `src/pages/customer/index.tsx` 会生成 `/customer` 路由。
|
|
79
77
|
|
|
80
78
|
## 快速开始
|
|
81
79
|
|
|
82
|
-
###
|
|
83
|
-
|
|
84
|
-
```bash
|
|
85
|
-
npm install
|
|
86
|
-
```
|
|
80
|
+
### 环境要求
|
|
87
81
|
|
|
88
|
-
|
|
82
|
+
- Node.js 20+
|
|
83
|
+
- 已安装 `rabetbase` CLI;需要拉取真实 API 配置时还需要完成登录
|
|
89
84
|
|
|
90
85
|
```bash
|
|
91
|
-
lovrabet
|
|
86
|
+
npm install -g @lovrabet/rabetbase-cli
|
|
87
|
+
rabetbase --help
|
|
92
88
|
```
|
|
93
89
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
> 💡 **说明**:`https://dev.lovrabet.com:${port}` 中 port 不限于 5173 端口,任意端口号都支持跨域。可以通过环境变量 `PORT` 自定义端口号。
|
|
90
|
+
模板本身不内置 `rabetbase` 依赖,`rabetbase run start` 等命令依赖全局 CLI。
|
|
97
91
|
|
|
98
|
-
###
|
|
92
|
+
### 通过模板创建项目
|
|
99
93
|
|
|
100
|
-
|
|
94
|
+
把 `YOUR_APP_CODE` 替换为当前应用的 AppCode。
|
|
101
95
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
- **约定式路由**: 使用 `vite-plugin-pages` 实现基于文件系统的自动路由生成
|
|
108
|
-
- **CDN 部署**: 支持版本化 CDN 部署(通过 `CDN_DOMAIN` 环境变量配置)
|
|
96
|
+
```bash
|
|
97
|
+
rabetbase project create my-sub-app --appcode YOUR_APP_CODE
|
|
98
|
+
cd my-sub-app
|
|
99
|
+
rabetbase run start
|
|
100
|
+
```
|
|
109
101
|
|
|
110
|
-
|
|
102
|
+
如果是直接克隆本仓库调试模板源码,需要先安装依赖:
|
|
111
103
|
|
|
112
104
|
```bash
|
|
113
|
-
|
|
105
|
+
npm install
|
|
106
|
+
rabetbase run start
|
|
114
107
|
```
|
|
115
108
|
|
|
116
|
-
|
|
109
|
+
本地服务默认打开:
|
|
117
110
|
|
|
118
|
-
```
|
|
119
|
-
|
|
111
|
+
```text
|
|
112
|
+
https://dev.lovrabet.com:5173
|
|
120
113
|
```
|
|
121
114
|
|
|
122
|
-
|
|
115
|
+
需要换端口时可执行 `PORT=3000 rabetbase run start`。
|
|
123
116
|
|
|
124
|
-
### SDK
|
|
117
|
+
### 拉取 SDK 配置
|
|
125
118
|
|
|
126
|
-
|
|
119
|
+
`project create` 传入 AppCode 时,CLI 会尝试自动生成 `src/api/api.ts`。如果创建时没有传 AppCode,需要先在项目内补充 AppCode,再拉取 API 配置:
|
|
127
120
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
121
|
+
```bash
|
|
122
|
+
rabetbase config set appcode YOUR_APP_CODE
|
|
123
|
+
rabetbase api pull
|
|
124
|
+
```
|
|
132
125
|
|
|
133
|
-
|
|
134
|
-
- 导入配置文件执行注册
|
|
135
|
-
- 使用 `createClient()` 创建客户端实例
|
|
136
|
-
- 导出供整个应用使用
|
|
126
|
+
如果你是直接克隆模板源码,且当前目录还没有 `.rabetbase.json`,先执行:
|
|
137
127
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
- 展示 `create()` 创建新数据
|
|
143
|
-
- 展示 `update()` 更新数据
|
|
144
|
-
- 展示 `delete()` 删除数据
|
|
145
|
-
- 包含完整的错误处理和加载状态
|
|
128
|
+
```bash
|
|
129
|
+
rabetbase project init --appcode YOUR_APP_CODE
|
|
130
|
+
rabetbase api pull
|
|
131
|
+
```
|
|
146
132
|
|
|
147
|
-
|
|
133
|
+
项目统一从 `src/api/client.ts` 导出 SDK 客户端:
|
|
148
134
|
|
|
149
135
|
```typescript
|
|
150
136
|
import { lovrabetClient } from "@/api/client";
|
|
151
137
|
|
|
152
|
-
// 获取可用的数据模型列表
|
|
153
138
|
const models = lovrabetClient.getModelList();
|
|
154
|
-
|
|
155
|
-
// 使用 filter 查询数据(推荐)
|
|
156
|
-
const data = await lovrabetClient.models.Requirements.filter({
|
|
139
|
+
const data = await lovrabetClient.models.requirements.filter({
|
|
157
140
|
currentPage: 1,
|
|
158
141
|
pageSize: 20,
|
|
159
|
-
orderBy: "createdAt",
|
|
160
|
-
orderDirection: "desc",
|
|
161
142
|
});
|
|
162
|
-
|
|
163
|
-
// 获取单条记录
|
|
164
|
-
const item = await lovrabetClient.models.Requirements.getOne("record-id");
|
|
165
|
-
|
|
166
|
-
// 创建新数据
|
|
167
|
-
const newItem = await lovrabetClient.models.Requirements.create({
|
|
168
|
-
title: "需求标题",
|
|
169
|
-
description: "需求描述",
|
|
170
|
-
});
|
|
171
|
-
|
|
172
|
-
// 更新数据
|
|
173
|
-
await lovrabetClient.models.Requirements.update("record-id", {
|
|
174
|
-
title: "更新后的标题",
|
|
175
|
-
});
|
|
176
|
-
|
|
177
|
-
// 删除数据
|
|
178
|
-
await lovrabetClient.models.Requirements.delete("record-id");
|
|
179
143
|
```
|
|
180
144
|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
1. **入口文件配置** (`src/main.tsx`):
|
|
184
|
-
- 导出 `mount` 和 `unmount` 生命周期函数
|
|
185
|
-
- 使用 `isInIcestark()` 判断运行环境
|
|
186
|
-
- 支持接收主应用传递的 `customProps`
|
|
187
|
-
|
|
188
|
-
2. **自动路由配置** (`src/router/index.tsx`):
|
|
189
|
-
- 使用 `vite-plugin-pages` 实现基于文件系统的约定式路由
|
|
190
|
-
- 使用 `getBasename()` 获取动态 basename
|
|
191
|
-
- 支持微应用内部路由跳转和嵌套路由
|
|
192
|
-
|
|
193
|
-
3. **构建配置** (`vite.config.ts`):
|
|
194
|
-
- 使用 `vite-plugin-pages` 实现自动路由生成
|
|
195
|
-
- 使用 `vite-plugin-index-html` 插件支持微前端打包
|
|
196
|
-
- 配置 ES modules 输出格式,支持 Tree Shaking
|
|
197
|
-
- 外部化公共依赖减小包体积,CDN 友好
|
|
198
|
-
- HTTPS 开发环境,解决跨域问题
|
|
199
|
-
|
|
200
|
-
### 约定式路由使用指南
|
|
201
|
-
|
|
202
|
-
基于 `vite-plugin-pages` 的文件系统路由,支持以下约定:
|
|
145
|
+
模型别名来自生成后的 `src/api/api.ts`,实际使用前请以该文件为准。
|
|
203
146
|
|
|
204
|
-
|
|
147
|
+
## 开发说明
|
|
205
148
|
|
|
206
|
-
|
|
207
|
-
- `src/pages/intro/index.tsx` → `/intro` (介绍页)
|
|
208
|
-
- `src/pages/sdk-demo/index.tsx` → `/sdk-demo` (SDK 调用演示)
|
|
209
|
-
- `src/pages/workbench/index.tsx` → `/workbench` (工作台)
|
|
210
|
-
- `src/pages/dashboard/index.tsx` → `/dashboard` (数据看板)
|
|
211
|
-
- `src/pages/data-screen/index.tsx` → `/data-screen` (数据大屏)
|
|
149
|
+
### 本地脚本
|
|
212
150
|
|
|
213
|
-
|
|
151
|
+
仓库脚本统一通过 CLI 运行:
|
|
214
152
|
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
**布局系统**:
|
|
153
|
+
```bash
|
|
154
|
+
rabetbase run start
|
|
155
|
+
rabetbase run build
|
|
156
|
+
rabetbase run preview
|
|
157
|
+
```
|
|
222
158
|
|
|
223
|
-
|
|
224
|
-
- 在微前端环境中,`MainLayout` 会自动隐藏,只渲染页面内容
|
|
225
|
-
- 独立运行时,显示完整的布局(侧边栏、头部、面包屑等)
|
|
159
|
+
底层脚本定义在 `package.json`,目前对应 Vite 的 `start`、`build`、`preview`。
|
|
226
160
|
|
|
227
|
-
|
|
228
|
-
只需在 `src/pages/` 目录下创建 `.tsx` 文件或目录,路由会自动生成,无需手动配置。
|
|
161
|
+
### 微前端入口
|
|
229
162
|
|
|
230
|
-
|
|
163
|
+
`src/main.tsx` 同时支持独立运行和嵌入运行:
|
|
231
164
|
|
|
232
|
-
-
|
|
233
|
-
-
|
|
234
|
-
-
|
|
165
|
+
- 独立运行时,`isInIcestark()` 为 false,应用渲染到 `#root`;
|
|
166
|
+
- 被 Lovrabet 主应用加载时,导出 `mount` / `unmount` 生命周期;
|
|
167
|
+
- React root 会缓存到容器上,避免重复创建 root。
|
|
235
168
|
|
|
236
|
-
|
|
169
|
+
`src/router/index.tsx` 会读取 icestark 的 `getBasename()`,因此同一份构建产物可以适配 Lovrabet 页面配置中的 basename。
|
|
237
170
|
|
|
238
|
-
###
|
|
171
|
+
### 构建产物
|
|
239
172
|
|
|
240
173
|
```bash
|
|
241
|
-
|
|
174
|
+
rabetbase run build
|
|
242
175
|
```
|
|
243
176
|
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
### CDN 部署
|
|
247
|
-
|
|
248
|
-
项目支持两种部署方式:
|
|
177
|
+
默认产物:
|
|
249
178
|
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
lovrabet build
|
|
254
|
-
# 将 dist/ 目录内容上传到您的 CDN
|
|
179
|
+
```text
|
|
180
|
+
dist/assets/main.js
|
|
181
|
+
dist/assets/main.css
|
|
255
182
|
```
|
|
256
183
|
|
|
257
|
-
|
|
184
|
+
需要版本化 CDN 路径时:
|
|
258
185
|
|
|
259
186
|
```bash
|
|
260
|
-
CDN_DOMAIN=https://your-cdn.com
|
|
261
|
-
# 构建产物会输出到 dist/sub-app-react-demo/1.0.0/
|
|
262
|
-
# 便于多版本管理和回滚
|
|
187
|
+
CDN_DOMAIN=https://your-cdn.com/ rabetbase run build
|
|
263
188
|
```
|
|
264
189
|
|
|
265
|
-
|
|
190
|
+
构建目录会变成 `dist/<package-name>/<version>/`,Vite `base` 也会指向对应 CDN 地址。
|
|
266
191
|
|
|
267
|
-
|
|
192
|
+
## 接入 Lovrabet 主应用
|
|
268
193
|
|
|
269
|
-
|
|
270
|
-
- **静态托管**:Vercel、Netlify、GitHub Pages
|
|
271
|
-
- **自建服务器**:Nginx、Apache 等
|
|
194
|
+
构建产物上传到 CDN 或静态资源服务器后,在 Lovrabet 应用中配置页面:
|
|
272
195
|
|
|
273
|
-
|
|
196
|
+
```text
|
|
197
|
+
页面名称:SDK Demo
|
|
198
|
+
路由路径:/sdk-demo
|
|
199
|
+
微应用唯一标识:my-sub-app
|
|
200
|
+
资源加载方式:import
|
|
201
|
+
资源加载列表:
|
|
202
|
+
https://your-cdn.com/path/to/assets/main.js
|
|
203
|
+
https://your-cdn.com/path/to/assets/main.css
|
|
204
|
+
```
|
|
274
205
|
|
|
275
|
-
|
|
206
|
+
注意事项:
|
|
276
207
|
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
- `https://your-cdn.com/path/to/assets/main.js`
|
|
282
|
-
- `https://your-cdn.com/path/to/assets/main.css`
|
|
208
|
+
- 路由路径必须和 `src/pages` 生成的路由一致。
|
|
209
|
+
- Vite 构建产物必须选择 `import` 加载方式。
|
|
210
|
+
- 同一个微前端的多个 Lovrabet 页面可以复用同一组 JS/CSS 资源。
|
|
211
|
+
- 如果页面内部还有子路由,保留 `getBasename()` 适配逻辑。
|
|
283
212
|
|
|
284
|
-
|
|
213
|
+
## 常见任务
|
|
285
214
|
|
|
286
|
-
|
|
215
|
+
### 新增页面
|
|
287
216
|
|
|
288
|
-
|
|
217
|
+
```text
|
|
218
|
+
src/pages/customer/index.tsx -> /customer
|
|
219
|
+
src/pages/customer/[id].tsx -> /customer/:id
|
|
220
|
+
```
|
|
289
221
|
|
|
290
|
-
|
|
291
|
-
- npm >= 7 或 yarn >= 1.22 或 pnpm >= 7
|
|
222
|
+
如果独立运行时也要在左侧菜单展示该页面,需要同步修改 `src/layouts/MainLayout.tsx`。
|
|
292
223
|
|
|
293
|
-
###
|
|
224
|
+
### 调用 Lovrabet 数据
|
|
294
225
|
|
|
295
|
-
|
|
296
|
-
2. **HTTPS 证书获取失败**:检查网络连接,确保能访问 `https://g.yuntooai.com/cert/lovrabet-dev.json`
|
|
297
|
-
3. **路由不生效**:确保页面文件在 `src/pages/` 目录下,且文件扩展名为 `.tsx`
|
|
298
|
-
4. **SDK 调用失败**:检查 `src/api/api.ts` 是否正确配置,确保已通过 Lovrabet CLI 生成
|
|
226
|
+
优先使用 `src/api/client.ts` 导出的 SDK 客户端。只有 SDK 未覆盖的自定义运行态请求,才使用 `src/utils/api.ts` 自行封装。
|
|
299
227
|
|
|
300
|
-
###
|
|
228
|
+
### 嵌入时隐藏本地布局
|
|
301
229
|
|
|
302
|
-
|
|
303
|
-
- 遵循 ESLint 和 Prettier 配置
|
|
304
|
-
- 组件使用函数式组件 + Hooks
|
|
305
|
-
- 优先使用 Ant Design 组件
|
|
230
|
+
`MainLayout` 已经在 icestark 环境下只返回 `<Outlet />`,因此嵌入 Lovrabet 主应用后不会重复显示本地侧边栏和顶部栏。
|
|
306
231
|
|
|
307
|
-
##
|
|
232
|
+
## 常见问题
|
|
308
233
|
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
234
|
+
1. 端口被占用:执行 `PORT=3000 rabetbase run start`。
|
|
235
|
+
2. HTTPS 证书获取失败:检查是否能访问 `https://g.yuntooai.com/cert/lovrabet-dev.json`。
|
|
236
|
+
3. 路由不生效:确认页面位于 `src/pages` 下,并使用 `.tsx` 后缀。
|
|
237
|
+
4. SDK 调用失败:执行 `rabetbase api pull`,并检查 `src/api/api.ts` 是否包含正确 AppCode 和模型别名。
|
|
238
|
+
5. 嵌入后页面空白:确认 Lovrabet 页面使用 `import` 加载,并指向构建后的 `main.js` 与 `main.css`。
|
|
312
239
|
|
|
313
|
-
##
|
|
240
|
+
## 更多文档
|
|
314
241
|
|
|
315
|
-
- [
|
|
316
|
-
- [
|
|
317
|
-
- [TypeScript SDK 文档](https://
|
|
318
|
-
- [
|
|
242
|
+
- [Rabetbase CLI 文库首页](https://qizhiyuntu.feishu.cn/wiki/EaApwb1Wpi2j0ykAkhNcya0ZnEh)
|
|
243
|
+
- [系统页面开发:用 SDK 完成业务页面](https://qizhiyuntu.feishu.cn/wiki/XCdWwnN7ViYOc0knRu8c411uneh)
|
|
244
|
+
- [TypeScript SDK 文档](https://qizhiyuntu.feishu.cn/wiki/B1PLw34AwiDtNmkCAlCcO3T2ngh)
|
|
245
|
+
- [快速开始](./docs/quick-start.md)
|
|
246
|
+
- [更新记录](./CHANGELOG.md)
|