@lovrabet/rabetbase-cli 2.4.5 → 2.4.6-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 (347) hide show
  1. package/README.md +3 -2
  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/index.js +1 -1
  21. package/lib/commands/app/list.js +1 -1
  22. package/lib/commands/app/members-list.js +1 -1
  23. package/lib/commands/app/remote-directory.js +1 -1
  24. package/lib/commands/app/shared.js +1 -1
  25. package/lib/commands/app-config/delete.js +1 -1
  26. package/lib/commands/app-config/get.js +1 -1
  27. package/lib/commands/app-config/index.js +1 -1
  28. package/lib/commands/app-config/list.js +1 -1
  29. package/lib/commands/app-config/set.js +1 -1
  30. package/lib/commands/app-config/shared.js +1 -1
  31. package/lib/commands/auth/index.js +1 -1
  32. package/lib/commands/bff/create.js +1 -1
  33. package/lib/commands/bff/delete.js +1 -1
  34. package/lib/commands/bff/detail.js +1 -1
  35. package/lib/commands/bff/index.js +1 -1
  36. package/lib/commands/bff/list.js +1 -1
  37. package/lib/commands/bff/pull.js +1 -1
  38. package/lib/commands/bff/push.js +1 -1
  39. package/lib/commands/bff/status.js +1 -1
  40. package/lib/commands/cli-skill/index.js +1 -1
  41. package/lib/commands/cli-update.js +1 -1
  42. package/lib/commands/codegen/index.js +1 -1
  43. package/lib/commands/codegen/sdk.js +1 -1
  44. package/lib/commands/codegen/sql.js +1 -1
  45. package/lib/commands/common/app-registry.js +1 -1
  46. package/lib/commands/common/app-selector.js +1 -1
  47. package/lib/commands/common/async-task.js +1 -1
  48. package/lib/commands/common/dry-run.js +1 -1
  49. package/lib/commands/common/flags.js +1 -1
  50. package/lib/commands/common/local-file.js +1 -1
  51. package/lib/commands/common/validate.js +1 -1
  52. package/lib/commands/config/get.js +1 -1
  53. package/lib/commands/config/index.js +1 -1
  54. package/lib/commands/config/list.js +1 -1
  55. package/lib/commands/config/set.js +1 -1
  56. package/lib/commands/config/shared.js +1 -1
  57. package/lib/commands/data/filter.js +1 -1
  58. package/lib/commands/data/getOne.js +1 -1
  59. package/lib/commands/data/index.js +1 -1
  60. package/lib/commands/data/shared.js +1 -1
  61. package/lib/commands/dataset/business-group-update.js +1 -1
  62. package/lib/commands/dataset/business-groups.js +1 -1
  63. package/lib/commands/dataset/capability.js +1 -1
  64. package/lib/commands/dataset/delete.js +1 -1
  65. package/lib/commands/dataset/detail.js +1 -1
  66. package/lib/commands/dataset/extend-update.js +1 -1
  67. package/lib/commands/dataset/field-update.js +1 -1
  68. package/lib/commands/dataset/generate.js +1 -1
  69. package/lib/commands/dataset/index.js +1 -1
  70. package/lib/commands/dataset/list.js +1 -1
  71. package/lib/commands/dataset/operations.js +1 -1
  72. package/lib/commands/dataset/relation-audit.js +1 -1
  73. package/lib/commands/dataset/relation-create.js +1 -1
  74. package/lib/commands/dataset/relation-delete.js +1 -1
  75. package/lib/commands/dataset/relation-shared.js +1 -1
  76. package/lib/commands/dataset/relation-update.js +1 -1
  77. package/lib/commands/dataset/relations.js +1 -1
  78. package/lib/commands/dataset/rename.js +1 -1
  79. package/lib/commands/dataset/restore.js +1 -1
  80. package/lib/commands/db/analysis-batching.js +1 -1
  81. package/lib/commands/db/analyze-batch-plan.js +1 -1
  82. package/lib/commands/db/analyze-cancel.js +1 -1
  83. package/lib/commands/db/analyze-start.js +1 -1
  84. package/lib/commands/db/analyze-status.js +1 -1
  85. package/lib/commands/db/create.js +1 -1
  86. package/lib/commands/db/delete.js +1 -1
  87. package/lib/commands/db/detail.js +1 -1
  88. package/lib/commands/db/diff-refresh-start.js +1 -1
  89. package/lib/commands/db/diff-refresh-status.js +1 -1
  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.d.ts +8 -7
  131. package/lib/commands/menu/shared/mutations.js +1 -1
  132. package/lib/commands/menu/shared/service.js +1 -1
  133. package/lib/commands/menu/shared/sync-core.js +1 -1
  134. package/lib/commands/menu/shared/types.d.ts +17 -2
  135. package/lib/commands/menu/shared/update-core.js +1 -1
  136. package/lib/commands/menu/shared/valid-url.js +1 -1
  137. package/lib/commands/menu/sync.js +1 -1
  138. package/lib/commands/{page/standard-page-status.d.ts → menu/visibility-update.d.ts} +1 -1
  139. package/lib/commands/menu/visibility-update.js +1 -0
  140. package/lib/commands/notification/config-create.js +1 -1
  141. package/lib/commands/notification/config-delete.js +1 -1
  142. package/lib/commands/notification/config-list.js +1 -1
  143. package/lib/commands/notification/config-update.js +1 -1
  144. package/lib/commands/notification/index.js +1 -1
  145. package/lib/commands/notification/shared.js +1 -1
  146. package/lib/commands/ocr/index.js +1 -1
  147. package/lib/commands/page/create.d.ts +2 -0
  148. package/lib/commands/page/create.js +1 -0
  149. package/lib/commands/page/{react → custom}/detail.d.ts +1 -1
  150. package/lib/commands/page/custom/detail.js +1 -0
  151. package/lib/commands/page/{react → custom}/list.d.ts +1 -1
  152. package/lib/commands/page/custom/list.js +1 -0
  153. package/lib/commands/page/{react → custom}/publish.d.ts +1 -1
  154. package/lib/commands/page/custom/publish.js +1 -0
  155. package/lib/commands/page/{react → custom}/shared.d.ts +15 -15
  156. package/lib/commands/page/custom/shared.js +1 -0
  157. package/lib/commands/page/{react → custom}/syntax.d.ts +2 -2
  158. package/lib/commands/page/custom/syntax.js +1 -0
  159. package/lib/commands/page/custom/template.js +1 -0
  160. package/lib/commands/page/{react → custom}/update.d.ts +1 -1
  161. package/lib/commands/page/custom/update.js +1 -0
  162. package/lib/commands/page/data-list-status.d.ts +2 -0
  163. package/lib/commands/page/data-list-status.js +1 -0
  164. package/lib/commands/page/generate-start.js +1 -1
  165. package/lib/commands/page/generate-status.js +1 -1
  166. package/lib/commands/page/index.js +1 -1
  167. package/lib/commands/page/pull.js +1 -1
  168. package/lib/commands/page/push.js +1 -1
  169. package/lib/commands/page/relation-audit.js +1 -1
  170. package/lib/commands/page/restore.js +1 -1
  171. package/lib/commands/page/shared.d.ts +18 -18
  172. package/lib/commands/page/shared.js +1 -1
  173. package/lib/commands/page/sync.js +1 -1
  174. package/lib/commands/project/create/enhanced-guided-create.js +1 -1
  175. package/lib/commands/project/create/format-elapsed.js +1 -1
  176. package/lib/commands/project/create/main.js +1 -1
  177. package/lib/commands/project/create/materialize-project-template.js +1 -1
  178. package/lib/commands/project/create/project-name.js +1 -1
  179. package/lib/commands/project/create/project-template-archive.js +1 -1
  180. package/lib/commands/project/create/project-template-path.js +1 -1
  181. package/lib/commands/project/create/use-copy-project-template.js +1 -1
  182. package/lib/commands/project/create/use-format-code.js +1 -1
  183. package/lib/commands/project/create/use-install-dependencies.js +1 -1
  184. package/lib/commands/project/index.js +1 -1
  185. package/lib/commands/project/upgrade.js +1 -1
  186. package/lib/commands/registry.js +1 -1
  187. package/lib/commands/role/delete.js +1 -1
  188. package/lib/commands/role/detail.js +1 -1
  189. package/lib/commands/role/index.js +1 -1
  190. package/lib/commands/role/list.js +1 -1
  191. package/lib/commands/role/shared.js +1 -1
  192. package/lib/commands/role/update.js +1 -1
  193. package/lib/commands/role/user-add.js +1 -1
  194. package/lib/commands/role/user-remove.js +1 -1
  195. package/lib/commands/role/user-resolve.js +1 -1
  196. package/lib/commands/run/index.js +1 -1
  197. package/lib/commands/schema.js +1 -1
  198. package/lib/commands/sql/create.js +1 -1
  199. package/lib/commands/sql/delete.js +1 -1
  200. package/lib/commands/sql/detail.js +1 -1
  201. package/lib/commands/sql/exec.js +1 -1
  202. package/lib/commands/sql/index.js +1 -1
  203. package/lib/commands/sql/list.js +1 -1
  204. package/lib/commands/sql/pull.js +1 -1
  205. package/lib/commands/sql/push.js +1 -1
  206. package/lib/commands/sql/shared.js +1 -1
  207. package/lib/commands/sql/status.js +1 -1
  208. package/lib/commands/sql/validate.js +1 -1
  209. package/lib/commands/task/index.js +1 -1
  210. package/lib/commands/task/status.js +1 -1
  211. package/lib/commands/tenant/index.js +1 -1
  212. package/lib/commands/tenant/members-list.js +1 -1
  213. package/lib/commands/tenant/shared.js +1 -1
  214. package/lib/commands/user-account/dingding-sandbox-bind.js +1 -1
  215. package/lib/commands/user-account/index.js +1 -1
  216. package/lib/commands/workspace/add.js +1 -1
  217. package/lib/commands/workspace/index.js +1 -1
  218. package/lib/commands/workspace/remove.js +1 -1
  219. package/lib/config/schema.js +1 -1
  220. package/lib/constant/cdn.js +1 -1
  221. package/lib/constant/cli.js +1 -1
  222. package/lib/constant/defaults.js +1 -1
  223. package/lib/constant/domain.js +1 -1
  224. package/lib/constant/env.js +1 -1
  225. package/lib/constant/output.js +1 -1
  226. package/lib/constant/paths.js +1 -1
  227. package/lib/constant/risk.js +1 -1
  228. package/lib/context/app-resolver.js +1 -1
  229. package/lib/context/auth-resolver.js +1 -1
  230. package/lib/context/config-loader.js +1 -1
  231. package/lib/context.js +1 -1
  232. package/lib/core/alias-resolver.js +1 -1
  233. package/lib/core/api-client.d.ts +43 -43
  234. package/lib/core/api-client.js +1 -1
  235. package/lib/core/bff/config.js +1 -1
  236. package/lib/core/bff/file-system.js +1 -1
  237. package/lib/core/bff/hash.js +1 -1
  238. package/lib/core/bff/lock.js +1 -1
  239. package/lib/core/bff/utils.d.ts +3 -1
  240. package/lib/core/bff/utils.js +1 -1
  241. package/lib/core/db-resolver.js +1 -1
  242. package/lib/core/page/file-system.js +1 -1
  243. package/lib/core/page/hash.js +1 -1
  244. package/lib/core/page/lock.js +1 -1
  245. package/lib/core/sql-index-auditor.js +1 -1
  246. package/lib/core/sql-sync/config.js +1 -1
  247. package/lib/core/sql-sync/file-system.js +1 -1
  248. package/lib/core/sql-sync/hash.js +1 -1
  249. package/lib/core/sql-sync/lock.js +1 -1
  250. package/lib/core/sql-sync/utils.js +1 -1
  251. package/lib/core/sql-validator.js +1 -1
  252. package/lib/errors.js +1 -1
  253. package/lib/framework/build-all-flags.js +1 -1
  254. package/lib/framework/error-output.js +1 -1
  255. package/lib/framework/explicit-yes.js +1 -1
  256. package/lib/framework/flags.js +1 -1
  257. package/lib/framework/help.js +1 -1
  258. package/lib/framework/index.js +1 -1
  259. package/lib/framework/output.js +1 -1
  260. package/lib/framework/response.js +1 -1
  261. package/lib/framework/runner-alias.js +1 -1
  262. package/lib/framework/runner.js +1 -1
  263. package/lib/framework/schema-export.js +1 -1
  264. package/lib/framework/types.js +1 -1
  265. package/lib/generated/build-info.d.ts +4 -4
  266. package/lib/generated/build-info.js +1 -1
  267. package/lib/help.js +1 -1
  268. package/lib/postinstall.js +1 -1
  269. package/lib/runtime/confirmation.js +1 -1
  270. package/lib/runtime/event.js +1 -1
  271. package/lib/runtime/index.js +1 -1
  272. package/lib/runtime/queue.js +1 -1
  273. package/lib/runtime/resolve.js +1 -1
  274. package/lib/skills/builtin-skill.js +1 -1
  275. package/lib/skills/main.js +1 -1
  276. package/lib/skills/npx-skills-add.js +1 -1
  277. package/lib/skills/skill-presence.js +1 -1
  278. package/lib/telemetry/cli-command-trace.js +1 -1
  279. package/lib/telemetry/cli-help-trace.js +1 -1
  280. package/lib/telemetry/ensure-cli-otel-config.js +1 -1
  281. package/lib/telemetry/register-otel-exit-shutdown.js +1 -1
  282. package/lib/telemetry/send-cli-trace-log.js +1 -1
  283. package/lib/telemetry/send-platform-issue-collect-log.js +1 -1
  284. package/lib/utils/ai_config.js +1 -1
  285. package/lib/utils/apply-jq-filter.js +1 -1
  286. package/lib/utils/cdn-config.js +1 -1
  287. package/lib/utils/check-sdk-version.js +1 -1
  288. package/lib/utils/cli-version-check.js +1 -1
  289. package/lib/utils/cli-version-policy.js +1 -1
  290. package/lib/utils/config.js +1 -1
  291. package/lib/utils/entity-with-id.js +1 -1
  292. package/lib/utils/file-utils.js +1 -1
  293. package/lib/utils/guides-cdn.js +1 -1
  294. package/lib/utils/http-client.js +1 -1
  295. package/lib/utils/is-non-interactive.js +1 -1
  296. package/lib/utils/logger.js +1 -1
  297. package/lib/utils/params.js +1 -1
  298. package/lib/utils/platform.js +1 -1
  299. package/lib/utils/rules-cdn.js +1 -1
  300. package/lib/utils/sleep.js +1 -1
  301. package/lib/utils/template-replacer.js +1 -1
  302. package/lib/utils/update-notice.js +1 -1
  303. package/lib/utils/version.js +1 -1
  304. package/lib/utils/with-active-cookie.js +1 -1
  305. package/lib/utils/write-cli-side-channel.js +1 -1
  306. package/package.json +1 -1
  307. package/skills/rabetbase/SKILL.md +35 -34
  308. package/skills/rabetbase/guides/backend-function.md +63 -18
  309. package/skills/rabetbase/guides/bff-creation-workflow.md +2 -0
  310. package/skills/rabetbase/guides/{react-custom-page-workflow.md → custom-page-workflow.md} +45 -45
  311. package/skills/rabetbase/guides/page-development-workflow.md +22 -22
  312. package/skills/rabetbase/knowledge/{react-page → custom-page}/components.md +2 -2
  313. package/skills/rabetbase/knowledge/{react-page → custom-page}/generation-standards.md +6 -6
  314. package/skills/rabetbase/knowledge/page-schema/LrSmartTable.md +6 -6
  315. package/skills/rabetbase/knowledge/page-schema/external-resources-usage.md +1 -1
  316. package/skills/rabetbase/references/rabetbase-bff-create.md +2 -0
  317. package/skills/rabetbase/references/{rabetbase-standard-page-status.md → rabetbase-data-list-status.md} +6 -6
  318. package/skills/rabetbase/references/rabetbase-dataset-generate.md +1 -1
  319. package/skills/rabetbase/references/rabetbase-dataset-relation-mutations.md +1 -1
  320. package/skills/rabetbase/references/rabetbase-dataset-relations.md +1 -1
  321. package/skills/rabetbase/references/rabetbase-dataset-restore.md +1 -1
  322. package/skills/rabetbase/references/rabetbase-menu-list.md +4 -2
  323. package/skills/rabetbase/references/rabetbase-menu-visibility-update.md +59 -0
  324. package/skills/rabetbase/references/rabetbase-page-create.md +31 -0
  325. package/skills/rabetbase/references/{rabetbase-page-react-detail.md → rabetbase-page-custom-detail.md} +5 -5
  326. package/skills/rabetbase/references/{rabetbase-page-react-list.md → rabetbase-page-custom-list.md} +4 -4
  327. package/skills/rabetbase/references/{rabetbase-page-react-publish.md → rabetbase-page-custom-publish.md} +6 -6
  328. package/skills/rabetbase/references/{rabetbase-page-react-update.md → rabetbase-page-custom-update.md} +6 -6
  329. package/skills/rabetbase/references/rabetbase-page-generate-start.md +5 -4
  330. package/skills/rabetbase/references/rabetbase-page-generate-status.md +4 -4
  331. package/skills/rabetbase/references/rabetbase-page-pull.md +2 -2
  332. package/skills/rabetbase/references/rabetbase-page-relation-binding.md +1 -1
  333. package/skills/rabetbase/references/rabetbase-page-restore.md +7 -7
  334. package/skills/rabetbase/references/rabetbase-page-sync.md +3 -3
  335. package/skills/rabetbase.manifest.json +13 -12
  336. package/lib/commands/page/react/create.d.ts +0 -2
  337. package/lib/commands/page/react/create.js +0 -1
  338. package/lib/commands/page/react/detail.js +0 -1
  339. package/lib/commands/page/react/list.js +0 -1
  340. package/lib/commands/page/react/publish.js +0 -1
  341. package/lib/commands/page/react/shared.js +0 -1
  342. package/lib/commands/page/react/syntax.js +0 -1
  343. package/lib/commands/page/react/template.js +0 -1
  344. package/lib/commands/page/react/update.js +0 -1
  345. package/lib/commands/page/standard-page-status.js +0 -1
  346. package/skills/rabetbase/references/rabetbase-page-react-create.md +0 -29
  347. /package/lib/commands/page/{react → custom}/template.d.ts +0 -0
@@ -1,12 +1,12 @@
1
- # React 自定义页面工作流
1
+ # 自定义页面工作流
2
2
 
3
- 本指南说明如何使用 `rabetbase` 创建、修改和发布 React 自定义页面。页面内容由完整 JSX、样式和多语言文件组成。
3
+ 本指南说明如何使用 `rabetbase` 创建、修改和发布自定义页面。页面内容由完整 JSX、样式和多语言文件组成。
4
4
 
5
5
  ## 适用范围
6
6
 
7
7
  适用于以下目标:
8
8
 
9
- - 新建或修改 React 自定义页面、看板、门户、落地页或复杂交互页面
9
+ - 新建或修改 自定义页面、看板、门户、落地页或复杂交互页面
10
10
  - 使用 ECharts 实现图表、统计卡片和数据大屏
11
11
 
12
12
  ## 前置上下文
@@ -19,58 +19,58 @@
19
19
 
20
20
  ### 新建页面
21
21
 
22
- 1. 先阅读 [`rabetbase-page-react-create.md`](../references/rabetbase-page-react-create.md)
23
- 2. 可选传入完整 `--page-content`;省略时 CLI 生成默认文件。先执行 `page react-create --dry-run`,确认页面名称、父菜单和最终页面文件
22
+ 1. 先阅读 [`rabetbase-page-create.md`](../references/rabetbase-page-create.md)
23
+ 2. 使用基础模板时传 `--page-pattern BLANK`;已有完整源码时只传 `--page-content`。先执行 `page create --dry-run`,确认页面名称、父菜单和最终页面文件
24
24
  3. 经用户确认后创建页面,记录 `data.after.pageId`。新页面默认尚未发布
25
- 4. 执行 `page react-detail --id <pageId>`,以 `data.codeContent` 中的完整页面文件为修改基线
25
+ 4. 执行 `page custom-detail --id <pageId>`,以 `data.codeContent` 中的完整页面文件为修改基线
26
26
  5. 需要定制初始文件时,再按“更新页面”流程保存完整页面文件
27
27
 
28
28
  创建页面会同时创建菜单入口。不得额外调用菜单创建命令重复创建入口。
29
29
 
30
30
  ### 查找或修改已有页面
31
31
 
32
- 1. 未知页面 ID 时,先阅读 [`rabetbase-page-react-list.md`](../references/rabetbase-page-react-list.md),执行 `page react-list --appcode <appCode>`
32
+ 1. 未知页面 ID 时,先阅读 [`rabetbase-page-custom-list.md`](../references/rabetbase-page-custom-list.md),执行 `page custom-list --appcode <appCode>`
33
33
  2. 根据 `data.pages[].pageId` 与 `label` 与用户确认目标页面;`data.pages[].pageUrl` 用于查看最新保存内容,`data.pages[].editPageUrl` 用于打开页面编辑器
34
- 3. 阅读 [`rabetbase-page-react-detail.md`](../references/rabetbase-page-react-detail.md),执行 `page react-detail --id <pageId>`
34
+ 3. 阅读 [`rabetbase-page-custom-detail.md`](../references/rabetbase-page-custom-detail.md),执行 `page custom-detail --id <pageId>`
35
35
  4. 只在返回的最新 `data.codeContent` 基础上编辑,不得根据旧缓存或猜测覆盖文件
36
36
 
37
37
  ### 更新页面
38
38
 
39
- 1. 阅读 [`rabetbase-page-react-update.md`](../references/rabetbase-page-react-update.md)
39
+ 1. 阅读 [`rabetbase-page-custom-update.md`](../references/rabetbase-page-custom-update.md)
40
40
  2. 将新增、修改和保留的所有文件整理为完整 `page-content` JSON
41
- 3. 先执行 `page react-update --dry-run` 审阅完整页面文件
41
+ 3. 先执行 `page custom-update --dry-run` 审阅完整页面文件
42
42
  4. 经用户确认后执行更新
43
- 5. 再执行 `page react-detail --id <pageId>`,确认 `codeContent` 已包含预期文件和内容
43
+ 5. 再执行 `page custom-detail --id <pageId>`,确认 `codeContent` 已包含预期文件和内容
44
44
  6. 已发布页面更新后,最新保存内容需要再次发布,用户访问的已发布页面才能看到本次修改
45
45
 
46
- `page react-update` 会完整保存页面文件:未提交的文件会被删除。不得仅提交本次修改的单个文件,也不得为删除文件再调用不存在的独立删除命令。
46
+ `page custom-update` 会完整保存页面文件:未提交的文件会被删除。不得仅提交本次修改的单个文件,也不得为删除文件再调用不存在的独立删除命令。
47
47
 
48
- 当前 CLI 没有逐文件新增、编辑或删除命令。将本地文件操作整理为完整 `codeContent` 后再调用 `react-update`;每次更新都会创建一个新的保存版本,`react-detail` 默认读取最新页面内容。
48
+ 当前 CLI 没有逐文件新增、编辑或删除命令。将本地文件操作整理为完整 `codeContent` 后再调用 `custom-update`;每次更新都会创建一个新的保存版本,`custom-detail` 默认读取最新页面内容。
49
49
 
50
50
  ### 发布页面
51
51
 
52
- 1. 先执行 `page react-detail --id <pageId>`,确认当前 `data.status`
53
- 2. 当前状态为 `FORMAL` 时,表示当前保存内容已发布,不执行 `page react-publish`,直接查看已发布页面或继续后续流程
54
- 3. 当前状态不是 `FORMAL` 时,读取 [`rabetbase-page-react-publish.md`](../references/rabetbase-page-react-publish.md),再执行 `page react-publish --dry-run`
52
+ 1. 先执行 `page custom-detail --id <pageId>`,确认当前 `data.status`
53
+ 2. 当前状态为 `FORMAL` 时,表示当前保存内容已发布,不执行 `page custom-publish`,直接查看已发布页面或继续后续流程
54
+ 3. 当前状态不是 `FORMAL` 时,读取 [`rabetbase-page-custom-publish.md`](../references/rabetbase-page-custom-publish.md),再执行 `page custom-publish --dry-run`
55
55
  4. 发布会影响用户实际访问的页面,必须取得用户明确确认后再执行
56
56
  5. 从 `data.after.status` 确认 `FORMAL`,表示内容已发布
57
57
 
58
- `data.pageUrl` 用于查看最新保存内容,包含尚未发布的修改;`data.editPageUrl` 用于打开页面编辑器;`page react-publish` 成功返回的 `data.runtimePageUrl` 用于查看已发布内容。不要将三者混用。
58
+ `data.pageUrl` 用于查看最新保存内容,包含尚未发布的修改;`data.editPageUrl` 用于打开页面编辑器;`page custom-publish` 成功返回的 `data.runtimePageUrl` 用于查看已发布内容。不要将三者混用。
59
59
 
60
60
  ## 页面生命周期
61
61
 
62
- React 页面有“未发布”和“已发布”两种状态。未发布的修改可通过 `pageUrl` 或编辑器查看,已发布页面只展示最近一次发布的内容。
62
+ 自定义页面的 React JSX 实现有“未发布”和“已发布”两种状态。未发布的修改可通过 `pageUrl` 或编辑器查看,已发布页面只展示最近一次发布的内容。
63
63
 
64
64
  ```text
65
- page react-create
65
+ page create --page-pattern BLANK
66
66
  → 未发布
67
67
  → 生成或更新完整页面文件
68
68
  → 未发布
69
- → page react-publish
69
+ → page custom-publish
70
70
  → 已发布(FORMAL)→ 可通过 runtimePageUrl 查看已发布内容
71
- → page react-update
71
+ → page custom-update
72
72
  → 未发布(已发布页面仍显示上一次发布内容)
73
- → page react-publish
73
+ → page custom-publish
74
74
  → 已发布(FORMAL)→ 已发布页面展示最新发布内容
75
75
  ```
76
76
 
@@ -81,9 +81,9 @@ page react-create
81
81
  | 发布后 | 当前已发布版本,状态为 `FORMAL` | 本次已发布内容 | 通过 `runtimePageUrl` 查看或继续修改 |
82
82
  | 已发布后再次更新 | 最新保存内容,尚未发布 | 更新前的已发布内容 | 再次发布后才切换已发布页面内容 |
83
83
 
84
- `page react-detail` 用于确认最新保存内容,`page react-publish` 用于发布当前保存内容。不要仅因 `react-update` 成功就认为已发布页面已经更新。
84
+ `page custom-detail` 用于确认最新保存内容,`page custom-publish` 用于发布当前保存内容。不要仅因 `custom-update` 成功就认为已发布页面已经更新。
85
85
 
86
- `react-detail` 返回 `FORMAL` 时,表示当前保存内容已经发布。没有新的修改时,跳过重复发布,继续查看已发布页面或后续流程。
86
+ `custom-detail` 返回 `FORMAL` 时,表示当前保存内容已经发布。没有新的修改时,跳过重复发布,继续查看已发布页面或后续流程。
87
87
 
88
88
  ### 地址语义
89
89
 
@@ -95,7 +95,7 @@ page react-create
95
95
 
96
96
  ## 数据与服务契约
97
97
 
98
- 图表与统计场景使用 `page react-create/update/publish` 管理的 React JSX 页面,呈现层直接使用白名单内的 `echarts@5`。
98
+ 图表与统计场景使用 `page create` 与 `page custom-update/publish` 管理的 React JSX 页面,呈现层直接使用白名单内的 `echarts@5`。
99
99
 
100
100
  ### 选型
101
101
 
@@ -130,16 +130,16 @@ page react-create
130
130
 
131
131
  ### ECharts 呈现层
132
132
 
133
- - React 页面中直接使用白名单内的 `echarts@5` 构建图表;按组件生命周期初始化、更新和销毁实例。
133
+ - 在自定义页面的 React JSX 实现中直接使用白名单内的 `echarts@5` 构建图表;按组件生命周期初始化、更新和销毁实例。
134
134
  - ECharts 只消费页面已经取得的业务数据,不负责访问数据库、执行 SQL 或做权限判断。
135
- - `page react-*` 页面与 `project create` 微前端模板是不同运行环境;前者不得因为模板示例使用了包装库,就引入白名单外依赖。
135
+ - `page custom-*` 页面与 `project create` 微前端模板是不同运行环境;前者不得因为模板示例使用了包装库,就引入白名单外依赖。
136
136
  - 图表查询使用 Dataset、`client.sql.execute({ sqlCode, params })` 或受控 BFF,并完整处理加载、空态、失败和重试行为。
137
137
 
138
138
  ## 页面开发参考
139
139
 
140
- 编写页面内容前,先阅读 [`generation-standards.md`](../knowledge/react-page/generation-standards.md)。
140
+ 编写页面内容前,先阅读 [`generation-standards.md`](../knowledge/custom-page/generation-standards.md)。
141
141
 
142
- - 选择、组合或新增 UI 组件时,按需阅读 [`components.md`](../knowledge/react-page/components.md)
142
+ - 选择、组合或新增 UI 组件时,按需阅读 [`components.md`](../knowledge/custom-page/components.md)
143
143
  - 调用页面上下文、国际化、路由或数据客户端时,按需阅读 `generation-standards.md` 中的“页面上下文内置能力”
144
144
  - 未登记的组件、方法、参数和返回结构不得猜测,先补充确认后的规范再复用
145
145
 
@@ -156,7 +156,7 @@ src/components/*.jsx
156
156
 
157
157
  代码遵循以下约束:
158
158
 
159
- - 仅导入 [`generation-standards.md`](../knowledge/react-page/generation-standards.md)“依赖白名单”中的包及其子路径
159
+ - 仅导入 [`generation-standards.md`](../knowledge/custom-page/generation-standards.md)“依赖白名单”中的包及其子路径
160
160
  - 使用页面上下文时,从 `@/context/app-context` 导入 `useSdkClient`、`useI18n`、`useNavigate`、`useLocation`
161
161
  - 数据读取或写入前,先确认数据集及 SDK 用法;接口或字段无法从现有事实确认时,不得猜测请求协议
162
162
  - 所有用户可见文案通过 `$i18n.t("key")` 获取,并在 `src/locales/index.js` 提供有效翻译
@@ -164,39 +164,39 @@ src/components/*.jsx
164
164
  - CSS 使用 Ant Design CSS 变量,不写死颜色或其他样式常量
165
165
  - 不新增白名单外依赖,不使用 `window.location`
166
166
 
167
- 未传 `--page-content` 时,`react-create` 生成基础 JSX、样式和词包。首次自定义时,将初始文案和样式一并调整为上述约束后再发布,不把初始化模板视为最终页面实现。
167
+ `--page-pattern BLANK` 时,`page create` 生成基础 JSX、样式和词包。首次自定义时,将初始文案和样式一并调整为上述约束后再发布,不把初始化模板视为最终页面实现。
168
168
 
169
169
  ## 页面内容自检
170
170
 
171
171
  在首次提交或每次更新完整 `codeContent` 前,按以下顺序自检:
172
172
 
173
- 1. 先用 `page react-detail --id <pageId>` 读取最新页面文件,避免覆盖其他尚未发布的修改
173
+ 1. 先用 `page custom-detail --id <pageId>` 读取最新页面文件,避免覆盖其他尚未发布的修改
174
174
  2. 确认提交内容包含全部需要保留的文件,入口、样式、词包和组件之间的导入路径一致
175
- 3. 对照 [`generation-standards.md`](../knowledge/react-page/generation-standards.md) 检查依赖白名单、国际化、路由、样式和数据契约
175
+ 3. 对照 [`generation-standards.md`](../knowledge/custom-page/generation-standards.md) 检查依赖白名单、国际化、路由、样式和数据契约
176
176
  4. 使用组件或内置方法时,分别对照 `components.md` 和 `generation-standards.md` 中的“页面上下文内置能力”,确认不存在未登记的属性、方法或返回结构假设
177
- 5. 先完成“页面生成规范”中的静态自检,再执行 `page react-update --dry-run`。CLI 会阻止缺少 React 源码或存在基础 JS/JSX/TS/TSX 语法错误的内容,但不推断变量引用、模块导出、数据契约或运行时行为
178
- 6. 更新后再次执行 `page react-detail --id <pageId>`,确认最新保存的 `codeContent` 与提交内容一致
179
- 7. 需要让用户查看已发布页面时,先检查最新 `data.status`。状态为 `FORMAL` 时跳过发布;否则执行 `page react-publish --dry-run`、取得确认后发布,并确认 `data.after.status` 为 `FORMAL` 和 `data.runtimePageUrl` 已返回
177
+ 5. 先完成“页面生成规范”中的静态自检,再执行 `page custom-update --dry-run`。CLI 会阻止缺少 React 源码或存在基础 JS/JSX/TS/TSX 语法错误的内容,但不推断变量引用、模块导出、数据契约或运行时行为
178
+ 6. 更新后再次执行 `page custom-detail --id <pageId>`,确认最新保存的 `codeContent` 与提交内容一致
179
+ 7. 需要让用户查看已发布页面时,先检查最新 `data.status`。状态为 `FORMAL` 时跳过发布;否则执行 `page custom-publish --dry-run`、取得确认后发布,并确认 `data.after.status` 为 `FORMAL` 和 `data.runtimePageUrl` 已返回
180
180
 
181
181
  当前 CLI 不提供已发布页面截图或自动浏览器预览。发布成功后,使用返回的 `data.runtimePageUrl` 打开已发布页面进行人工预览。
182
182
 
183
183
  ## 最小验证闭环
184
184
 
185
185
  ```text
186
- 新建:react-create --dry-run → react-create → react-detail → [按需] react-update --dry-run → react-update → react-detail → [尚未发布(status 非 FORMAL)且经确认] react-publish --dry-run → react-publish
186
+ 新建:create --page-pattern BLANK --dry-run → create --page-pattern BLANK custom-detail → [按需] custom-update --dry-run → custom-update → custom-detail → [尚未发布(status 非 FORMAL)且经确认] custom-publish --dry-run → custom-publish
187
187
 
188
- 修改:react-list(按需)→ react-detail → react-update --dry-run → react-update → react-detail → [尚未发布(status 非 FORMAL)且经确认] react-publish --dry-run → react-publish
188
+ 修改:custom-list(按需)→ custom-detail → custom-update --dry-run → custom-update → custom-detail → [尚未发布(status 非 FORMAL)且经确认] custom-publish --dry-run → custom-publish
189
189
  ```
190
190
 
191
191
  CLI 当前不提供本地预览或独立删除命令。
192
192
 
193
193
  ## 参考
194
194
 
195
- - [`rabetbase-page-react-create.md`](../references/rabetbase-page-react-create.md)
196
- - [`rabetbase-page-react-list.md`](../references/rabetbase-page-react-list.md)
197
- - [`rabetbase-page-react-detail.md`](../references/rabetbase-page-react-detail.md)
198
- - [`rabetbase-page-react-update.md`](../references/rabetbase-page-react-update.md)
199
- - [`rabetbase-page-react-publish.md`](../references/rabetbase-page-react-publish.md)
200
- - [`generation-standards.md`](../knowledge/react-page/generation-standards.md)
201
- - [`components.md`](../knowledge/react-page/components.md)
195
+ - [`rabetbase-page-create.md`](../references/rabetbase-page-create.md)
196
+ - [`rabetbase-page-custom-list.md`](../references/rabetbase-page-custom-list.md)
197
+ - [`rabetbase-page-custom-detail.md`](../references/rabetbase-page-custom-detail.md)
198
+ - [`rabetbase-page-custom-update.md`](../references/rabetbase-page-custom-update.md)
199
+ - [`rabetbase-page-custom-publish.md`](../references/rabetbase-page-custom-publish.md)
200
+ - [`generation-standards.md`](../knowledge/custom-page/generation-standards.md)
201
+ - [`components.md`](../knowledge/custom-page/components.md)
202
202
  - [`rabetbase-codegen-sdk.md`](../references/rabetbase-codegen-sdk.md)
@@ -1,14 +1,14 @@
1
- # 智能列表页(Smart List Page,page)工作流
1
+ # 数据列表页(Data List Page,page)工作流
2
2
 
3
3
  前置知识:已完成 `rabetbase auth` 登录,当前上下文已有 `appcode`,并已理解 `knowledge/page-schema/` 是 PageSchema 组件知识,不是 `rabetbase page` 命令说明。
4
4
 
5
5
  ## 适用范围
6
6
 
7
- 本工作流只适用于 **智能列表页(Smart List Page,DOV2 `smart_page`)** 路径:
7
+ 本工作流只适用于 **数据列表页(Data List Page,DOV2 `smart_page`)** 路径:
8
8
 
9
- - 基于数据集首次生成智能列表页
10
- - 数据集字段变更后同步已有智能列表页
11
- - 将智能列表页 schema 拉到本地进行 IDE 修改,再推回平台
9
+ - 基于数据集首次生成数据列表页
10
+ - 数据集字段变更后同步已有数据列表页
11
+ - 将数据列表页 schema 拉到本地进行 IDE 修改,再推回平台
12
12
 
13
13
  不适用于:
14
14
 
@@ -16,11 +16,11 @@
16
16
  - 本地主子应用开发(使用 `rabetbase project`)
17
17
  - 只凭“数据集缺页”就批量生成所有页面的场景
18
18
 
19
- 评论、附件、历史记录等子资源,默认不优先作为独立主页面;若业务目标不是标准智能列表页(Smart List Page),先停下来确认是否还应继续走 `page` 工作流。
19
+ 评论、附件、历史记录等子资源,默认不优先作为独立主页面;若业务目标不是数据列表页(Data List Page),先停下来确认是否还应继续走 `page` 工作流。
20
20
 
21
21
  ## 核心原则
22
22
 
23
- 1. 智能列表页是“标准后台”方案,不是所有数据集的默认答案。
23
+ 1. 数据列表页是数据查看与维护方案,不是所有数据集的默认答案,也不等同于最终业务工作台。
24
24
  2. 平台是页面权威来源;本地 schema 开发也必须通过 `pull -> IDE 编辑 -> push` 闭环。
25
25
  3. 新编排与自动化链路统一按 async-first 契约编排:任务状态查询与页面事实查询分离。
26
26
  4. 生产环境先做 `--dry-run`,确认目标、页面组和风险后再执行真实写操作。
@@ -33,13 +33,13 @@
33
33
 
34
34
  ### 1. 确认业务目标
35
35
 
36
- 先确认这次目标是不是智能列表页最擅长的事情:
36
+ 先确认这次目标是不是数据列表页最擅长的事情:
37
37
 
38
- - 列表 / 新建 / 编辑 / 详情型智能列表页(Smart List Page)
38
+ - 列表 / 新建 / 编辑 / 详情型数据列表页(Data List Page)
39
39
  - 标准管理后台
40
40
  - 单数据集或轻度关联数据集
41
41
 
42
- 如果目标是工作台、看板、时间轴、复杂协作视图,说明它不属于本地 `rabetbase page` 工作流;本地研发工程师应改走 `rabetbase project` 主子应用开发路径。
42
+ 如果目标是工作台、看板、时间轴或复杂协作视图,它不属于数据列表页工作流,但仍然属于页面需求,应使用 `rabetbase page create --page-pattern BLANK` `--page-content` 创建 CUSTOM JSX 页面。`rabetbase project` 表达的是独立子应用工程,不是页面类型,也不是复杂页面的兜底入口。
43
43
 
44
44
  ### 2. 校验数据集与关联页
45
45
 
@@ -54,7 +54,7 @@ rabetbase dataset relations --datasetcode <datasetCode> --format json
54
54
 
55
55
  - 数据集是否存在
56
56
  - 字段名、字段类型、关联关系是否符合预期
57
- - `relatedPages` 中是否已有未删除智能列表页
57
+ - `relatedPages` 中是否已有未删除数据列表页
58
58
 
59
59
  ### 3. 判断用 `generate-start / sync`
60
60
 
@@ -67,7 +67,7 @@ rabetbase dataset relations --datasetcode <datasetCode> --format json
67
67
  推荐先做预演(`generate-start` 默认就是预演,必须显式 `--apply` 才提交):
68
68
 
69
69
  ```bash
70
- rabetbase page standard-page-status --datasetcode <datasetCode> --format json
70
+ rabetbase page data-list-status --datasetcode <datasetCode> --format json
71
71
  rabetbase page generate-start --datasetcode <datasetCode> --format json
72
72
  rabetbase page sync --datasetcode <datasetCode> --dry-run --format json
73
73
  ```
@@ -81,7 +81,7 @@ rabetbase page generate-start --datasetcode <datasetCode> --apply --format json
81
81
  rabetbase page generate-status --datasetcode <datasetCode> --task-id <taskId> --format json
82
82
  ```
83
83
 
84
- `taskId` 是首选查询标识;只有旧响应没有 taskId 时才回退 `operationId`,两者都丢失时再用 `clientOperationId`。三种标识必须且只能传一个。查询超时、未知状态或网络失败时继续查询原任务,不重新提交生成。成功终态后,从 `standardPageStatus.pageSets[]` 读取页面事实和 `versionTag`;存在多个完整组、残留页或冲突时交给用户确认,不猜测页面组。
84
+ `taskId` 是首选查询标识;只有旧响应没有 taskId 时才回退 `operationId`,两者都丢失时再用 `clientOperationId`。三种标识必须且只能传一个。查询超时、未知状态或网络失败时继续查询原任务,不重新提交生成。成功终态后,从 `dataListPageStatus.pageSets[]` 读取页面事实和 `versionTag`;存在多个完整组、残留页或冲突时交给用户确认,不猜测页面组。
85
85
 
86
86
  ### 4. 拉取页面 schema 到本地
87
87
 
@@ -98,7 +98,7 @@ rabetbase page pull --datasetcode <datasetCode> --version-tag <versionTag> --for
98
98
  - `--id` 用于单页
99
99
  - `--datasetcode` / `--alias` 用于按数据集批量
100
100
  - 同一命令里 `--id` 与 `--datasetcode` / `--alias` 互斥
101
- - 生成链路优先使用 `page generate-status` 的 `standardPageStatus.pageSets[].versionTag`
101
+ - 生成链路优先使用 `page generate-status` 的 `dataListPageStatus.pageSets[].versionTag`
102
102
  - 批量模式下若同一数据集存在多组页面且 `versionTag` 不唯一,必须由用户确认后显式传 `--version-tag`
103
103
 
104
104
  本地文件位置:
@@ -143,18 +143,18 @@ rabetbase page push --datasetcode <datasetCode> --version-tag <tag> --format jso
143
143
 
144
144
  ## 常见分支
145
145
 
146
- ### A. 首次补齐智能列表页
146
+ ### A. 首次补齐数据列表页
147
147
 
148
148
  ```text
149
- dataset detail → standard-page-status → page generate-start(默认预览) → page generate-start --apply → 保存 taskId → page generate-status → 从 standardPageStatus.pageSets[] 选择 versionTag
149
+ dataset detail → page data-list-status → page generate-start(默认预览) → page generate-start --apply → 保存 taskId → page generate-status → 从 dataListPageStatus.pageSets[] 选择 versionTag
150
150
  ```
151
151
 
152
152
  适用于:
153
153
 
154
- - 主业务对象还没有任何智能列表页
155
- - 目标是快速补齐标准智能列表页(Smart List Page)
154
+ - 主业务对象还没有任何数据列表页
155
+ - 目标是快速补齐基础数据列表页(Data List Page)
156
156
 
157
- ### B. 字段变更后同步已有智能列表页
157
+ ### B. 字段变更后同步已有数据列表页
158
158
 
159
159
  ```text
160
160
  dataset detail → page sync --dry-run → page sync
@@ -163,7 +163,7 @@ dataset detail → page sync --dry-run → page sync
163
163
  适用于:
164
164
 
165
165
  - 数据集字段已变化
166
- - 关联智能列表页已经存在
166
+ - 关联数据列表页已经存在
167
167
 
168
168
  ### C. 本地 schema 开发
169
169
 
@@ -173,7 +173,7 @@ page pull → IDE 编辑 → page push --dry-run → page push
173
173
 
174
174
  适用于:
175
175
 
176
- - 智能列表页已经生成
176
+ - 数据列表页已经生成
177
177
  - 需要在 formal schema 层做本地定制
178
178
 
179
179
  ## 参考
@@ -181,7 +181,7 @@ page pull → IDE 编辑 → page push --dry-run → page push
181
181
  - [SKILL.md](../SKILL.md)
182
182
  - [rabetbase-page-generate-start.md](../references/rabetbase-page-generate-start.md)
183
183
  - [rabetbase-page-generate-status.md](../references/rabetbase-page-generate-status.md)
184
- - [rabetbase-standard-page-status.md](../references/rabetbase-standard-page-status.md)
184
+ - [rabetbase-data-list-status.md](../references/rabetbase-data-list-status.md)
185
185
  - [rabetbase-page-sync.md](../references/rabetbase-page-sync.md)
186
186
  - [rabetbase-page-pull.md](../references/rabetbase-page-pull.md)
187
187
  - [rabetbase-page-push.md](../references/rabetbase-page-push.md)
@@ -1,6 +1,6 @@
1
- # React 自定义页面组件用法
1
+ # 自定义页面组件用法
2
2
 
3
- 本文件登记 React 自定义页面可复用的 UI 组件规范。生成或修改页面前先阅读 [`generation-standards.md`](generation-standards.md)。
3
+ 本文件登记自定义页面可复用的 UI 组件规范。生成或修改页面前先阅读 [`generation-standards.md`](generation-standards.md)。
4
4
 
5
5
  ## 使用边界
6
6
 
@@ -1,6 +1,6 @@
1
- # React 自定义页面生成规范
1
+ # 自定义页面生成规范
2
2
 
3
- 本规范用于编写或修改 React 自定义页面的完整 `codeContent`。执行命令流程、参数和发布规则以 [`react-custom-page-workflow.md`](../../guides/react-custom-page-workflow.md) 为准。
3
+ 本规范用于编写或修改自定义页面的完整 `codeContent`。执行命令流程、参数和发布规则以 [`custom-page-workflow.md`](../../guides/custom-page-workflow.md) 为准。
4
4
 
5
5
  ## 使用方式
6
6
 
@@ -15,7 +15,7 @@
15
15
 
16
16
  | 范畴 | 约束 |
17
17
  | -------- | ------------------------------------------------------------------------------------------------------------------------- |
18
- | 提交内容 | `page react-update` 提交完整页面文件,未提交的已有文件会被删除 |
18
+ | 提交内容 | `page custom-update` 提交完整页面文件,未提交的已有文件会被删除 |
19
19
  | 推荐结构 | 页面入口仍为 `src/app/index.jsx`;其余文件和组件目录可按页面需要组织,`src/app/index.css`、`src/locales/index.js`、`src/components/*.jsx` 仅为示例 |
20
20
  | 组件复用 | 优先查阅并复用已有组件库和页面已有组件;仅当现有能力无法满足需求时才创建新组件 |
21
21
  | 依赖 | 仅使用“依赖白名单”中的包及其子路径 |
@@ -61,9 +61,9 @@
61
61
 
62
62
  ### `src/app/index.jsx` 模板
63
63
 
64
- 初始化创建自定义页面时,必须以此模板生成 `src/app/index.jsx`。将 `{{pageName}}` 替换为页面名称;保留词包注册、上下文 Hook 和样式导入,再按需求扩展布局、状态与数据调用。通过 `page react-create --page-content` 初始化创建时,传入的 `src/app/index.jsx` 也必须从此模板派生。
64
+ 初始化创建自定义页面时,必须以此模板生成 `src/app/index.jsx`。将 `{{pageName}}` 替换为页面名称;保留词包注册、上下文 Hook 和样式导入,再按需求扩展布局、状态与数据调用。通过 `page create --page-content` 初始化创建时,传入的 `src/app/index.jsx` 也必须从此模板派生。
65
65
 
66
- 更新已有页面时,以 `page react-detail` 返回的最新 `codeContent` 为基线;不强制套用或补齐本模板,应仅按更新需求修改页面内容。
66
+ 更新已有页面时,以 `page custom-detail` 返回的最新 `codeContent` 为基线;不强制套用或补齐本模板,应仅按更新需求修改页面内容。
67
67
 
68
68
  ```jsx
69
69
  import React from "react";
@@ -402,6 +402,6 @@ const location = useLocation();
402
402
  - [ ] 数据集、SQL、BFF 与其他 SDK 调用的资源事实、参数和返回结构均有依据
403
403
  - [ ] 路由、状态和错误反馈符合已确认的交互
404
404
  - [ ] CSS 未写死颜色或其他样式常量
405
- - [ ] 已先执行 `page react-create --dry-run` 或 `page react-update --dry-run` 审阅完整提交内容,并通过 CLI 的基础 JS/JSX/TS/TSX 语法校验
405
+ - [ ] 已先执行 `page create --dry-run` 或 `page custom-update --dry-run` 审阅完整提交内容,并通过 CLI 的基础 JS/JSX/TS/TSX 语法校验
406
406
 
407
407
  CLI 的基础校验只确认页面包含 `.jsx` 或 `.tsx` 文件,且页面内的 JS、JSX、TS、TSX 文件能够解析。变量引用、相对模块导出、数据调用契约和运行时行为必须由本清单和页面发布后的实际使用继续确认
@@ -38,9 +38,9 @@ tags: [table, page-schema, select, orderBy, isFetched, defaultSortOrder, sortabl
38
38
  | toolbar.exportButtons | BatchButton[] | 批量操作 |
39
39
  | rowSelection.enable | boolean | 行选择 |
40
40
  | pagination.enable | boolean | 分页 |
41
- | pagination.currentPageKey | string | 系统管理的当前页 state key;标准页面更新时保留 |
42
- | pagination.pageSizeKey | string | 系统管理的每页条数 state key;标准页面更新时保留 |
43
- | pagination.totalKey | string | 系统管理的总数 state key;标准页面更新时保留 |
41
+ | pagination.currentPageKey | string | 系统管理的当前页 state key;数据列表页更新时保留 |
42
+ | pagination.pageSizeKey | string | 系统管理的每页条数 state key;数据列表页更新时保留 |
43
+ | pagination.totalKey | string | 系统管理的总数 state key;数据列表页更新时保留 |
44
44
  | columnSetting.enable | boolean | 列设置 |
45
45
  | columnSetting.storageKey | string | 列设置缓存 key |
46
46
  | otherTableProps | Record<string, any> | 其他 Ant Design 5 Table 的原生属性 |
@@ -213,11 +213,11 @@ V2 页面生成时已为数据集所有字段全量生成 columns,通过 `isSh
213
213
 
214
214
  `LrSmartTable` 的分页状态放在页面级 state 中管理,`pagination.currentPageKey`、`pagination.pageSizeKey`、`pagination.totalKey` 用于隔离同一页面中不同表格的分页状态,避免多个表格共用 `currentPage`、`pageSize`、`total` 这类固定 key 后互相影响。
215
215
 
216
- 这三个 key 属于系统管理字段,不是业务配置。标准页面中由生成器或修复工具写入;Agent 更新标准页面时应保留已有 key,不主动配置、不主动改名。
216
+ 这三个 key 属于系统管理字段,不是业务配置。数据列表页中由生成器或修复工具写入;Agent 更新数据列表页时应保留已有 key,不主动配置、不主动改名。
217
217
 
218
218
  Agent 规则:
219
219
 
220
- - 常规标准页面更新:保留已有分页 key,只维护业务相关的分页开关、数据源、列和按钮。
220
+ - 常规数据列表页更新:保留已有分页 key,只维护业务相关的分页开关、数据源、列和按钮。
221
221
  - 新增带分页的 `LrSmartTable`:由生成器生成表格独立的分页 key,Agent 不手写固定公共 key。
222
222
  - 历史 schema 缺失分页 key:作为修复场景补齐,不把它当成普通配置流程。
223
223
 
@@ -617,7 +617,7 @@ context 对象在 **JSFunction** 中通过 `config._context` 访问,用于状
617
617
 
618
618
  ## 权限配置
619
619
 
620
- 当前标准页面由运行时过滤按钮权限。Agent 只需要维护表格按钮本身;按钮是否展示由运行时权限过滤决定。
620
+ 当前数据列表页由运行时过滤按钮权限。Agent 只需要维护表格按钮本身;按钮是否展示由运行时权限过滤决定。
621
621
 
622
622
  | 按钮位置 | 当前权限动作 |
623
623
  |----------|--------------|
@@ -176,7 +176,7 @@ HOOK 脚本绑定到数据集 API 上,在 API 执行前或执行后自动触
176
176
 
177
177
  ## 4. 权限点使用规范
178
178
 
179
- 当前标准页面权限由 `LrSmartTable` 运行时内置逻辑处理,Agent 只维护 `LrSmartTable` schema,不生成权限字段。
179
+ 当前数据列表页权限由 `LrSmartTable` 运行时内置逻辑处理,Agent 只维护 `LrSmartTable` schema,不生成权限字段。
180
180
 
181
181
  ### 4.1 当前实现
182
182
 
@@ -40,6 +40,8 @@ BFF 源码**仅**应在此目录树内创建与长期维护(与 `bff status` /
40
40
  - [`backend-function.md`](../guides/backend-function.md):`context.client`、模型键、返回值、事务、消息通知扩展、禁止事项
41
41
  - [`data-api-guidelines.md`](../guides/data-api-guidelines.md):字段、枚举、外键、性能规则
42
42
 
43
+ 脚手架会生成中文 JSDoc 契约,包含真实接口/配置地址、根请求参数、返回值,以及依赖数据集、调用 BF、执行 SQL、副作用等维护项。提交前必须按实际代码补充每个 `params.<字段名>` 的类型与含义,更新依赖维护项;显式抛出异常时还要补充 `@throws`。无依赖或无副作用的项目可以保留“无”,不能把模板提示当作已确认的业务事实。
44
+
43
45
  创建可由 CLI 调用的通知型 BFF 时使用 `ENDPOINT`,并先用 [`rabetbase notification config-list`](rabetbase-notification-config-list.md) 确认当前应用真实的通知 `configCode`。纯通知 ENDPOINT 不需要虚构数据集;脚本只通过 `context.client.extension.execute("notification", "send", ...)` 使用 `configCode`、`audiences`、`message`,不得写渠道地址或密钥。
44
46
 
45
47
  ## 提示
@@ -1,18 +1,18 @@
1
- # page standard-page-status
1
+ # page data-list-status
2
2
 
3
- 查询某个数据集当前智能列表页(Smart List Page)事实快照。
3
+ 查询某个数据集当前数据列表页(Data List Page)事实快照。
4
4
 
5
5
  ## 命令
6
6
 
7
7
  ```bash
8
- rabetbase page standard-page-status --datasetcode 097b7361b76c42bcb12b923fa5a08861 --format json
9
- rabetbase page standard-page-status --alias order --format json
8
+ rabetbase page data-list-status --datasetcode 097b7361b76c42bcb12b923fa5a08861 --format json
9
+ rabetbase page data-list-status --alias order --format json
10
10
  ```
11
11
 
12
12
  ## 行为说明
13
13
 
14
14
  - 该命令只返回**页面事实**:
15
- - 智能列表页组
15
+ - 数据列表页组
16
16
  - 是否完整
17
17
  - 残留页
18
18
  - 菜单事实
@@ -22,7 +22,7 @@ rabetbase page standard-page-status --alias order --format json
22
22
  ## 适用场景
23
23
 
24
24
  - 生成前判断是否允许继续 `generate-start`
25
- - 生成完成后确认是否真的形成完整智能列表页组
25
+ - 生成完成后确认是否真的形成完整数据列表页组
26
26
  - 排查为什么当前数据集被判定为 `blocked_*`
27
27
 
28
28
  ## 参考
@@ -185,7 +185,7 @@ Status 成功后的 `data` 包含:
185
185
  - `PENDING` / `PROCESSING` 都不是完成;始终继续查询同一个 taskId。
186
186
  - 超时、未知状态或 start 响应丢失时只做状态恢复,不得自动重提生成请求。
187
187
  - 成功后用 `rabetbase dataset detail --code <createdDataset.code> --format compress` 确认结构。
188
- - 如需生成智能列表页,再执行 `rabetbase page generate-start --datasetcode <createdDataset.code> --format compress`。
188
+ - 如需生成数据列表页,再执行 `rabetbase page generate-start --datasetcode <createdDataset.code> --format compress`。
189
189
  - 真实业务行数据验证交接到 `lovrabet data filter|getOne`。
190
190
 
191
191
  ## 常见失败
@@ -48,7 +48,7 @@ rabetbase dataset relation-delete --appcode <appCode> --relation-id <relationId>
48
48
  |------|----|:---:|------|
49
49
  | `DB_TABLE` | `DB_TABLE` | 是 | V2 数据集之间关系,底层可映射到表关系 |
50
50
  | `DB_TABLE` | `METADATA` | 是 | `DB_TABLE` 字段消费 `METADATA` 字典/选项源 |
51
- | `METADATA` | `METADATA` | 是 | V2 标准页面/配置数据集关系 |
51
+ | `METADATA` | `METADATA` | 是 | V2 数据列表页/配置数据集关系 |
52
52
  | `METADATA` | `DB_TABLE` | 否 | CLI 校验阶段拒绝 |
53
53
 
54
54
  | Flag | update | 说明 |
@@ -57,7 +57,7 @@ rabetbase dataset relations --from-source DB_TABLE --to-source METADATA --format
57
57
 
58
58
  ## Agent 使用规则
59
59
 
60
- - 页面关系审计、标准页面绑定、字典/选项源判断,直接使用 `dataset relations --format compress`;命令底层默认读取 D0/DO V2 关系事实
60
+ - 页面关系审计、数据列表页绑定、字典/选项源判断,直接使用 `dataset relations --format compress`;命令底层默认读取 D0/DO V2 关系事实
61
61
  - 更新或删除前确认 `relationId`;写入前确认来源/目标 `datasetCode + field`、`to.labelField`、`relation.cardinality` 和 `relation.bizRelationType`
62
62
  - `DB_TABLE -> METADATA` 表示业务表字段消费 METADATA 字典,不要把它理解为数据库外键
63
63
  - `METADATA -> METADATA` 可以是自关联父子关系;是否自关联由 `from.datasetCode === to.datasetCode` 自行判断,不在协议里增加派生字段
@@ -35,7 +35,7 @@ rabetbase dataset restore --dbid 10282 --expected-count 3 --confirm --yes --form
35
35
  - 命令只在已删除数据集中定位目标。
36
36
  - dry-run 输出每个 Dataset 的 `relatedPageCount`,便于判断后续是否需要恢复页面。
37
37
  - 每个 Dataset 必须恰好匹配一条删除记录;记录缺失或存在多条匹配记录时中止。
38
- - 恢复结果固定标记 `pagesRestored=false`。关联页面需按需执行 `rabetbase page restore --id <pageId> --appcode <appCode>`;STANDARD 页面恢复会恢复对应菜单。
38
+ - 恢复结果固定标记 `pagesRestored=false`。关联页面需按需执行 `rabetbase page restore --id <pageId> --appcode <appCode>`;数据列表页恢复会恢复对应菜单。
39
39
  - `--dbid` 批量恢复建议始终配合 `--expected-count`。
40
40
  - 该命令不会创建新的物理表,也不会修改业务数据。
41
41
 
@@ -117,6 +117,7 @@ rabetbase menu list --verbose --format json
117
117
  - 查看菜单是否已配置 CDN 资源 URL。
118
118
  - 审计重复 path、根级 label 重复、孤儿父节点等菜单异常,并生成平台人工处理清单。
119
119
  - 修改菜单名称前确认 `id/label`;所有菜单类型统一使用 `menu rename`。
120
+ - 显示或隐藏菜单前确认 `id/path/visible`;批量写入统一使用 `menu visibility-update`。
120
121
  - 修改 iframe/link 页面 URL 前确认 `id/url/parentId`;写入入口使用 `menu external-link-update`。
121
122
  - 修改微前端 JS/CSS 资源前确认当前 resources;写入入口使用 `menu asset-update`。
122
123
  - 提供稳定的菜单事实入口,避免使用底层数据源查询菜单配置。
@@ -124,10 +125,10 @@ rabetbase menu list --verbose --format json
124
125
  ## 不负责
125
126
 
126
127
  - 不做本地 `src/pages` 与线上菜单 diff;这类对比使用 `menu sync`。
127
- - 不做智能列表页菜单审计;dataset-scoped 页面事实使用 `page standard-page-status`。
128
+ - 不做数据列表页菜单审计;dataset-scoped 页面事实使用 `page data-list-status`。
128
129
  - 不修改外链 URL;使用 `menu external-link-update`,并带旧 URL 与父级断言。
129
130
  - 不修改菜单资源;更新 JS / CSS 资源 URL 使用 `menu asset-update`,并先执行 dry-run。
130
- - 不修改菜单;改名使用 `menu rename`,空 folder 删除使用计划化的 `menu delete`,分组生命周期使用 `group-create/group-update/regroup-start`,写操作都必须先 dry-run。
131
+ - 不修改菜单;显示隐藏使用 `menu visibility-update`,改名使用 `menu rename`,空 folder 删除使用计划化的 `menu delete`,分组生命周期使用 `group-create/group-update/regroup-start`,写操作都必须先 dry-run。
131
132
 
132
133
  ## 参考
133
134
 
@@ -135,6 +136,7 @@ rabetbase menu list --verbose --format json
135
136
  - [menu external-link-create](rabetbase-menu-external-link-create.md)
136
137
  - [menu external-link-update](rabetbase-menu-external-link-update.md)
137
138
  - [menu rename](rabetbase-menu-rename.md)
139
+ - [menu visibility-update](rabetbase-menu-visibility-update.md)
138
140
  - [menu asset-update](rabetbase-menu-asset-update.md)
139
141
  - [menu delete](rabetbase-menu-delete.md)
140
142
  - [menu group-create](rabetbase-menu-group-create.md)
@@ -0,0 +1,59 @@
1
+ # menu visibility-update
2
+
3
+ 按精确菜单 ID 或 path 批量显示、隐藏线上菜单。该命令只更新 `visible`,不删除页面,也不修改 path、URL、父级、排序或资源。
4
+
5
+ ## 隐藏菜单
6
+
7
+ ```bash
8
+ rabetbase menu list --format compress
9
+ rabetbase menu visibility-update --menu-ids "10,11" --visible=false --expect-visible=true --expected-count 2 --dry-run --format compress
10
+ rabetbase menu visibility-update --menu-ids "10,11" --visible=false --expect-visible=true --expected-count 2 --yes --format compress
11
+ rabetbase menu list --format json --jq '.data.menus[] | select(.id == 10 or .id == 11) | {id, path, visible}'
12
+ ```
13
+
14
+ ## 恢复显示
15
+
16
+ ```bash
17
+ rabetbase menu visibility-update --menu-ids "10,11" --visible=true --expect-visible=false --expected-count 2 --dry-run --format compress
18
+ rabetbase menu visibility-update --menu-ids "10,11" --visible=true --expect-visible=false --expected-count 2 --yes --format compress
19
+ ```
20
+
21
+ ## Flags
22
+
23
+ | Flag | 类型 | 说明 |
24
+ |---|---|---|
25
+ | `--menu-ids <csv>` | string | 精确菜单 ID;只接受正安全整数,可与 paths 组合并去重 |
26
+ | `--paths <csv>` | string | 精确菜单 path;同一路径命中多条时必须改用 ID |
27
+ | `--visible <true\|false>` | boolean | 必填,目标可见性;显式 `false` 不会被忽略 |
28
+ | `--expect-visible <true\|false>` | boolean | 可选,断言所有目标当前可见性,防止覆盖并发变化 |
29
+ | `--expected-count <n>` | number | 可选,断言去重后的精确目标数量 |
30
+ | `--dry-run` | boolean | 输出目标、before/after、snapshotHash 和最小请求,不写入 |
31
+ | `--yes` | boolean | 正式执行必填;该命令是 `high-risk-write` |
32
+
33
+ `--menu-ids` 与 `--paths` 至少提供一个。任一 selector 未命中会整批失败,不会静默更新子集;ID 与 path 选中同一菜单时自动去重。
34
+
35
+ ## 执行检查
36
+
37
+ 1. 先用 `menu list` 取得精确 ID、path 和当前 `visible`。
38
+ 2. dry-run 时同时传 `--expect-visible` 与 `--expected-count`。
39
+ 3. 检查 `targets[].before/after`,确认只有 `visible` 改变。
40
+ 4. 复用相同 selector、目标值和断言,添加 `--yes` 正式执行。
41
+ 5. 检查 `succeeded/failed` 与 `verification.matchesRequestedState`,再用 `menu list` 回查。
42
+
43
+ 目标已经等于期望值时返回 `skipped=true`,不发送更新请求。批量请求出现部分失败时不会自动重试;先按 `succeeded/failed` 和 `menu list` 核对实际状态,再为仍未生效的精确 ID 重新 dry-run。
44
+
45
+ ## 常见错误
46
+
47
+ - `menu_selector_not_found`:ID 或 path 不存在;重新执行 `menu list` 获取当前事实。
48
+ - `menu_selector_ambiguous`:一个 path 命中多条菜单;按错误提示改用 `--menu-ids`。
49
+ - `menu_expected_count_mismatch`:去重后的目标数量与断言不一致;重新检查 selector。
50
+ - `menu_state_drift`:当前可见性或菜单快照发生变化;重新读取并 dry-run。
51
+ - `menu_verification_failed`:写后 visible 或未修改字段无法确认;先执行 `menu list`,不要直接重试整批。
52
+
53
+ 隐藏菜单只影响菜单展示,不等于禁用页面或修改权限。页面能否通过直达地址访问,仍由平台现有权限事实决定。
54
+
55
+ ## 相关命令
56
+
57
+ - [menu list](rabetbase-menu-list.md)
58
+ - [menu move](rabetbase-menu-move.md)
59
+ - [menu asset-update](rabetbase-menu-asset-update.md)