@lovrabet/rabetbase-cli 2.4.3 → 2.4.4-beta.1

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 (381) hide show
  1. package/lib/api/api-doc.js +1 -1
  2. package/lib/api/fetch-model-list.js +1 -1
  3. package/lib/api/generate-api-file.js +1 -1
  4. package/lib/auth/auth-server-ui.js +1 -1
  5. package/lib/auth/auth-server.js +1 -1
  6. package/lib/auth/constant.js +1 -1
  7. package/lib/auth/get-cookie.js +1 -1
  8. package/lib/auth/get-session-user.js +1 -1
  9. package/lib/auth/is-session-valid.js +1 -1
  10. package/lib/auth/login-success-html.js +1 -1
  11. package/lib/auth/logout.js +1 -1
  12. package/lib/cli-flags.js +1 -1
  13. package/lib/cli.js +1 -1
  14. package/lib/commands/api/generate.js +1 -1
  15. package/lib/commands/api/index.js +1 -1
  16. package/lib/commands/api/list.js +1 -1
  17. package/lib/commands/api/pull.js +1 -1
  18. package/lib/commands/api/shared.js +1 -1
  19. package/lib/commands/app/index.js +1 -1
  20. package/lib/commands/app/list.js +1 -1
  21. package/lib/commands/app/members-list.js +1 -1
  22. package/lib/commands/app/remote-directory.js +1 -1
  23. package/lib/commands/app/shared.js +1 -1
  24. package/lib/commands/app-config/delete.js +1 -1
  25. package/lib/commands/app-config/get.js +1 -1
  26. package/lib/commands/app-config/index.js +1 -1
  27. package/lib/commands/app-config/list.js +1 -1
  28. package/lib/commands/app-config/set.js +1 -1
  29. package/lib/commands/app-config/shared.js +1 -1
  30. package/lib/commands/auth/index.js +1 -1
  31. package/lib/commands/bff/create.js +1 -1
  32. package/lib/commands/bff/delete.js +1 -1
  33. package/lib/commands/bff/detail.js +1 -1
  34. package/lib/commands/bff/index.js +1 -1
  35. package/lib/commands/bff/list.js +1 -1
  36. package/lib/commands/bff/pull.js +1 -1
  37. package/lib/commands/bff/push.js +1 -1
  38. package/lib/commands/bff/status.js +1 -1
  39. package/lib/commands/cli-skill/index.js +1 -1
  40. package/lib/commands/cli-update.js +1 -1
  41. package/lib/commands/codegen/index.js +1 -1
  42. package/lib/commands/codegen/sdk.js +1 -1
  43. package/lib/commands/codegen/sql.js +1 -1
  44. package/lib/commands/common/app-registry.js +1 -1
  45. package/lib/commands/common/app-selector.js +1 -1
  46. package/lib/commands/common/async-task.js +1 -1
  47. package/lib/commands/common/dry-run.js +1 -1
  48. package/lib/commands/common/flags.js +1 -1
  49. package/lib/commands/common/local-file.js +1 -1
  50. package/lib/commands/common/validate.js +1 -1
  51. package/lib/commands/config/get.js +1 -1
  52. package/lib/commands/config/index.js +1 -1
  53. package/lib/commands/config/list.js +1 -1
  54. package/lib/commands/config/set.js +1 -1
  55. package/lib/commands/config/shared.js +1 -1
  56. package/lib/commands/data/filter.js +1 -1
  57. package/lib/commands/data/getOne.js +1 -1
  58. package/lib/commands/data/index.js +1 -1
  59. package/lib/commands/data/shared.js +1 -1
  60. package/lib/commands/dataset/business-group-update.js +1 -1
  61. package/lib/commands/dataset/capability.js +1 -1
  62. package/lib/commands/dataset/delete.js +1 -1
  63. package/lib/commands/dataset/detail.js +1 -1
  64. package/lib/commands/dataset/extend-update.js +1 -1
  65. package/lib/commands/dataset/field-update.js +1 -1
  66. package/lib/commands/dataset/generate.js +1 -1
  67. package/lib/commands/dataset/index.js +1 -1
  68. package/lib/commands/dataset/list.js +1 -1
  69. package/lib/commands/dataset/operations.js +1 -1
  70. package/lib/commands/dataset/relation-audit.js +1 -1
  71. package/lib/commands/dataset/relation-create.js +1 -1
  72. package/lib/commands/dataset/relation-delete.js +1 -1
  73. package/lib/commands/dataset/relation-shared.js +1 -1
  74. package/lib/commands/dataset/relation-update.js +1 -1
  75. package/lib/commands/dataset/relations.js +1 -1
  76. package/lib/commands/dataset/rename.js +1 -1
  77. package/lib/commands/dataset/restore.js +1 -1
  78. package/lib/commands/db/analysis-batching.js +1 -1
  79. package/lib/commands/db/analyze-batch-plan.js +1 -1
  80. package/lib/commands/db/analyze-cancel.js +1 -1
  81. package/lib/commands/db/analyze-start.js +1 -1
  82. package/lib/commands/db/analyze-status.js +1 -1
  83. package/lib/commands/db/create.js +1 -1
  84. package/lib/commands/db/delete.js +1 -1
  85. package/lib/commands/db/detail.js +1 -1
  86. package/lib/commands/db/diff-refresh-start.d.ts +2 -0
  87. package/lib/commands/db/diff-refresh-start.js +1 -0
  88. package/lib/commands/db/diff-refresh-status.d.ts +2 -0
  89. package/lib/commands/db/diff-refresh-status.js +1 -0
  90. package/lib/commands/db/diff.js +1 -1
  91. package/lib/commands/db/index.js +1 -1
  92. package/lib/commands/db/list.js +1 -1
  93. package/lib/commands/db/shared.js +1 -1
  94. package/lib/commands/db/tables.js +1 -1
  95. package/lib/commands/db/test.js +1 -1
  96. package/lib/commands/db/update.js +1 -1
  97. package/lib/commands/doctor.js +1 -1
  98. package/lib/commands/file/index.js +1 -1
  99. package/lib/commands/init/index.js +1 -1
  100. package/lib/commands/issue/index.js +1 -1
  101. package/lib/commands/issue/nudge.js +1 -1
  102. package/lib/commands/issue/report.js +1 -1
  103. package/lib/commands/issue/shared.js +1 -1
  104. package/lib/commands/kb/create.js +1 -1
  105. package/lib/commands/kb/delete.js +1 -1
  106. package/lib/commands/kb/detail.js +1 -1
  107. package/lib/commands/kb/index.js +1 -1
  108. package/lib/commands/kb/list.js +1 -1
  109. package/lib/commands/kb/shared.js +1 -1
  110. package/lib/commands/kb/update.js +1 -1
  111. package/lib/commands/logs/index.js +1 -1
  112. package/lib/commands/menu/asset-update.js +1 -1
  113. package/lib/commands/menu/delete.js +1 -1
  114. package/lib/commands/menu/external-link-create.js +1 -1
  115. package/lib/commands/menu/external-link-update.js +1 -1
  116. package/lib/commands/menu/group-create.js +1 -1
  117. package/lib/commands/menu/group-update.js +1 -1
  118. package/lib/commands/menu/index.js +1 -1
  119. package/lib/commands/menu/list.js +1 -1
  120. package/lib/commands/menu/move.js +1 -1
  121. package/lib/commands/menu/regroup-start.js +1 -1
  122. package/lib/commands/menu/rename.js +1 -1
  123. package/lib/commands/menu/shared/compare-table.js +1 -1
  124. package/lib/commands/menu/shared/delete-plan.js +1 -1
  125. package/lib/commands/menu/shared/facts.js +1 -1
  126. package/lib/commands/menu/shared/index.js +1 -1
  127. package/lib/commands/menu/shared/inquirer.js +1 -1
  128. package/lib/commands/menu/shared/local-pages.js +1 -1
  129. package/lib/commands/menu/shared/logic.js +1 -1
  130. package/lib/commands/menu/shared/mutations.js +1 -1
  131. package/lib/commands/menu/shared/service.js +1 -1
  132. package/lib/commands/menu/shared/sync-core.js +1 -1
  133. package/lib/commands/menu/shared/update-core.js +1 -1
  134. package/lib/commands/menu/shared/valid-url.js +1 -1
  135. package/lib/commands/menu/sync.js +1 -1
  136. package/lib/commands/notification/config-create.d.ts +2 -0
  137. package/lib/commands/notification/config-create.js +1 -0
  138. package/lib/commands/notification/config-delete.d.ts +2 -0
  139. package/lib/commands/notification/config-delete.js +1 -0
  140. package/lib/commands/notification/config-list.js +1 -1
  141. package/lib/commands/notification/config-update.d.ts +2 -0
  142. package/lib/commands/notification/config-update.js +1 -0
  143. package/lib/commands/notification/index.js +1 -1
  144. package/lib/commands/notification/shared.d.ts +97 -0
  145. package/lib/commands/notification/shared.js +1 -0
  146. package/lib/commands/ocr/index.js +1 -1
  147. package/lib/commands/page/generate-start.js +1 -1
  148. package/lib/commands/page/generate-status.js +1 -1
  149. package/lib/commands/page/index.js +1 -1
  150. package/lib/commands/page/pull.js +1 -1
  151. package/lib/commands/page/push.js +1 -1
  152. package/lib/commands/page/react/create.js +1 -1
  153. package/lib/commands/page/react/detail.js +1 -1
  154. package/lib/commands/page/react/list.js +1 -1
  155. package/lib/commands/page/react/publish.js +1 -1
  156. package/lib/commands/page/react/shared.js +1 -1
  157. package/lib/commands/page/react/syntax.js +1 -1
  158. package/lib/commands/page/react/template.js +1 -1
  159. package/lib/commands/page/react/update.js +1 -1
  160. package/lib/commands/page/relation-audit.js +1 -1
  161. package/lib/commands/page/restore.js +1 -1
  162. package/lib/commands/page/shared.js +1 -1
  163. package/lib/commands/page/standard-page-status.js +1 -1
  164. package/lib/commands/page/sync.js +1 -1
  165. package/lib/commands/permit/index.js +1 -1
  166. package/lib/commands/permit/page-get.js +1 -1
  167. package/lib/commands/permit/page-set.js +1 -1
  168. package/lib/commands/permit/role-apis-set.js +1 -1
  169. package/lib/commands/permit/role-menus-set.js +1 -1
  170. package/lib/commands/permit/role-menus.js +1 -1
  171. package/lib/commands/permit/shared.js +1 -1
  172. package/lib/commands/project/create/enhanced-guided-create.js +1 -1
  173. package/lib/commands/project/create/format-elapsed.js +1 -1
  174. package/lib/commands/project/create/main.d.ts +1 -0
  175. package/lib/commands/project/create/main.js +1 -1
  176. package/lib/commands/project/create/materialize-project-template.d.ts +11 -0
  177. package/lib/commands/project/create/materialize-project-template.js +1 -0
  178. package/lib/commands/project/create/project-name.d.ts +2 -0
  179. package/lib/commands/project/create/project-name.js +1 -0
  180. package/lib/commands/project/create/project-template-archive.d.ts +6 -0
  181. package/lib/commands/project/create/project-template-archive.js +1 -0
  182. package/lib/commands/project/create/project-template-path.d.ts +1 -3
  183. package/lib/commands/project/create/project-template-path.js +1 -1
  184. package/lib/commands/project/create/use-copy-project-template.d.ts +2 -1
  185. package/lib/commands/project/create/use-copy-project-template.js +1 -1
  186. package/lib/commands/project/create/use-format-code.js +1 -1
  187. package/lib/commands/project/create/use-install-dependencies.js +1 -1
  188. package/lib/commands/project/index.js +1 -1
  189. package/lib/commands/project/upgrade.js +1 -1
  190. package/lib/commands/registry.js +1 -1
  191. package/lib/commands/role/create.js +1 -1
  192. package/lib/commands/role/delete.js +1 -1
  193. package/lib/commands/role/detail.js +1 -1
  194. package/lib/commands/role/index.js +1 -1
  195. package/lib/commands/role/list.js +1 -1
  196. package/lib/commands/role/shared.js +1 -1
  197. package/lib/commands/role/update.js +1 -1
  198. package/lib/commands/role/user-add.js +1 -1
  199. package/lib/commands/role/user-remove.js +1 -1
  200. package/lib/commands/role/user-resolve.js +1 -1
  201. package/lib/commands/run/index.js +1 -1
  202. package/lib/commands/schema.js +1 -1
  203. package/lib/commands/sql/create.js +1 -1
  204. package/lib/commands/sql/delete.js +1 -1
  205. package/lib/commands/sql/detail.js +1 -1
  206. package/lib/commands/sql/exec.js +1 -1
  207. package/lib/commands/sql/index.js +1 -1
  208. package/lib/commands/sql/list.js +1 -1
  209. package/lib/commands/sql/pull.js +1 -1
  210. package/lib/commands/sql/push.js +1 -1
  211. package/lib/commands/sql/shared.js +1 -1
  212. package/lib/commands/sql/status.js +1 -1
  213. package/lib/commands/sql/validate.js +1 -1
  214. package/lib/commands/task/index.js +1 -1
  215. package/lib/commands/task/status.js +1 -1
  216. package/lib/commands/tenant/index.js +1 -1
  217. package/lib/commands/tenant/members-list.js +1 -1
  218. package/lib/commands/tenant/shared.js +1 -1
  219. package/lib/commands/user-account/dingding-sandbox-bind.js +1 -1
  220. package/lib/commands/user-account/index.js +1 -1
  221. package/lib/commands/workspace/add.js +1 -1
  222. package/lib/commands/workspace/index.js +1 -1
  223. package/lib/commands/workspace/remove.js +1 -1
  224. package/lib/config/schema.js +1 -1
  225. package/lib/constant/cdn.d.ts +2 -0
  226. package/lib/constant/cdn.js +1 -1
  227. package/lib/constant/cli.js +1 -1
  228. package/lib/constant/defaults.js +1 -1
  229. package/lib/constant/domain.js +1 -1
  230. package/lib/constant/env.js +1 -1
  231. package/lib/constant/output.js +1 -1
  232. package/lib/constant/paths.js +1 -1
  233. package/lib/constant/risk.js +1 -1
  234. package/lib/context/app-resolver.js +1 -1
  235. package/lib/context/auth-resolver.js +1 -1
  236. package/lib/context/config-loader.js +1 -1
  237. package/lib/context.d.ts +1 -1
  238. package/lib/context.js +1 -1
  239. package/lib/core/alias-resolver.js +1 -1
  240. package/lib/core/api-client.d.ts +29 -2
  241. package/lib/core/api-client.js +1 -1
  242. package/lib/core/bff/config.js +1 -1
  243. package/lib/core/bff/file-system.js +1 -1
  244. package/lib/core/bff/hash.js +1 -1
  245. package/lib/core/bff/lock.js +1 -1
  246. package/lib/core/bff/utils.js +1 -1
  247. package/lib/core/db-resolver.js +1 -1
  248. package/lib/core/page/file-system.js +1 -1
  249. package/lib/core/page/hash.js +1 -1
  250. package/lib/core/page/lock.js +1 -1
  251. package/lib/core/sql-index-auditor.js +1 -1
  252. package/lib/core/sql-sync/config.js +1 -1
  253. package/lib/core/sql-sync/file-system.js +1 -1
  254. package/lib/core/sql-sync/hash.js +1 -1
  255. package/lib/core/sql-sync/lock.js +1 -1
  256. package/lib/core/sql-sync/utils.js +1 -1
  257. package/lib/core/sql-validator.js +1 -1
  258. package/lib/errors.js +1 -1
  259. package/lib/framework/build-all-flags.js +1 -1
  260. package/lib/framework/error-output.js +1 -1
  261. package/lib/framework/explicit-yes.js +1 -1
  262. package/lib/framework/flags.js +1 -1
  263. package/lib/framework/help.js +1 -1
  264. package/lib/framework/index.js +1 -1
  265. package/lib/framework/output.js +1 -1
  266. package/lib/framework/response.js +1 -1
  267. package/lib/framework/runner-alias.js +1 -1
  268. package/lib/framework/runner.js +1 -1
  269. package/lib/framework/schema-export.js +1 -1
  270. package/lib/framework/types.js +1 -1
  271. package/lib/generated/build-info.d.ts +4 -4
  272. package/lib/generated/build-info.js +1 -1
  273. package/lib/help.js +1 -1
  274. package/lib/postinstall.js +1 -1
  275. package/lib/runtime/confirmation.js +1 -1
  276. package/lib/runtime/event.js +1 -1
  277. package/lib/runtime/index.js +1 -1
  278. package/lib/runtime/queue.js +1 -1
  279. package/lib/runtime/resolve.js +1 -1
  280. package/lib/skills/builtin-skill.js +1 -1
  281. package/lib/skills/main.js +1 -1
  282. package/lib/skills/npx-skills-add.js +1 -1
  283. package/lib/skills/skill-presence.js +1 -1
  284. package/lib/telemetry/cli-command-trace.js +1 -1
  285. package/lib/telemetry/cli-help-trace.js +1 -1
  286. package/lib/telemetry/ensure-cli-otel-config.js +1 -1
  287. package/lib/telemetry/register-otel-exit-shutdown.js +1 -1
  288. package/lib/telemetry/send-cli-trace-log.js +1 -1
  289. package/lib/telemetry/send-platform-issue-collect-log.js +1 -1
  290. package/lib/utils/ai_config.js +1 -1
  291. package/lib/utils/apply-jq-filter.js +1 -1
  292. package/lib/utils/cdn-config.js +1 -1
  293. package/lib/utils/check-sdk-version.js +1 -1
  294. package/lib/utils/cli-version-check.js +1 -1
  295. package/lib/utils/cli-version-policy.d.ts +13 -0
  296. package/lib/utils/cli-version-policy.js +1 -1
  297. package/lib/utils/config.js +1 -1
  298. package/lib/utils/entity-with-id.js +1 -1
  299. package/lib/utils/file-utils.js +1 -1
  300. package/lib/utils/guides-cdn.js +1 -1
  301. package/lib/utils/http-client.js +1 -1
  302. package/lib/utils/is-non-interactive.js +1 -1
  303. package/lib/utils/logger.js +1 -1
  304. package/lib/utils/params.js +1 -1
  305. package/lib/utils/platform.js +1 -1
  306. package/lib/utils/rules-cdn.js +1 -1
  307. package/lib/utils/sleep.js +1 -1
  308. package/lib/utils/template-replacer.js +1 -1
  309. package/lib/utils/update-notice.js +1 -1
  310. package/lib/utils/version.js +1 -1
  311. package/lib/utils/with-active-cookie.js +1 -1
  312. package/lib/utils/write-cli-side-channel.js +1 -1
  313. package/package.json +9 -4
  314. package/skills/rabetbase/SKILL.md +33 -22
  315. package/skills/rabetbase/guides/backend-function.md +5 -3
  316. package/skills/rabetbase/guides/bff-creation-workflow.md +2 -2
  317. package/skills/rabetbase/guides/conflict-detection.md +2 -2
  318. package/skills/rabetbase/guides/database-connection-workflow.md +39 -5
  319. package/skills/rabetbase/guides/react-custom-page-workflow.md +16 -4
  320. package/skills/rabetbase/guides/sql-creation-workflow.md +4 -2
  321. package/skills/rabetbase/guides/sql-mybatis.md +2 -2
  322. package/skills/rabetbase/knowledge/page-schema/YtPage.md +3 -37
  323. package/skills/rabetbase/knowledge/react-page/generation-standards.md +14 -3
  324. package/skills/rabetbase/references/rabetbase-app-config.md +2 -2
  325. package/skills/rabetbase/references/rabetbase-bff-push.md +4 -5
  326. package/skills/rabetbase/references/rabetbase-bff-save.md +3 -3
  327. package/skills/rabetbase/references/rabetbase-config.md +2 -2
  328. package/skills/rabetbase/references/rabetbase-db-analyze.md +2 -2
  329. package/skills/rabetbase/references/rabetbase-db-detail.md +3 -0
  330. package/skills/rabetbase/references/rabetbase-db-diff-refresh.md +53 -0
  331. package/skills/rabetbase/references/rabetbase-db-diff.md +40 -21
  332. package/skills/rabetbase/references/rabetbase-db-list.md +1 -1
  333. package/skills/rabetbase/references/rabetbase-kb.md +5 -3
  334. package/skills/rabetbase/references/rabetbase-menu-asset-update.md +9 -10
  335. package/skills/rabetbase/references/rabetbase-menu-external-link-update.md +1 -3
  336. package/skills/rabetbase/references/rabetbase-menu-regroup-start.md +2 -3
  337. package/skills/rabetbase/references/rabetbase-notification-config-list.md +2 -2
  338. package/skills/rabetbase/references/rabetbase-notification-config-mutations.md +56 -0
  339. package/skills/rabetbase/references/rabetbase-page-react-detail.md +1 -1
  340. package/skills/rabetbase/references/rabetbase-page-react-list.md +1 -1
  341. package/skills/rabetbase/references/rabetbase-page-react-publish.md +2 -2
  342. package/skills/rabetbase/references/rabetbase-project-create.md +3 -0
  343. package/skills/rabetbase/references/rabetbase-run.md +1 -1
  344. package/skills/rabetbase/references/rabetbase-sql-create.md +1 -1
  345. package/skills/rabetbase/references/rabetbase-sql-push.md +3 -4
  346. package/skills/rabetbase/references/rabetbase-user-account.md +0 -1
  347. package/skills/rabetbase.manifest.json +5 -5
  348. package/templates/README.md +14 -2
  349. package/lib/commands/project/create/non-interactive.d.ts +0 -9
  350. package/lib/commands/project/create/non-interactive.js +0 -1
  351. package/lib/utils/copy-directory.d.ts +0 -1
  352. package/lib/utils/copy-directory.js +0 -1
  353. package/skills/rabetbase/knowledge/page-schema/LrSmartEcharts.md +0 -291
  354. package/skills/rabetbase/knowledge/page-schema/LrSmartStatistic.md +0 -223
  355. package/templates/projects/sub-app-react-demo/.prettierrc +0 -1
  356. package/templates/projects/sub-app-react-demo/CHANGELOG.md +0 -67
  357. package/templates/projects/sub-app-react-demo/README.md +0 -246
  358. package/templates/projects/sub-app-react-demo/docs/quick-start.md +0 -245
  359. package/templates/projects/sub-app-react-demo/index.html +0 -27
  360. package/templates/projects/sub-app-react-demo/package.json +0 -34
  361. package/templates/projects/sub-app-react-demo/public/logo.svg +0 -1
  362. package/templates/projects/sub-app-react-demo/public/vite.svg +0 -1
  363. package/templates/projects/sub-app-react-demo/src/api/api.ts +0 -26
  364. package/templates/projects/sub-app-react-demo/src/api/client.ts +0 -32
  365. package/templates/projects/sub-app-react-demo/src/components/demo-page-container/DemoPageContainer.module.css +0 -28
  366. package/templates/projects/sub-app-react-demo/src/components/demo-page-container/DemoPageContainer.tsx +0 -55
  367. package/templates/projects/sub-app-react-demo/src/layouts/MainLayout.tsx +0 -308
  368. package/templates/projects/sub-app-react-demo/src/main.tsx +0 -52
  369. package/templates/projects/sub-app-react-demo/src/pages/dashboard/index.tsx +0 -570
  370. package/templates/projects/sub-app-react-demo/src/pages/data-screen/index.tsx +0 -531
  371. package/templates/projects/sub-app-react-demo/src/pages/index.module.css +0 -500
  372. package/templates/projects/sub-app-react-demo/src/pages/index.tsx +0 -641
  373. package/templates/projects/sub-app-react-demo/src/pages/sdk-demo/index.tsx +0 -536
  374. package/templates/projects/sub-app-react-demo/src/pages/workbench/index.module.css +0 -295
  375. package/templates/projects/sub-app-react-demo/src/pages/workbench/index.tsx +0 -242
  376. package/templates/projects/sub-app-react-demo/src/router/index.tsx +0 -30
  377. package/templates/projects/sub-app-react-demo/src/style.css +0 -108
  378. package/templates/projects/sub-app-react-demo/src/utils/api.ts +0 -12
  379. package/templates/projects/sub-app-react-demo/src/vite-env.d.ts +0 -2
  380. package/templates/projects/sub-app-react-demo/tsconfig.json +0 -26
  381. package/templates/projects/sub-app-react-demo/vite.config.ts +0 -111
@@ -226,7 +226,7 @@ rabetbase dataset detail --code <datasetCode> --format compress \
226
226
 
227
227
  确认无误后执行:
228
228
 
229
- * `rabetbase bff push --yes --type <type> --name <name> --format json`
229
+ * `rabetbase bff push --type <type> --name <name> --format json`
230
230
 
231
231
  如果目标是同步远端到本地,则执行:
232
232
 
@@ -387,12 +387,12 @@ const rows = aggregateResult.tableData;
387
387
  | `groupBy` | 不支持 | 使用真实数据集字段 |
388
388
  | `orderBy` | 支持 | 可以引用聚合输出别名 |
389
389
 
390
- 需要按聚合结果过滤且 `aggregate()` 无法用真实字段表达时,使用已配置的 Custom SQL。不要在运行时静默切换到 Custom SQL,也不要动态拼接 SQL。
390
+ 需要按聚合结果过滤且 `aggregate()` 无法用真实字段表达时,使用已发布的 Custom SQL。不要在运行时静默切换到 Custom SQL,也不要动态拼接 SQL。
391
391
 
392
392
  选型规则:
393
393
 
394
394
  * 单个 `DB_TABLE` 数据集的简单聚合优先使用 `aggregate()`,不要先写 Custom SQL
395
- * 只有 JOIN、跨表统计、数据库特有函数或 `aggregate()` 无法表达的查询才使用已配置的 Custom SQL
395
+ * 只有 JOIN、跨表统计、数据库特有函数或 `aggregate()` 无法表达的查询才使用已发布的 Custom SQL
396
396
  * `aggregate()` 返回值与 `filter()` 一样,从 `.tableData` 读取数据,不要按 SQL 数组返回值处理
397
397
  * `METADATA` 数据集不支持 `aggregate()` 或 Custom SQL;不要在失败后静默降级为动态 SQL
398
398
 
@@ -555,6 +555,8 @@ export default async function runBusinessFlow(params, context) {
555
555
 
556
556
  ## SQL 调用规则
557
557
 
558
+ BFF 入参使用业务参数;需要执行 SQL 时,通过已发布 Custom SQL 的 `sqlCode` + `params` 调用。执行失败时保留并报告原始错误,根据 SQL 资源状态、参数与权限定位问题。
559
+
558
560
  在 BFF 中使用:
559
561
 
560
562
  ```javascript
@@ -87,7 +87,7 @@ rabetbase dataset detail --code <数据集编码> --format compress \
87
87
  * dry-run 不会上传远端,也不会改 lock
88
88
 
89
89
  ### 8. 推送到平台
90
- 执行 `rabetbase bff push --yes --type <type> --name <name> --format json`:
90
+ 执行 `rabetbase bff push --type <type> --name <name> --format json`:
91
91
  * 成功项进入 `uploaded`
92
92
  * 未变更项进入 `skipped: unchanged`
93
93
  * 失败项进入 `failed`
@@ -131,7 +131,7 @@ lovrabet bff exec --appcode <appCode> --name <functionName> --params '<json>' --
131
131
 
132
132
  ## 修改已有脚本
133
133
 
134
- `rabetbase bff list --format json` → `rabetbase bff detail --id <id> --format json` 拉最新内容 → 如需覆盖本地则 `bff pull` → 修改本地文件 → `bff status` → `bff push --yes`
134
+ `rabetbase bff list --format json` → `rabetbase bff detail --id <id> --format json` 拉最新内容 → 如需覆盖本地则 `bff pull` → 修改本地文件 → `bff status` → `bff push`
135
135
 
136
136
  ## BFF 语义差异
137
137
 
@@ -61,8 +61,8 @@
61
61
  |------|----------------|-------------|
62
62
  | `sql create --dry-run` 成功 | 否 | 说明只是预览,尚未创建远端 SQL |
63
63
  | `bff create` 成功 | 否 | 说明本地脚手架已生成,尚未推送远端 |
64
- | `sql push --yes` 成功 | 是 | 告知已同步远端,可附带 sqlCode / 路径 |
65
- | `bff push --yes` 成功 | 是 | 告知已推送远端,可附带 lockKey / 名称 |
64
+ | `sql push` 成功 | 是 | 告知已同步远端,可附带 sqlCode / 路径 |
65
+ | `bff push` 成功 | 是 | 告知已推送远端,可附带 lockKey / 名称 |
66
66
  | `blocked: true` / `action: blocked` | 否 | 明确说平台未保存,提示手动处理或联系相关人 |
67
67
  | 校验失败 / validation error | 否 | 说明未写入远端,先修内容或参数 |
68
68
  ## blocked 场景
@@ -38,6 +38,39 @@ trace/plan → 见下一节(分析任务专用)
38
38
 
39
39
  ## 推荐流程(Agent)
40
40
 
41
+ ### 差异读取策略(所有流程共用)
42
+
43
+ ```text
44
+ db detail --id <id>
45
+ → 读取 data.tableCount
46
+
47
+ 用户明确要求实时/强制刷新:
48
+ → 无论 tableCount 多少,走“刷新后读取”
49
+
50
+ 用户明确要求不刷新:
51
+ → 直接读取;tableCount > 200 时提示结果可能滞后
52
+
53
+ 用户未指定:
54
+ tableCount <= 200 → 直接读取
55
+ tableCount > 200 → 刷新后读取
56
+ tableCount 缺失 → 直接读取并说明新鲜度未知,不隐式写入
57
+
58
+ 直接读取:
59
+ db diff --id <id> --all --changed-only
60
+
61
+ 刷新后读取:
62
+ db diff-refresh-start --id <id>
63
+ → 只提交一次,保存 data.traceId
64
+ db diff-refresh-status --id <id> --plan <同一 traceId>
65
+ → 非终态只重复查询同一 traceId
66
+ → SUCCESS 后执行 data.lookup.command
67
+ → FAILED / CANCELLED 停止,不自动重提
68
+ ```
69
+
70
+ `tableCount <= 200` 时服务端通常实时计算默认差异视角,刷新收益很小。`tableCount > 200` 时服务端可能读取最近差异快照,刷新可以降低滞后。`db diff --view all` 是实时全部表分页,用于查看无差异表或主动重新分析已有表,不需要先刷新快照。
71
+
72
+ 差异刷新与 schema 分析是两个独立任务:`diff-refresh-*` 只刷新差异事实,`analyze-*` 才把选中表同步为数据集。两类 traceId 不得混用。
73
+
41
74
  ### A. 取消已有任务
42
75
 
43
76
  ```text
@@ -59,7 +92,7 @@ db list --format compress
59
92
  → 记下目标 connections[].id
60
93
  db test --id <id>
61
94
  db tables --id <id>
62
- db diff --id <id> # 可选:看与上次分析的 schema 差异
95
+ 按“差异读取策略”执行 db diff # 可选:看与上次分析的 schema 差异
63
96
  ```
64
97
 
65
98
  ### C. 新建连接并跑分析
@@ -71,7 +104,7 @@ db test --id <id> # 可选
71
104
  db analyze-start --id <id>
72
105
  → 记下 data.planId;把 data.links.erPage 返回给用户确认 ER 图
73
106
  db analyze-status --id <id> --plan <planId> # 轮询直到终态
74
- → data.isTerminal=true 后复跑 db diff,确认目标差异收敛
107
+ → data.isTerminal=true 后按“差异读取策略”复查,确认目标差异收敛
75
108
  → 检查并返回 data.links.erPage,引导用户确认 ER 图与数据集同步结果
76
109
  ```
77
110
 
@@ -79,7 +112,7 @@ db analyze-status --id <id> --plan <planId> # 轮询直到终态
79
112
 
80
113
  ```text
81
114
  db detail --id <id>
82
- db diff --id <id> --all --changed-only
115
+ 按“差异读取策略”刷新或直接执行 db diff --id <id> --all --changed-only
83
116
  → 只取 data.toAnalyzeTables;用户要求跳过的表先从列表中剔除
84
117
  db analyze-batch-plan --id <id> --tables <toAnalyzeTables> --format compress
85
118
  → 保存 data.batches;这是本地 batch plan,不是服务端任务 plan
@@ -101,7 +134,7 @@ db analyze-batch-plan --id <id> --tables <toAnalyzeTables> --format compress
101
134
  → 未知状态:停止自动推进并报告,不猜测为终态
102
135
 
103
136
  全部批次处理完毕:
104
- db diff --id <id> --all --changed-only
137
+ 按“差异读取策略”刷新或直接执行 db diff --id <id> --all --changed-only
105
138
  → 重新读取完整事实;目标差异收敛后才算本轮分析完成
106
139
  → 仍未收敛则只对剩余非删除表进入下面的逐表恢复
107
140
  ```
@@ -117,7 +150,7 @@ db diff --id <id> --all --changed-only
117
150
  → 到达终态后才处理下一张表
118
151
 
119
152
  全部单表任务结束后:
120
- db diff --id <id> --all --changed-only
153
+ 按“差异读取策略”刷新或直接执行 db diff --id <id> --all --changed-only
121
154
  → 以最终 `db diff --all --changed-only` 的 data.toAnalyzeTables 判断是否收敛
122
155
  → 已尝试的剩余表只恢复一次,不再次循环提交
123
156
  ```
@@ -156,6 +189,7 @@ db delete --id <id> --yes # high-risk-write,非交互必须 --yes
156
189
 
157
190
  - **写 SQL 前要 `dbId`**:`dataset detail --code …` 里 `db.id`;或 `db list` 的 `id` 与数据集侧 `dbId` 对应。
158
191
  - **看模型关系**:用 `dataset relations`;物理库连接和表清单仍用 `db list` / `db tables` 对照。
192
+ - **查看所有数据表**:使用 `db diff --view all`;默认 `db diff` 只读取差异结果。
159
193
  - **给用户确认页面**:DB 更新或分析完成后返回 `data.links.erPage`;新建连接后返回 `data.links.databasePage`。
160
194
  - **不确定 flags**:`rabetbase schema`(无需登录)查契约。
161
195
 
@@ -7,6 +7,7 @@
7
7
  适用于以下目标:
8
8
 
9
9
  - 新建或修改 React 自定义页面、看板、门户、落地页或复杂交互页面
10
+ - 使用 ECharts 实现图表、统计卡片和数据大屏
10
11
 
11
12
  ## 前置上下文
12
13
 
@@ -94,6 +95,8 @@ page react-create
94
95
 
95
96
  ## 数据与服务契约
96
97
 
98
+ 图表与统计场景使用 `page react-create/update/publish` 管理的 React JSX 页面,呈现层直接使用白名单内的 `echarts@5`。
99
+
97
100
  ### 选型
98
101
 
99
102
  根据页面的实际业务需求选择数据访问方式,不要为了简单查询引入 SQL 或 BFF:
@@ -101,10 +104,12 @@ page react-create
101
104
  | 方式 | 适用场景 | 边界 |
102
105
  | --- | --- | --- |
103
106
  | 单一数据集请求 | 只涉及一个数据集的查询、详情、分页、筛选、创建、更新或删除 | 严格按照当前数据集 API-doc 返回的调用说明实现,不得自行推测或自由发挥调用标识、方法、字段、参数、返回值或异常处理 |
104
- | 自定义 SQL | 需要组合多个数据集,或需要数据库完成关联、聚合、分组、排序、计算和复杂筛选 | 先确认 SQL 资源、参数和执行结果,再按 `@lovrabet/sdk` 规范调用;不要在页面中拼接 SQL,也不要把 CLI 的 `data.rows` 当作运行时返回结构 |
105
- | BFF | 需要注入业务校验、数据转换、加密、条件分支、多步业务编排或外部服务调用 | 将业务逻辑放入已确认的 BFF,由页面通过 SDK 调用;简单数据集请求或单纯数据关联不应额外包装成 BFF |
107
+ | Custom SQL | 需要组合多个数据集,或需要数据库完成关联、聚合、分组、排序、计算和复杂筛选 | 先复用或按 SQL 工作流创建、校验并发布 Custom SQL,再通过 `client.sql.execute({ sqlCode, params })` 调用;不要把 CLI 的 `data.rows` 当作运行时返回结构 |
108
+ | BFF | 需要按当前用户、角色、数据范围或业务规则额外鉴权,或需要数据转换、条件分支、多步编排和外部服务调用 | 将校验和编排放入已确认的 BFF,由页面通过 SDK 调用;前端只传业务参数,BFF 内按需执行已发布的 Custom SQL;简单查询不额外包装成 BFF |
109
+
110
+ 判断顺序:先确认单一数据集请求能否满足需求;数据组合和数据库计算是主要问题时选择 Custom SQL;当前用户、角色、数据范围或业务规则需要额外控制时选择 BFF。三种方式可以根据已确认的 SDK 契约配合使用,但不得自行推测方法、参数或返回结构。
106
111
 
107
- 判断顺序:先确认单一数据集请求能否满足需求;数据组合和数据库计算是主要问题时选择自定义 SQL;业务规则、数据处理流程或外部服务协同是主要问题时选择 BFF。三种方式可以根据已确认的 SDK 契约配合使用,但不得自行推测方法、参数或返回结构。
112
+ 页面和 BFF 通过已发布 Custom SQL 的 `sqlCode` + `params` 执行查询。Dataset、Custom SQL 或 BFF 执行失败时,保留并报告原始错误,根据资源状态、参数与权限定位问题。
108
113
 
109
114
  页面需要读取或写入数据集时,先按以下顺序确认事实:
110
115
 
@@ -115,7 +120,7 @@ page react-create
115
120
 
116
121
  页面需要调用自定义 SQL 或 BFF 时,先通过当前 CLI 获取目标资源事实:
117
122
 
118
- 1. SQL:执行 `rabetbase sql list`,再执行 `rabetbase sql detail --sqlcode <sqlCode>` 确认目标 SQL
123
+ 1. SQL:先执行 `rabetbase sql list` 查找可复用 SQL;命中后执行 `rabetbase sql detail --sqlcode <sqlCode>` 确认目标 SQL。没有满足需求的 SQL 时,先阅读并遵循 [`sql-creation-workflow.md`](sql-creation-workflow.md) 与 [`sql-mybatis.md`](sql-mybatis.md),完成其中规定的流程后,再使用服务端生成的 `sqlCode` 编写页面
119
124
  2. BFF:执行 `rabetbase bff list`,再执行 `rabetbase bff detail --id <id>` 确认目标脚本
120
125
  3. 按 `@lovrabet/sdk` 的使用规范实现 `client.sql` 或 `client.bff` 调用,不得根据 CLI 返回结构猜测页面调用参数或返回值
121
126
  4. 页面使用自定义 SQL 前,使用代表性参数执行 `rabetbase sql exec --sqlcode <sqlCode> --params <json> --format json`,确认执行没有报错并检查实际数据结构
@@ -123,6 +128,13 @@ page react-create
123
128
 
124
129
  当前 CLI 没有按单个数据集返回页面数据访问说明的专用命令。在页面中使用 `client` 前,必须以数据集、SQL 或 BFF 的事实,以及对应的 `@lovrabet/sdk` 使用规范为依据;无法确认的字段、接口路径和响应结构不得猜测。
125
130
 
131
+ ### ECharts 呈现层
132
+
133
+ - 在 React 页面中直接使用白名单内的 `echarts@5` 构建图表;按组件生命周期初始化、更新和销毁实例。
134
+ - ECharts 只消费页面已经取得的业务数据,不负责访问数据库、执行 SQL 或做权限判断。
135
+ - `page react-*` 页面与 `project create` 微前端模板是不同运行环境;前者不得因为模板示例使用了包装库,就引入白名单外依赖。
136
+ - 图表查询使用 Dataset、`client.sql.execute({ sqlCode, params })` 或受控 BFF,并完整处理加载、空态、失败和重试行为。
137
+
126
138
  ## 页面开发参考
127
139
 
128
140
  编写页面内容前,先阅读 [`generation-standards.md`](../knowledge/react-page/generation-standards.md)。
@@ -6,10 +6,12 @@
6
6
 
7
7
  平台是唯一 source of truth。团队长期维护 SQL 时,优先使用 **本地同步工作流**:`sql create / pull / status / push / delete` + `.rabetbase/sql.lock.json`。
8
8
 
9
+ SQL 内容编写、参数绑定与 MyBatis 语法以 [`sql-mybatis.md`](sql-mybatis.md) 为准。页面和 BFF 执行已发布的 Custom SQL 时使用 `sqlCode` + `params`。
10
+
9
11
  ## 工作流
10
12
 
11
13
  ```
12
- 确认需求 → [按需]查现有 SQL → 校验字段 → 拉/落本地(pull/new)→ 编辑本地文件 → [建议]validate → status → push/delete → detail/exec 验证
14
+ 确认需求 → [按需]查现有 SQL → 校验字段 → 拉/落本地(pull/create)→ 编辑本地文件 → [建议]validate → status → push/delete → detail/exec 验证
13
15
  ```
14
16
 
15
17
  ### 1. 确认需求
@@ -114,7 +116,7 @@ rabetbase sql push --sqlcode <sqlCode> --dry-run --format json
114
116
  确认无误后正式执行:
115
117
 
116
118
  ```bash
117
- rabetbase sql push --sqlcode <sqlCode> --yes --format json
119
+ rabetbase sql push --sqlcode <sqlCode> --format json
118
120
  ```
119
121
 
120
122
  补充规则:
@@ -42,11 +42,11 @@
42
42
  * **用途**:确认当前本地文件是否被识别为 `modified` / `added` / `missing` / `unchanged`。
43
43
  * **动作**:若状态与预期不符,先解释原因再继续,不要跳过状态检查直接推送。
44
44
 
45
- ### 6. `rabetbase sql push --sqlcode xxx --dry-run|--yes --format json`
45
+ ### 6. `rabetbase sql push --sqlcode xxx [--dry-run] --format json`
46
46
  * **用途**:将同步目录中的本地文件上传到平台。
47
47
  * **动作**:
48
48
  * 先 `--dry-run` 看预览
49
- * `--yes` 正式执行
49
+ * 再移除 `--dry-run` 正式执行
50
50
  * **补充**:
51
51
  * 文件名变化会驱动远端 `sqlName` 更新
52
52
  * 文件移动到新的数据库目录时,会尝试按目录重绑 `dbId`
@@ -14,7 +14,7 @@ tags: [page, layout, page-schema]
14
14
 
15
15
  | 类型 | 判断条件 | 特点 | 场景 |
16
16
  |------|----------|------|------|
17
- | 磁贴布局 | 包含 `YtRglContainer` | 网格定位、支持并排 | 仪表盘、数据看板 |
17
+ | 磁贴布局 | 包含 `YtRglContainer` | 网格定位、支持并排 | 多区域表单、列表与详情组合 |
18
18
  | 流式布局 | 无 `YtRglContainer` | 上下排列 | 表单页、详情页 |
19
19
 
20
20
  ---
@@ -56,7 +56,6 @@ tags: [page, layout, page-schema]
56
56
  |------|------|
57
57
  | 每行总宽度 | 必须为 12 |
58
58
  | Filter/Table | 必须独占一行(w: 12) |
59
- | 图表并排 | 两个图表各占 w: 6 |
60
59
 
61
60
  ---
62
61
 
@@ -83,31 +82,6 @@ tags: [page, layout, page-schema]
83
82
 
84
83
  ## 常见布局场景
85
84
 
86
- ### 并排图表
87
-
88
- ```json
89
- {
90
- "RGLlayout": [
91
- {"i": "chart1", "w": 6, "h": 20, "x": 0, "y": 0},
92
- {"i": "chart2", "w": 6, "h": 20, "x": 6, "y": 0}
93
- ]
94
- }
95
- ```
96
-
97
- ### 统计卡 + 图表
98
-
99
- ```json
100
- {
101
- "RGLlayout": [
102
- {"i": "stat1", "w": 3, "h": 10, "x": 0, "y": 0},
103
- {"i": "stat2", "w": 3, "h": 10, "x": 3, "y": 0},
104
- {"i": "stat3", "w": 3, "h": 10, "x": 6, "y": 0},
105
- {"i": "stat4", "w": 3, "h": 10, "x": 9, "y": 0},
106
- {"i": "chart1", "w": 12, "h": 20, "x": 0, "y": 10}
107
- ]
108
- }
109
- ```
110
-
111
85
  ### Filter + Table
112
86
 
113
87
  ```json
@@ -151,19 +125,11 @@ tags: [page, layout, page-schema]
151
125
  "componentName": "YtRglContainer",
152
126
  "props": {
153
127
  "RGLlayout": [
154
- {"i": "node_stat1", "w": 3, "h": 8, "x": 0, "y": 0},
155
- {"i": "node_stat2", "w": 3, "h": 8, "x": 3, "y": 0},
156
- {"i": "node_stat3", "w": 3, "h": 8, "x": 6, "y": 0},
157
- {"i": "node_stat4", "w": 3, "h": 8, "x": 9, "y": 0},
158
- {"i": "node_filter", "w": 12, "h": 10, "x": 0, "y": 8, "autoHeight": true},
159
- {"i": "node_table", "w": 12, "h": 30, "x": 0, "y": 18}
128
+ {"i": "node_filter", "w": 12, "h": 10, "x": 0, "y": 0, "autoHeight": true},
129
+ {"i": "node_table", "w": 12, "h": 30, "x": 0, "y": 10}
160
130
  ]
161
131
  },
162
132
  "children": [
163
- {"id": "node_stat1", "componentName": "LrSmartStatistic"},
164
- {"id": "node_stat2", "componentName": "LrSmartStatistic"},
165
- {"id": "node_stat3", "componentName": "LrSmartStatistic"},
166
- {"id": "node_stat4", "componentName": "LrSmartStatistic"},
167
133
  {"id": "node_filter", "componentName": "LrSmartFilter"},
168
134
  {"id": "node_table", "componentName": "LrSmartTable"}
169
135
  ]
@@ -23,6 +23,7 @@
23
23
  | 路由 | 使用 `navigate` 跳转、使用 `location` 读取地址,不使用 `window.location` |
24
24
  | 样式 | 使用 Ant Design CSS 变量,不写死颜色或其他样式常量 |
25
25
  | 数据访问 | `client` 支持当前页面可用的全部 `@lovrabet/sdk` 能力,先确认数据集、SQL 或 BFF 的事实与 SDK 调用方式,再使用 `client` |
26
+ | 图表 | 使用 `echarts@5` 构建图表、统计卡片与数据大屏;ECharts 只负责呈现,不承担数据访问或权限判断 |
26
27
 
27
28
  ### 依赖白名单(严格)
28
29
 
@@ -97,10 +98,18 @@ export default App;
97
98
  | 方式 | 优先考虑的场景 | 使用边界 |
98
99
  | --- | --- | --- |
99
100
  | 单一数据集请求 | 只涉及一个数据集的列表查询、详情读取、分页、筛选、创建、更新或删除,且业务逻辑主要由数据集模型能力完成 | 优先使用 API-doc 中确认过的 `client.models` 方法;不要为简单的数据集操作改用 SQL 或 BFF,也不要猜测未在 API-doc 中出现的字段和参数 |
100
- | 自定义 SQL | 需要一次查询组合多个数据集,或需要数据库完成明确的关联、聚合、分组、排序、计算和复杂筛选 | 先确认 SQL 资源、参数和实际返回结构,再按 SDK 规范调用;不要在页面中拼接 SQL、把 SQL 当作通用业务逻辑容器,或据 CLI 的 `data.rows` 推断运行时返回值 |
101
- | BFF | 需要在数据操作生命周期中注入业务校验、转换、加密、条件分支、多步编排,或需要调用外部服务 | 将这类业务逻辑放在已确认的 BFF 中,由页面通过 SDK 调用;不要用 BFF 包装本可直接完成的简单 CRUD,也不要在页面中实现应由 BFF 负责的敏感逻辑 |
101
+ | Custom SQL | 需要一次查询组合多个数据集,或需要数据库完成明确的关联、聚合、分组、排序、计算和复杂筛选 | 先复用或按 SQL 工作流创建、校验并发布 Custom SQL,再通过 `client.sql.execute({ sqlCode, params })` 调用;不要在页面中拼接 SQL、把 SQL 当作通用业务逻辑容器,或据 CLI 的 `data.rows` 推断运行时返回值 |
102
+ | BFF | 需要基于当前用户、角色、数据范围或业务规则额外鉴权,或需要转换、加密、条件分支、多步编排和外部服务 | 将校验与业务逻辑放在已确认的 BFF 中,由页面通过 SDK 调用;前端只传业务参数,BFF 内按需执行已发布的 Custom SQL;不要用 BFF 包装本可直接完成的简单查询 |
102
103
 
103
- 选择顺序:先判断单一数据集请求是否能直接满足需求;仅在数据组合或数据库计算是主要问题时使用自定义 SQL;当核心问题是业务规则、数据处理流程或外部服务协同时使用 BFF。三种方式的具体方法、参数、返回值和异常形态,均以当前资源事实和 `@lovrabet/sdk` 使用规范为准。
104
+ 选择顺序:先判断单一数据集请求是否能直接满足需求;仅在数据组合或数据库计算是主要问题时使用 Custom SQL;当当前用户、角色、数据范围或业务规则需要额外控制时使用 BFF。三种方式的具体方法、参数、返回值和异常形态,均以当前资源事实和 `@lovrabet/sdk` 使用规范为准。
105
+
106
+ 页面和 BFF 通过已发布 Custom SQL 的 `sqlCode` + `params` 执行查询。执行失败时保留并报告原始错误,根据 SQL 资源状态、参数与权限定位问题。
107
+
108
+ ### 图表与统计页面
109
+
110
+ - 使用 `echarts@5` 构建图表、统计卡片和数据大屏,复用 React 组件生命周期管理图表实例。
111
+ - ECharts option 只负责数据映射与呈现,数据通过 Dataset、已发布的 Custom SQL 或受控 BFF 获取。
112
+ - ECharts 不做权限判断;需要额外用户、角色或数据范围控制时由 BFF 承担。
104
113
 
105
114
  ### 国际化与样式
106
115
 
@@ -161,11 +170,13 @@ const client = useSdkClient();
161
170
 
162
171
  - 数据集模型调用(如 `models.<dataset>`)的调用标识、方法、参数、返回值和异常形态,严格以当前数据集的 API-doc 返回文档为准,不得自行推测或自由发挥
163
172
  - SQL、BFF 及其他非数据集能力的可用方法、参数、返回值和异常形态,均以 `@lovrabet/sdk` 的使用规范为准
173
+ - 页面通过已发布 Custom SQL 的 `sqlCode` + `params` 执行查询
164
174
  - 页面调用 SQL 前,先用 `rabetbase sql list` 与 `rabetbase sql detail --sqlcode <sqlCode>` 确认目标资源
165
175
  - 生成使用自定义 SQL 的页面代码前,使用代表性参数执行 `rabetbase sql exec --sqlcode <sqlCode> --params <json> --format json`。若返回 `data.error`,先解决执行错误;成功后再根据 `data.rows` 与 `data.rowCount` 确认实际数据结构
166
176
  - `sql exec` 仅用于确认 SQL 可执行及返回数据结构。页面代码按 `@lovrabet/sdk` 的使用规范处理 `client.sql` 的返回值,不使用 CLI 输出字段 `data.rows`
167
177
  - 页面调用 BFF 前,先用 `rabetbase bff list` 与 `rabetbase bff detail --id <id>` 确认目标资源
168
178
  - 数据操作需要注入自定义业务逻辑,例如校验、转换或加密时,优先考虑使用 BFF;页面运行时通过 `client` 按 `@lovrabet/sdk` 规范调用已确认的 BFF
179
+ - Dataset、Custom SQL 或 BFF 执行失败时保留并报告原始错误,根据资源状态、参数与权限定位问题
169
180
  - CLI 只用于读取 SQL 与 BFF 的资源事实,页面运行时仍通过 `client` 调用,不在页面中拼接 CLI 命令或平台接口
170
181
  - 不在文档中出现的 dataset 字段、参数名、返回形态、方法名不得猜测
171
182
  - `client` 只是页面内可直接调用的入口,页面侧不在本地重新创建 `createClient` 或重复注册模型
@@ -11,7 +11,7 @@ rabetbase app-config list --format compress
11
11
  rabetbase app-config get <key> --format compress
12
12
  rabetbase app-config get <key> --reveal --format compress
13
13
  rabetbase app-config set <key> --from-env ENV_NAME --dry-run
14
- rabetbase app-config set <key> --from-env ENV_NAME --yes
14
+ rabetbase app-config set <key> --from-env ENV_NAME
15
15
  rabetbase app-config delete <key> --dry-run
16
16
  rabetbase app-config delete <key> --yes
17
17
  ```
@@ -66,7 +66,7 @@ rabetbase app-config set vectorengine.apiKey --file ./secret.txt --dry-run
66
66
  确认 dry-run 的 `operation`、`selector.appCode`、`selector.key`、`before`、`after` 后,再执行正式写入:
67
67
 
68
68
  ```bash
69
- rabetbase app-config set vectorengine.apiKey --from-env VECTORENGINE_API_KEY --yes
69
+ rabetbase app-config set vectorengine.apiKey --from-env VECTORENGINE_API_KEY
70
70
  ```
71
71
 
72
72
  显式位置参数 `<value>` 可用,但不推荐用于敏感值,因为 shell history 可能记录明文。
@@ -2,15 +2,15 @@
2
2
 
3
3
  把本地 BFF 脚本上传到远端。
4
4
 
5
- > **风险等级:high-risk-write** — 必须显式 `--yes`。
5
+ > **风险等级:write** — 建议先使用 `--dry-run` 预览。
6
6
 
7
7
  ## 命令
8
8
 
9
9
  ```bash
10
- rabetbase bff push --yes --format json
11
- rabetbase bff push --yes --type ENDPOINT --name getUserList --format json
10
+ rabetbase bff push --format json
11
+ rabetbase bff push --type ENDPOINT --name getUserList --format json
12
12
  rabetbase bff push --type ENDPOINT --name getUserList --dry-run --format json
13
- rabetbase bff push --yes --type HOOK --name beforeFilter --format json
13
+ rabetbase bff push --type HOOK --name beforeFilter --format json
14
14
  ```
15
15
 
16
16
  ## 参数
@@ -21,7 +21,6 @@ rabetbase bff push --yes --type HOOK --name beforeFilter --format json
21
21
  | `--name <name>` | string | 否 | — | 仅推指定函数名;传时必须搭配 `--type` |
22
22
  | `--force` | boolean | 否 | — | 忽略 hash 保护强制推送 |
23
23
  | `--dry-run` | boolean | 否 | — | 仅预览将要推送的本地脚本 |
24
- | `--yes` | boolean | 是 | — | 跳过高风险确认 |
25
24
  | `--format <fmt>` | string | 否 | `pretty` | 输出格式 |
26
25
 
27
26
  ## 输出
@@ -7,7 +7,7 @@
7
7
  > - 本地创建:`rabetbase bff create`
8
8
  > - 查看状态:`rabetbase bff status`
9
9
  > - 预览上传:`rabetbase bff push --dry-run`
10
- > - 推送远端:`rabetbase bff push --yes`
10
+ > - 推送远端:`rabetbase bff push`
11
11
  > - 拉取远端:`rabetbase bff pull`
12
12
  > - 删除脚本:`rabetbase bff delete --yes --target ...`
13
13
 
@@ -27,7 +27,7 @@ rabetbase bff save --file ./scripts/getUserInfo.js --name getUserInfo --format j
27
27
  rabetbase bff create --type ENDPOINT --name getUserInfo --format json
28
28
  # 编辑 .rabetbase/bff/<appCode>/ENDPOINT/getUserInfo.js
29
29
  rabetbase bff push --dry-run --format json
30
- rabetbase bff push --yes --format json
30
+ rabetbase bff push --format json
31
31
  ```
32
32
 
33
33
  ### 旧“更新已有脚本”
@@ -45,7 +45,7 @@ rabetbase bff pull --format json
45
45
  # 编辑同步目录中的本地文件
46
46
  rabetbase bff status --format json
47
47
  rabetbase bff push --dry-run --format json
48
- rabetbase bff push --yes --format json
48
+ rabetbase bff push --format json
49
49
  ```
50
50
 
51
51
  ## Agent 规则
@@ -87,7 +87,7 @@ CLI 对旧版顶层 `appcode` 仍兼容读取,但它已经不是推荐主模
87
87
  }
88
88
  ```
89
89
 
90
- 每个 app profile 可单独覆盖普通顶层字段。`riskLevel` 是安全例外:默认值为 `high-risk-write`,全局、项目、profile 与环境变量都作为 ceiling,最终取最严格值。CLI 运行时根据 `--app <name>` 或 `defaultApp` 选择激活的 profile
90
+ 每个 app profile 可单独覆盖普通顶层字段。`riskLevel` 是安全例外:默认值为 `write`,全局、项目与 profile 决定基础上限并取最严格值;环境变量只能继续收紧,不能提权。CLI 运行时根据 `--app <name>` 或 `defaultApp` 选择激活的 profile。权限不足时只能提醒用户手动编辑配置;Agent 和自动化脚本不得自行修改 `riskLevel` 或尝试提权。
91
91
 
92
92
  管理命令(声明式 flags,非位置参数):
93
93
 
@@ -112,7 +112,7 @@ rabetbase workspace remove product --yes
112
112
  | `accessKey` | string | — | Access Key 认证(预留,未来替代 cookie) |
113
113
  | `format` | string | — | 默认输出格式。可选值:`json`、`pretty`、`compress`。不设则命令默认 `compress` |
114
114
  | `pageSize` | number | — | 默认分页大小,用于 `sql list` 等分页命令 |
115
- | `riskLevel` | string | `"high-risk-write"` | 允许执行的最高风险等级。可选值:`read`、`write`、`high-risk-write`。兼容旧名 `maxRisk` |
115
+ | `riskLevel` | string | `"write"` | 允许执行的最高风险等级。可选值:`read`、`write`、`high-risk-write`。兼容旧名 `maxRisk` |
116
116
  | `inherit` | boolean | 省略 | 配置继承模式。**省略**(默认):项目主导,仅从全局白名单继承 cookie/accessKey/locale/format/riskLevel/pageSize,不继承 apps/defaultApp/appcode。**`true`**:全量合并全局+项目(旧行为,需显式开启)。**`false`**:普通字段完全隔离;全局 `riskLevel` 仍作为不可绕过的上限 |
117
117
  | `apiDir` | string | `"./src/api"` | `api pull` 生成代码的输出目录 |
118
118
  | `template_base_url` | string | 平台默认 CDN | 模板 CDN 基础 URL,一般无需修改 |
@@ -70,7 +70,7 @@ rabetbase db analyze-status --id 10157 --plan <traceId> --format compress
70
70
 
71
71
  必须按 `index` 严格串行:每批独立调用一次 `analyze-start`,并保存一个独立 `planId`。当前批次为 `PENDING / RUNNING / RETRYING / CANCELING` 时继续查询同一 planId;`SUCCESS` 才直接进入下一批;`PARTIAL_SUCCESS` 记录失败事实后继续;`FAILED / CANCELLED` 停止整个批次编排;未知状态停止自动推进。
72
72
 
73
- 如果 `analyze-start` 没有明确返回 `data.planId`,停止自动推进且不得盲目重试,因为请求结果可能不确定。全部批次结束后重新执行完整 `db diff --all --changed-only`;只对仍在 `data.toAnalyzeTables` 的非删除表逐表串行恢复一次,最后再执行一次完整 diff。
73
+ 如果 `analyze-start` 没有明确返回 `data.planId`,停止自动推进且不得盲目重试,因为请求结果可能不确定。全部批次结束后按 `db detail.tableCount` 的 200 表阈值决定直接读取或先执行 `db diff-refresh-start/status`,再执行完整 `db diff --all --changed-only`;只对仍在 `data.toAnalyzeTables` 的非删除表逐表串行恢复一次,最后按同一策略再读取一次完整 diff。
74
74
 
75
75
  显式单批 `analyze-start --tables` 的持久化参数超过 1024 UTF-8 bytes 时,CLI 会在调用 API 前返回 validation error 并提示先运行 `db analyze-batch-plan`。960 是规划安全预算;960 至 1024 bytes 的显式单批仍允许启动。未传 `--tables` 的全量分析不受此保护影响。
76
76
 
@@ -101,7 +101,7 @@ rabetbase db analyze-status --id 10157 --plan <traceId> --format compress
101
101
  | `data.totalElapsedMs` | 从 `firstStartTime` 到 `endTime` 或当前查询时刻的 plan 墙钟耗时;缺少可靠时间戳时为 `null` |
102
102
  | `data.hasMultipleAttempts` | `firstStartTime` 与 `startTime` 都有效且不相同时为 `true`,表示服务端开启过后续执行尝试 |
103
103
 
104
- `PENDING / RUNNING / RETRYING / CANCELING` 与未知状态都不是终态。不要根据 `failedTables`、`retryCount` 或错误文案推测状态。`PARTIAL_SUCCESS` 只表示任务已到终态;必须复跑 `db diff --all --changed-only` 验证目标差异收敛,才能得出本轮分析完成结论。
104
+ `PENDING / RUNNING / RETRYING / CANCELING` 与未知状态都不是终态。不要根据 `failedTables`、`retryCount` 或错误文案推测状态。`PARTIAL_SUCCESS` 只表示任务已到终态;必须按 200 表阈值刷新或直接复跑 `db diff --all --changed-only` 验证目标差异收敛,才能得出本轮分析完成结论。
105
105
 
106
106
  `analyze-status` 每次只查询一次。轮询时必须继续使用当前任务的同一 `planId`;查询超时、断网或临时 API 失败不等于分析失败,也不得触发新的 `analyze-start`。当前稳定任务状态中没有独立的 `TIMEOUT` 终态。
107
107
 
@@ -5,6 +5,7 @@
5
5
  ## 何时用
6
6
 
7
7
  - 已用 `db list` 拿到 `id`,需要比列表更全的字段
8
+ - 读取 `tableCount`,按 200 张表阈值决定是否先刷新差异结果
8
9
  - 需要当前 **`latestAnalysisTraceId`** 查询最新分析状态;取消已知任务时仍使用正在跟踪的原 planId
9
10
 
10
11
  ## 命令
@@ -23,5 +24,7 @@ rabetbase db detail --id 10157 --format compress
23
24
 
24
25
  ## 参考
25
26
 
27
+ 输出中的 `tableCount` 是当前连接表数量:不大于 200 时通常直接读取 `db diff`;大于 200 时建议先执行 `db diff-refresh-start/status`。字段缺失时不猜测数量,也不隐式刷新。
28
+
26
29
  - [database-connection-workflow.md](../guides/database-connection-workflow.md)
27
30
  - [SKILL.md](../SKILL.md)
@@ -0,0 +1,53 @@
1
+ # db diff-refresh-start / diff-refresh-status
2
+
3
+ 显式刷新服务端数据库表差异结果。`diff-refresh-start` 为 **write**,只提交一次异步任务;`diff-refresh-status` 为 **read**,只查询一次指定 `traceId`。
4
+
5
+ ## 何时刷新
6
+
7
+ - `db detail` 返回 `tableCount > 200`,读取差异前建议刷新。
8
+ - 用户明确要求“实时刷新”或“强制刷新”,无论表数量多少都刷新。
9
+ - `tableCount <= 200` 时服务端通常实时计算差异,默认不刷新。
10
+
11
+ 刷新只影响默认 `db diff` 差异视角;`db diff --view all` 本身就是实时全表分页,不需要先刷新差异快照。
12
+
13
+ ## 命令
14
+
15
+ ```bash
16
+ rabetbase db diff-refresh-start --id 10157 --format compress
17
+ rabetbase db diff-refresh-status --id 10157 --plan <traceId> --format compress
18
+ ```
19
+
20
+ ## 执行规则
21
+
22
+ 1. `diff-refresh-start` 只执行一次并保存 `data.traceId`。
23
+ 2. 若响应没有明确 `traceId`,结果未知,停止且不得自动重提。
24
+ 3. `PENDING / RUNNING / RETRYING` 时继续执行 `data.query.command`,始终查询同一个 traceId。
25
+ 4. `SUCCESS` 时执行 `data.lookup.command`,重新读取刷新后的差异结果。
26
+ 5. `FAILED / CANCELLED` 为失败终态;报告 `data.status.errorMsg`,不得自动重启。
27
+ 6. 未知状态不是终态,停止自动推进或继续只读查询,不猜测成功。
28
+
29
+ ## 输出
30
+
31
+ `diff-refresh-start`:
32
+
33
+ - `data.dbLinkId`
34
+ - `data.traceId`
35
+ - `data.status`
36
+ - `data.query.command`
37
+
38
+ `diff-refresh-status`:
39
+
40
+ - `data.status`:服务端原始任务事实
41
+ - `data.knownStatus`:是否属于已知运行态或终态;未知时为 `false` 且不提供自动查询命令
42
+ - `data.isTerminal`
43
+ - `data.isSuccessful`
44
+ - `data.query`:非终态时的同 traceId 查询命令
45
+ - `data.lookup`:仅成功时返回的 `db diff --all --changed-only` 命令
46
+
47
+ 差异刷新任务与 schema 分析任务不是同一业务动作。不要用 `diff-refresh-start` 代替 `analyze-start`,也不要把刷新成功描述为数据集分析已经完成。
48
+
49
+ ## 参考
50
+
51
+ - [db diff](rabetbase-db-diff.md)
52
+ - [database-connection-workflow.md](../guides/database-connection-workflow.md)
53
+ - [SKILL.md](../SKILL.md)