@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.
Files changed (240) hide show
  1. package/README.md +1 -1
  2. package/lib/api/api-doc.js +1 -1
  3. package/lib/api/fetch-model-list.js +1 -1
  4. package/lib/api/generate-api-file.js +1 -1
  5. package/lib/auth/auth-server-ui.js +1 -1
  6. package/lib/auth/auth-server.js +1 -1
  7. package/lib/auth/constant.js +1 -1
  8. package/lib/auth/get-cookie.js +1 -1
  9. package/lib/auth/get-session-user.js +1 -1
  10. package/lib/auth/is-session-valid.js +1 -1
  11. package/lib/auth/login-success-html.js +1 -1
  12. package/lib/auth/logout.js +1 -1
  13. package/lib/cli-flags.js +1 -1
  14. package/lib/cli.js +1 -1
  15. package/lib/commands/api/generate.js +1 -1
  16. package/lib/commands/api/index.js +1 -1
  17. package/lib/commands/api/list.js +1 -1
  18. package/lib/commands/api/pull.js +1 -1
  19. package/lib/commands/api/shared.js +1 -1
  20. package/lib/commands/app/add.js +1 -1
  21. package/lib/commands/app/discover.js +1 -1
  22. package/lib/commands/app/index.js +1 -1
  23. package/lib/commands/app/list.js +1 -1
  24. package/lib/commands/app/remove.js +1 -1
  25. package/lib/commands/app/shared.js +1 -1
  26. package/lib/commands/app/use.js +1 -1
  27. package/lib/commands/app-config/delete.js +1 -0
  28. package/lib/commands/app-config/get.js +1 -0
  29. package/lib/commands/app-config/index.js +1 -0
  30. package/lib/commands/app-config/list.js +1 -0
  31. package/lib/commands/app-config/set.js +1 -0
  32. package/lib/commands/app-config/shared.js +1 -0
  33. package/lib/commands/auth/index.js +1 -1
  34. package/lib/commands/bff/create.js +1 -1
  35. package/lib/commands/bff/delete.js +1 -1
  36. package/lib/commands/bff/detail.js +1 -1
  37. package/lib/commands/bff/index.js +1 -1
  38. package/lib/commands/bff/list.js +1 -1
  39. package/lib/commands/bff/pull.js +1 -1
  40. package/lib/commands/bff/push.js +1 -1
  41. package/lib/commands/bff/status.js +1 -1
  42. package/lib/commands/cli-update.js +1 -1
  43. package/lib/commands/codegen/index.js +1 -1
  44. package/lib/commands/codegen/sdk.js +1 -1
  45. package/lib/commands/codegen/sql.js +1 -1
  46. package/lib/commands/common/app-selector.js +1 -1
  47. package/lib/commands/common/flags.js +1 -1
  48. package/lib/commands/common/validate.js +1 -1
  49. package/lib/commands/config/get.js +1 -1
  50. package/lib/commands/config/index.js +1 -1
  51. package/lib/commands/config/list.js +1 -1
  52. package/lib/commands/config/set.js +1 -1
  53. package/lib/commands/config/shared.js +1 -1
  54. package/lib/commands/data/filter.js +1 -1
  55. package/lib/commands/data/getOne.js +1 -1
  56. package/lib/commands/data/index.js +1 -1
  57. package/lib/commands/data/shared.js +1 -1
  58. package/lib/commands/dataset/business-group-update.js +1 -0
  59. package/lib/commands/dataset/capability.js +1 -1
  60. package/lib/commands/dataset/delete.js +1 -1
  61. package/lib/commands/dataset/detail.js +1 -1
  62. package/lib/commands/dataset/extend-update.js +1 -1
  63. package/lib/commands/dataset/field-update.js +1 -1
  64. package/lib/commands/dataset/index.js +1 -1
  65. package/lib/commands/dataset/list.js +1 -1
  66. package/lib/commands/dataset/operations.js +1 -1
  67. package/lib/commands/dataset/relation-create.js +1 -1
  68. package/lib/commands/dataset/relation-delete.js +1 -1
  69. package/lib/commands/dataset/relation-shared.js +1 -1
  70. package/lib/commands/dataset/relation-update.js +1 -1
  71. package/lib/commands/dataset/relations.js +1 -1
  72. package/lib/commands/dataset/rename.js +1 -1
  73. package/lib/commands/dataset/restore.js +1 -0
  74. package/lib/commands/db/analyze-cancel.js +1 -1
  75. package/lib/commands/db/analyze-start.js +1 -1
  76. package/lib/commands/db/analyze-status.js +1 -1
  77. package/lib/commands/db/create.js +1 -1
  78. package/lib/commands/db/delete.js +1 -1
  79. package/lib/commands/db/detail.js +1 -1
  80. package/lib/commands/db/diff.js +1 -1
  81. package/lib/commands/db/index.js +1 -1
  82. package/lib/commands/db/list.js +1 -1
  83. package/lib/commands/db/shared.js +1 -1
  84. package/lib/commands/db/tables.js +1 -1
  85. package/lib/commands/db/test.js +1 -1
  86. package/lib/commands/db/update.js +1 -1
  87. package/lib/commands/doctor.js +1 -1
  88. package/lib/commands/init/index.js +1 -1
  89. package/lib/commands/issue/index.js +1 -1
  90. package/lib/commands/issue/nudge.js +1 -1
  91. package/lib/commands/issue/report.js +1 -1
  92. package/lib/commands/issue/shared.js +1 -1
  93. package/lib/commands/logs/index.js +1 -1
  94. package/lib/commands/menu/index.js +1 -1
  95. package/lib/commands/menu/list.js +1 -1
  96. package/lib/commands/menu/shared/compare-table.js +1 -1
  97. package/lib/commands/menu/shared/index.js +1 -1
  98. package/lib/commands/menu/shared/inquirer.js +1 -1
  99. package/lib/commands/menu/shared/local-pages.js +1 -1
  100. package/lib/commands/menu/shared/logic.js +1 -1
  101. package/lib/commands/menu/shared/service.js +1 -1
  102. package/lib/commands/menu/shared/sync-core.js +1 -1
  103. package/lib/commands/menu/shared/update-core.js +1 -1
  104. package/lib/commands/menu/shared/valid-url.js +1 -1
  105. package/lib/commands/menu/sync.js +1 -1
  106. package/lib/commands/menu/update.js +1 -1
  107. package/lib/commands/page/generate-start.js +1 -1
  108. package/lib/commands/page/generate-status.js +1 -1
  109. package/lib/commands/page/index.js +1 -1
  110. package/lib/commands/page/pull.js +1 -1
  111. package/lib/commands/page/push.js +1 -1
  112. package/lib/commands/page/relation-audit.js +1 -1
  113. package/lib/commands/page/shared.js +1 -1
  114. package/lib/commands/page/standard-page-status.js +1 -1
  115. package/lib/commands/page/sync.js +1 -1
  116. package/lib/commands/project/create/enhanced-guided-create.js +1 -1
  117. package/lib/commands/project/create/format-elapsed.js +1 -1
  118. package/lib/commands/project/create/main.js +1 -1
  119. package/lib/commands/project/create/non-interactive.js +1 -1
  120. package/lib/commands/project/create/project-template-path.js +1 -1
  121. package/lib/commands/project/create/use-copy-project-template.js +1 -1
  122. package/lib/commands/project/create/use-format-code.js +1 -1
  123. package/lib/commands/project/create/use-install-dependencies.js +1 -1
  124. package/lib/commands/project/index.js +1 -1
  125. package/lib/commands/project/init.js +1 -1
  126. package/lib/commands/project/upgrade.js +1 -1
  127. package/lib/commands/registry.js +1 -1
  128. package/lib/commands/run/index.js +1 -1
  129. package/lib/commands/schema.js +1 -1
  130. package/lib/commands/skill/index.js +1 -1
  131. package/lib/commands/sql/create.js +1 -1
  132. package/lib/commands/sql/delete.js +1 -1
  133. package/lib/commands/sql/detail.js +1 -1
  134. package/lib/commands/sql/exec.js +1 -1
  135. package/lib/commands/sql/index.js +1 -1
  136. package/lib/commands/sql/list.js +1 -1
  137. package/lib/commands/sql/pull.js +1 -1
  138. package/lib/commands/sql/push.js +1 -1
  139. package/lib/commands/sql/save.js +1 -1
  140. package/lib/commands/sql/shared.js +1 -1
  141. package/lib/commands/sql/status.js +1 -1
  142. package/lib/commands/sql/validate.js +1 -1
  143. package/lib/commands/workspace/index.js +1 -1
  144. package/lib/config/schema.js +1 -1
  145. package/lib/constant/cdn.js +1 -1
  146. package/lib/constant/cli.js +1 -1
  147. package/lib/constant/defaults.js +1 -1
  148. package/lib/constant/domain.js +1 -1
  149. package/lib/constant/env.js +1 -1
  150. package/lib/constant/output.js +1 -1
  151. package/lib/constant/paths.js +1 -1
  152. package/lib/constant/risk.js +1 -1
  153. package/lib/context/app-resolver.js +1 -1
  154. package/lib/context/auth-resolver.js +1 -1
  155. package/lib/context/config-loader.js +1 -1
  156. package/lib/context.js +1 -1
  157. package/lib/core/alias-resolver.js +1 -1
  158. package/lib/core/api-client.js +1 -1
  159. package/lib/core/bff/config.js +1 -1
  160. package/lib/core/bff/file-system.js +1 -1
  161. package/lib/core/bff/hash.js +1 -1
  162. package/lib/core/bff/lock.js +1 -1
  163. package/lib/core/bff/utils.js +1 -1
  164. package/lib/core/db-resolver.js +1 -1
  165. package/lib/core/page/file-system.js +1 -1
  166. package/lib/core/page/hash.js +1 -1
  167. package/lib/core/page/lock.js +1 -1
  168. package/lib/core/sql-sync/config.js +1 -1
  169. package/lib/core/sql-sync/file-system.js +1 -1
  170. package/lib/core/sql-sync/hash.js +1 -1
  171. package/lib/core/sql-sync/lock.js +1 -1
  172. package/lib/core/sql-sync/utils.js +1 -1
  173. package/lib/core/sql-validator.js +1 -1
  174. package/lib/errors.js +1 -1
  175. package/lib/framework/build-all-flags.js +1 -1
  176. package/lib/framework/flags.js +1 -1
  177. package/lib/framework/help.js +1 -1
  178. package/lib/framework/index.js +1 -1
  179. package/lib/framework/output.js +1 -1
  180. package/lib/framework/response.js +1 -1
  181. package/lib/framework/runner-alias.js +1 -1
  182. package/lib/framework/runner.js +1 -1
  183. package/lib/framework/schema-export.js +1 -1
  184. package/lib/framework/types.js +1 -1
  185. package/lib/generated/build-info.js +1 -1
  186. package/lib/help.js +1 -1
  187. package/lib/skills/main.js +1 -1
  188. package/lib/skills/npx-skills-add.js +1 -1
  189. package/lib/telemetry/cli-command-trace.js +1 -1
  190. package/lib/telemetry/cli-help-trace.js +1 -1
  191. package/lib/telemetry/ensure-cli-otel-config.js +1 -1
  192. package/lib/telemetry/register-otel-exit-shutdown.js +1 -1
  193. package/lib/telemetry/send-cli-trace-log.js +1 -1
  194. package/lib/telemetry/send-platform-issue-collect-log.js +1 -1
  195. package/lib/utils/ai_config.js +1 -1
  196. package/lib/utils/apply-jq-filter.js +1 -1
  197. package/lib/utils/cdn-config.js +1 -1
  198. package/lib/utils/check-sdk-version.js +1 -1
  199. package/lib/utils/cli-version-check.js +1 -1
  200. package/lib/utils/cli-version-policy.js +1 -1
  201. package/lib/utils/config.js +1 -1
  202. package/lib/utils/copy-directory.js +1 -1
  203. package/lib/utils/entity-with-id.js +1 -1
  204. package/lib/utils/file-utils.js +1 -1
  205. package/lib/utils/guides-cdn.js +1 -1
  206. package/lib/utils/http-client.js +1 -1
  207. package/lib/utils/is-non-interactive.js +1 -1
  208. package/lib/utils/logger.js +1 -1
  209. package/lib/utils/params.js +1 -1
  210. package/lib/utils/platform.js +1 -1
  211. package/lib/utils/rules-cdn.js +1 -1
  212. package/lib/utils/sleep.js +1 -1
  213. package/lib/utils/template-replacer.js +1 -1
  214. package/lib/utils/update-notice.js +1 -1
  215. package/lib/utils/version.js +1 -1
  216. package/lib/utils/with-active-cookie.js +1 -1
  217. package/lib/utils/write-cli-side-channel.js +1 -1
  218. package/package.json +1 -1
  219. package/templates/README.md +15 -25
  220. package/templates/generate-api/api.ts.tpl +2 -2
  221. package/templates/generate-api/client.ts.tpl +2 -2
  222. package/templates/projects/sub-app-react-demo/CHANGELOG.md +15 -1
  223. package/templates/projects/sub-app-react-demo/README.md +159 -231
  224. package/templates/projects/sub-app-react-demo/docs/quick-start.md +145 -426
  225. package/templates/projects/sub-app-react-demo/src/api/api.ts +8 -65
  226. package/templates/projects/sub-app-react-demo/src/api/client.ts +10 -42
  227. package/templates/projects/sub-app-react-demo/src/components/demo-page-container/DemoPageContainer.module.css +28 -0
  228. package/templates/projects/sub-app-react-demo/src/components/demo-page-container/DemoPageContainer.tsx +55 -0
  229. package/templates/projects/sub-app-react-demo/src/layouts/MainLayout.tsx +6 -9
  230. package/templates/projects/sub-app-react-demo/src/main.tsx +10 -6
  231. package/templates/projects/sub-app-react-demo/src/pages/dashboard/index.tsx +3 -5
  232. package/templates/projects/sub-app-react-demo/src/pages/data-screen/index.tsx +153 -148
  233. package/templates/projects/sub-app-react-demo/src/pages/index.module.css +500 -0
  234. package/templates/projects/sub-app-react-demo/src/pages/index.tsx +517 -343
  235. package/templates/projects/sub-app-react-demo/src/pages/sdk-demo/index.tsx +325 -242
  236. package/templates/projects/sub-app-react-demo/src/pages/workbench/index.module.css +8 -6
  237. package/templates/projects/sub-app-react-demo/src/pages/workbench/index.tsx +174 -87
  238. package/templates/projects/sub-app-react-demo/src/style.css +19 -3
  239. package/templates/projects/sub-app-react-demo/src/vite-env.d.ts +1 -1
  240. package/templates/projects/sub-app-react-demo/docs/API_RULE_CHANGE.md +0 -212
@@ -1,6 +1,6 @@
1
- # Lovrabet CLI 模板说明
1
+ # Rabetbase CLI 模板说明
2
2
 
3
- 此目录包含 Lovrabet CLI 工具的模板文件。
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/ # 项目模板,用于 `lovrabet create` 命令
12
- └── sub-app-react-demo/ # Git 子模块,指向主模板仓库
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
- ### Git 子模块同步
21
+ ### 远程模板同步
22
22
 
23
- `projects/sub-app-react-demo/` 目录是一个 Git 子模块,指向:
24
- **仓库地址**: https://github.com/lovrabet-ai/sub-app-react-demo
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
- - CLI 使用 `TemplateReplacer` 工具进行标签替换
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 和 MCP
65
+ `rules/` 目录包含 Cursor Rules 模板,用于指导 AI 助手(Claude、GPT 等)正确使用 Lovrabet SDK。
76
66
 
77
67
  ### 功能特性
78
68
 
79
69
  - ✅ **SDK 使用规范** - 完整的 API 调用指南
80
- - ✅ **MCP Tools 指南** - 7 个 MCP 工具的详细说明
70
+ - ✅ **Agent 开发约束** - 约定模型读取、数据调用和页面开发方式
81
71
  - ✅ **性能优化** - 避免不必要的 API 调用
82
72
  - ✅ **错误处理** - 完善的错误处理模式
83
73
  - ✅ **类型安全** - TypeScript 最佳实践
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Generated by Lovrabet CLI
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 Lovrabet CLI
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
- - **项目结构更新**:更新为实际目录结构,包含所有现有页面(intro、workbench、dashboard、data-screen 等)
25
+ - **项目结构更新**:更新为当时目录结构,包含页面示例和数据展示页面
12
26
  - **功能特性完善**:分为核心功能和技术特性两部分,详细描述各页面功能
13
27
  - **SDK 使用指南**:更新为实际的 SDK 调用方式(filter、getOne、create、update、delete),添加动态获取模型列表说明
14
28
  - **路由说明更新**:更新为当前实际的路由映射,补充布局系统说明
@@ -1,318 +1,246 @@
1
- [📝 项目更新记录 CHANGELOG](./CHANGELOG.md)
1
+ [项目更新记录](./CHANGELOG.md)
2
2
 
3
- > ⚠️ **注意**:本项目会阶段性更新,如果 `git pull` 以后无法运行,可以删除 `node_modules` 之后重新 `npm install`
3
+ # Rabetbase React 微前端模板
4
4
 
5
- # Lovrabet SDK React 演示项目
5
+ 这是 `rabetbase project create` 使用的 React 项目模板,用于演示如何把一个 React 18 + Vite 应用接入 Lovrabet 主应用,并通过 `@lovrabet/sdk` 调用平台数据模型。
6
6
 
7
- 这是一个完整的 React 微前端演示项目,展示了如何在现代 React 应用中集成 Lovrabet SDK,以及如何使用 icestark 微前端方案嵌入到 Lovrabet 主应用中。
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
- - **@lovrabet/sdk** - Lovrabet 官方 SDK,支持现代化客户端实例管理
12
- - **React 18** - 稳定的 React 版本,支持并发特性
13
- - **TypeScript** - 类型安全的 JavaScript 超集
14
- - **React Router v6** - 现代化的路由解决方案
15
- - **Ant Design v5** - 企业级 UI 设计语言
16
- - **Vite v7** - 下一代前端构建工具
17
- - **@ice/stark-app** - 阿里飞冰微前端框架
18
- - **ECharts** - 数据可视化图表库
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/ # SDK 配置和客户端
26
- │ │ ├── api.ts # CLI 生成的 SDK 配置文件
27
- │ │ └── client.ts # SDK 客户端实例
28
- │ ├── layouts/ # 布局组件
29
- │ │ └── MainLayout.tsx # 主布局(包含侧边栏、头部、面包屑等)
30
- │ ├── pages/ # 页面组件(基于文件系统自动路由)
31
- │ │ ├── index.tsx # 首页 - 项目概述和二开说明(/ 路由)
32
- │ │ ├── intro/ # 介绍页面
33
- │ │ │ └── index.tsx # 介绍页(/intro 路由)
34
- │ │ ├── sdk-demo/ # SDK 演示页面
35
- │ │ └── index.tsx # SDK 调用演示(/sdk-demo 路由)
36
- ├── workbench/ # 工作台页面
37
- │ │ └── index.tsx # 工作台(/workbench 路由)
38
- ├── dashboard/ # 数据看板页面
39
- │ │ └── index.tsx # 数据看板(/dashboard 路由)
40
- │ │ └── data-screen/ # 数据大屏页面
41
- └── index.tsx # 数据大屏(/data-screen 路由)
42
- ├── router/ # 路由配置(自动生成)
43
- │ │ └── index.tsx # 路由配置,使用 vite-plugin-pages 自动生成
44
- │ ├── utils/ # 工具函数
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
- - 🎯 **SDK 调用演示** - 展示 @lovrabet/sdk 的 Instant API 数据操作方法,支持动态选择数据模型
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 start
86
+ npm install -g @lovrabet/rabetbase-cli
87
+ rabetbase --help
92
88
  ```
93
89
 
94
- 应用将在 `https://dev.lovrabet.com:5173` 启动(配置了HTTPS证书)
95
-
96
- > 💡 **说明**:`https://dev.lovrabet.com:${port}` 中 port 不限于 5173 端口,任意端口号都支持跨域。可以通过环境变量 `PORT` 自定义端口号。
90
+ 模板本身不内置 `rabetbase` 依赖,`rabetbase run start` 等命令依赖全局 CLI。
97
91
 
98
- ### 微前端核心配置
92
+ ### 通过模板创建项目
99
93
 
100
- 项目包含完整的微前端配置 (`vite.config.ts`):
94
+ `YOUR_APP_CODE` 替换为当前应用的 AppCode。
101
95
 
102
- - **icestark 集成**: 通过 `vite-plugin-index-html` 实现微前端打包
103
- - **外部依赖**: React、ReactDOM、Ant Design、dayjs 通过 CDN 加载,减小包体积
104
- - **ES Modules 输出**: 支持主应用动态加载,Tree Shaking 友好
105
- - **HTTPS 支持**: 开发环境自动获取 HTTPS 证书,解决跨域问题
106
- - **路径别名**: `@` 指向 `src` 目录
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
- lovrabet build
105
+ npm install
106
+ rabetbase run start
114
107
  ```
115
108
 
116
- ### 预览生产版本
109
+ 本地服务默认打开:
117
110
 
118
- ```bash
119
- npm run preview
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
- 项目展示了如何正确集成和使用 @lovrabet/sdk:
119
+ `project create` 传入 AppCode 时,CLI 会尝试自动生成 `src/api/api.ts`。如果创建时没有传 AppCode,需要先在项目内补充 AppCode,再拉取 API 配置:
127
120
 
128
- 1. **SDK 配置文件** (`src/api/api.ts`):
129
- - 通过 Lovrabet CLI 自动生成
130
- - 包含应用代码和模型配置
131
- - 自动注册到 SDK 的配置管理器
121
+ ```bash
122
+ rabetbase config set appcode YOUR_APP_CODE
123
+ rabetbase api pull
124
+ ```
132
125
 
133
- 2. **客户端实例** (`src/api/client.ts`):
134
- - 导入配置文件执行注册
135
- - 使用 `createClient()` 创建客户端实例
136
- - 导出供整个应用使用
126
+ 如果你是直接克隆模板源码,且当前目录还没有 `.rabetbase.json`,先执行:
137
127
 
138
- 3. **SDK 调用示例** (`src/pages/sdk-demo/index.tsx`):
139
- - 动态获取可用的数据模型列表
140
- - 展示 `filter()` 查询数据(支持分页、排序、筛选)
141
- - 展示 `getOne()` 获取单条记录
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
- - `src/pages/index.tsx` → `/` (首页 - 项目概述和二开说明)
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
- - 文件路由:`src/pages/about.tsx` → `/about`
216
- - 目录路由:`src/pages/user/index.tsx` → `/user`
217
- - 嵌套路由:`src/pages/user/profile.tsx` → `/user/profile`
218
- - 动态路由:`src/pages/user/[id].tsx` → `/user/:id`
219
- - 索引路由:`src/pages/index.tsx` → `/`(根路径)
220
-
221
- **布局系统**:
153
+ ```bash
154
+ rabetbase run start
155
+ rabetbase run build
156
+ rabetbase run preview
157
+ ```
222
158
 
223
- - 所有页面都包裹在 `MainLayout` 中(在 `src/router/index.tsx` 中配置)
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
- - 优先使用 Ant Design 组件
233
- - 自定义样式使用 CSS styled-components
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
- lovrabet build
174
+ rabetbase run build
242
175
  ```
243
176
 
244
- 构建产物会输出到 `dist/` 目录(或根据 `CDN_DOMAIN` 环境变量输出到版本化目录)。
245
-
246
- ### CDN 部署
247
-
248
- 项目支持两种部署方式:
177
+ 默认产物:
249
178
 
250
- #### 方式一:标准部署
251
-
252
- ```bash
253
- lovrabet build
254
- # 将 dist/ 目录内容上传到您的 CDN
179
+ ```text
180
+ dist/assets/main.js
181
+ dist/assets/main.css
255
182
  ```
256
183
 
257
- #### 方式二:版本化 CDN 部署
184
+ 需要版本化 CDN 路径时:
258
185
 
259
186
  ```bash
260
- CDN_DOMAIN=https://your-cdn.com lovrabet build
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
- 项目使用 Vite 构建,可以部署到任何静态文件服务器:
192
+ ## 接入 Lovrabet 主应用
268
193
 
269
- - **CDN 服务**:阿里云 OSS、腾讯云 COS、AWS S3 等
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
- 构建完成后,需要在 Lovrabet 主应用中配置页面:
206
+ 注意事项:
276
207
 
277
- 1. 访问页面配置:`https://app.lovrabet.com/app/{appCode}/pages/`
278
- 2. 配置路由路径(必须与代码中的路由一致)
279
- 3. 选择资源加载方式:`import`(Vite 项目必须选择此方式)
280
- 4. 配置资源加载列表:
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
- 详细步骤请参考 [快速开始指南](./docs/quick-start.md)。
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
- - Node.js >= 16
291
- - npm >= 7 或 yarn >= 1.22 或 pnpm >= 7
222
+ 如果独立运行时也要在左侧菜单展示该页面,需要同步修改 `src/layouts/MainLayout.tsx`。
292
223
 
293
- ### 常见问题
224
+ ### 调用 Lovrabet 数据
294
225
 
295
- 1. **端口被占用**:修改 `.env` 文件中的 `PORT` 环境变量,或使用 `PORT=3000 npm start`
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
- - 使用 TypeScript 编写代码
303
- - 遵循 ESLint 和 Prettier 配置
304
- - 组件使用函数式组件 + Hooks
305
- - 优先使用 Ant Design 组件
230
+ `MainLayout` 已经在 icestark 环境下只返回 `<Outlet />`,因此嵌入 Lovrabet 主应用后不会重复显示本地侧边栏和顶部栏。
306
231
 
307
- ## 文档链接
232
+ ## 常见问题
308
233
 
309
- - [快速开始指南](./docs/quick-start.md) - 详细的接入和开发指南
310
- - [API 变更指南](./docs/API_RULE_CHANGE.md) - API 地址规则变更说明
311
- - [更新记录](./CHANGELOG.md) - 项目更新历史
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
- - [Lovrabet 开放平台](https://open.lovrabet.com)
316
- - [CLI 前端脚手架文档](https://open.lovrabet.com/docs/lovrabet-cli/)
317
- - [TypeScript SDK 文档](https://open.lovrabet.com/docs/category/lovrabet-node-sdk)
318
- - [OpenAPI 文档](https://open.lovrabet.com/docs/category/openapi)
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)