@lovrabet/rabetbase-cli 2.5.5-beta.1 → 2.5.5-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (367) hide show
  1. package/lib/api/api-doc.js +1 -1
  2. package/lib/api/api-group.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/api/generate-sdk-config-file.js +1 -1
  6. package/lib/api/legacy-api-file.js +1 -1
  7. package/lib/api/model-registry-file.js +1 -1
  8. package/lib/api/model-registry-scaffold.js +1 -1
  9. package/lib/api/model-source.js +1 -1
  10. package/lib/auth/auth-server-ui.js +1 -1
  11. package/lib/auth/auth-server.js +1 -1
  12. package/lib/auth/constant.js +1 -1
  13. package/lib/auth/get-cookie.js +1 -1
  14. package/lib/auth/get-session-user.js +1 -1
  15. package/lib/auth/is-session-valid.js +1 -1
  16. package/lib/auth/login-success-html.js +1 -1
  17. package/lib/auth/logout.js +1 -1
  18. package/lib/cli-flags.js +1 -1
  19. package/lib/cli.js +1 -1
  20. package/lib/commands/api/generate.js +1 -1
  21. package/lib/commands/api/index.js +1 -1
  22. package/lib/commands/api/list.js +1 -1
  23. package/lib/commands/api/pull.js +1 -1
  24. package/lib/commands/api/shared.js +1 -1
  25. package/lib/commands/app/detail.js +1 -1
  26. package/lib/commands/app/index.js +1 -1
  27. package/lib/commands/app/list.js +1 -1
  28. package/lib/commands/app/members-list.js +1 -1
  29. package/lib/commands/app/remote-directory.js +1 -1
  30. package/lib/commands/app/shared.js +1 -1
  31. package/lib/commands/app-config/delete.js +1 -1
  32. package/lib/commands/app-config/get.js +1 -1
  33. package/lib/commands/app-config/index.js +1 -1
  34. package/lib/commands/app-config/list.js +1 -1
  35. package/lib/commands/app-config/set.js +1 -1
  36. package/lib/commands/app-config/shared.js +1 -1
  37. package/lib/commands/auth/index.js +1 -1
  38. package/lib/commands/bff/create.js +1 -1
  39. package/lib/commands/bff/delete.js +1 -1
  40. package/lib/commands/bff/detail.js +1 -1
  41. package/lib/commands/bff/index.js +1 -1
  42. package/lib/commands/bff/list.js +1 -1
  43. package/lib/commands/bff/logs.js +1 -1
  44. package/lib/commands/bff/pull.js +1 -1
  45. package/lib/commands/bff/push.js +1 -1
  46. package/lib/commands/bff/status.js +1 -1
  47. package/lib/commands/cli-skill/index.js +1 -1
  48. package/lib/commands/cli-update.js +1 -1
  49. package/lib/commands/codegen/index.js +1 -1
  50. package/lib/commands/codegen/sdk.js +1 -1
  51. package/lib/commands/codegen/sql.js +1 -1
  52. package/lib/commands/common/app-registry.js +1 -1
  53. package/lib/commands/common/app-selector.js +1 -1
  54. package/lib/commands/common/async-task.js +1 -1
  55. package/lib/commands/common/dry-run.js +1 -1
  56. package/lib/commands/common/flags.js +1 -1
  57. package/lib/commands/common/local-file.js +1 -1
  58. package/lib/commands/common/validate.js +1 -1
  59. package/lib/commands/config/delete.js +1 -1
  60. package/lib/commands/config/get.js +1 -1
  61. package/lib/commands/config/index.js +1 -1
  62. package/lib/commands/config/init.js +1 -1
  63. package/lib/commands/config/list.js +1 -1
  64. package/lib/commands/config/set.js +1 -1
  65. package/lib/commands/config/shared.js +1 -1
  66. package/lib/commands/dataset/batch-design.js +1 -1
  67. package/lib/commands/dataset/business-group-update.js +1 -1
  68. package/lib/commands/dataset/business-groups.js +1 -1
  69. package/lib/commands/dataset/capability.js +1 -1
  70. package/lib/commands/dataset/cross-relation-create.js +1 -1
  71. package/lib/commands/dataset/cross-relation-delete.js +1 -1
  72. package/lib/commands/dataset/cross-relation-list.js +1 -1
  73. package/lib/commands/dataset/cross-relation-shared.js +1 -1
  74. package/lib/commands/dataset/cross-relation-update.js +1 -1
  75. package/lib/commands/dataset/delete.js +1 -1
  76. package/lib/commands/dataset/detail.js +1 -1
  77. package/lib/commands/dataset/extend-update.js +1 -1
  78. package/lib/commands/dataset/field-restore.js +1 -1
  79. package/lib/commands/dataset/field-update.js +1 -1
  80. package/lib/commands/dataset/generate.js +1 -1
  81. package/lib/commands/dataset/index.js +1 -1
  82. package/lib/commands/dataset/list.js +1 -1
  83. package/lib/commands/dataset/operations.js +1 -1
  84. package/lib/commands/dataset/relation-audit.js +1 -1
  85. package/lib/commands/dataset/relation-create.js +1 -1
  86. package/lib/commands/dataset/relation-delete.js +1 -1
  87. package/lib/commands/dataset/relation-shared.js +1 -1
  88. package/lib/commands/dataset/relation-update.js +1 -1
  89. package/lib/commands/dataset/relations.js +1 -1
  90. package/lib/commands/dataset/rename.js +1 -1
  91. package/lib/commands/dataset/restore.js +1 -1
  92. package/lib/commands/dataset/user-deleted-field-list.js +1 -1
  93. package/lib/commands/db/analysis-batching.js +1 -1
  94. package/lib/commands/db/analyze-batch-plan.js +1 -1
  95. package/lib/commands/db/analyze-cancel.js +1 -1
  96. package/lib/commands/db/analyze-start.js +1 -1
  97. package/lib/commands/db/analyze-status.js +1 -1
  98. package/lib/commands/db/create.js +1 -1
  99. package/lib/commands/db/delete.js +1 -1
  100. package/lib/commands/db/detail.js +1 -1
  101. package/lib/commands/db/diff-refresh-start.js +1 -1
  102. package/lib/commands/db/diff-refresh-status.js +1 -1
  103. package/lib/commands/db/diff.js +1 -1
  104. package/lib/commands/db/index.js +1 -1
  105. package/lib/commands/db/list.js +1 -1
  106. package/lib/commands/db/shared.js +1 -1
  107. package/lib/commands/db/table-diff-shared.js +1 -1
  108. package/lib/commands/db/tables.js +1 -1
  109. package/lib/commands/db/test.js +1 -1
  110. package/lib/commands/db/update.js +1 -1
  111. package/lib/commands/deployment/index.js +1 -1
  112. package/lib/commands/deployment/sync-all.js +1 -1
  113. package/lib/commands/deployment/sync-jobs.js +1 -1
  114. package/lib/commands/deployment/sync-status.js +1 -1
  115. package/lib/commands/doctor.js +1 -1
  116. package/lib/commands/file/index.js +1 -1
  117. package/lib/commands/flow/create.js +1 -1
  118. package/lib/commands/flow/detail.js +1 -1
  119. package/lib/commands/flow/index.js +1 -1
  120. package/lib/commands/flow/list.js +1 -1
  121. package/lib/commands/flow/publish.js +1 -1
  122. package/lib/commands/flow/runtime-resources-shared.js +1 -1
  123. package/lib/commands/flow/runtime-role-list.js +1 -1
  124. package/lib/commands/flow/runtime-role-user-list.js +1 -1
  125. package/lib/commands/flow/runtime-user-search.js +1 -1
  126. package/lib/commands/flow/shared.js +1 -1
  127. package/lib/commands/flow/update.js +1 -1
  128. package/lib/commands/flow/validate.js +1 -1
  129. package/lib/commands/instant-api-policy/current.js +1 -1
  130. package/lib/commands/instant-api-policy/index.js +1 -1
  131. package/lib/commands/instant-api-policy/init.js +1 -1
  132. package/lib/commands/instant-api-policy/publish.js +1 -1
  133. package/lib/commands/instant-api-policy/pull.js +1 -1
  134. package/lib/commands/instant-api-policy/revision.js +1 -1
  135. package/lib/commands/instant-api-policy/revisions.js +1 -1
  136. package/lib/commands/instant-api-policy/rollback.js +1 -1
  137. package/lib/commands/instant-api-policy/shared.js +1 -1
  138. package/lib/commands/instant-api-policy/validate.js +1 -1
  139. package/lib/commands/issue/index.js +1 -1
  140. package/lib/commands/issue/nudge.js +1 -1
  141. package/lib/commands/issue/report.js +1 -1
  142. package/lib/commands/issue/shared.js +1 -1
  143. package/lib/commands/kb/create.js +1 -1
  144. package/lib/commands/kb/delete.js +1 -1
  145. package/lib/commands/kb/detail.js +1 -1
  146. package/lib/commands/kb/index.js +1 -1
  147. package/lib/commands/kb/list.js +1 -1
  148. package/lib/commands/kb/search.js +1 -1
  149. package/lib/commands/kb/shared.js +1 -1
  150. package/lib/commands/kb/update.js +1 -1
  151. package/lib/commands/logs/index.js +1 -1
  152. package/lib/commands/menu/asset-update.js +1 -1
  153. package/lib/commands/menu/delete.js +1 -1
  154. package/lib/commands/menu/external-link-create.js +1 -1
  155. package/lib/commands/menu/external-link-update.js +1 -1
  156. package/lib/commands/menu/group-create.js +1 -1
  157. package/lib/commands/menu/group-update.js +1 -1
  158. package/lib/commands/menu/index.js +1 -1
  159. package/lib/commands/menu/list.js +1 -1
  160. package/lib/commands/menu/move.js +1 -1
  161. package/lib/commands/menu/regroup-start.js +1 -1
  162. package/lib/commands/menu/rename.js +1 -1
  163. package/lib/commands/menu/shared/compare-table.js +1 -1
  164. package/lib/commands/menu/shared/delete-plan.js +1 -1
  165. package/lib/commands/menu/shared/facts.js +1 -1
  166. package/lib/commands/menu/shared/index.js +1 -1
  167. package/lib/commands/menu/shared/inquirer.js +1 -1
  168. package/lib/commands/menu/shared/local-pages.js +1 -1
  169. package/lib/commands/menu/shared/logic.js +1 -1
  170. package/lib/commands/menu/shared/mutations.js +1 -1
  171. package/lib/commands/menu/shared/path.js +1 -1
  172. package/lib/commands/menu/shared/service.js +1 -1
  173. package/lib/commands/menu/shared/subapp-assets.js +1 -1
  174. package/lib/commands/menu/shared/sync-core.js +1 -1
  175. package/lib/commands/menu/shared/update-core.js +1 -1
  176. package/lib/commands/menu/shared/valid-url.js +1 -1
  177. package/lib/commands/menu/subapp-assets-status.js +1 -1
  178. package/lib/commands/menu/subapp-assets-update.js +1 -1
  179. package/lib/commands/menu/sync.js +1 -1
  180. package/lib/commands/menu/visibility-update.js +1 -1
  181. package/lib/commands/notification/config-create.js +1 -1
  182. package/lib/commands/notification/config-delete.js +1 -1
  183. package/lib/commands/notification/config-list.js +1 -1
  184. package/lib/commands/notification/config-update.js +1 -1
  185. package/lib/commands/notification/index.js +1 -1
  186. package/lib/commands/notification/shared.js +1 -1
  187. package/lib/commands/ocr/index.js +1 -1
  188. package/lib/commands/page/create.js +1 -1
  189. package/lib/commands/page/custom/detail.js +1 -1
  190. package/lib/commands/page/custom/list.js +1 -1
  191. package/lib/commands/page/custom/publish.js +1 -1
  192. package/lib/commands/page/custom/shared.js +1 -1
  193. package/lib/commands/page/custom/syntax.js +1 -1
  194. package/lib/commands/page/custom/update.js +1 -1
  195. package/lib/commands/page/data-list-status.js +1 -1
  196. package/lib/commands/page/generate-start.js +1 -1
  197. package/lib/commands/page/generate-status.js +1 -1
  198. package/lib/commands/page/index.js +1 -1
  199. package/lib/commands/page/pull.js +1 -1
  200. package/lib/commands/page/push.js +1 -1
  201. package/lib/commands/page/relation-audit.js +1 -1
  202. package/lib/commands/page/restore.js +1 -1
  203. package/lib/commands/page/shared.js +1 -1
  204. package/lib/commands/page/sync.js +1 -1
  205. package/lib/commands/project/api-architecture-upgrade.js +1 -1
  206. package/lib/commands/project/create/enhanced-guided-create.js +1 -1
  207. package/lib/commands/project/create/format-elapsed.js +1 -1
  208. package/lib/commands/project/create/main.js +1 -1
  209. package/lib/commands/project/create/materialize-project-template.js +1 -1
  210. package/lib/commands/project/create/project-name.js +1 -1
  211. package/lib/commands/project/create/project-template-archive.js +1 -1
  212. package/lib/commands/project/create/project-template-path.js +1 -1
  213. package/lib/commands/project/create/use-copy-project-template.js +1 -1
  214. package/lib/commands/project/create/use-format-code.js +1 -1
  215. package/lib/commands/project/create/use-install-dependencies.js +1 -1
  216. package/lib/commands/project/domain-routing-sync.js +1 -1
  217. package/lib/commands/project/index.js +1 -1
  218. package/lib/commands/project/upgrade.js +1 -1
  219. package/lib/commands/registry.js +1 -1
  220. package/lib/commands/role/delete.js +1 -1
  221. package/lib/commands/role/detail.js +1 -1
  222. package/lib/commands/role/index.js +1 -1
  223. package/lib/commands/role/list.js +1 -1
  224. package/lib/commands/role/shared.js +1 -1
  225. package/lib/commands/role/update.js +1 -1
  226. package/lib/commands/role/user-add.js +1 -1
  227. package/lib/commands/role/user-remove.js +1 -1
  228. package/lib/commands/role/user-resolve.js +1 -1
  229. package/lib/commands/rule/get.js +1 -1
  230. package/lib/commands/rule/index.js +1 -1
  231. package/lib/commands/rule/list.js +1 -1
  232. package/lib/commands/rule/set.js +1 -1
  233. package/lib/commands/rule/shared.js +1 -1
  234. package/lib/commands/run/index.js +1 -1
  235. package/lib/commands/schema.js +1 -1
  236. package/lib/commands/sql/create.js +1 -1
  237. package/lib/commands/sql/delete.js +1 -1
  238. package/lib/commands/sql/detail.js +1 -1
  239. package/lib/commands/sql/exec.js +1 -1
  240. package/lib/commands/sql/index.js +1 -1
  241. package/lib/commands/sql/list.js +1 -1
  242. package/lib/commands/sql/pull.js +1 -1
  243. package/lib/commands/sql/push.js +1 -1
  244. package/lib/commands/sql/shared.js +1 -1
  245. package/lib/commands/sql/status.js +1 -1
  246. package/lib/commands/sql/validate.js +1 -1
  247. package/lib/commands/task/index.js +1 -1
  248. package/lib/commands/task/status.js +1 -1
  249. package/lib/commands/tenant/index.js +1 -1
  250. package/lib/commands/tenant/members-list.js +1 -1
  251. package/lib/commands/tenant/shared.js +1 -1
  252. package/lib/commands/user-account/dingding-sandbox-bind.js +1 -1
  253. package/lib/commands/user-account/feishu-bind.js +1 -1
  254. package/lib/commands/user-account/index.js +1 -1
  255. package/lib/commands/workspace/add.js +1 -1
  256. package/lib/commands/workspace/index.js +1 -1
  257. package/lib/commands/workspace/remove.js +1 -1
  258. package/lib/config/domain-config.js +1 -1
  259. package/lib/config/project-domain-routing.js +1 -1
  260. package/lib/config/region-config.js +1 -1
  261. package/lib/config/schema.js +1 -1
  262. package/lib/constant/cdn.js +1 -1
  263. package/lib/constant/cli.js +1 -1
  264. package/lib/constant/defaults.js +1 -1
  265. package/lib/constant/domain.js +1 -1
  266. package/lib/constant/env.js +1 -1
  267. package/lib/constant/output.js +1 -1
  268. package/lib/constant/paths.js +1 -1
  269. package/lib/constant/region.js +1 -1
  270. package/lib/constant/risk.js +1 -1
  271. package/lib/constant/routing-profile.js +1 -1
  272. package/lib/context/app-resolver.js +1 -1
  273. package/lib/context/auth-resolver.js +1 -1
  274. package/lib/context/config-loader.js +1 -1
  275. package/lib/context.js +1 -1
  276. package/lib/core/alias-resolver.js +1 -1
  277. package/lib/core/api-client.js +1 -1
  278. package/lib/core/bff/config.js +1 -1
  279. package/lib/core/bff/file-system.js +1 -1
  280. package/lib/core/bff/hash.js +1 -1
  281. package/lib/core/bff/hook-directory.js +1 -1
  282. package/lib/core/bff/lock.js +1 -1
  283. package/lib/core/bff/utils.js +1 -1
  284. package/lib/core/cross-db-relation.js +1 -1
  285. package/lib/core/db-resolver.js +1 -1
  286. package/lib/core/flow-config.js +1 -1
  287. package/lib/core/instant-api-policy/config.js +1 -1
  288. package/lib/core/kb-search-client.js +1 -1
  289. package/lib/core/page/file-system.js +1 -1
  290. package/lib/core/page/hash.js +1 -1
  291. package/lib/core/page/lock.js +1 -1
  292. package/lib/core/page/lr-smart-jsx.js +1 -1
  293. package/lib/core/sql-index-auditor.js +1 -1
  294. package/lib/core/sql-sync/config.js +1 -1
  295. package/lib/core/sql-sync/file-system.js +1 -1
  296. package/lib/core/sql-sync/hash.js +1 -1
  297. package/lib/core/sql-sync/lock.js +1 -1
  298. package/lib/core/sql-sync/utils.js +1 -1
  299. package/lib/core/sql-validator.js +1 -1
  300. package/lib/errors.js +1 -1
  301. package/lib/framework/build-all-flags.js +1 -1
  302. package/lib/framework/error-output.js +1 -1
  303. package/lib/framework/explicit-yes.js +1 -1
  304. package/lib/framework/flags.js +1 -1
  305. package/lib/framework/help.js +1 -1
  306. package/lib/framework/index.js +1 -1
  307. package/lib/framework/output.js +1 -1
  308. package/lib/framework/response.js +1 -1
  309. package/lib/framework/runner-alias.js +1 -1
  310. package/lib/framework/runner.js +1 -1
  311. package/lib/framework/schema-export.js +1 -1
  312. package/lib/framework/supported-flags.js +1 -1
  313. package/lib/framework/types.js +1 -1
  314. package/lib/generated/build-info.d.ts +4 -4
  315. package/lib/generated/build-info.js +1 -1
  316. package/lib/generated/official-routing.js +1 -1
  317. package/lib/generated/routing-contract.js +1 -1
  318. package/lib/help.js +1 -1
  319. package/lib/postinstall.js +1 -1
  320. package/lib/runtime/confirmation.js +1 -1
  321. package/lib/runtime/event.js +1 -1
  322. package/lib/runtime/index.js +1 -1
  323. package/lib/runtime/queue.js +1 -1
  324. package/lib/runtime/resolve.js +1 -1
  325. package/lib/skills/builtin-skill.js +1 -1
  326. package/lib/skills/main.js +1 -1
  327. package/lib/skills/npx-skills-add.js +1 -1
  328. package/lib/skills/skill-presence.js +1 -1
  329. package/lib/telemetry/cli-command-trace.js +1 -1
  330. package/lib/telemetry/cli-help-trace.js +1 -1
  331. package/lib/telemetry/ensure-cli-otel-config.js +1 -1
  332. package/lib/telemetry/register-otel-exit-shutdown.js +1 -1
  333. package/lib/telemetry/send-cli-trace-log.js +1 -1
  334. package/lib/telemetry/send-platform-issue-collect-log.js +1 -1
  335. package/lib/utils/ai_config.js +1 -1
  336. package/lib/utils/apply-jq-filter.js +1 -1
  337. package/lib/utils/cdn-config.js +1 -1
  338. package/lib/utils/check-sdk-version.js +1 -1
  339. package/lib/utils/cli-version-check.js +1 -1
  340. package/lib/utils/cli-version-policy.js +1 -1
  341. package/lib/utils/config.js +1 -1
  342. package/lib/utils/entity-with-id.js +1 -1
  343. package/lib/utils/file-utils.js +1 -1
  344. package/lib/utils/guides-cdn.js +1 -1
  345. package/lib/utils/http-client.js +1 -1
  346. package/lib/utils/is-non-interactive.js +1 -1
  347. package/lib/utils/logger.js +1 -1
  348. package/lib/utils/params.js +1 -1
  349. package/lib/utils/platform.js +1 -1
  350. package/lib/utils/sleep.js +1 -1
  351. package/lib/utils/template-replacer.js +1 -1
  352. package/lib/utils/update-notice.js +1 -1
  353. package/lib/utils/version.js +1 -1
  354. package/lib/utils/with-active-cookie.js +1 -1
  355. package/lib/utils/write-cli-side-channel.js +1 -1
  356. package/package.json +1 -1
  357. package/skills/rabetbase/SKILL.md +3 -3
  358. package/skills/rabetbase/guides/independent-deployment.md +11 -1
  359. package/skills/rabetbase/references/rabetbase-config.md +16 -19
  360. package/skills/rabetbase/references/rabetbase-menu-visibility-update.md +5 -4
  361. package/skills/rabetbase/references/rabetbase-workspace.md +3 -1
  362. package/skills/rabetbase-page-generation/SKILL.md +13 -9
  363. package/skills/rabetbase-page-generation/references/component-baseline.md +2 -2
  364. package/skills/rabetbase-page-generation/references/generation.md +64 -15
  365. package/skills/rabetbase-page-generation/templates/onepage/build.mjs +39 -54
  366. package/skills/rabetbase-page-generation/templates/onepage/list/index.jsx +6 -2
  367. package/skills/rabetbase.manifest.json +3 -3
@@ -10,31 +10,49 @@ npx skills add /path/to/rabetbase-cli/skills/rabetbase-page-generation -g -y
10
10
 
11
11
  将路径替换为当前 CLI 包的真实位置,安装后确认 Agent 可发现 `rabetbase-page-generation`。CLI 既有 postinstall 安装的是 `rabetbase` Skill;此独立 Skill 的安装由使用方显式执行。
12
12
 
13
+ ## 确定应用与页面需求
14
+
15
+ 默认在正式环境(prod)的当前应用完成任务。先核对当前 CLI 路由、用户提供的应用链接、Dataset 和已有页面是否一致;用户明确指定 daily 或企业部署时沿用该目标,不因查不到应用而切换环境试写。命令示例沿用已核验的当前路由,daily 检查不是 prod 交付门禁,也不要求非技术用户选择环境参数。
16
+
17
+ 用户要求创建或重做页面后,按该任务范围完成页面创建、保存、串联、验收和发布,不要求用户逐个批准命令或每个页面。只有业务范围或目标应用不明确时做一次必要的简短确认,例如“我会做一个问卷列表,支持查看和新增,完成后给你入口”。用户只要方案或预览时尊重这个停止点;工具权限拦截时保留已完成成果,不绕过控制、不自行提高风险上限。
18
+
19
+ 先形成内部页面计划,记录需要的能力、入口、页面间跳转、菜单展示和旧页面处理:
20
+
21
+ - `list / detail / create / update` 是可选基础模板。只读场景按需保留列表、详情;仅查看单条记录可以只有详情,仅录入可以只有新增。不可编辑时不创建更新页,也移除所有编辑入口和写入逻辑;“不可修改”与“允许新增”的边界若不明确,用业务语言简短确认。明确只读时同时移除新增、编辑、删除和批量写入能力。
22
+ - 用户需要看板、审批或汇总时可以扩展页面。按实际业务需求决定入口,不强行补齐四页;未选择的页面不创建菜单,不留下链接或按钮。
23
+ - 通过 Dataset 关联页、`menu list` 与对应页面详情识别已有 lowcode 和 CustomJSX 页面。内部记录旧页面到新页面的名称、类型、`pageId`、`menuId`、路径和用途对应关系;旧 lowcode 的 ID 不得用于 `custom-detail`、`custom-update` 或 `custom-publish`。
24
+ - 用户给的链接可能只是定位应用的旧页面。新流程应使用计划内新页面的真实路径,不能把旧页面路径回填成新页面路径;交付时提供新的入口。重试前查已有创建回执和线上页面,不能仅凭同名判断同一页面或重复创建。
25
+
26
+ ## 菜单与旧页面安排
27
+
28
+ 新页面默认只显示业务入口,作为详情、录入、编辑等流程内部节点的页面设为隐藏;独立入口按用户需求显示。扩展或裁剪页面后同步调整菜单策略,不能固定假设永远有四个页面。
29
+
30
+ 新流程验收通过后,可以向用户建议隐藏旧 lowcode 页面,确认不再使用时也可以建议删除。已包含在用户替换要求中的隐藏安排直接执行;未明确要替换旧入口时先建议,不能悄悄隐藏仍在使用的旧页面。删除旧页面需有明确删除意图、核对影响范围和外部引用;保留页面不影响新流程交付。隐藏保留路由,删除不能用来代替隐藏。
31
+
13
32
  ## 绑定真实 Dataset
14
33
 
15
34
  1. 用 `rabetbase dataset detail --code <datasetCode> --format compress` 读取字段、类型、必填、枚举和操作。用 `rabetbase codegen sdk` 核验 SDK 签名;不要从原始接口元信息猜测请求或响应。
16
35
  2. 将 `templates/onepage` 整体复制到页面工作目录。先阅读对应页面目录的 `README.md` 和 `preview.png`,明确布局与交互;`shared/` 保存四页共用代码,复制时一起保留。它是供 Agent 改写的 JSX 模板,不是配置解释器:客户字段展示了分组、数字、枚举、日期、智能筛选和表单的完整写法。按真实 Dataset 改写 `shared/model.js` 的字段与查询、`shared/record-layout.jsx` 的分组说明、`list/index.jsx` 的筛选/标题/手机主字段、`shared/editor.jsx` 的控件/校验/写入字段及 `detail/index.jsx` 的标题/主键读取。不能只替换 Dataset code 就直接发布给其他业务。
17
- 3. 替换 `shared/model.js` 中 `__APP_CODE__`、`__DATASET_CODE__`;创建前将尚无真实路径的 `__LIST_PATH__`、`__DETAIL_PATH__`、`__CREATE_PATH__`、`__UPDATE_PATH__` 设为空字符串,创建后回填服务端真实路径。四页使用相同绑定。示例以数字 `id` 为主键;其他类型需要同时改写校验、记录导航和 SDK 参数。
36
+ 3. 替换 `shared/model.js` 中 `__APP_CODE__`、`__DATASET_CODE__`;创建前将尚无真实路径的 `__LIST_PATH__`、`__DETAIL_PATH__`、`__CREATE_PATH__`、`__UPDATE_PATH__` 设为空字符串,创建后回填服务端真实路径。计划内页面使用相同绑定;未选页面不保留导航入口。示例以数字 `id` 为主键;其他类型需要同时改写校验、记录导航和 SDK 参数。
18
37
  4. 页面使用宿主 `useSdkClient()`:已核验的 Dataset 模型提供 `filter({where,currentPage,pageSize,orderBy})`、`getOne(id)`、`create(fields)`、`update(id,fields)`。列表读取 `tableData` 和 `paging.totalCount`;若实际 SDK 不同,按真实契约改写。只在已确认需要连接、聚合或业务规则时改用 Custom SQL / Backend Function。
19
38
 
20
39
  保持零值、枚举、空日期和主键类型正确;数字不加千分位,金额精度按字段定义。列表、详情和表单均区分加载、空数据、错误与重试。分页只使用已提交的筛选;搜索、重置和切换页大小回第一页,忽略过期响应。
21
40
 
22
- ## 构建四个独立目录
41
+ ## 组装计划内页面目录
23
42
 
24
- 在页面工作目录安装页面构建工具 `esbuild`,准备已核验版本的智能搜索 JSX 入口及 CSS;不要求 CLI 安装这些页面开发依赖。`build.mjs` 只打包当前目录的四页源码,不读取 Dataset、不选模板、不创建平台资源。
43
+ 确认宿主可解析已发布的 `@lovrabet/components` 版本,并且该版本从包根入口导出 `LrSmartFilter`。模板直接使用这个公共组件,不复制 JSX 或 CSS 源码,也不改写成本地筛选器;不要求 CLI 安装页面构建依赖。若宿主解析失败,停止页面发布,通知用户需要由 `app-platform` 更新依赖或构建模板,不修改该仓库。`build.mjs` 只组装当前目录的四页可读源码,不读取 Dataset、不选模板、不创建平台资源,也不生成 `page.js`。平台保存/发布时使用新的微应用构建模板完成 JSX 编译。
25
44
 
26
45
  ```sh
27
- npm install --save-dev esbuild
28
- node build.mjs ./pages-v1 /path/to/smart-filter/index.tsx /path/to/smart-filter/style.css
46
+ node build.mjs ./pages-v1
29
47
  ```
30
48
 
31
- 输出目录必须尚不存在,避免旧文件混入更新。结果为 `pages-v1/list`、`detail`、`create`、`update`;每页包含完整的 `src/app/index.jsx`、`page.js`、`page.css`,没有跨页源码依赖。四页共享相同 CSS 内容,避免打开子页时宿主更新资源导致父列表丢失样式。页面文案默认中文,按应用语言调整源码;需要多语言时使用宿主 `useI18n` 和页面自己的语言资源。
49
+ 输出目录必须尚不存在,避免旧文件混入更新。结果为 `pages-v1/list`、`detail`、`create`、`update`;每页包含可读的 `src/app/index.jsx`、`src/shared` 源码,并通过 `import { LrSmartFilter } from "@lovrabet/components"` 使用公共组件,不包含 `page.js` 或其他预编译 bundle。基础脚本仍输出四个目录,不负责选择页面;只对计划中的目录执行创建、更新和发布,本地多出的目录不代表已创建平台资源。扩展页由 Agent 在工作目录按相同 `src/app/index.jsx` 与所需 `src/shared` 结构组织,不假设脚本自动发现新目录,也不为本次业务改写已安装的 Skill。每个上传页面都拥有完整源码,避免更新一个页面时依赖另一个页面的文件。删除未选页面对应的按钮、导航、字段动作和不可用操作;详情没有编辑页时不能保留“编辑”按钮。组装成功不等于平台编译成功。页面文案默认中文,按应用语言调整源码;需要多语言时使用宿主 `useI18n` 和页面自己的语言资源。
32
50
 
33
- 构建脚本解析当前页面项目安装的 esbuild。若使用 npm 包形式的智能搜索入口,先检查实际 exports 并解析出具体文件路径;不要假设某版本存在 `smart-filter` 子入口。缺失组件或 CSS 时先解决依赖,不改成简易输入框宣称效果一致。
51
+ 构建脚本不复制组件源码或独立 CSS,也不把它改成简易输入框或预编译 bundle 来规避依赖问题。组件导出已经发布后,真实页面验收必须覆盖智能搜索和结构化筛选;若宿主仍不识别导出,按组件宿主阻断处理,通知用户由 `app-platform` 修复后再继续,不能用页面内副本冒充组件库复用。
34
52
 
35
53
  ## 创建、回填与更新
36
54
 
37
- 对四页分别执行已有命令,下面以列表为例:
55
+ 只对页面计划选中的页面执行已有命令,下面以列表为例:
38
56
 
39
57
  ```sh
40
58
  rabetbase page create --name "<页面名称>" --page-dir ./pages-v1/list --appcode <appCode> --dry-run --format compress
@@ -42,9 +60,9 @@ rabetbase page create --name "<页面名称>" --page-dir ./pages-v1/list --appco
42
60
  rabetbase page custom-detail --id <pageId> --appcode <appCode> --format compress
43
61
  ```
44
62
 
45
- 复用 `page create` 的默认建菜单行为,需要父菜单时使用已有 `--parent-menu-id`。菜单展示通过既有 `rabetbase menu` 命令管理,先查看 `menu list` 和 `menu visibility-update --help` 并按要求预演,再执行授权的调整。隐藏菜单保留路由和资源,不等同于不创建菜单;不得删除页面绑定菜单来模拟隐藏。当前任务若允许四页菜单,按该策略验收;不要声称只有入口绑定菜单。菜单状态只根据真实返回和回查结果判断。
63
+ 复用 `page create` 的默认建菜单行为,需要父菜单时使用已有 `--parent-menu-id`。菜单展示通过既有 `rabetbase menu` 命令管理,先查看 `menu list` 和 `menu visibility-update --help` 并按要求预演,再执行授权的调整。隐藏菜单保留路由和资源,不等同于不创建菜单;不得删除页面绑定菜单来模拟隐藏。按页面计划设置菜单可见性并逐项回查;隐藏的子页仍绑定菜单,不要声称只有入口绑定菜单。菜单状态只根据真实返回和回查结果判断。
46
64
 
47
- 记录四页 `pageId` 与真实路径,回填 `shared/model.js`,重新构建到新的输出目录。先回读远端当前 `codeContent`,再更新;`--page-dir` 是整目录替换,目录必须完整:
65
+ 记录每个计划内页面的 `pageId`、`menuId`、类型与真实路径,回填 `shared/model.js`,重新组装到新的输出目录。发布前逐条比对导航路径和新页面映射,特别检查新增按钮没有指向旧 lowcode 表单。先回读远端当前 `codeContent`,再更新;`--page-dir` 是整目录替换,目录必须完整:
48
66
 
49
67
  ```sh
50
68
  rabetbase page custom-update --id <pageId> --appcode <appCode> --page-dir ./pages-v2/list --format compress
@@ -52,9 +70,11 @@ rabetbase page custom-update --id <pageId> --appcode <appCode> --page-dir ./page
52
70
 
53
71
  ONEPAGE 子页读取 `onePageInfo.innerSearchParams.id`,直接访问时读取 `useLocation().search`。缺少或无效主键时不发数据请求。列表通过 `navigate(pathWithQuery, {onePage:true})` 打开子页;详情的上一条/下一条和详情切编辑使用当前面板替换,避免不断增加层级。更新保存后回原详情或父列表;直接访问返回真实入口。SDK 保存成功才发送按列表路径区分的刷新事件,父列表保留筛选和分页并重新读取数据;取消不写入数据、不发送刷新。
54
72
 
55
- ## 本地与浏览器验收
73
+ 上述导航按实际页面组合改写:没有列表时移除“返回列表”和列表刷新依赖,返回计划内的真实入口,或留在当前独立页面显示保存结果;没有详情时更新不能返回详情。独立详情入口必须有明确的记录选择或参数来源,不能让用户直接面对缺少主键的错误。增加看板等入口时一并调整返回目标和需要刷新的页面。
56
74
 
57
- 在非沙箱页面工作目录预览迭代;临时预览夹具、模拟数据和运行回执放任务验收目录,不加入 CLI 源码;页面目录中的 `preview.png` 是随 Skill 分发的效果参考。浏览器使用 Codex 内置浏览器。
75
+ ## 页面与浏览器验收
76
+
77
+ 在当前任务工作目录中预览迭代;页面目录中的 `preview.png` 是随 Skill 分发的效果参考。使用当前可用的浏览器能力,不要求安装桌面客户端、浏览器扩展或切换到外部浏览器。若没有浏览器能力,继续完成可执行的源码、构建和状态检查,清楚记录交互尚未验证;不能把命令成功当成浏览器验收通过。以下检查只应用于计划内能力;被裁剪的能力应检查其按钮、导航和写入调用已移除。
58
78
 
59
79
  - 同 Dataset 对比旧标准页的字段、分组、智能搜索、表单密度与操作位置;覆盖空数据、有数据、无匹配结果和超过一页的数据。
60
80
  - 查询、重置、翻页、页大小、勾选和列设置;自然语言查询必须读取真实结果,失败不冒充空结果。
@@ -63,15 +83,44 @@ ONEPAGE 子页读取 `onePageInfo.innerSearchParams.id`,直接访问时读取
63
83
  - 桌面及手机窄屏,列表和子页无溢出,底部按钮可访问;父列表保持筛选/分页。实际设备软键盘、深色主题等未覆盖项需明确记录。
64
84
  - 仅操作授权的测试数据,写入前保留原值,验收后还原修改并清理本轮测试记录。旧页面只用于对比,不作为新流程的运行依赖。
65
85
 
66
- 本地模拟不能证明真实 SDK、权限或 ONEPAGE 宿主正确。用四页预览验证真实数据流后再发布;若正式态暴露问题,修复后重新验收。
86
+ 本地模拟不能证明真实 SDK、权限或 ONEPAGE 宿主正确。按页面计划验证真实数据流后再发布;若正式态暴露问题,修复后重新验收。能力缺失造成的未验证项与明确的验收失败分别记录;用户若接受未验证范围并要求先发布,按该范围继续,仍不得声称完整验收通过。
67
87
 
68
88
  ## 发布与结果回查
69
89
 
90
+ 对每个计划内 CustomJSX 页面,发布前先 `custom-detail` 核对类型、应用、保存内容和版本:
91
+
92
+ - `status=FORMAL` 且有效的 `draftVersion === formalVersion`:当前保存内容已发布,跳过重复发布并检查运行页面;编辑器或本地尚未保存的改动不算已发布。
93
+ - 有新草稿或首次发布:确认已保存内容对应本轮验收源码,再发布。不能只因 `status=FORMAL` 就忽略较新的草稿。
94
+ - 版本缺失、异常、状态矛盾或远端内容与预期不一致:先回读并核对,不能把两个缺失版本当作相等,也不能覆盖他人的新改动或猜测已发布。
95
+
70
96
  ```sh
97
+ rabetbase page custom-detail --id <pageId> --appcode <appCode> --format compress
98
+ # 仅在确有待发布内容且已完成前述检查时执行
71
99
  rabetbase page custom-publish --id <pageId> --appcode <appCode> --remark "页面验收通过" --format compress
72
100
  rabetbase page custom-detail --id <pageId> --appcode <appCode> --format compress
73
101
  ```
74
102
 
75
- 四页分别检查发布状态 `FORMAL`、源码及版本,使用返回的运行 URL 打开正式态复验;报告实际菜单绑定情况。保留与最终提交/版本对应的复现步骤和结果,作为 MR 附件或外部验收材料;不把旧回执当成新版本证据。
103
+ 发布后逐页检查 `FORMAL`、正式版本是否等于本轮待发布版本、源码和运行地址。用返回的运行 URL 复验入口、子页跳转和菜单展示;命令成功、页面发布和业务交互验收是不同事实。网络超时、响应丢失或 500 时先回读状态,不立即重复发布。
104
+
105
+ ## 失败分类与恢复
106
+
107
+ 内部保留失败发生在哪一步、页面、时间、已脱敏错误及请求标识(若工具提供)。按证据选择恢复动作:
108
+
109
+ | 观察到的事实 | 判断与下一步 |
110
+ | --- | --- |
111
+ | 正式版本已等于预期版本,源码相符 | 目标已发布,停止重复调用并检查运行页;不能据此断言先前 500 的原因就是重复发布。 |
112
+ | 平台编译结果指出源码或组件/依赖错误 | 按构建错误修复,再保存和验证;组件处理遵循组件基线,不把构建失败说成没有数据。 |
113
+ | 页面事实是 lowcode,或 ID/应用与计划不同 | 回到新旧映射选择正确页面及对应命令;不要将旧页面当成新页面重复创建或发布。 |
114
+ | 鉴权、权限或 CLI 风险限制拒绝 | 保留成果,不绕过检查;只说明具体未完成操作和用户能采取的必要动作。 |
115
+ | 页面发布成功,但菜单设置失败 | 分别回查页面和菜单,恢复未完成的菜单步骤;不能把页面称为未发布或把菜单称为已隐藏。 |
116
+ | 只有 HTTP 500、超时或未知错误,回读也未能确定结果 | 原因待确认,保留证据,通过可用且授权的排障入口继续定位;不编造重复发布、组件缺失等根因,不循环重试。 |
117
+
118
+ 用户反馈用业务语言,例如“页面已经发布,可以直接打开”“页面已发布,但侧边栏还没调整完成”“这次发布没有完成,我正在检查原因”。只有确实存在未保存修改时才建议重新保存,不能把“重新保存再发布”当成所有错误的通用解决办法。
119
+
120
+ ## 内部记录与用户交付
121
+
122
+ 内部记录页面计划、新旧映射、页面与菜单标识、源码对应版本、发布结果、菜单实况,以及本轮验收的步骤、结果和未覆盖项。有可写任务目录时和源码一起保存,临时夹具和回执不加入 CLI 仓库或上传到业务页面;没有持久位置时保留在当前任务上下文,不要求用户提供存储目录,不保证任务结束后仍可取回。不记录凭据或完整业务数据,也不把旧回执当成新版本证据。
123
+
124
+ 向非技术用户只交付创建了哪些页面、用途、可直接打开的入口,以及旧页面处理建议和确需人工完成的事项。需要修改页面时提供工具返回的编辑链接,并与访问链接区分;不要自行拼接或沿用旧链接。详情等需要记录参数的页面优先通过入口访问,不把无参数错误页作为正常体验交付。默认不展示 pageId、menuId、接口、版本号、命令和本地验收文件路径;用户明确要求技术细节时再提供相关内容。
76
125
 
77
- CLI beta 发布遵循 CLI 发布流程;页面验收不等于 npm 发布成功。Development Sandbox 中安装 CLI beta 及独立 Skill 后,验证 Agent 可发现该 Skill,并完整执行四页生成和浏览器 E2E;Runtime Sandbox 不安装该 Skill。
126
+ CLI beta 发布遵循 CLI 发布流程;页面验收不等于 npm 发布成功。安装 CLI beta 及独立 Skill 后,确认执行方能够发现该 Skill,并按页面计划执行生成和端到端验收。
@@ -1,63 +1,48 @@
1
- import { createRequire } from "node:module";
2
- import { mkdir, stat, writeFile } from "node:fs/promises";
1
+ import { mkdir, readFile, writeFile } from "node:fs/promises";
3
2
  import path from "node:path";
4
3
  import { fileURLToPath } from "node:url";
5
4
 
6
- // 页面项目自行安装构建依赖;此脚本不参与 CLI 命令或宿主构建。
7
- const require = createRequire(path.resolve("package.json"));
8
- const { build } = require("esbuild");
5
+ // Assemble uploadable page directories from readable JSX source. The platform
6
+ // micro-app template performs the actual JSX build when the page is saved or
7
+ // published; this script must not upload a precompiled page.js bundle.
9
8
  const root = path.dirname(fileURLToPath(import.meta.url));
10
- const [output, componentEntry, componentCss] = process.argv.slice(2);
11
- if (!output || !componentEntry || !componentCss)
12
- throw Error(
13
- "Usage: node build.mjs <output directory> <smart-filter JSX entry> <smart-filter CSS>",
14
- );
15
- const entry = path.resolve(componentEntry);
16
- const css = path.resolve(componentCss);
17
- for (const file of [entry, css]) {
18
- if (!(await stat(file)).isFile()) throw Error(`Not a file: ${file}`);
19
- }
20
- // 输出必须是新目录,避免旧文件进入 custom-update 的完整替换范围。
9
+ const [output] = process.argv.slice(2);
10
+ if (!output) throw Error("Usage: node build.mjs <output directory>");
11
+
21
12
  const destination = path.resolve(output);
22
- const external = [
23
- "react",
24
- "react/jsx-runtime",
25
- "antd",
26
- "@ant-design/icons",
27
- "dayjs",
28
- "@/context/app-context",
13
+ await mkdir(destination, { recursive: false });
14
+
15
+ const sharedFiles = [
16
+ "model.js",
17
+ "record-layout.jsx",
18
+ "responsive.jsx",
19
+ "editor.jsx",
20
+ "page.css",
29
21
  ];
30
- const outputs = [];
31
- for (const kind of ["list", "detail", "create", "update"]) {
32
- const result = await build({
33
- stdin: {
34
- contents: `import ${JSON.stringify(css)};\nexport { default } from "./${kind}/index.jsx";`,
35
- resolveDir: root,
36
- sourcefile: "page-entry.jsx",
37
- loader: "jsx",
38
- },
39
- bundle: true,
40
- format: "esm",
41
- platform: "browser",
42
- jsx: "automatic",
43
- outfile: path.join(destination, kind, "src/app/page.js"),
44
- write: false,
45
- external,
46
- alias: { "@lovrabet/components/smart-filter": entry },
47
- });
48
- outputs.push(...result.outputFiles);
49
- }
50
- // 四页都引入相同的筛选 CSS 和页面 CSS,避免宿主资源替换破坏父列表。
51
- await mkdir(path.dirname(destination), { recursive: true });
52
- await mkdir(destination);
53
- for (const file of outputs) {
54
- await mkdir(path.dirname(file.path), { recursive: true });
55
- await writeFile(file.path, file.contents);
56
- }
57
- for (const kind of ["list", "detail", "create", "update"]) {
22
+ const pageKinds = ["list", "detail", "create", "update"];
23
+
24
+ for (const kind of pageKinds) {
25
+ const pageRoot = path.join(destination, kind);
26
+ await mkdir(path.join(pageRoot, "src", "app"), { recursive: true });
27
+ await mkdir(path.join(pageRoot, "src", "shared"), { recursive: true });
28
+
29
+ const pageSource = await readFile(
30
+ path.join(root, kind, "index.jsx"),
31
+ "utf8",
32
+ );
58
33
  await writeFile(
59
- path.join(destination, kind, "src/app/index.jsx"),
60
- 'import "./page.css";\nexport { default } from "./page.js";\n',
34
+ path.join(pageRoot, "src", "app", "index.jsx"),
35
+ pageSource,
61
36
  );
37
+
38
+ for (const file of sharedFiles) {
39
+ await writeFile(
40
+ path.join(pageRoot, "src", "shared", file),
41
+ await readFile(path.join(root, "shared", file)),
42
+ );
43
+ }
62
44
  }
63
- console.log(`Built four CustomJSX page directories in ${destination}`);
45
+
46
+ console.log(
47
+ `Assembled four readable CustomJSX page directories in ${destination}`,
48
+ );
@@ -26,8 +26,12 @@ import {
26
26
  ReloadOutlined,
27
27
  SettingOutlined,
28
28
  } from "@ant-design/icons";
29
- import { useAppTheme, useNavigate, useSdkClient } from "@/context/app-context";
30
- import { LrSmartFilter } from "@lovrabet/components/smart-filter";
29
+ import {
30
+ useAppTheme,
31
+ useNavigate,
32
+ useSdkClient,
33
+ } from "@/context/app-context";
34
+ import { LrSmartFilter } from "@lovrabet/components";
31
35
  import {
32
36
  APP_CODE,
33
37
  DATASET_CODE,
@@ -2,8 +2,8 @@
2
2
  "schemaVersion": 1,
3
3
  "name": "rabetbase",
4
4
  "packageName": "@lovrabet/rabetbase-cli",
5
- "packageVersion": "2.5.5-beta.1",
6
- "skillVersion": "2.5.5-beta.1",
5
+ "packageVersion": "2.5.5-beta.3",
6
+ "skillVersion": "2.5.5-beta.3",
7
7
  "files": [
8
8
  "SKILL.md",
9
9
  "guides/approval-flow-development-workflow.md",
@@ -155,5 +155,5 @@
155
155
  "references/rabetbase-user-account.md",
156
156
  "references/rabetbase-workspace.md"
157
157
  ],
158
- "digest": "38a5a0bf6c62d0aad2a3a129a84b96669c85b6cf1c88b6c0437569ce5dbffd86"
158
+ "digest": "1af259428a098b2004287a1c523512325f89477eaa9b4704e1896c851c38d80a"
159
159
  }