@lovrabet/rabetbase-cli 2.3.16-beta.7 → 2.4.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 (435) hide show
  1. package/README.md +4 -10
  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/capability.js +1 -1
  63. package/lib/commands/dataset/delete.js +1 -1
  64. package/lib/commands/dataset/detail.js +1 -1
  65. package/lib/commands/dataset/extend-update.js +1 -1
  66. package/lib/commands/dataset/field-update.js +1 -1
  67. package/lib/commands/dataset/generate.js +1 -1
  68. package/lib/commands/dataset/index.js +1 -1
  69. package/lib/commands/dataset/list.js +1 -1
  70. package/lib/commands/dataset/operations.js +1 -1
  71. package/lib/commands/dataset/relation-audit.js +1 -1
  72. package/lib/commands/dataset/relation-create.js +1 -1
  73. package/lib/commands/dataset/relation-delete.js +1 -1
  74. package/lib/commands/dataset/relation-shared.js +1 -1
  75. package/lib/commands/dataset/relation-update.js +1 -1
  76. package/lib/commands/dataset/relations.js +1 -1
  77. package/lib/commands/dataset/rename.js +1 -1
  78. package/lib/commands/dataset/restore.js +1 -1
  79. package/lib/commands/db/analysis-batching.js +1 -1
  80. package/lib/commands/db/analyze-batch-plan.js +1 -1
  81. package/lib/commands/db/analyze-cancel.js +1 -1
  82. package/lib/commands/db/analyze-start.js +1 -1
  83. package/lib/commands/db/analyze-status.js +1 -1
  84. package/lib/commands/db/create.js +1 -1
  85. package/lib/commands/db/delete.js +1 -1
  86. package/lib/commands/db/detail.js +1 -1
  87. package/lib/commands/db/diff.js +1 -1
  88. package/lib/commands/db/index.js +1 -1
  89. package/lib/commands/db/list.js +1 -1
  90. package/lib/commands/db/shared.js +1 -1
  91. package/lib/commands/db/tables.js +1 -1
  92. package/lib/commands/db/test.js +1 -1
  93. package/lib/commands/db/update.js +1 -1
  94. package/lib/commands/doctor.js +1 -1
  95. package/lib/commands/file/index.js +1 -1
  96. package/lib/commands/init/index.js +1 -1
  97. package/lib/commands/issue/index.js +1 -1
  98. package/lib/commands/issue/nudge.js +1 -1
  99. package/lib/commands/issue/report.js +1 -1
  100. package/lib/commands/issue/shared.js +1 -1
  101. package/lib/commands/kb/create.js +1 -1
  102. package/lib/commands/kb/delete.js +1 -1
  103. package/lib/commands/kb/detail.js +1 -1
  104. package/lib/commands/kb/index.js +1 -1
  105. package/lib/commands/kb/list.js +1 -1
  106. package/lib/commands/kb/shared.js +1 -1
  107. package/lib/commands/kb/update.js +1 -1
  108. package/lib/commands/logs/index.js +1 -1
  109. package/lib/commands/menu/asset-update.js +1 -1
  110. package/lib/commands/menu/delete.js +1 -1
  111. package/lib/commands/menu/external-link-create.js +1 -1
  112. package/lib/commands/menu/external-link-update.js +1 -1
  113. package/lib/commands/menu/group-create.js +1 -1
  114. package/lib/commands/menu/group-update.js +1 -1
  115. package/lib/commands/menu/index.js +1 -1
  116. package/lib/commands/menu/list.js +1 -1
  117. package/lib/commands/menu/move.js +1 -1
  118. package/lib/commands/menu/regroup-start.js +1 -1
  119. package/lib/commands/menu/rename.js +1 -1
  120. package/lib/commands/menu/shared/compare-table.js +1 -1
  121. package/lib/commands/menu/shared/delete-plan.js +1 -1
  122. package/lib/commands/menu/shared/facts.js +1 -1
  123. package/lib/commands/menu/shared/index.js +1 -1
  124. package/lib/commands/menu/shared/inquirer.js +1 -1
  125. package/lib/commands/menu/shared/local-pages.js +1 -1
  126. package/lib/commands/menu/shared/logic.js +1 -1
  127. package/lib/commands/menu/shared/mutations.js +1 -1
  128. package/lib/commands/menu/shared/service.js +1 -1
  129. package/lib/commands/menu/shared/sync-core.js +1 -1
  130. package/lib/commands/menu/shared/update-core.js +1 -1
  131. package/lib/commands/menu/shared/valid-url.js +1 -1
  132. package/lib/commands/menu/sync.js +1 -1
  133. package/lib/commands/notification/config-list.js +1 -1
  134. package/lib/commands/notification/index.js +1 -1
  135. package/lib/commands/ocr/index.js +1 -1
  136. package/lib/commands/page/generate-start.js +1 -1
  137. package/lib/commands/page/generate-status.js +1 -1
  138. package/lib/commands/page/index.js +1 -1
  139. package/lib/commands/page/pull.js +1 -1
  140. package/lib/commands/page/push.js +1 -1
  141. package/lib/commands/page/react/create.d.ts +2 -0
  142. package/lib/commands/page/react/create.js +1 -0
  143. package/lib/commands/page/react/detail.d.ts +2 -0
  144. package/lib/commands/page/react/detail.js +1 -0
  145. package/lib/commands/page/react/list.d.ts +2 -0
  146. package/lib/commands/page/react/list.js +1 -0
  147. package/lib/commands/page/react/publish.d.ts +2 -0
  148. package/lib/commands/page/react/publish.js +1 -0
  149. package/lib/commands/page/react/shared.d.ts +78 -0
  150. package/lib/commands/page/react/shared.js +1 -0
  151. package/lib/commands/page/react/syntax.d.ts +18 -0
  152. package/lib/commands/page/react/syntax.js +1 -0
  153. package/lib/commands/page/react/template.d.ts +8 -0
  154. package/lib/commands/page/react/template.js +1 -0
  155. package/lib/commands/page/react/update.d.ts +2 -0
  156. package/lib/commands/page/react/update.js +1 -0
  157. package/lib/commands/page/relation-audit.js +1 -1
  158. package/lib/commands/page/restore.js +1 -1
  159. package/lib/commands/page/shared.d.ts +1 -0
  160. package/lib/commands/page/shared.js +1 -1
  161. package/lib/commands/page/standard-page-status.js +1 -1
  162. package/lib/commands/page/sync.js +1 -1
  163. package/lib/commands/permit/index.js +1 -1
  164. package/lib/commands/permit/page-get.js +1 -1
  165. package/lib/commands/permit/page-set.js +1 -1
  166. package/lib/commands/permit/role-apis-set.js +1 -1
  167. package/lib/commands/permit/role-menus-set.js +1 -1
  168. package/lib/commands/permit/role-menus.js +1 -1
  169. package/lib/commands/permit/shared.js +1 -1
  170. package/lib/commands/project/create/enhanced-guided-create.js +1 -1
  171. package/lib/commands/project/create/format-elapsed.js +1 -1
  172. package/lib/commands/project/create/main.js +1 -1
  173. package/lib/commands/project/create/non-interactive.js +1 -1
  174. package/lib/commands/project/create/project-template-path.js +1 -1
  175. package/lib/commands/project/create/use-copy-project-template.js +1 -1
  176. package/lib/commands/project/create/use-format-code.js +1 -1
  177. package/lib/commands/project/create/use-install-dependencies.js +1 -1
  178. package/lib/commands/project/index.js +1 -1
  179. package/lib/commands/project/upgrade.js +1 -1
  180. package/lib/commands/registry.js +1 -1
  181. package/lib/commands/role/create.js +1 -1
  182. package/lib/commands/role/delete.js +1 -1
  183. package/lib/commands/role/detail.js +1 -1
  184. package/lib/commands/role/index.js +1 -1
  185. package/lib/commands/role/list.js +1 -1
  186. package/lib/commands/role/shared.js +1 -1
  187. package/lib/commands/role/update.js +1 -1
  188. package/lib/commands/role/user-add.js +1 -1
  189. package/lib/commands/role/user-remove.js +1 -1
  190. package/lib/commands/role/user-resolve.js +1 -1
  191. package/lib/commands/run/index.js +1 -1
  192. package/lib/commands/schema.js +1 -1
  193. package/lib/commands/sql/create.js +1 -1
  194. package/lib/commands/sql/delete.js +1 -1
  195. package/lib/commands/sql/detail.js +1 -1
  196. package/lib/commands/sql/exec.js +1 -1
  197. package/lib/commands/sql/index.js +1 -1
  198. package/lib/commands/sql/list.js +1 -1
  199. package/lib/commands/sql/pull.js +1 -1
  200. package/lib/commands/sql/push.js +1 -1
  201. package/lib/commands/sql/shared.js +1 -1
  202. package/lib/commands/sql/status.js +1 -1
  203. package/lib/commands/sql/validate.js +1 -1
  204. package/lib/commands/task/index.js +1 -1
  205. package/lib/commands/task/status.js +1 -1
  206. package/lib/commands/tenant/index.js +1 -1
  207. package/lib/commands/tenant/members-list.js +1 -1
  208. package/lib/commands/tenant/shared.js +1 -1
  209. package/lib/commands/user-account/dingding-sandbox-bind.d.ts +2 -0
  210. package/lib/commands/user-account/dingding-sandbox-bind.js +1 -0
  211. package/lib/commands/user-account/index.d.ts +2 -0
  212. package/lib/commands/user-account/index.js +1 -0
  213. package/lib/commands/workspace/add.js +1 -1
  214. package/lib/commands/workspace/index.js +1 -1
  215. package/lib/commands/workspace/remove.js +1 -1
  216. package/lib/config/schema.js +1 -1
  217. package/lib/constant/cdn.js +1 -1
  218. package/lib/constant/cli.js +1 -1
  219. package/lib/constant/defaults.js +1 -1
  220. package/lib/constant/domain.js +1 -1
  221. package/lib/constant/env.js +1 -1
  222. package/lib/constant/output.js +1 -1
  223. package/lib/constant/paths.js +1 -1
  224. package/lib/constant/risk.js +1 -1
  225. package/lib/context/app-resolver.js +1 -1
  226. package/lib/context/auth-resolver.js +1 -1
  227. package/lib/context/config-loader.js +1 -1
  228. package/lib/context.js +1 -1
  229. package/lib/core/alias-resolver.js +1 -1
  230. package/lib/core/api-client.d.ts +117 -0
  231. package/lib/core/api-client.js +1 -1
  232. package/lib/core/bff/config.js +1 -1
  233. package/lib/core/bff/file-system.js +1 -1
  234. package/lib/core/bff/hash.js +1 -1
  235. package/lib/core/bff/lock.js +1 -1
  236. package/lib/core/bff/utils.js +1 -1
  237. package/lib/core/db-resolver.js +1 -1
  238. package/lib/core/page/file-system.js +1 -1
  239. package/lib/core/page/hash.js +1 -1
  240. package/lib/core/page/lock.js +1 -1
  241. package/lib/core/sql-index-auditor.js +1 -1
  242. package/lib/core/sql-sync/config.js +1 -1
  243. package/lib/core/sql-sync/file-system.js +1 -1
  244. package/lib/core/sql-sync/hash.js +1 -1
  245. package/lib/core/sql-sync/lock.js +1 -1
  246. package/lib/core/sql-sync/utils.js +1 -1
  247. package/lib/core/sql-validator.js +1 -1
  248. package/lib/errors.js +1 -1
  249. package/lib/framework/build-all-flags.js +1 -1
  250. package/lib/framework/error-output.js +1 -1
  251. package/lib/framework/explicit-yes.js +1 -1
  252. package/lib/framework/flags.js +1 -1
  253. package/lib/framework/help.js +1 -1
  254. package/lib/framework/index.js +1 -1
  255. package/lib/framework/output.js +1 -1
  256. package/lib/framework/response.js +1 -1
  257. package/lib/framework/runner-alias.js +1 -1
  258. package/lib/framework/runner.js +1 -1
  259. package/lib/framework/schema-export.js +1 -1
  260. package/lib/framework/types.js +1 -1
  261. package/lib/generated/build-info.d.ts +4 -4
  262. package/lib/generated/build-info.js +1 -1
  263. package/lib/help.js +1 -1
  264. package/lib/postinstall.d.ts +3 -0
  265. package/lib/postinstall.js +1 -0
  266. package/lib/runtime/confirmation.js +1 -1
  267. package/lib/runtime/event.js +1 -1
  268. package/lib/runtime/index.js +1 -1
  269. package/lib/runtime/queue.js +1 -1
  270. package/lib/runtime/resolve.js +1 -1
  271. package/lib/skills/builtin-skill.d.ts +37 -0
  272. package/lib/skills/builtin-skill.js +1 -0
  273. package/lib/skills/main.js +1 -1
  274. package/lib/skills/npx-skills-add.d.ts +4 -2
  275. package/lib/skills/npx-skills-add.js +1 -1
  276. package/lib/skills/skill-presence.js +1 -1
  277. package/lib/telemetry/cli-command-trace.js +1 -1
  278. package/lib/telemetry/cli-help-trace.js +1 -1
  279. package/lib/telemetry/ensure-cli-otel-config.js +1 -1
  280. package/lib/telemetry/register-otel-exit-shutdown.js +1 -1
  281. package/lib/telemetry/send-cli-trace-log.js +1 -1
  282. package/lib/telemetry/send-platform-issue-collect-log.js +1 -1
  283. package/lib/utils/ai_config.js +1 -1
  284. package/lib/utils/apply-jq-filter.js +1 -1
  285. package/lib/utils/cdn-config.js +1 -1
  286. package/lib/utils/check-sdk-version.js +1 -1
  287. package/lib/utils/cli-version-check.js +1 -1
  288. package/lib/utils/cli-version-policy.js +1 -1
  289. package/lib/utils/config.js +1 -1
  290. package/lib/utils/copy-directory.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 +9 -3
  307. package/scripts/postinstall.mjs +24 -0
  308. package/skills/rabetbase/SKILL.md +493 -0
  309. package/skills/rabetbase/guides/backend-function.md +835 -0
  310. package/skills/rabetbase/guides/best-practices.md +137 -0
  311. package/skills/rabetbase/guides/bff-creation-workflow.md +148 -0
  312. package/skills/rabetbase/guides/conflict-detection.md +119 -0
  313. package/skills/rabetbase/guides/data-api-guidelines.md +414 -0
  314. package/skills/rabetbase/guides/database-connection-workflow.md +169 -0
  315. package/skills/rabetbase/guides/frontend-development.md +179 -0
  316. package/skills/rabetbase/guides/legacy-application-blueprint-workflow.md +495 -0
  317. package/skills/rabetbase/guides/menu-anomaly-manual-cleanup.md +137 -0
  318. package/skills/rabetbase/guides/page-development-workflow.md +187 -0
  319. package/skills/rabetbase/guides/react-custom-page-workflow.md +184 -0
  320. package/skills/rabetbase/guides/role-permit-workflow.md +127 -0
  321. package/skills/rabetbase/guides/sql-creation-workflow.md +173 -0
  322. package/skills/rabetbase/guides/sql-mybatis.md +126 -0
  323. package/skills/rabetbase/guides/troubleshooting.md +67 -0
  324. package/skills/rabetbase/guides/typescript-sdk.md +227 -0
  325. package/skills/rabetbase/knowledge/page-schema/LrSmartCreate.md +367 -0
  326. package/skills/rabetbase/knowledge/page-schema/LrSmartDetail.md +153 -0
  327. package/skills/rabetbase/knowledge/page-schema/LrSmartEcharts.md +291 -0
  328. package/skills/rabetbase/knowledge/page-schema/LrSmartFilter.md +478 -0
  329. package/skills/rabetbase/knowledge/page-schema/LrSmartJsx.md +119 -0
  330. package/skills/rabetbase/knowledge/page-schema/LrSmartStatistic.md +223 -0
  331. package/skills/rabetbase/knowledge/page-schema/LrSmartTable.md +632 -0
  332. package/skills/rabetbase/knowledge/page-schema/YtPage.md +172 -0
  333. package/skills/rabetbase/knowledge/page-schema/dataset-relations.md +126 -0
  334. package/skills/rabetbase/knowledge/page-schema/external-resources-usage.md +232 -0
  335. package/skills/rabetbase/knowledge/page-schema/field-components.md +312 -0
  336. package/skills/rabetbase/knowledge/page-schema/syntax-reference.md +278 -0
  337. package/skills/rabetbase/knowledge/react-page/components.md +225 -0
  338. package/skills/rabetbase/knowledge/react-page/generation-standards.md +385 -0
  339. package/skills/rabetbase/references/rabetbase-api-list.md +58 -0
  340. package/skills/rabetbase/references/rabetbase-api-pull.md +82 -0
  341. package/skills/rabetbase/references/rabetbase-app-config.md +95 -0
  342. package/skills/rabetbase/references/rabetbase-app-list.md +79 -0
  343. package/skills/rabetbase/references/rabetbase-app-members-list.md +64 -0
  344. package/skills/rabetbase/references/rabetbase-auth-login.md +53 -0
  345. package/skills/rabetbase/references/rabetbase-auth-logout.md +29 -0
  346. package/skills/rabetbase/references/rabetbase-bff-create.md +59 -0
  347. package/skills/rabetbase/references/rabetbase-bff-delete.md +42 -0
  348. package/skills/rabetbase/references/rabetbase-bff-detail.md +38 -0
  349. package/skills/rabetbase/references/rabetbase-bff-list.md +61 -0
  350. package/skills/rabetbase/references/rabetbase-bff-pull.md +42 -0
  351. package/skills/rabetbase/references/rabetbase-bff-push.md +65 -0
  352. package/skills/rabetbase/references/rabetbase-bff-save.md +63 -0
  353. package/skills/rabetbase/references/rabetbase-bff-status.md +37 -0
  354. package/skills/rabetbase/references/rabetbase-cli-skill-install.md +42 -0
  355. package/skills/rabetbase/references/rabetbase-codegen-sdk.md +35 -0
  356. package/skills/rabetbase/references/rabetbase-codegen-sql.md +33 -0
  357. package/skills/rabetbase/references/rabetbase-config.md +296 -0
  358. package/skills/rabetbase/references/rabetbase-dataset-business-group-update.md +84 -0
  359. package/skills/rabetbase/references/rabetbase-dataset-delete.md +54 -0
  360. package/skills/rabetbase/references/rabetbase-dataset-detail.md +106 -0
  361. package/skills/rabetbase/references/rabetbase-dataset-extend-update.md +70 -0
  362. package/skills/rabetbase/references/rabetbase-dataset-field-update.md +117 -0
  363. package/skills/rabetbase/references/rabetbase-dataset-generate.md +206 -0
  364. package/skills/rabetbase/references/rabetbase-dataset-list.md +42 -0
  365. package/skills/rabetbase/references/rabetbase-dataset-operations.md +34 -0
  366. package/skills/rabetbase/references/rabetbase-dataset-relation-audit.md +63 -0
  367. package/skills/rabetbase/references/rabetbase-dataset-relation-mutations.md +141 -0
  368. package/skills/rabetbase/references/rabetbase-dataset-relations.md +71 -0
  369. package/skills/rabetbase/references/rabetbase-dataset-rename.md +107 -0
  370. package/skills/rabetbase/references/rabetbase-dataset-restore.md +54 -0
  371. package/skills/rabetbase/references/rabetbase-db-analyze.md +135 -0
  372. package/skills/rabetbase/references/rabetbase-db-create.md +54 -0
  373. package/skills/rabetbase/references/rabetbase-db-delete.md +26 -0
  374. package/skills/rabetbase/references/rabetbase-db-detail.md +27 -0
  375. package/skills/rabetbase/references/rabetbase-db-diff.md +57 -0
  376. package/skills/rabetbase/references/rabetbase-db-list.md +37 -0
  377. package/skills/rabetbase/references/rabetbase-db-tables.md +25 -0
  378. package/skills/rabetbase/references/rabetbase-db-test.md +29 -0
  379. package/skills/rabetbase/references/rabetbase-db-update.md +29 -0
  380. package/skills/rabetbase/references/rabetbase-doctor.md +62 -0
  381. package/skills/rabetbase/references/rabetbase-file.md +35 -0
  382. package/skills/rabetbase/references/rabetbase-init.md +70 -0
  383. package/skills/rabetbase/references/rabetbase-issue-report.md +132 -0
  384. package/skills/rabetbase/references/rabetbase-kb.md +62 -0
  385. package/skills/rabetbase/references/rabetbase-menu-asset-update.md +135 -0
  386. package/skills/rabetbase/references/rabetbase-menu-delete.md +54 -0
  387. package/skills/rabetbase/references/rabetbase-menu-external-link-create.md +63 -0
  388. package/skills/rabetbase/references/rabetbase-menu-external-link-update.md +74 -0
  389. package/skills/rabetbase/references/rabetbase-menu-group-create.md +33 -0
  390. package/skills/rabetbase/references/rabetbase-menu-group-update.md +38 -0
  391. package/skills/rabetbase/references/rabetbase-menu-list.md +144 -0
  392. package/skills/rabetbase/references/rabetbase-menu-move.md +54 -0
  393. package/skills/rabetbase/references/rabetbase-menu-regroup-start.md +45 -0
  394. package/skills/rabetbase/references/rabetbase-menu-rename.md +48 -0
  395. package/skills/rabetbase/references/rabetbase-menu-sync.md +60 -0
  396. package/skills/rabetbase/references/rabetbase-notification-config-list.md +80 -0
  397. package/skills/rabetbase/references/rabetbase-ocr.md +86 -0
  398. package/skills/rabetbase/references/rabetbase-page-generate-start.md +32 -0
  399. package/skills/rabetbase/references/rabetbase-page-generate-status.md +32 -0
  400. package/skills/rabetbase/references/rabetbase-page-pull.md +47 -0
  401. package/skills/rabetbase/references/rabetbase-page-push.md +45 -0
  402. package/skills/rabetbase/references/rabetbase-page-react-create.md +29 -0
  403. package/skills/rabetbase/references/rabetbase-page-react-detail.md +26 -0
  404. package/skills/rabetbase/references/rabetbase-page-react-list.md +23 -0
  405. package/skills/rabetbase/references/rabetbase-page-react-publish.md +23 -0
  406. package/skills/rabetbase/references/rabetbase-page-react-update.md +24 -0
  407. package/skills/rabetbase/references/rabetbase-page-relation-binding.md +72 -0
  408. package/skills/rabetbase/references/rabetbase-page-restore.md +45 -0
  409. package/skills/rabetbase/references/rabetbase-page-sync.md +36 -0
  410. package/skills/rabetbase/references/rabetbase-permit-page-set.md +69 -0
  411. package/skills/rabetbase/references/rabetbase-permit-role-apis-set.md +53 -0
  412. package/skills/rabetbase/references/rabetbase-permit-role-menus-set.md +57 -0
  413. package/skills/rabetbase/references/rabetbase-project-create.md +46 -0
  414. package/skills/rabetbase/references/rabetbase-project-upgrade.md +57 -0
  415. package/skills/rabetbase/references/rabetbase-role-list.md +68 -0
  416. package/skills/rabetbase/references/rabetbase-role-user-add.md +54 -0
  417. package/skills/rabetbase/references/rabetbase-role-user-resolve.md +27 -0
  418. package/skills/rabetbase/references/rabetbase-run.md +53 -0
  419. package/skills/rabetbase/references/rabetbase-schema.md +22 -0
  420. package/skills/rabetbase/references/rabetbase-sql-create.md +41 -0
  421. package/skills/rabetbase/references/rabetbase-sql-delete.md +37 -0
  422. package/skills/rabetbase/references/rabetbase-sql-detail.md +32 -0
  423. package/skills/rabetbase/references/rabetbase-sql-exec.md +34 -0
  424. package/skills/rabetbase/references/rabetbase-sql-list.md +54 -0
  425. package/skills/rabetbase/references/rabetbase-sql-pull.md +54 -0
  426. package/skills/rabetbase/references/rabetbase-sql-push.md +46 -0
  427. package/skills/rabetbase/references/rabetbase-sql-status.md +39 -0
  428. package/skills/rabetbase/references/rabetbase-sql-validate.md +73 -0
  429. package/skills/rabetbase/references/rabetbase-standard-page-status.md +31 -0
  430. package/skills/rabetbase/references/rabetbase-task-status.md +40 -0
  431. package/skills/rabetbase/references/rabetbase-tenant-members-list.md +69 -0
  432. package/skills/rabetbase/references/rabetbase-update.md +56 -0
  433. package/skills/rabetbase/references/rabetbase-user-account.md +45 -0
  434. package/skills/rabetbase/references/rabetbase-workspace.md +60 -0
  435. package/skills/rabetbase.manifest.json +137 -0
@@ -0,0 +1,312 @@
1
+ ---
2
+ name: field-components
3
+ description: Filter/Form 字段 componentName 速查及平台扩展属性。先验知识:低代码引擎搭建协议、Ant Design 5 组件知识。
4
+ tags: [filter, form, field-components, page-schema]
5
+ ---
6
+
7
+ # 字段 componentName 速查
8
+
9
+ > **先验知识**:默认已具备低代码引擎搭建协议和 Ant Design 5 组件知识。本文档仅记录平台扩展属性。
10
+ >
11
+ > `LrSmartFilter` 与 `LrSmartCreate` / `LrSmartUpdate` / `LrSmartDetail` 共享部分字段组件能力,但并非完全等同。Filter 偏查询条件组件,Form 偏录入/编辑组件;具体支持范围以各组件文档为准。Ant Design 5 原生 props 可直接用于 `extendProps`。
12
+
13
+
14
+ ## 按宿主组件选型
15
+
16
+ ### LrSmartFilter 常用字段组件
17
+
18
+ | 场景 | 推荐 componentName | 说明 |
19
+ |------|--------------------|------|
20
+ | 文本查询 | `YtInput` | 模糊搜索、关键字查询 |
21
+ | 单选筛选 | `YtSingleSelect` | 枚举值或关联表单选 |
22
+ | 多选筛选 | `YtMultiSelect` | 标签、多状态并集筛选 |
23
+ | 小选项集单选 | `YtRadioGroup` | 选项较少时更直观 |
24
+ | 小选项集多选 | `YtCheckboxGroup` | 选项较少的多选 |
25
+ | 单日期 | `YtDatePicker` | 精确到某一天的筛选 |
26
+ | 日期范围 | `YtRangeDatePicker` | 时间区间筛选的主力组件 |
27
+ | 数字单值 | `YtInputNumber` | 单个数值条件 |
28
+ | 数字范围 | `YtRangeInputNumber` | 区间数值筛选 |
29
+ | 级联选择 | `YtCascader` | 层级分类筛选 |
30
+ | 用户筛选 | `YtUserSelect` | 平台用户相关筛选 |
31
+ | 地址筛选 | `YtAddressPicker` | 地址维度筛选 |
32
+
33
+ **不推荐/不适用**:
34
+ - `YtRichEditor`:不用于筛选场景
35
+ - `YtUpload`:不用于筛选场景
36
+ - `YtTextArea`:一般不作为筛选主组件
37
+ - `YtSwitch`:仅在极少数布尔筛选场景使用,通常优先用选择类组件表达
38
+
39
+ ### LrSmartCreate / LrSmartUpdate / LrSmartDetail 常用字段组件
40
+
41
+ | 场景 | 推荐 componentName | 说明 |
42
+ |------|--------------------|------|
43
+ | 单行录入 | `YtInput` | 名称、编号、邮箱、电话等 |
44
+ | 数字录入 | `YtInputNumber` | 金额、数量、价格等 |
45
+ | 多行录入 | `YtTextArea` | 备注、说明、简短描述 |
46
+ | 富文本录入 | `YtRichEditor` | 详细内容、正文、复杂说明 |
47
+ | 代码录入 | `YtCodeEditor` | JSON、JavaScript、TypeScript、SQL、CSS、HTML、Markdown 等代码/配置文本 |
48
+ | 单选录入 | `YtSingleSelect` | 枚举值或关联表单选 |
49
+ | 多选录入 | `YtMultiSelect` | 标签、多选枚举 |
50
+ | 小选项集单选 | `YtRadioGroup` | 少量单选项 |
51
+ | 小选项集多选 | `YtCheckboxGroup` | 少量多选项 |
52
+ | 布尔录入 | `YtSwitch` | 是否启用、是否标品等 |
53
+ | 单日期 | `YtDatePicker` | 日期/时间选择 |
54
+ | 级联选择 | `YtCascader` | 层级分类录入 |
55
+ | 文件上传 | `YtUpload` | 附件、图片、材料上传 |
56
+ | 用户选择 | `YtUserSelect` | 平台用户选择 |
57
+ | 地址录入 | `YtAddressPicker` | 地址信息录入 |
58
+
59
+ **按场景谨慎使用**:
60
+ - `YtRangeDatePicker`:更偏筛选语义,Form 中仅在明确需要录入时间区间时使用
61
+ - `YtRangeInputNumber`:更偏筛选语义,Form 中通常不作为常规录入组件
62
+
63
+ 自动加载系统用户列表,值格式需按场景区分:
64
+
65
+ - 业务字段(YtUserSelect 录入):数组 `["80"]` / `["80","81"]`
66
+ - 系统字段(creator_id / updater_id):字符串 `"80"`
67
+ - Filter 查询场景必须使用数组值,如 `["80"]`,运行时只对数组生成 `$in`
68
+
69
+ ```json
70
+ {
71
+ "name": "employee_id",
72
+ "componentName": "YtUserSelect",
73
+ "label": "负责人"
74
+ }
75
+ ```
76
+
77
+ ### YtAddressPicker
78
+
79
+ 自动加载省市区数据
80
+
81
+ ```json
82
+ {
83
+ "name": "address",
84
+ "componentName": "YtAddressPicker",
85
+ "label": "联系地址"
86
+ }
87
+ ```
88
+
89
+ ---
90
+
91
+ ## 数据格式速查
92
+
93
+ | 组件 | 类型 | 初始值 | 用户输入 | 清空值 | 示例 |
94
+ |------|------|--------|---------|--------|------|
95
+ | YtInput | string | `""` / `null` | `"hello"` | `""` / `null` | `"客户名称"` |
96
+ | YtInputNumber | number | `null` | `123` | `null` | `100.50` |
97
+ | YtTextArea | string | `""` / `null` | `"多行文本"` | `""` / `null` | 备注内容 |
98
+ | YtRichEditor | string | `""` / `null` | `"<p>...</p>"` | `""` / `null` | HTML 字符串 |
99
+ | YtCodeEditor | string | `""` / `null` | 代码/配置文本 | `""` | JSON / JS / SQL 字符串 |
100
+ | YtSingleSelect | string/number | `null` / `undefined` | 选中值 | `undefined` | `1` / `"vip"` |
101
+ | YtMultiSelect | array | `[]` | `[value1, value2]` | `[]` | `[1, 2, 3]` |
102
+ | YtRadioGroup | string/number | `null` | 选中值 | `null` | `"enterprise"` |
103
+ | YtCheckboxGroup | array | `[]` | `[value1, value2]` | `[]` | `["phone", "email"]` |
104
+ | YtSwitch | boolean | `false` | `true` / `false` | `false` | `true` |
105
+ | YtDatePicker | number | `null` | 时间戳 | `null` | `1773014400000` |
106
+ | YtRangeDatePicker | number[] | `[]` / `null` | `[startTimestamp, endTimestamp]` | `[]` / `null` | `[1767225600000, 1773014400000]` |
107
+ | YtCascader | array | `[]` | `[level1, level2, ...]` | `[]` | `["浙江省", "杭州市", "西湖区"]` |
108
+ | YtUpload | array | `[]` | `[{uid, name, url, ...}]` | `[]` | 文件对象数组 |
109
+ | YtUserSelect | array / string | `null` | `["80"]` / `["80","81"]` | `null` | 业务字段数组 `["80"]`,系统字段字符串 `"80"` |
110
+ | YtAddressPicker | array | `[]` | `[省, 市, 区]` | `[]` | `["浙江省", "杭州市", "西湖区"]` |
111
+
112
+ ### 关键格式说明
113
+
114
+ - **YtSingleSelect**:初始值 `null` / `undefined`(不是空字符串)
115
+ - **YtMultiSelect**:始终是数组,清空为 `[]`
116
+ - **YtDatePicker**:运行时提交值为时间戳 number;`extendProps.format` 只控制展示格式
117
+ - **YtRangeDatePicker**:运行时提交值为时间戳数组 `[startTimestamp, endTimestamp]`
118
+ - **YtUserSelect**:业务字段为数组 `["80"]` / `["80","81"]`,系统字段存储可为字符串 `"80"`;Filter 查询值必须是数组
119
+ - **YtCodeEditor**:只用于 Form 录入代码/配置文本,值为 string;Agent 必须显式生成 `language`,不要依赖默认值
120
+
121
+ ---
122
+
123
+ ## 基础示例
124
+
125
+ ```json
126
+ // YtInput
127
+ {"name": "customer_name", "componentName": "YtInput", "label": "客户名称", "extendProps": {"maxLength": 100}}
128
+
129
+ // YtInputNumber
130
+ {"name": "amount", "componentName": "YtInputNumber", "label": "金额", "extendProps": {"min": 0, "precision": 2}}
131
+
132
+ // YtTextArea
133
+ {"name": "remark", "componentName": "YtTextArea", "label": "备注", "extendProps": {"rows": 4, "maxLength": 500}}
134
+
135
+ // YtCodeEditor(Form 场景代码/配置文本录入)
136
+ {"name": "config_json", "componentName": "YtCodeEditor", "label": "配置内容", "language": "json", "height": 240, "placeholder": "请输入配置内容"}
137
+
138
+ // YtSingleSelect(静态选项)
139
+ {"name": "status", "componentName": "YtSingleSelect", "label": "状态", "options": [{"label": "活跃", "value": 1}, {"label": "流失", "value": 0}]}
140
+
141
+ // 选择类动态选项(YtSingleSelect / YtMultiSelect 等,需配套 Page.dataSource.list getSelectOptions)
142
+ {"name": "<FromRelationField>", "componentName": "<selectComponentName>", "label": "<fieldLabel>", "options": {"type": "JSExpression", "value": "this.state.dataset_<FromDatasetCode>_<FromRelationField>_options"}}
143
+
144
+ // YtMultiSelect(静态选项)
145
+ {"name": "tags", "componentName": "YtMultiSelect", "label": "标签", "options": [{"label": "重点", "value": "key"}, {"label": "潜在", "value": "potential"}]}
146
+
147
+ // YtSwitch
148
+ {"name": "is_active", "componentName": "YtSwitch", "label": "是否启用"}
149
+
150
+ // YtDatePicker(仅日期;placeholder 用表单项顶层,勿放 extendProps)
151
+ {"name": "expected_date", "componentName": "YtDatePicker", "label": "预计日期", "placeholder": "请选择日期", "extendProps": {"format": "YYYY-MM-DD", "picker": "date"}}
152
+
153
+ // YtDatePicker(日期+时间,用于 datetime 类型字段)
154
+ {"name": "created_at", "componentName": "YtDatePicker", "label": "创建时间", "extendProps": {"showTime": {"format": "HH:mm"}, "format": "YYYY-MM-DD HH:mm", "picker": "date"}}
155
+
156
+ // YtRangeDatePicker
157
+ {"name": "visit_time", "componentName": "YtRangeDatePicker", "label": "拜访时间"}
158
+
159
+ // YtUserSelect
160
+ {"name": "employee_id", "componentName": "YtUserSelect", "label": "负责人"}
161
+ ```
162
+
163
+ ## YtDatePicker 时间配置
164
+
165
+ ### 机制
166
+
167
+ `showTime` 决定是否启用时间选择,`format` 控制显示格式,`picker` 指定基础选择器类型。datetime 类型字段需要 `showTime` + `format: "YYYY-MM-DD HH:mm"`,date 类型字段无需 `showTime`。
168
+
169
+ ### 参数
170
+
171
+ | 属性 | 类型 | 说明 |
172
+ |------|------|------|
173
+ | showTime | object \| boolean | 启用时间选择,`{format: "HH:mm"}` 控制时间格式 |
174
+ | format | string | 日期时间显示格式,datetime 用 `"YYYY-MM-DD HH:mm"`,date 用 `"YYYY-MM-DD"` |
175
+ | picker | string | 基础选择器类型:`date` / `week` / `month` / `quarter` / `year` |
176
+
177
+ ### 配置位置
178
+
179
+ `picker` / `format` / `showTime` 写在 `extendProps`;`placeholder` 写在表单项顶层,禁止放入 `extendProps`。
180
+
181
+ ## 分层设计原则
182
+
183
+ | 层级 | 职责 |
184
+ |------|------|
185
+ | **Page 层** | dataSource.list 配置数据请求 |
186
+ | **formItem 层** | 绑定数据、字段元数据 |
187
+ | **组件层** | 消费数据、渲染 |
188
+
189
+ ### 属性位置规则
190
+
191
+ | 写在 formItem 顶层 | 写在 extendProps |
192
+ |-------------------|-----------------|
193
+ | placeholder, options, disabled, readonly | precision, min, max, format, showTime, picker, 其他 Ant Design 5 控件原生 props |
194
+
195
+ 禁止在 extendProps 中重复写顶层已有的属性。
196
+
197
+ ### options 数据获取方式
198
+
199
+ | options 来源 | 配置位置 | Agent 生成规则 |
200
+ |--------------|---------|----------------|
201
+ | 平台数据集 / 关联关系 | `Page.dataSource.list` + 字段 `options` | 必须配置 `getSelectOptions` 数据源,并通过 `this.state.<dataSourceId>` 绑定 |
202
+ | 三方链接 / 外部接口 / 外部静态资源 | 字段级 `optionsRequest` | 仅外部 options 源可用;禁止用于 `/getSelectOptions` |
203
+
204
+ > hard rule:`getSelectOptions` 是 Page 数据源能力,Agent 必须生成 Page 层 `dataSource.list` + state 绑定,不生成 `optionsRequest`。即使 `optionsRequest` 技术上能请求完整接口,也会把字段配置耦合到具体域名或部署环境,客户私有化部署、域名切换时会产生迁移成本。
205
+ >
206
+ > `YtSingleSelect`、`YtMultiSelect` 等选择类组件使用平台数据集 / 关联关系动态 options 时,加载机制一致:都必须生成 Page 层 `dataSource.list` 的 `getSelectOptions`,并通过字段 `options` 绑定同名 state;差异仅在字段值是单值还是数组。`<selectComponentName>` 按字段类型选择具体组件,如 `YtSingleSelect` 或 `YtMultiSelect`。
207
+
208
+ ```json
209
+ // ✅ 平台数据集关联关系:Page 层预配置 getSelectOptions
210
+ {
211
+ "type": "fetch",
212
+ "id": "dataset_<FromDatasetCode>_<FromRelationField>_options",
213
+ "isInit": true,
214
+ "source": "dataset",
215
+ "options": {
216
+ "method": "POST",
217
+ "uri": "/api/<appCode>/<ToDatasetCode>/getSelectOptions",
218
+ "params": {"code": "<ToValueField>", "label": "<ToLabelField>"}
219
+ }
220
+ }
221
+
222
+ // Form / Filter 字段绑定 state(YtSingleSelect / YtMultiSelect 等选择类组件通用)
223
+ {
224
+ "name": "<FromRelationField>",
225
+ "componentName": "<selectComponentName>",
226
+ "options": {
227
+ "type": "JSExpression",
228
+ "value": "this.state.dataset_<FromDatasetCode>_<FromRelationField>_options"
229
+ }
230
+ }
231
+
232
+ // ✅ 三方链接 / 外部接口:字段级 optionsRequest
233
+ {
234
+ "name": "external_level",
235
+ "componentName": "YtSingleSelect",
236
+ "optionsRequest": {
237
+ "url": "https://example.com/options/levels.json",
238
+ "dataProcess": {
239
+ "type": "JSFunction",
240
+ "value": "(data) => data.map(item => ({ label: item.name, value: item.id }))"
241
+ }
242
+ }
243
+ }
244
+
245
+ // 说明:dataProcess 是函数型字段。Agent 生成 PageSchema 时使用 JSFunction;
246
+ // 若绕过 PageSchema 运行时直接传给物料组件,则应传入真实函数。
247
+
248
+ // ❌ 错误:使用 optionsRequest 调 getSelectOptions
249
+ // 运行时会按当前页面域名解析相对 /api 路径,不会使用 Page 数据源的接口域名;
250
+ // 页面域名与接口域名不一致时会请求错地址。
251
+ {
252
+ "optionsRequest": {
253
+ "url": "/api/<appCode>/<ToDatasetCode>/getSelectOptions?code=id&label=name"
254
+ }
255
+ }
256
+
257
+ // ❌ 错误:把完整域名写进 getSelectOptions
258
+ // 即使当前环境可用,也会把 schema 耦合到某个租户域名或部署环境。
259
+ {
260
+ "optionsRequest": {
261
+ "url": "https://<tenant-domain>/api/<appCode>/<ToDatasetCode>/getSelectOptions?code=id&label=name"
262
+ }
263
+ }
264
+ ```
265
+
266
+ #### 关联关系 From / To 规则
267
+
268
+ - `dataSource.id = dataset_<FromDatasetCode>_<From表关联字段名>_options`,其中 `FromDatasetCode` 为 From 表字段所属数据集的 code
269
+ - `dataSource.isInit = true`
270
+ - `dataSource.source = "dataset"`
271
+ - `uri = /api/<appCode>/<ToDatasetCode>/getSelectOptions`
272
+ - `params.code = <To表被关联字段,通常是 id>`
273
+ - `params.label = <To表展示字段>`
274
+ - 字段 `options` 绑定 `this.state.dataset_<FromDatasetCode>_<From表关联字段名>_options`
275
+ - 自关联父子关系中,`FromDatasetCode` 与 `ToDatasetCode` 可以相同;state key 仍按 `dataset_<FromDatasetCode>_<FromRelationField>_options` 命名,URI 仍使用 To 侧 options 数据源。
276
+
277
+ ---
278
+
279
+ ## 字段组件选型规则
280
+
281
+ 本节按 Agent 生成时的选型优先级和运行时依赖记录组件。生成 `componentName` 时必须使用真实运行时注册名,不要按相似名称猜测组件名。
282
+
283
+ ### 强平台依赖组件
284
+
285
+ | 组件 | 依赖 / 定制点 | Agent 生成约束 |
286
+ |------|---------------|----------------|
287
+ | `YtUserSelect` | 读取当前应用 `appCode`,请求平台用户接口 `/api/dept/queryAppUser` | 用户字段用数组值;Filter 查询值必须是数组 |
288
+ | `YtUpload` | 依赖平台上传接口 `/api/common/uploadFile`、运行时域名、当前应用 `appCode` 和平台文件预览能力 | 仅用于 Form;值为文件对象数组 |
289
+ | `YtAddressPicker` | 默认加载 Lovrabet 地址资源 `https://www.lovrabet.com/external/regions.json` | 值为地址路径数组;不用于关联表 `getSelectOptions` |
290
+ | `YtRichEditor` | 动态加载 Lovrabet CDN 富文本 UMD 资源 | 仅用于 Form;值为 HTML 字符串 |
291
+
292
+ ### 推荐优先使用的字段组件
293
+
294
+ | 组件 | 适用语义 | Agent 生成约束 |
295
+ |------|----------|----------------|
296
+ | `YtCodeEditor` | 代码、脚本、SQL、JSON、配置内容 | 仅用于 Form;必须显式生成 `language` |
297
+ | `YtAmountInput` | 金额、价格、费用 | 值为 number |
298
+ | `YtCurrencySelect` | 币种 | 必须使用真实运行时注册名 `YtCurrencySelect` |
299
+
300
+ ### 低频语义组件
301
+
302
+ 以下组件只有在用户需求或字段语义明确命中时使用,不作为默认选型;不要因为它们以 `Yt` 开头就优先使用。
303
+
304
+ - `YtInputPassword`
305
+ - `YtRate`
306
+ - `YtTransfer`
307
+ - `YtSingleTreeSelect`
308
+ - `YtMultiTreeSelect`
309
+ - `YtTimePicker`
310
+ - `YtRangeTimePicker`
311
+
312
+ ---
@@ -0,0 +1,278 @@
1
+ ---
2
+ name: PageSchema-syntax-reference
3
+ description: PageSchema 平台扩展语法规范。先验知识:低代码引擎搭建协议、Ant Design 5 组件知识。
4
+ tags: [page-schema, syntax, reference]
5
+ ---
6
+
7
+ # PageSchema 语法参考(平台扩展)
8
+
9
+ > **先验知识**:默认已具备低代码引擎搭建协议和 Ant Design 5 组件知识。本文档仅记录平台特有扩展。
10
+
11
+ ---
12
+
13
+ ## 1. JSFunction vs JSExpression 关键差异
14
+
15
+ | 特性 | JSFunction | JSExpression |
16
+ |-----|-----------|-------------|
17
+ | **解析方式** | `new Function("return " + value)()` | `new Function("$scope", "with($scope) { return " + value + " }")(self)` |
18
+ | **简写支持** | ❌ 不支持 `state.xxx` | ✅ 支持 `state.xxx` 简写 |
19
+ | **适用场景** | 函数定义(按钮、校验、render) | 动态表达式(属性值、条件判断) |
20
+
21
+ ```json
22
+ // ❌ 错误:JSFunction 不支持 state 简写
23
+ {"type": "JSFunction", "value": "() => state.filterValues"} // state 未定义
24
+
25
+ // ✅ 正确:JSFunction 通过参数访问
26
+ {"type": "JSFunction", "value": "(config) => config._context.state.filterValues"}
27
+
28
+ // ✅ 正确:JSExpression 支持简写
29
+ {"type": "JSExpression", "value": "state.filterValues"}
30
+ ```
31
+
32
+ **state key 限制**:`this.state.xxx` 中的 key(如 `filterValues`)由组件初始化时自动生成,Agent 不可修改或重命名。只能读取和引用已有的 state key。
33
+
34
+ ---
35
+
36
+ ## 2. 按钮配置(optType + options)
37
+
38
+ **禁止使用 onClick**,必须使用 `optType + options` 结构。
39
+
40
+ ### 顶层按钮 optType 类型
41
+
42
+ | optType | 说明 | options 关键字段 |
43
+ |---------|------|-----------------|
44
+ | `jsAction` | 执行 JavaScript 函数 | `jsFunction` |
45
+ | `flowAction` | 执行流程 | `flowList` |
46
+
47
+ ### flowAction 的 flowList 子动作 optType 类型
48
+
49
+ | optType | 说明 | options 关键字段 |
50
+ |---------|------|-----------------|
51
+ | `request` | 发送请求 | `_bindDataSource`, `_bindDataSourceParams`, `confirmConfig` |
52
+ | `submit` | 表单提交 | `_bindForm`, `_bindDataSource` |
53
+ | `reset` | 表单重置 | `_bindForm` |
54
+ | `jsAction` | 执行 JavaScript 函数 | `jsFunction` |
55
+ | `message` | 消息提示 | `type`, `content`, `duration` |
56
+
57
+ ### 示例
58
+
59
+ ```json
60
+ // jsAction:页面跳转
61
+ {
62
+ "title": "更新",
63
+ "optType": "jsAction",
64
+ "options": {
65
+ "jsFunction": {
66
+ "type": "JSFunction",
67
+ "value": "(config) => config._context?.appHelper?.yt?.smartPageHistory?.push({ pageTagName: 'UPDATE', datasetId: '<datasetId>', dataid: config.extraParams?.rowKey })"
68
+ }
69
+ }
70
+ }
71
+
72
+ // flowAction + request:删除
73
+ {
74
+ "title": "删除",
75
+ "optType": "flowAction",
76
+ "options": {
77
+ "flowList": [{
78
+ "active": true,
79
+ "optType": "request",
80
+ "options": {
81
+ "_bindDataSource": "<datasetId>_delete",
82
+ "_bindDataSourceParams": {
83
+ "type": "JSFunction",
84
+ "value": "(extraParams) => { return { id: extraParams.rowKey?.toString() }; }"
85
+ },
86
+ "confirmConfig": { "enable": true, "title": "确认删除", "content": "确认删除该条数据吗?" }
87
+ }
88
+ }]
89
+ }
90
+ }
91
+
92
+ // flowAction + message:提示消息
93
+ {
94
+ "title": "保存成功提示",
95
+ "optType": "flowAction",
96
+ "options": {
97
+ "flowList": [{
98
+ "active": true,
99
+ "optType": "message",
100
+ "options": {
101
+ "type": "success",
102
+ "content": "操作成功",
103
+ "duration": 3
104
+ }
105
+ }]
106
+ }
107
+ }
108
+ ```
109
+
110
+ ---
111
+
112
+ ## 3. 事件处理(events)
113
+
114
+ ### Agent 生成边界
115
+
116
+ 当前运行时不消费字段组件上的 `events.onChange` / `events.onMount`,也没有字段级 context 联动方法实现。
117
+
118
+ Agent 不应为 `LrSmartCreate` / `LrSmartUpdate` / `LrSmartDetail` / `LrSmartFilter` 的字段项生成字段级 `events` 联动 schema。
119
+
120
+ ### 字段联动决策表
121
+
122
+ | 组件场景 | Agent 应该怎么生成 | 不要生成 |
123
+ |----------|--------------------|----------|
124
+ | 表单型组件字段联动 | 在组件 props 顶层生成 `fieldReactions`;返回“字段名 → 字段属性覆盖”的对象。当前适用于 `LrSmartCreate` / `LrSmartUpdate`,详情展示控制同理遵循 Form 机制 | `items[].events.onChange`、字段级 context 方法 |
125
+ | `LrSmartFilter` 筛选搜索 | 生成宿主级 `events.onSearch`,用于刷新消费 filter state 的数据源 | 筛选项之间的实时字段联动、`fieldReactions`、`items[].events.onChange` |
126
+ | 字段静态隐藏 | 在字段 item 上设置 `hidden` 或 `isShown` | 通过字段级事件动态 setFieldVisible |
127
+
128
+ `fieldReactions` 只用于表单型组件,不用于 `LrSmartFilter`。返回对象的 key 是被联动字段 `name`,value 是要覆盖的字段属性,例如 `isShown`、`hidden`、`disabled`、`rules`、`options`。具体示例见 `LrSmartCreate.md`。
129
+
130
+ ### 当前可生成的事件入口
131
+
132
+ | 入口 | 适用场景 | Agent 生成规则 |
133
+ |------|----------|----------------|
134
+ | `optType + options` | 按钮点击、提交、请求、跳转、提示消息 | 标准按钮协议,见 § 2 |
135
+ | 宿主级 `events` | 表单提交、默认值加载完成、筛选搜索、表格行/分页事件 | 仅在组件文档明确给出事件名时生成 |
136
+ | `fieldReactions` | 表单型组件字段显隐、禁用、选项等联动覆盖 | 仅用于表单型组件,不用于 Filter;具体见 `LrSmartCreate.md` |
137
+
138
+ ### 禁止生成模式
139
+
140
+ 不要为字段项生成字段级 `events` 联动 schema,也不要假设存在字段级 context 联动方法。表单型组件字段联动使用 `fieldReactions`;Filter 字段联动当前不作为 Agent 默认生成能力。
141
+
142
+ ---
143
+
144
+ ## 4. 数据绑定(平台扩展字段)
145
+
146
+ 以下划线 `_` 开头的属性是平台扩展字段:
147
+
148
+ | 属性 | 说明 |
149
+ |------|------|
150
+ | `_bindDataSource` | 绑定数据源 ID(如 `"<datasetId>_filter"`) |
151
+ | `_bindForm` | 绑定表单 ID |
152
+ | `_bindDataSourceParams` | 数据源参数(JSFunction) |
153
+ | `_autoBindDataSourceParams` | 自动绑定表单参数(`true`) |
154
+
155
+ ```json
156
+ {
157
+ "_bindDataSource": "<datasetId>_delete",
158
+ "_bindDataSourceParams": {
159
+ "type": "JSFunction",
160
+ "value": "function(extraParams) {\n return { id: extraParams.rowKey };\n}"
161
+ }
162
+ }
163
+ ```
164
+
165
+ > `_bindDataSourceParams` 仅用于操作型数据源(如 `_delete`、`_create`、`_update`)。filter 查询数据源的 where/orderBy/select 由组件属性自动同步,不可通过 `_bindDataSourceParams` 注入。
166
+
167
+ **数据源唯一性原则**:
168
+
169
+ - `datasource.params` 和 `datasource.willFetch` 由平台根据组件属性自动同步生成
170
+ - Agent 只需修改组件属性(如 `initialValue`、`defaultSortOrder`),不应直接修改 `datasource` 配置
171
+ - 示例:筛选器默认值通过 `items[].initialValue` 配置,自动同步到 `datasource.params.filter`
172
+
173
+ ---
174
+
175
+ ## 5. config 对象结构(按钮 JSFunction 参数)
176
+
177
+ | 属性 | 说明 |
178
+ |------|------|
179
+ | `config._context` | 组件上下文(含 appHelper、state 等) |
180
+ | `config.extraParams` | 额外参数(如行数据 `rowKey`) |
181
+ | `config.getFlowActionInfo()` | 获取流程执行结果 |
182
+
183
+ ### JSFunction 作用域
184
+
185
+ JSFunction 通过 `new Function("return " + value)()` 执行,作用域中只有:
186
+
187
+ | 可用对象 | 来源 | 说明 |
188
+ |---------|------|------|
189
+ | `config` | 函数参数 | `_context`、`extraParams` 等 |
190
+ | `window.antd` | UMD externals | antd 全部组件(Modal、message 等) |
191
+ | `window.__GLOBAL__` | 平台注入 | 用户信息等,见 § 6 |
192
+ | `window.*` | 浏览器原生 | `window.open`、`console` 等 |
193
+
194
+ 不可直接使用裸名(如 `Modal`、`Button`),必须从 `window.antd` 解构:
195
+
196
+ ```javascript
197
+ // ✅ 正确
198
+ (config) => { const { Modal } = window.antd; Modal.info({ title: '提示', content: '内容' }); }
199
+
200
+ // ❌ 错误:Modal is not defined
201
+ (config) => { Modal.info({ title: '提示', content: '内容' }); }
202
+ ```
203
+
204
+ > 与 LrSmartJsx 的区别:LrSmartJsx 的 `render.source` 支持 `import { Modal } from 'antd'`(编译时转译为 `const { Modal } = window.antd`),JSFunction 不经过编译,必须手动解构。
205
+
206
+ ---
207
+
208
+ ## 6. 平台全局对象(window.__GLOBAL__)
209
+
210
+ ### userInfo 当前用户信息
211
+
212
+ **类型定义**:
213
+
214
+ ```typescript
215
+ window.__GLOBAL__.userInfo: {
216
+ userId: string; // 用户ID
217
+ nickname: string; // 用户昵称
218
+ username: string; // 用户登录账号
219
+ mobile: string; // 用户手机号码
220
+ email?: string; // 邮箱(可选)
221
+ image?: string; // 用户头像(可选)
222
+ }
223
+ ```
224
+
225
+ **高频业务场景**:
226
+
227
+ | 场景 | 字段 | 用途 | 示例 |
228
+ |------|------|------|------|
229
+ | 快捷过滤按钮 | `userId` | 筛选"我创建的"、"我负责的"数据 | `{ creator_id: { $in: [userId] } }` |
230
+ | 表单默认值 | `userId` | 自动填充创建人、负责人 | `initialValue: window.__GLOBAL__.userInfo.userId` |
231
+ | 联系方式回填 | `mobile` / `email` | 自动填充联系人信息 | `initialValue: window.__GLOBAL__.userInfo.mobile` |
232
+
233
+ **访问方式**:
234
+
235
+ ```javascript
236
+ // JSFunction 中访问
237
+ const currentUserId = window.__GLOBAL__?.userInfo?.userId;
238
+
239
+ // JSExpression 中不支持(需通过 JSFunction 传递)
240
+ ```
241
+
242
+ **注意事项**:
243
+
244
+ - `window.__GLOBAL__` 是平台运行时注入的全局对象,仅在浏览器环境可用
245
+ - 访问时建议使用可选链 `?.` 避免未定义错误
246
+ - `userId` 为字符串类型(如 `"80"`),与数据库 ID 类型保持一致
247
+
248
+ ---
249
+
250
+ ## 7. 点号字段(引用表字段)
251
+
252
+ 引用表字段使用 `关联表名.字段名` 的点号语法,如 `customer.customer_name`。
253
+
254
+ **底层支持**:仅 filter 接口支持点号字段,可用于 `select`、`where`、`orderBy`。
255
+
256
+ ```typescript
257
+ // filter 接口示例
258
+ await client.models.dataset_xxx.filter({
259
+ select: ["opportunity_name", "customer.customer_name"],
260
+ where: { "customer.customer_type": { "$eq": "企业" } },
261
+ orderBy: [{ "customer.customer_name": "asc" }]
262
+ })
263
+ ```
264
+
265
+ **限制**:
266
+ - 仅支持一级关联(`relation.field`),不支持 `a.b.c`
267
+ - 关联关系必须在数据集 `relations` 中定义
268
+ - create / update / getOne 等其他接口不支持点号语法
269
+
270
+ 数据集关系的主子表声明、字段方向和验收规则见 [数据集关系声明](dataset-relations.md)。
271
+
272
+ ---
273
+
274
+ ## 8. 数据集关系:主子表
275
+
276
+ 主子表是数据集关系元数据,用于表示一条主记录对应多条明细记录。通过 Rabetbase CLI 写入时,关系基数使用 `--cardinality ONE_TO_MANY`,业务类型使用 `--biz-relation-type main_sub`,并保证主表被引用字段与子表关联字段真实匹配。
277
+
278
+ 页面通过 `relation.field` 消费已定义的关系;它不会因为声明主子表而自动生成子表布局或交互。不要将数据集内部关系对象直接复制到 CLI 请求或 PageSchema props;完整字段说明、示例与校验规则见 [数据集关系声明](dataset-relations.md)。