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