@lovrabet/rabetbase-cli 2.5.5 → 2.5.6-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/api-group.js +1 -1
- package/lib/api/fetch-model-list.js +1 -1
- package/lib/api/generate-api-file.js +1 -1
- package/lib/api/generate-sdk-config-file.js +1 -1
- package/lib/api/legacy-api-file.js +1 -1
- package/lib/api/model-registry-file.js +1 -1
- package/lib/api/model-registry-scaffold.js +1 -1
- package/lib/api/model-source.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/detail.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/logs.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/delete.js +1 -1
- package/lib/commands/config/get.js +1 -1
- package/lib/commands/config/index.js +1 -1
- package/lib/commands/config/init.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/dataset/batch-design.js +1 -1
- package/lib/commands/dataset/business-group-update.js +1 -1
- package/lib/commands/dataset/business-groups.js +1 -1
- package/lib/commands/dataset/capability.js +1 -1
- package/lib/commands/dataset/cross-relation-create.js +1 -1
- package/lib/commands/dataset/cross-relation-delete.js +1 -1
- package/lib/commands/dataset/cross-relation-list.js +1 -1
- package/lib/commands/dataset/cross-relation-shared.js +1 -1
- package/lib/commands/dataset/cross-relation-update.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-restore.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/dataset/user-deleted-field-list.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/cross-db-analysis-shared.d.ts +40 -0
- package/lib/commands/db/cross-db-analysis-shared.js +1 -0
- package/lib/commands/db/cross-db-analyze-latest.d.ts +2 -0
- package/lib/commands/db/cross-db-analyze-latest.js +1 -0
- package/lib/commands/db/cross-db-analyze-start.d.ts +2 -0
- package/lib/commands/db/cross-db-analyze-start.js +1 -0
- package/lib/commands/db/cross-db-analyze-status.d.ts +2 -0
- package/lib/commands/db/cross-db-analyze-status.js +1 -0
- package/lib/commands/db/delete.js +1 -1
- package/lib/commands/db/detail.js +1 -1
- package/lib/commands/db/diff-refresh-start.js +1 -1
- package/lib/commands/db/diff-refresh-status.js +1 -1
- 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/table-diff-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/deployment/index.js +1 -1
- package/lib/commands/deployment/sync-all.js +1 -1
- package/lib/commands/deployment/sync-jobs.js +1 -1
- package/lib/commands/deployment/sync-status.js +1 -1
- package/lib/commands/doctor.js +1 -1
- package/lib/commands/file/index.js +1 -1
- package/lib/commands/flow/create.js +1 -1
- package/lib/commands/flow/detail.js +1 -1
- package/lib/commands/flow/index.js +1 -1
- package/lib/commands/flow/list.js +1 -1
- package/lib/commands/flow/publish.js +1 -1
- package/lib/commands/flow/runtime-resources-shared.js +1 -1
- package/lib/commands/flow/runtime-role-list.js +1 -1
- package/lib/commands/flow/runtime-role-user-list.js +1 -1
- package/lib/commands/flow/runtime-user-search.js +1 -1
- package/lib/commands/flow/shared.js +1 -1
- package/lib/commands/flow/update.js +1 -1
- package/lib/commands/flow/validate.js +1 -1
- package/lib/commands/instant-api-policy/current.js +1 -1
- package/lib/commands/instant-api-policy/index.js +1 -1
- package/lib/commands/instant-api-policy/init.js +1 -1
- package/lib/commands/instant-api-policy/publish.js +1 -1
- package/lib/commands/instant-api-policy/pull.js +1 -1
- package/lib/commands/instant-api-policy/revision.js +1 -1
- package/lib/commands/instant-api-policy/revisions.js +1 -1
- package/lib/commands/instant-api-policy/rollback.js +1 -1
- package/lib/commands/instant-api-policy/shared.js +1 -1
- package/lib/commands/instant-api-policy/validate.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/search.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/path.js +1 -1
- package/lib/commands/menu/shared/service.js +1 -1
- package/lib/commands/menu/shared/subapp-assets.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/subapp-assets-status.js +1 -1
- package/lib/commands/menu/subapp-assets-update.js +1 -1
- package/lib/commands/menu/sync.js +1 -1
- package/lib/commands/menu/visibility-update.js +1 -1
- package/lib/commands/notification/config-create.js +1 -1
- package/lib/commands/notification/config-delete.js +1 -1
- package/lib/commands/notification/config-list.js +1 -1
- package/lib/commands/notification/config-update.js +1 -1
- package/lib/commands/notification/index.js +1 -1
- package/lib/commands/notification/shared.js +1 -1
- package/lib/commands/ocr/index.js +1 -1
- package/lib/commands/page/create.js +1 -1
- package/lib/commands/page/custom/detail.js +1 -1
- package/lib/commands/page/custom/list.js +1 -1
- package/lib/commands/page/custom/publish.js +1 -1
- package/lib/commands/page/custom/shared.js +1 -1
- package/lib/commands/page/custom/syntax.js +1 -1
- package/lib/commands/page/custom/update.js +1 -1
- package/lib/commands/page/data-list-status.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/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/sync.js +1 -1
- package/lib/commands/project/api-architecture-upgrade.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.js +1 -1
- package/lib/commands/project/create/materialize-project-template.js +1 -1
- package/lib/commands/project/create/project-name.js +1 -1
- package/lib/commands/project/create/project-template-archive.js +1 -1
- package/lib/commands/project/create/project-template-path.js +1 -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/domain-routing-sync.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/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/rule/get.js +1 -1
- package/lib/commands/rule/index.js +1 -1
- package/lib/commands/rule/list.js +1 -1
- package/lib/commands/rule/set.js +1 -1
- package/lib/commands/rule/shared.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/feishu-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/domain-config.js +1 -1
- package/lib/config/project-domain-routing.js +1 -1
- package/lib/config/region-config.js +1 -1
- package/lib/config/schema.js +1 -1
- 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/region.js +1 -1
- package/lib/constant/risk.js +1 -1
- package/lib/constant/routing-profile.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.js +1 -1
- package/lib/core/alias-resolver.js +1 -1
- package/lib/core/api-client.d.ts +7 -0
- 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/hook-directory.js +1 -1
- package/lib/core/bff/lock.js +1 -1
- package/lib/core/bff/utils.js +1 -1
- package/lib/core/cross-db-analysis.d.ts +17 -0
- package/lib/core/cross-db-analysis.js +1 -0
- package/lib/core/cross-db-relation.js +1 -1
- package/lib/core/db-resolver.js +1 -1
- package/lib/core/flow-config.js +1 -1
- package/lib/core/instant-api-policy/config.js +1 -1
- package/lib/core/kb-search-client.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/page/lr-smart-jsx.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/supported-flags.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/generated/official-routing.js +1 -1
- package/lib/generated/routing-contract.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.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/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 +1 -1
- package/skills/rabetbase/SKILL.md +6 -4
- package/skills/rabetbase/guides/database-connection-workflow.md +12 -3
- package/skills/rabetbase/guides/independent-deployment.md +10 -2
- package/skills/rabetbase/references/rabetbase-dataset-cross-relations.md +2 -0
- package/skills/rabetbase/references/rabetbase-db-analyze.md +2 -0
- package/skills/rabetbase/references/rabetbase-db-cross-analyze.md +78 -0
- package/skills/rabetbase-page-generation/SKILL.md +1 -1
- package/skills/rabetbase.manifest.json +4 -3
package/lib/utils/sleep.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export function sleep(
|
|
1
|
+
export function sleep(_0x5569e8){return new Promise(_0x4df98a=>setTimeout(_0x4df98a,_0x5569e8));}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
const a360_0x36d340=a360_0x45ba;(function(_0x3fc835,_0x42c342){const _0xbeb159=a360_0x45ba,_0x89c4a5=_0x3fc835();while(!![]){try{const _0x2977ba=-parseInt(_0xbeb159(0x160))/0x1*(-parseInt(_0xbeb159(0x177))/0x2)+-parseInt(_0xbeb159(0x173))/0x3*(parseInt(_0xbeb159(0x19c))/0x4)+parseInt(_0xbeb159(0x17f))/0x5+parseInt(_0xbeb159(0x162))/0x6*(-parseInt(_0xbeb159(0x18c))/0x7)+parseInt(_0xbeb159(0x187))/0x8+-parseInt(_0xbeb159(0x169))/0x9+-parseInt(_0xbeb159(0x170))/0xa*(-parseInt(_0xbeb159(0x18f))/0xb);if(_0x2977ba===_0x42c342)break;else _0x89c4a5['push'](_0x89c4a5['shift']());}catch(_0x47c10a){_0x89c4a5['push'](_0x89c4a5['shift']());}}}(a360_0x55e5,0xe9749));import a360_0x2bd8b2 from'node:fs';import a360_0x82cc87 from'node:path';import{logger}from'../utils/logger.js';import{getCliVersion}from'../utils/version.js';const CLI_VERSION=getCliVersion();function a360_0x55e5(){const _0x180232=['tableName','name','12537370lDuGGY','toLowerCase','LOVRABET','617382pdoJjY','.css','.json','now','6KPDHZL','replace','getMinutes','error','slice','replaceContent','formatLocalTimestamp','info','8714525fhrQWw','toComponentName','toISOString','.tpl','alias:\x20\x22','copyFile','.ts','.js','8151432hqqaXQ','isDirectory','includes','template','getMonth','9480065mHFZKD','tableName:\x20\x22','processDirectory','11UehffC','Template\x20content\x20replacement\x20completed','promises','split','map','toDisplayTitle','utf8','replaceApiContent','extname','.tsx','default','toUpperCase','mkdir','8XXxlCl','\x20},','readdir','pop','padStart','getHours','getFullYear','alias','68073RmXVvg','pad','6iIioVN','Starting\x20template\x20content\x20replacement','\x0a\x20\x20\x20\x20{\x20','join','success','readFile','isFile','13479066HlOnJf','endsWith','charAt','push','datasetCode:\x20\x22'];a360_0x55e5=function(){return _0x180232;};return a360_0x55e5();}function a360_0x45ba(_0x11f8fb,_0x45b7ab){_0x11f8fb=_0x11f8fb-0x160;const _0x55e5da=a360_0x55e5();let _0x45baf5=_0x55e5da[_0x11f8fb];return _0x45baf5;}export class TemplateReplacer{static[a360_0x36d340(0x161)](_0x3d3510){const _0x5cfaf0=a360_0x36d340;return String(_0x3d3510)[_0x5cfaf0(0x1a0)](0x2,'0');}static[a360_0x36d340(0x17d)](_0x19e776){const _0x4702d8=a360_0x36d340,_0x30a338=_0x19e776[_0x4702d8(0x1a2)](),_0x55d137=this[_0x4702d8(0x161)](_0x19e776[_0x4702d8(0x18b)]()+0x1),_0x3c3a15=this[_0x4702d8(0x161)](_0x19e776['getDate']()),_0x5c7a40=this[_0x4702d8(0x161)](_0x19e776[_0x4702d8(0x1a1)]()),_0x37e312=this[_0x4702d8(0x161)](_0x19e776[_0x4702d8(0x179)]()),_0x15ab38=this[_0x4702d8(0x161)](_0x19e776['getSeconds']());return{'createdAt':_0x30a338+'-'+_0x55d137+'-'+_0x3c3a15+'\x20'+_0x5c7a40+':'+_0x37e312+':'+_0x15ab38,'createdDate':_0x30a338+'-'+_0x55d137+'-'+_0x3c3a15,'createdTime':_0x5c7a40+':'+_0x37e312+':'+_0x15ab38};}static[a360_0x36d340(0x180)](_0x4579c4){const _0x12bd0c=a360_0x36d340,_0x4d3dcd=_0x4579c4[_0x12bd0c(0x192)]('/')['pop']()||_0x4579c4;return _0x4d3dcd['split']('-')[_0x12bd0c(0x193)](_0x2ed3f=>_0x2ed3f[_0x12bd0c(0x16b)](0x0)[_0x12bd0c(0x19a)]()+_0x2ed3f['slice'](0x1)[_0x12bd0c(0x171)]())['join']('');}static['toDisplayTitle'](_0xfcaa33){const _0x38de7c=a360_0x36d340,_0x135195=_0xfcaa33[_0x38de7c(0x192)]('/')[_0x38de7c(0x19f)]()||_0xfcaa33;return _0x135195['split']('-')[_0x38de7c(0x193)](_0x3c4681=>_0x3c4681[_0x38de7c(0x16b)](0x0)[_0x38de7c(0x19a)]()+_0x3c4681[_0x38de7c(0x17b)](0x1)[_0x38de7c(0x171)]())[_0x38de7c(0x165)]('\x20');}static['replaceContent'](_0x4ea8a1,_0x4d4d60,_0x2a9c18){const _0x5b45fc=a360_0x36d340,_0x23f4b8=this['toComponentName'](_0x4d4d60),_0x36858c=this[_0x5b45fc(0x194)](_0x4d4d60),{createdAt:_0x9b15a8,createdDate:_0x485b56,createdTime:_0x4a6a0d}=this['formatLocalTimestamp'](new Date());let _0x24bebb=_0x4ea8a1[_0x5b45fc(0x178)](/\{CliVersion\}/g,CLI_VERSION)[_0x5b45fc(0x178)](/\{ComponentName\}/g,_0x23f4b8)[_0x5b45fc(0x178)](/\{DisplayTitle\}/g,_0x36858c)[_0x5b45fc(0x178)](/\{PageName\}/g,_0x4d4d60)['replace'](/\{TemplateName\}/g,_0x2a9c18)[_0x5b45fc(0x178)](/\{CreatedAt\}/g,_0x9b15a8)[_0x5b45fc(0x178)](/\{CreatedDate\}/g,_0x485b56)['replace'](/\{CreatedTime\}/g,_0x4a6a0d);return _0x24bebb;}static[a360_0x36d340(0x196)](_0x555e8a,_0x476b02,_0x4685fb,_0x1fb634,_0xd1bd82,_0x53f738,_0x4cf4a7,_0x58c005,_0x23fdd3){const _0x2850dc=a360_0x36d340,_0x1ab690=new Date(),_0x4b876c=_0x1ab690[_0x2850dc(0x181)](),_0x5b7c85=_0x4685fb[_0x2850dc(0x193)](_0x17ca4f=>{const _0x330d9e=_0x2850dc,_0x3ecac3=[_0x330d9e(0x16d)+_0x17ca4f['datasetCode']+'\x22',_0x330d9e(0x18d)+_0x17ca4f[_0x330d9e(0x16e)]+'\x22','name:\x20\x22'+_0x17ca4f['name']+'\x22'];return _0x17ca4f[_0x330d9e(0x1a3)]&&_0x3ecac3[_0x330d9e(0x16c)](_0x330d9e(0x183)+_0x17ca4f['alias']+'\x22'),_0x330d9e(0x164)+_0x3ecac3['join'](',\x20')+_0x330d9e(0x19d);})[_0x2850dc(0x165)](''),_0x5d6fd2=_0x1fb634||_0x4685fb[0x0]?.[_0x2850dc(0x1a3)]||'YourModel';let _0x3dd08a=_0x555e8a[_0x2850dc(0x178)](/\{AppCode\}/g,_0x476b02)[_0x2850dc(0x178)](/\{ModelConfigs\}/g,_0x5b7c85)[_0x2850dc(0x178)](/\{ExampleModelName\}/g,_0x5d6fd2)[_0x2850dc(0x178)](/\{ApiFileName\}/g,_0xd1bd82||'api')[_0x2850dc(0x178)](/\{ConfigName\}/g,_0x53f738||_0x2850dc(0x199))[_0x2850dc(0x178)](/\{ClientConfigParam\}/g,_0x4cf4a7||'')[_0x2850dc(0x178)](/\{SdkConfigFileName\}/g,_0x23fdd3||'sdk-config')['replace'](/\{VarPrefix\}/g,_0x58c005||_0x2850dc(0x172))[_0x2850dc(0x178)](/\{CreatedAt\}/g,_0x4b876c);return _0x3dd08a;}static async['processTemplate'](_0x441d3e,_0x4294e3,_0x49b382,_0xc04d4e,_0x10f150=!![]){const _0xbb4171=a360_0x36d340,_0x19f9df=Date['now']();try{_0x10f150&&logger[_0xbb4171(0x17e)](_0xbb4171(0x18a),_0xbb4171(0x163),{'templatePath':_0x441d3e,'targetPath':_0x4294e3,'pageName':_0x49b382,'templateName':_0xc04d4e});await a360_0x2bd8b2[_0xbb4171(0x191)][_0xbb4171(0x19b)](_0x4294e3,{'recursive':!![]}),await this[_0xbb4171(0x18e)](_0x441d3e,_0x4294e3,_0x49b382,_0xc04d4e);if(_0x10f150){const _0x3f1a6c=Date[_0xbb4171(0x176)]()-_0x19f9df;logger[_0xbb4171(0x166)](_0xbb4171(0x18a),_0xbb4171(0x190),_0x3f1a6c,{'pageName':_0x49b382,'templateName':_0xc04d4e});}}catch(_0x2780ea){if(_0x10f150){const _0x12e5d1=Date['now']()-_0x19f9df;logger[_0xbb4171(0x17a)]('template','Template\x20content\x20replacement\x20failed',{'templatePath':_0x441d3e,'targetPath':_0x4294e3,'pageName':_0x49b382,'templateName':_0xc04d4e,'error':_0x2780ea instanceof Error?_0x2780ea['message']:String(_0x2780ea),'duration':_0x12e5d1});}throw _0x2780ea;}}static async['processDirectory'](_0x13036b,_0x200f70,_0x473d55,_0x205704){const _0x5e2efd=a360_0x36d340,_0x162fd3=await a360_0x2bd8b2[_0x5e2efd(0x191)][_0x5e2efd(0x19e)](_0x13036b,{'withFileTypes':!![]});for(const _0x31290a of _0x162fd3){const _0x161a07=a360_0x82cc87[_0x5e2efd(0x165)](_0x13036b,_0x31290a[_0x5e2efd(0x16f)]);let _0x12e328=a360_0x82cc87[_0x5e2efd(0x165)](_0x200f70,_0x31290a['name']);_0x31290a['name']['endsWith'](_0x5e2efd(0x182))&&(_0x12e328=a360_0x82cc87['join'](_0x200f70,_0x31290a[_0x5e2efd(0x16f)][_0x5e2efd(0x178)](/\.tpl$/,'')));if(_0x31290a[_0x5e2efd(0x188)]())await a360_0x2bd8b2[_0x5e2efd(0x191)][_0x5e2efd(0x19b)](_0x12e328,{'recursive':!![]}),await this['processDirectory'](_0x161a07,_0x12e328,_0x473d55,_0x205704);else _0x31290a[_0x5e2efd(0x168)]()&&await this['processFile'](_0x161a07,_0x12e328,_0x473d55,_0x205704);}}static async['processFile'](_0x44fb4a,_0x5436a0,_0x688d85,_0x589d10){const _0x3a58b4=a360_0x36d340,_0x199c10=a360_0x82cc87[_0x3a58b4(0x197)](_0x44fb4a)['toLowerCase']();_0x44fb4a[_0x3a58b4(0x16a)](_0x3a58b4(0x182))&&(_0x5436a0=_0x5436a0[_0x3a58b4(0x178)](/\.tpl$/,''));const _0x1b1fed=[_0x3a58b4(0x198),_0x3a58b4(0x185),'.jsx',_0x3a58b4(0x186),_0x3a58b4(0x175),'.md',_0x3a58b4(0x174),'.scss','.tpl'];if(_0x1b1fed[_0x3a58b4(0x189)](_0x199c10)||_0x44fb4a['endsWith'](_0x3a58b4(0x182))){const _0x591070=await a360_0x2bd8b2[_0x3a58b4(0x191)][_0x3a58b4(0x167)](_0x44fb4a,_0x3a58b4(0x195)),_0x4453ce=this[_0x3a58b4(0x17c)](_0x591070,_0x688d85,_0x589d10);await a360_0x2bd8b2['promises']['writeFile'](_0x5436a0,_0x4453ce,_0x3a58b4(0x195));}else await a360_0x2bd8b2[_0x3a58b4(0x191)][_0x3a58b4(0x184)](_0x44fb4a,_0x5436a0);}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
function a361_0x567b(_0x2a3406,_0x5cdc97){_0x2a3406=_0x2a3406-0x1b2;const _0x3d78b3=a361_0x3d78();let _0x567bc2=_0x3d78b3[_0x2a3406];return _0x567bc2;}function a361_0x3d78(){const _0x523f5d=['now','10219888PPGQqO','trim','parse','lastNotifiedAt','utf8','toLowerCase','7iwyxyu','444066LCPgbf','gte',',\x20run:\x20','\x20update','27buiTZB','valid','/v/','6384652VzxIsC','stringify','2594688YHSSqO','3YxsPve','5ihdcHP','update-check.json','number','lastNotifiedVersion','checkedAt','\x20available,\x20current\x20','rabetbase-cli','7579794wjvGai','2036490RMiCra','42422369aOeTkI'];a361_0x3d78=function(){return _0x523f5d;};return a361_0x3d78();}(function(_0x285757,_0x2b215a){const _0x7647f=a361_0x567b,_0x4cbade=_0x285757();while(!![]){try{const _0x431d3a=parseInt(_0x7647f(0x1ba))/0x1+parseInt(_0x7647f(0x1c3))/0x2+parseInt(_0x7647f(0x1c4))/0x3*(-parseInt(_0x7647f(0x1c1))/0x4)+-parseInt(_0x7647f(0x1c5))/0x5*(parseInt(_0x7647f(0x1cc))/0x6)+parseInt(_0x7647f(0x1b9))/0x7*(-parseInt(_0x7647f(0x1b3))/0x8)+parseInt(_0x7647f(0x1be))/0x9*(-parseInt(_0x7647f(0x1cd))/0xa)+parseInt(_0x7647f(0x1ce))/0xb;if(_0x431d3a===_0x2b215a)break;else _0x4cbade['push'](_0x4cbade['shift']());}catch(_0xe91ead){_0x4cbade['push'](_0x4cbade['shift']());}}}(a361_0x3d78,0xcf8ae));import{mkdir,readFile,writeFile}from'node:fs/promises';import{homedir}from'node:os';import{dirname,join}from'node:path';import a361_0x5bb83b from'semver';import{CLI_BIN_NAME,NPM_PACKAGE_NAME}from'../constant/cli.js';import{getCliVersionPolicy}from'../utils/cli-version-policy.js';import{getCliVersion}from'../utils/version.js';const UPDATE_CHECK_TTL_MS=0xc*0x3c*0x3c*0x3e8,UPDATE_NOTICE_TTL_MS=0x18*0x3c*0x3c*0x3e8;function isUpdateNoticeDisabled(){const _0x52b7d1=a361_0x567b,_0x5e090a=process.env.RABETBASE_NO_UPDATE_NOTICE?.[_0x52b7d1(0x1b4)]()[_0x52b7d1(0x1b8)]();return _0x5e090a==='1'||_0x5e090a==='true'||_0x5e090a==='yes';}function cacheRoot(){return process.env.XDG_CACHE_HOME||process.env.LOCALAPPDATA||join(homedir(),'.cache');}export function getUpdateNoticeCachePath(){const _0x2b9fbc=a361_0x567b;return join(cacheRoot(),_0x2b9fbc(0x1cb),_0x2b9fbc(0x1c6));}async function readUpdateNoticeCache(){const _0x17be26=a361_0x567b;try{const _0x1250f6=await readFile(getUpdateNoticeCachePath(),_0x17be26(0x1b7)),_0x499887=JSON[_0x17be26(0x1b5)](_0x1250f6);if(!_0x499887||typeof _0x499887!=='object')return{};return _0x499887;}catch{return{};}}async function writeUpdateNoticeCache(_0x344f97){const _0x3ef5b2=a361_0x567b;try{const _0x13083a=getUpdateNoticeCachePath();await mkdir(dirname(_0x13083a),{'recursive':!![]}),await writeFile(_0x13083a,JSON[_0x3ef5b2(0x1c2)](_0x344f97,null,0x2)+'\x0a',_0x3ef5b2(0x1b7));}catch{}}function isFreshCheck(_0x5e3f5e,_0x42a042){const _0x1a779d=a361_0x567b;return typeof _0x5e3f5e[_0x1a779d(0x1c9)]===_0x1a779d(0x1c7)&&_0x42a042-_0x5e3f5e[_0x1a779d(0x1c9)]<UPDATE_CHECK_TTL_MS;}function isRecentlyNotified(_0x40f384,_0x2b047e,_0x3684d6){const _0x570d9f=a361_0x567b;return _0x40f384[_0x570d9f(0x1c8)]===_0x2b047e&&typeof _0x40f384[_0x570d9f(0x1b6)]==='number'&&_0x3684d6-_0x40f384[_0x570d9f(0x1b6)]<UPDATE_NOTICE_TTL_MS;}export function buildNpmVersionUrl(_0x58595a){const _0x2da89b=a361_0x567b;return'https://www.npmjs.com/package/'+NPM_PACKAGE_NAME+_0x2da89b(0x1c0)+_0x58595a;}export async function resolveLatestUpdateNotice(){const _0x2ff343=a361_0x567b;if(isUpdateNoticeDisabled())return null;try{const _0x2bbf3a=Date[_0x2ff343(0x1b2)](),_0x33dc9f=getCliVersion(),_0x9dc340=await readUpdateNoticeCache();let _0x32ff59=isFreshCheck(_0x9dc340,_0x2bbf3a)?_0x9dc340['latest']?.[_0x2ff343(0x1b4)]():undefined;if(!_0x32ff59&&!isFreshCheck(_0x9dc340,_0x2bbf3a)){const _0x3722e0=await getCliVersionPolicy();_0x32ff59=_0x3722e0?.['stableVersion']?.['trim']()||undefined,await writeUpdateNoticeCache({..._0x9dc340,'checkedAt':_0x2bbf3a,'latest':_0x32ff59,'failed':!_0x32ff59});}if(!_0x32ff59||!a361_0x5bb83b['valid'](_0x33dc9f)||!a361_0x5bb83b[_0x2ff343(0x1bf)](_0x32ff59))return null;if(a361_0x5bb83b[_0x2ff343(0x1bb)](_0x33dc9f,_0x32ff59))return null;if(isRecentlyNotified(_0x9dc340,_0x32ff59,_0x2bbf3a))return null;const _0xaf5a91=CLI_BIN_NAME+_0x2ff343(0x1bd);return await writeUpdateNoticeCache({..._0x9dc340,'checkedAt':isFreshCheck(_0x9dc340,_0x2bbf3a)?_0x9dc340[_0x2ff343(0x1c9)]:_0x2bbf3a,'latest':_0x32ff59,'failed':![],'lastNotifiedVersion':_0x32ff59,'lastNotifiedAt':_0x2bbf3a}),{'command':_0xaf5a91,'current':_0x33dc9f,'latest':_0x32ff59,'url':buildNpmVersionUrl(_0x32ff59),'message':CLI_BIN_NAME+'\x20'+_0x32ff59+_0x2ff343(0x1ca)+_0x33dc9f+_0x2ff343(0x1bc)+_0xaf5a91};}catch{return null;}}
|
package/lib/utils/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x438063,_0x15fecd){var _0x5ea186=a362_0x1223,_0x153973=_0x438063();while(!![]){try{var _0x48de4f=-parseInt(_0x5ea186(0x1c3))/0x1*(parseInt(_0x5ea186(0x1c8))/0x2)+-parseInt(_0x5ea186(0x1c1))/0x3*(-parseInt(_0x5ea186(0x1be))/0x4)+-parseInt(_0x5ea186(0x1c0))/0x5*(-parseInt(_0x5ea186(0x1bf))/0x6)+-parseInt(_0x5ea186(0x1c6))/0x7+-parseInt(_0x5ea186(0x1c7))/0x8*(-parseInt(_0x5ea186(0x1c5))/0x9)+parseInt(_0x5ea186(0x1c4))/0xa+parseInt(_0x5ea186(0x1c2))/0xb;if(_0x48de4f===_0x15fecd)break;else _0x153973['push'](_0x153973['shift']());}catch(_0x2e949e){_0x153973['push'](_0x153973['shift']());}}}(a362_0x3761,0x88ef6));import{VERSION}from'../generated/build-info.js';function a362_0x1223(_0x24861d,_0x9ee2bc){_0x24861d=_0x24861d-0x1be;var _0x37617c=a362_0x3761();var _0x12233c=_0x37617c[_0x24861d];return _0x12233c;}function a362_0x3761(){var _0x394e40=['15003XLLoWb','6416851ZPYYzK','1912GEzuhk','66dgQoCI','14328yAZCjR','2193630eyjcMA','10aKKXZj','309cTlVNJ','9469229sjfrEp','27698JrBvbZ','322050poDoTb'];a362_0x3761=function(){return _0x394e40;};return a362_0x3761();}export function getCliVersion(){return VERSION;}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0xe8c203,_0x33ac57){var _0x3fdfff=a363_0x1bd9,_0x57895d=_0xe8c203();while(!![]){try{var _0x5df7aa=parseInt(_0x3fdfff(0xb9))/0x1*(-parseInt(_0x3fdfff(0xb6))/0x2)+parseInt(_0x3fdfff(0xbd))/0x3+parseInt(_0x3fdfff(0xb8))/0x4+-parseInt(_0x3fdfff(0xb7))/0x5*(-parseInt(_0x3fdfff(0xbe))/0x6)+parseInt(_0x3fdfff(0xb5))/0x7+-parseInt(_0x3fdfff(0xbb))/0x8*(-parseInt(_0x3fdfff(0xba))/0x9)+-parseInt(_0x3fdfff(0xbc))/0xa*(parseInt(_0x3fdfff(0xb4))/0xb);if(_0x5df7aa===_0x33ac57)break;else _0x57895d['push'](_0x57895d['shift']());}catch(_0x581bc0){_0x57895d['push'](_0x57895d['shift']());}}}(a363_0x3dec,0xabc3f));function a363_0x1bd9(_0x307cd6,_0x5921fb){_0x307cd6=_0x307cd6-0xb4;var _0x3dec36=a363_0x3dec();var _0x1bd946=_0x3dec36[_0x307cd6];return _0x1bd946;}function a363_0x3dec(){var _0x5253a5=['41022eLAnNn','920QvSLGx','15470800uVDJDC','2247885HDIPvp','90EshPfw','11foycTX','1481452LKZvuQ','2180414RgYOiv','217210svrUDW','4816428QUIcnz','1tHZXRS'];a363_0x3dec=function(){return _0x5253a5;};return a363_0x3dec();}import{setActiveCookie,clearActiveCookie}from'../core/api-client.js';export async function withActiveCookie(_0xc806bf,_0x2036c2){setActiveCookie(_0xc806bf);try{return await _0x2036c2();}finally{clearActiveCookie();}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x452254,_0x687d85){var _0x58ec63=a364_0x1d31,_0x387a37=_0x452254();while(!![]){try{var _0x929ef3=-parseInt(_0x58ec63(0x1c9))/0x1*(-parseInt(_0x58ec63(0x1c7))/0x2)+-parseInt(_0x58ec63(0x1c8))/0x3*(parseInt(_0x58ec63(0x1c4))/0x4)+-parseInt(_0x58ec63(0x1c3))/0x5+parseInt(_0x58ec63(0x1ca))/0x6*(-parseInt(_0x58ec63(0x1c5))/0x7)+parseInt(_0x58ec63(0x1c1))/0x8+-parseInt(_0x58ec63(0x1cc))/0x9*(-parseInt(_0x58ec63(0x1c2))/0xa)+parseInt(_0x58ec63(0x1c6))/0xb;if(_0x929ef3===_0x687d85)break;else _0x387a37['push'](_0x387a37['shift']());}catch(_0x2a6fe1){_0x387a37['push'](_0x387a37['shift']());}}}(a364_0x3f68,0x28c70));function a364_0x1d31(_0x47cac3,_0x4f6114){_0x47cac3=_0x47cac3-0x1c1;var _0x3f6850=a364_0x3f68();var _0x1d316a=_0x3f6850[_0x47cac3];return _0x1d316a;}export function writeCliSideChannelLine(_0x5eaee5){var _0x32a97c=a364_0x1d31;process[_0x32a97c(0x1cd)][_0x32a97c(0x1cb)](_0x5eaee5+'\x0a');}function a364_0x3f68(){var _0x38dbc5=['4XTkoxL','150978upLIio','write','262809hBnCaQ','stderr','37232KqBwgC','20eToDTv','288570uEJwOk','63764twODPu','42jQCrhS','2492633pCMxOY','98822TivoaT','21APuCxK'];a364_0x3f68=function(){return _0x38dbc5;};return a364_0x3f68();}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lovrabet/rabetbase-cli",
|
|
3
|
-
"version": "2.5.
|
|
3
|
+
"version": "2.5.6-beta.1",
|
|
4
4
|
"description": "Developer CLI for Lovrabet apps, datasets, pages, SQL, Backend Function, database connections, skills, and AI agent workflows.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"keywords": [
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: rabetbase
|
|
3
|
-
version: 2.5.
|
|
3
|
+
version: 2.5.6-beta.1
|
|
4
4
|
description: "Use for Lovrabet development work through the rabetbase CLI: create or bind projects (including creating an AppCode project in the current folder), pull Dataset/API facts and maintain SDK clients, or manage datasets, Instant API access policies, database connections, pages, host frontend integration, frontend subapp resources, SQL, Backend Functions, approval flows and workflows, menus, notifications, knowledge bases and kb search, Agent Context Rules, roles, files, OCR, deployment metadata, platform issues, and 钉钉沙箱账号绑定. Trigger when the user mentions rabetbase, Lovrabet development, AppCode, Dataset, Instant API allow/deny/route policy, project creation, api pull/codegen, dblink, page, host frontend integration, subapp resource versions, SQL, BFF, creating or designing an approval flow, workflow, business process, or multi-step approval, menu, notification, knowledge base, kb search, Agent Context Rules, RULES.md, DATABASE.md, rule list/get/set, role, file/OCR, or related development workflows."
|
|
5
5
|
metadata:
|
|
6
6
|
requires:
|
|
@@ -85,7 +85,7 @@ Agent 负责把已授权的目标推进到可验证的结果:主动获取事
|
|
|
85
85
|
- `bff pull` / `bff push` 返回 `data.conflicts` 时,逐项报告 `lockKey` 和 `code`,并只在审阅后执行该项 `nextAction`;不得把同步冲突说成失败、自动使用 `--force`,或盲目重试整批脚本
|
|
86
86
|
- 创建会发送消息通知的 Backend Function 时,先读取 [`backend-function.md`](guides/backend-function.md) 的“消息通知扩展”契约,再执行 [`rabetbase notification config-list --type EMAIL`](references/rabetbase-notification-config-list.md) 获取当前应用的 `configCode`;不得猜测渠道、收件人或把密钥写进脚本
|
|
87
87
|
- 推送成功只证明平台保存;需要确认运行效果时,按 [BFF 运行验证](guides/bff-creation-workflow.md#9-运行态-smoke按需)执行,不把保存成功当作运行验证通过
|
|
88
|
-
-
|
|
88
|
+
- 已确认独立部署并需业务发布、运行验证或厘清业务环境与平台连接的对应关系、出现平台到业务环境的同步疑点或明确需要独立部署同步功能时,读取[独立部署指南](guides/independent-deployment.md)
|
|
89
89
|
5. **页面体系选择**
|
|
90
90
|
- 数据列表页(Data List Page)是数据集驱动的结构化页面组,用于数据查看、维护和模型验证,不等同于最终业务工作台
|
|
91
91
|
- 自定义页面(Custom Page)是完整代码文件驱动的平台页面,用于工作台、看板、门户和复杂业务交互;当前 React JSX 只是渲染实现,不是页面产品类型
|
|
@@ -168,12 +168,13 @@ Agent 负责把已授权的目标推进到可验证的结果:主动获取事
|
|
|
168
168
|
|
|
169
169
|
## 数据库连接(`db`)
|
|
170
170
|
|
|
171
|
-
与 **`dataset`(数据集模型)** 的分工:**`db *`** 管平台登记的 **物理库连接(dblink)**、**测连**、**schema
|
|
171
|
+
与 **`dataset`(数据集模型)** 的分工:**`db *`** 管平台登记的 **物理库连接(dblink)**、**测连**、**schema 分析任务**、**跨库关联分析任务**、**物理表清单与差异**;表字段、枚举以 **`dataset detail`** 为准,同库数据集关联关系以 **`dataset relations`** 为准,关系事实风险用 **`dataset relation-audit`**;跨库关系使用 **`dataset cross-relation-list`**。
|
|
172
172
|
|
|
173
173
|
- **入口**:先 [`db list`](references/rabetbase-db-list.md) 取 `id` 与 `latestAnalysisTraceId`(如有)。
|
|
174
174
|
- **只读常用**:[`db detail`](references/rabetbase-db-detail.md)、[`db test`](references/rabetbase-db-test.md)、[`db tables`](references/rabetbase-db-tables.md)、[`db diff`](references/rabetbase-db-diff.md)。`db tables` 固定聚合全部表及分析状态;`db diff` 只读差异结果,`--all` 只聚合全部差异分页。
|
|
175
175
|
- **差异刷新**:[`db diff-refresh-start/status`](references/rabetbase-db-diff-refresh.md)。CLI 发起 DBAgent 增量分析时,无论 `tableCount` 多少或是否缺失,默认先刷新再读取差异;只有用户明确要求跳过分析/刷新时才直接读取现有结果。刷新与 schema `analyze-*` 是两类任务,不得混用。
|
|
176
176
|
- **分析任务**:`db analyze-batch-plan` / `analyze-start` / `analyze-cancel` / `analyze-status`(服务端 plan/trace 来源见下)。
|
|
177
|
+
- **跨库关联分析**:先读 [cross-analyze-start/status/latest](references/rabetbase-db-cross-analyze.md)。沿用当前平台和应用,同一应用至少两个连接,按所选连接已有 V2 数据集与分析元数据分析。先 dry-run,提交一次后保存 planId。标识丢失或提交结果未知时 latest 只作候选恢复,不能证明请求幂等;成功后按实际参与库逐个 cross-relation-list 回读。
|
|
177
178
|
- **状态诊断边界**:`analyze-status` 的 `requestedAnalysis` 只还原原始提交范围;`hasMultipleAttempts=true` 只表示观察到多个执行尝试。不得据此推断尝试间连续性、实际执行范围或自动重启。
|
|
178
179
|
- **增量分批**:先用本地只读的 `db analyze-batch-plan --id <id> --tables <清单>` 得到确定性批次及 `planningEstimate`;这里生成的是本地批次方案,不是服务端 `planId`,不会创建或预留任务。再逐批调用一次 `analyze-start`,读取真实 `planId` 与当前任务的 `serverEstimate`;每批独立保存其返回的 `planId`,同一 dblink 严格串行。两类估算都不得驱动超时、取消、重试、自动重启或状态判断,`PENDING / RUNNING / RETRYING / CANCELING` 均不得推进下一批。
|
|
179
180
|
- **取消已有任务**:只使用正在跟踪的原 `planId` 执行 `analyze-cancel --plan <原 planId>`;取消分支不得调用 `analyze-start`,也不得用可能变化的 `latestAnalysisTraceId` 替换已知目标。
|
|
@@ -401,6 +402,7 @@ const result = await client.bff.execute<DashboardData>({
|
|
|
401
402
|
| 审计数据集关联关系 | [`rabetbase dataset relation-audit`](references/rabetbase-dataset-relation-audit.md) | 只读审计关系事实结构错误、风险和人工复核项 |
|
|
402
403
|
| 管理单条数据集关联关系 | [`rabetbase dataset relation-create/update/delete`](references/rabetbase-dataset-relation-mutations.md) | 单条关系写入;写入前用 `relations` 确认 `datasetCode + field` 关系事实,DB_TABLE 写入所需表名来自显式参数或物理表事实 |
|
|
403
404
|
| 管理跨库数据集关联 | [`dataset cross-relation-list/create/update/delete`](references/rabetbase-dataset-cross-relations.md) | 不同连接的 DB_TABLE 逻辑关系;源端定位,更新/删除要求唯一匹配 |
|
|
405
|
+
| 分析已有数据集的跨库关联 | [`db cross-analyze-start/status/latest`](references/rabetbase-db-cross-analyze.md) | 同一应用至少两个连接;先 dry-run,按原 planId 查询;结果用跨库关系 list 回读 |
|
|
404
406
|
| 首次生成数据列表页 | [`rabetbase page generate-start --datasetcode <code>`](references/rabetbase-page-generate-start.md) | 提交或复用服务端异步任务 |
|
|
405
407
|
| 创建自定义页面 | [`rabetbase page create --page-pattern BLANK --name "客户看板"`](references/rabetbase-page-create.md) | 综合操作页面优先使用 `ONEPAGE`,业务数据可视化使用 `DASHBOARD`,基础页面使用 `BLANK`;模板详情见 [`page-templates.md`](knowledge/custom-page/page-templates.md),也可通过 `--page-dir` 创建完整页面;先 dry-run |
|
|
406
408
|
| 查询自定义页面 | [`rabetbase page custom-list`](references/rabetbase-page-custom-list.md) | 返回页面 ID、页面名称、`pageUrl`(查看最新保存内容)、`runtimePageUrl`(始终可打开;未发布时显示错误提示)和 `editPageUrl`(打开编辑器) |
|
|
@@ -482,7 +484,7 @@ const result = await client.bff.execute<DashboardData>({
|
|
|
482
484
|
| dataset commands | [`list`](references/rabetbase-dataset-list.md) / [`detail`](references/rabetbase-dataset-detail.md) / [`delete`](references/rabetbase-dataset-delete.md) / [`restore`](references/rabetbase-dataset-restore.md) / [`user-deleted-field-list`](references/rabetbase-dataset-user-deleted-field-list.md) / [`field-restore`](references/rabetbase-dataset-field-restore.md) / [`generate-start/status`](references/rabetbase-dataset-generate.md) / [`rename`](references/rabetbase-dataset-rename.md) / [`field-update`](references/rabetbase-dataset-field-update.md) / [`extend-update`](references/rabetbase-dataset-extend-update.md) / [`business-group-update`](references/rabetbase-dataset-business-group-update.md) / [`operations`](references/rabetbase-dataset-operations.md) / [`relations`](references/rabetbase-dataset-relations.md) / [`relation-audit`](references/rabetbase-dataset-relation-audit.md) / [`relation-create/update/delete`](references/rabetbase-dataset-relation-mutations.md) |
|
|
483
485
|
| Data List Page commands | [`generate-start`](references/rabetbase-page-generate-start.md) / [`generate-status`](references/rabetbase-page-generate-status.md) / [`data-list-status`](references/rabetbase-data-list-status.md) / [`relation-audit`](references/rabetbase-page-relation-binding.md) / [`sync`](references/rabetbase-page-sync.md) / [`pull`](references/rabetbase-page-pull.md) / [`push`](references/rabetbase-page-push.md) |
|
|
484
486
|
| Custom Page commands | [`create`](references/rabetbase-page-create.md) / [`custom-list`](references/rabetbase-page-custom-list.md) / [`custom-detail`](references/rabetbase-page-custom-detail.md) / [`custom-update`](references/rabetbase-page-custom-update.md) / [`custom-publish`](references/rabetbase-page-custom-publish.md) |
|
|
485
|
-
| Database Connections (`db`) | [`list`](references/rabetbase-db-list.md) / [`detail`](references/rabetbase-db-detail.md) / [`create`](references/rabetbase-db-create.md) / [`update`](references/rabetbase-db-update.md) / [`delete`](references/rabetbase-db-delete.md) / [`test`](references/rabetbase-db-test.md) / [`analyze`](references/rabetbase-db-analyze.md) / [`tables`](references/rabetbase-db-tables.md) / [`diff`](references/rabetbase-db-diff.md) / [`diff-refresh-start/status`](references/rabetbase-db-diff-refresh.md) |
|
|
487
|
+
| Database Connections (`db`) | [`list`](references/rabetbase-db-list.md) / [`detail`](references/rabetbase-db-detail.md) / [`create`](references/rabetbase-db-create.md) / [`update`](references/rabetbase-db-update.md) / [`delete`](references/rabetbase-db-delete.md) / [`test`](references/rabetbase-db-test.md) / [`analyze`](references/rabetbase-db-analyze.md) / [`cross-analyze-start/status/latest`](references/rabetbase-db-cross-analyze.md) / [`tables`](references/rabetbase-db-tables.md) / [`diff`](references/rabetbase-db-diff.md) / [`diff-refresh-start/status`](references/rabetbase-db-diff-refresh.md) |
|
|
486
488
|
| Deployment | [`sync-all` / `sync-status` / `sync-jobs`](references/rabetbase-deployment-sync-all.md)(管理员初始化、回填与恢复) |
|
|
487
489
|
| api commands | [`pull`](references/rabetbase-api-pull.md) / [`list`](references/rabetbase-api-list.md) |
|
|
488
490
|
| sql commands | [`list`](references/rabetbase-sql-list.md) / [`detail`](references/rabetbase-sql-detail.md) / [`create`](references/rabetbase-sql-create.md) / [`status`](references/rabetbase-sql-status.md) / [`pull`](references/rabetbase-sql-pull.md) / [`push`](references/rabetbase-sql-push.md) / [`delete`](references/rabetbase-sql-delete.md) / [`validate`](references/rabetbase-sql-validate.md) / [`exec`](references/rabetbase-sql-exec.md) |
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
| 改连接串 / 账号 | 更新已有连接,避免在界面点来点去 |
|
|
11
11
|
| 验证网络与白名单 | **测连**确认研发环境能打到库 |
|
|
12
12
|
| 同步结构到 Lovrabet | **分析任务**把表结构同步到平台;可看进度、取消 |
|
|
13
|
+
| 分析跨库逻辑关联 | **cross-analyze-start/status/latest** 使用多个库已有的数据集与分析元数据推导跨库关系 |
|
|
13
14
|
| 看全部表与差异 | **tables** 查询全部表,**diff** 只查询差异表 |
|
|
14
15
|
|
|
15
16
|
**与 `dataset` 的区别**:`dataset detail` 里的 `dbId` 来自数据集绑定;**`db list` 的 `id` 是 dblink 主键**,二者数值上通常一致,但 **CLI 管连接用 `db *`,管模型用 `dataset *`**。
|
|
@@ -38,7 +39,15 @@ trace/plan → 见下一节(分析任务专用)
|
|
|
38
39
|
|
|
39
40
|
## 推荐流程(Agent)
|
|
40
41
|
|
|
41
|
-
###
|
|
42
|
+
### 跨库关联分析
|
|
43
|
+
|
|
44
|
+
沿用当前平台节点、应用和连接 ID。
|
|
45
|
+
|
|
46
|
+
先按 [跨库分析 reference](../references/rabetbase-db-cross-analyze.md) 确认至少两个同应用连接及各库单库分析结果;用 `cross-analyze-start --ids <id1,id2> --dry-run` 审阅范围,提交一次后保存 `data.planId`,只用 `cross-analyze-status --plan <原标识>` 查询。标识丢失时,`cross-analyze-latest` 只读取得应用最新候选;候选不是原请求的幂等证明,响应不确定时不自动重新提交。
|
|
47
|
+
|
|
48
|
+
终态成功后检查实际参与库与跳过库,对实际参与库逐个执行 `dataset cross-relation-list --from-dblink-id <id>`;单库 `db diff` 和 `dataset relations` 不作为跨库关系分析的完成证据。下方的差异刷新、分批和取消流程用于单库 schema 分析。
|
|
49
|
+
|
|
50
|
+
### 差异读取策略(单库 schema 分析流程共用)
|
|
42
51
|
|
|
43
52
|
```text
|
|
44
53
|
用户明确要求不分析、不刷新或只看现有结果:
|
|
@@ -184,9 +193,9 @@ db delete --id <id> --expected-dataset-count 0 --confirm --yes
|
|
|
184
193
|
## 与其它命令的配合
|
|
185
194
|
|
|
186
195
|
- **写 SQL 前要 `dbId`**:`dataset detail --code …` 里 `db.id`;或 `db list` 的 `id` 与数据集侧 `dbId` 对应。
|
|
187
|
-
-
|
|
196
|
+
- **看模型关系**:同库用 `dataset relations`,跨库用 `dataset cross-relation-list`;物理库连接和表清单用 `db list` / `db tables` 对照。
|
|
188
197
|
- **查看所有数据表**:使用 `db tables`,它自动聚合全部分页;`db diff` 只读取差异结果。
|
|
189
|
-
- **给用户确认页面**:DB
|
|
198
|
+
- **给用户确认页面**:DB 更新或单库 schema 分析完成后检查并返回 `data.links.erPage`;新建连接后返回 `data.links.databasePage`。跨库分析按实际参与库回读跨库关系。
|
|
190
199
|
- **不确定 flags**:`rabetbase schema`(无需登录)查契约。
|
|
191
200
|
|
|
192
201
|
## 输出格式
|
|
@@ -2,10 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
## 何时读取
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
仅在已确认独立部署并需要业务发布、运行验证或厘清业务环境与平台连接的对应关系、出现平台到业务环境的同步疑点,或明确需要独立部署同步功能时读取。非独立部署应用只在 Lovrabet 平台内开发与验证,沿用普通工作流,不引入独立业务库或日常到线上的流程。
|
|
6
6
|
|
|
7
7
|
正常开发、绑定项目和正常 push 不查询或展示 `vipDeploy`。出现异常时,先确认平台是否保存、实际验证目标及失败步骤;已有证据定位其他原因时,不追加能力查询。
|
|
8
8
|
|
|
9
|
+
## 平台研发与业务运行边界
|
|
10
|
+
|
|
11
|
+
业务开发与 DB 分析在 Lovrabet 平台上进行;独立部署的业务生产环境与平台完全隔离。开发者在平台分析数据库、维护数据集和编写应用时,无需选择或确认业务生产环境。
|
|
12
|
+
|
|
13
|
+
CLI `env` 的取值与解析规则以[配置参考](../references/rabetbase-config.md#顶层字段)为准。`env=production` 指已发布、可对外使用的线上 Lovrabet 平台;在该平台进行 DB 分析仍属于业务开发,不能据此推断正在操作业务生产环境。沿用已确认的平台连接,不因这个标记切换到 `daily` 或要求业务生产风险确认。
|
|
14
|
+
|
|
15
|
+
只有任务涉及独立部署的同步、发布、运行验证或对应关系排障时,才按项目部署约定核对业务目标并读取本指南。普通 DB 分析沿用当前平台、应用和连接 ID 的工作流,无需将本指南作为执行前置。
|
|
16
|
+
|
|
9
17
|
## 按需确认同步能力
|
|
10
18
|
|
|
11
19
|
需要判断显式同步能力时,用 [`app detail`](../references/rabetbase-app-detail.md) 读取 `app/getOne` 的 `vipDeploy`;选择器、输出与错误契约见命令参考。不从本地同名字段、CLI Domain、`rabetbase.domain-routing.json` 的 `mode` 或前端是否嵌入平台推断标识,也不用 `workspace init/use` 查询它。
|
|
@@ -18,7 +26,7 @@
|
|
|
18
26
|
|
|
19
27
|
## 确认连接与项目链路
|
|
20
28
|
|
|
21
|
-
无论应用是否独立部署,`rabetbase` 始终使用 `.rabetbase.json` 及现有配置解析机制访问 Lovrabet 平台服务端,沿用开发者认证;`vipDeploy` 仅用于 Agent 引导,不改变请求目标或认证方式,也不读取 `.lovrabet.json` 连接业务服务。`lovrabet` 使用 `.lovrabet.json` 对应的业务连接和业务账号 AccessKey。核对执行目录、所选应用和各 CLI 实际生效的配置,包括参数、环境变量等覆盖,并与页面实际请求目标对应。相同 AppCode 或 `env`
|
|
29
|
+
无论应用是否独立部署,`rabetbase` 始终使用 `.rabetbase.json` 及现有配置解析机制访问 Lovrabet 平台服务端,沿用开发者认证;`vipDeploy` 仅用于 Agent 引导,不改变请求目标或认证方式,也不读取 `.lovrabet.json` 连接业务服务。`lovrabet` 使用 `.lovrabet.json` 对应的业务连接和业务账号 AccessKey。核对执行目录、所选应用和各 CLI 实际生效的配置,包括参数、环境变量等覆盖,并与页面实际请求目标对应。相同 AppCode 或 `env` 不证明连接同一环境。
|
|
22
30
|
|
|
23
31
|
从项目已确认的部署约定获取同步目标和后续发布步骤。若项目明确“平台只连接业务日常,日常验证通过后按既有发布流程同步业务线上”,push 后先验证日常,线上单独核对发布。其他项目按各自约定处理,不猜环境数量、域名用途或发布顺序。已知事实一致时直接继续;信息缺失或冲突时先补齐,不切换另一环境试验,不复制两侧凭据或改写配置来消除错误。
|
|
24
32
|
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# 跨库数据集关系
|
|
2
2
|
|
|
3
|
+
需要从多个库已有数据集推导跨库关系时,使用 [db cross-analyze-start/status/latest](rabetbase-db-cross-analyze.md);分析完成后用本页 list 命令回读关系事实。
|
|
4
|
+
|
|
3
5
|
使用 `dataset cross-relation-list/create/update/delete` 管理同一应用内、不同数据库连接的 DB_TABLE 逻辑关联。同库关系命令见 [数据集关系](rabetbase-dataset-relation-mutations.md)。跨库关系事实使用本页的 list 查询,不能用同库关系查询命令 `dataset relations` 或 `dataset detail` 的关系列表替代回读。
|
|
4
6
|
|
|
5
7
|
需要实现跨库业务查询时,读取 [跨库 BFF 查询与拼接](../guides/cross-database-bff.md),按目标字段用途确定查询顺序,并核对各端授权及结果完整性。业务关系清单不代表平台已登记;平台已有关系也需要与业务合同核对。
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# db analyze-batch-plan / analyze-start / analyze-cancel / analyze-status
|
|
2
2
|
|
|
3
|
+
多个连接之间的逻辑关联分析使用 [db cross-analyze-start/status/latest](rabetbase-db-cross-analyze.md)。本页用于单库 schema 分析,任务标识与完成证据按各自领域使用。
|
|
4
|
+
|
|
3
5
|
规划并管理 **schema 分析任务**。`analyze-batch-plan` 是生成本地批次方案的 **read** 命令;它不需要登录或 appcode,也不会创建、预留或返回服务端 `planId`。`analyze-start` 与 `analyze-cancel` 为 **write**;`analyze-status` 为 **read**(仅按服务端 plan 查询;命令能解析到 appcode 时会返回页面确认链接)。
|
|
4
6
|
|
|
5
7
|
## 何时用
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# db cross-analyze-start / cross-analyze-status / cross-analyze-latest
|
|
2
|
+
|
|
3
|
+
分析同一应用下多个数据库连接之间的 DB_TABLE 逻辑关系。范围是所选连接已有的有效 V2 数据集及分析元数据,先完成各库的单库分析。按连接选择范围,不接受 `--tables`,不扫描业务行数据;缺少可用元数据的连接可能被跳过。
|
|
4
|
+
|
|
5
|
+
沿用当前平台、应用和连接 ID 编排分析。任务另涉及独立部署的同步、发布或运行验证时,按需读取[独立部署指南](../guides/independent-deployment.md);该指南不是普通 DB 分析的执行前置。
|
|
6
|
+
|
|
7
|
+
## 命令
|
|
8
|
+
|
|
9
|
+
| 命令 | 输入 | 输出 |
|
|
10
|
+
| --- | --- | --- |
|
|
11
|
+
| `db cross-analyze-start` | `--ids <id1,id2,...>` 必填,至少两个不同的正安全整数;需要应用上下文;支持 `--dry-run` | 预览范围或提交后的 `data.planId` |
|
|
12
|
+
| `db cross-analyze-status` | `--plan <planId>` 必填,不要求应用上下文 | 同一任务的状态、进度和结果 |
|
|
13
|
+
| `db cross-analyze-latest` | 需要应用上下文 | `data.appCode` 和 `data.planId`,无任务时为 null |
|
|
14
|
+
|
|
15
|
+
所有命令需要通过 `rabetbase auth` 登录的 Cookie。应用上下文来自配置、`--app <name>` 或 `--appcode <code>`。具体 flags 与风险等级以 `rabetbase schema` 为准。
|
|
16
|
+
|
|
17
|
+
```sh
|
|
18
|
+
# 从当前应用的列表取得真实连接 ID;确认各库单库分析结果
|
|
19
|
+
rabetbase db list --appcode <appCode> --format compress
|
|
20
|
+
|
|
21
|
+
# 只读校验连接身份、归属和影响,不创建任务
|
|
22
|
+
rabetbase db cross-analyze-start --ids 10,20 --appcode <appCode> --dry-run --format compress
|
|
23
|
+
|
|
24
|
+
# 审阅后提交一次,保存 data.planId
|
|
25
|
+
rabetbase db cross-analyze-start --ids 10,20 --appcode <appCode> --format compress
|
|
26
|
+
|
|
27
|
+
# 每次只查询一次,持续使用原 planId
|
|
28
|
+
rabetbase db cross-analyze-status --plan <originalPlanId> --format compress
|
|
29
|
+
|
|
30
|
+
# 标识丢失时取得应用最新候选,再按返回的 planId 查询
|
|
31
|
+
rabetbase db cross-analyze-latest --appcode <appCode> --format compress
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
`--ids` 去除首尾空白、去重、升序排序。空项、非十进制整数、非正数、超出 JavaScript 安全整数范围或去重后少于两个 ID 在请求前失败。连接不存在、响应身份不可靠或归属另一应用时阻止提交。预览仅输出连接 ID、库名和类型,不输出账号、主机、密码或连接内部环境标记。
|
|
35
|
+
|
|
36
|
+
库名和类型来自连接详情,用于识别与展示。执行范围按 `selector.dbLinkIds` 对应的平台已有数据集与元数据确定,不凭展示库名推断分析覆盖范围。
|
|
37
|
+
|
|
38
|
+
## 预览和提交输出
|
|
39
|
+
|
|
40
|
+
预览输出 `operation`、`selector: {appCode, dbLinkIds}`、`connections`、`before: null`、`after: {planId: null}`、`dryRun`、`backend` 和 `warnings`。`before` 不表示当前关系为空;此操作创建新的分析任务,预览不枚举或预测关系变更。
|
|
41
|
+
|
|
42
|
+
正式提交额外返回顶层 `data.planId`,`data.after.planId` 为同一标识。标识只证明任务已提交,不证明分析完成。
|
|
43
|
+
|
|
44
|
+
分析消耗积分并写入跨库关系事实,同一应用的跨库任务串行。预览不验证元数据就绪、积分余额、配额或并发任务,不提供积分或耗时估算。提交接口检查数据集数量、余额、配额与并发任务;可用分析元数据在执行阶段检查。至少两个库需要可用数据集与分析元数据;缺少可用元数据的库可能被跳过。任务不自动配置数据集字段关联或页面绑定。
|
|
45
|
+
|
|
46
|
+
## 状态与结果
|
|
47
|
+
|
|
48
|
+
| 字段 | 含义 |
|
|
49
|
+
| --- | --- |
|
|
50
|
+
| `data.planId` | 本次查询的任务标识 |
|
|
51
|
+
| `data.status` | 原始状态,保留未知值 |
|
|
52
|
+
| `data.currentStep` / `progressRate` / `errorMsg` | 步骤、进度和失败原因,按平台事实展示 |
|
|
53
|
+
| `data.isTerminal` | `SUCCESS / PARTIAL_SUCCESS / FAILED / CANCELLED` 为 true,其它状态为 false |
|
|
54
|
+
| `data.result` | 平台结果对象,缺失时为 null,不补造统计值 |
|
|
55
|
+
| `data.result.analyzedTableCount` / `relationCount` / `newlyAddedRelationCount` | 已分析表数、关系数、新增关系数 |
|
|
56
|
+
| `data.result.participatingDbLinkIds` / `skippedDbLinkIds` | 实际参与库和跳过库,保留平台 ID 类型 |
|
|
57
|
+
| `data.result.elapsedMs` | 平台记录的分析耗时 |
|
|
58
|
+
| `data.gmtCreate` / `gmtModified` | 创建与更新时间,不推算为分析耗时 |
|
|
59
|
+
|
|
60
|
+
已知非终态 `PENDING / RUNNING / RETRYING / CANCELING` 继续查询同一 planId;未知状态停止自动推进,保留标识并报告原始状态。result 存在、进度为 100 或错误文案不能替代 status 判断生命周期。终态失败也不能保证未写入部分关系,需按实际意图回读。
|
|
61
|
+
|
|
62
|
+
## 恢复和关系回读
|
|
63
|
+
|
|
64
|
+
- 已有 planId 时查询同一任务,不用 latest 替换它。查询失败不等于任务失败,不触发新的 start。
|
|
65
|
+
- 提交超时、连接中断、成功响应无法解析或未返回有效标识时,结构化错误包含 `data.outcome: "unknown"` 和原 selector。停止提交,用 latest 辅助查找,再查候选状态。latest 是应用最新任务,不是原请求的幂等证明;旧任务或 null 都不能证明原请求没有提交,不自动重提。
|
|
66
|
+
- latest 的 `planId: null` 是正常无任务结果;损坏响应报错,不能当作无任务。
|
|
67
|
+
- 成功后检查 participatingDbLinkIds 与 skippedDbLinkIds,对每个实际参与库读取出向关系,并按两端库 ID 筛选目标范围:
|
|
68
|
+
|
|
69
|
+
目标库被跳过或参与信息缺失时,报告覆盖不足或无法确认覆盖,不把任务成功等同于所有所选库分析完成,不自动重新提交。
|
|
70
|
+
|
|
71
|
+
```sh
|
|
72
|
+
rabetbase dataset cross-relation-list --from-dblink-id 10 --appcode <appCode> --format compress
|
|
73
|
+
rabetbase dataset cross-relation-list --from-dblink-id 20 --appcode <appCode> --format compress
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
回读使用 [跨库关系命令](rabetbase-dataset-cross-relations.md),不以 dataset relations 或单库 db diff 代替。任务成功和关系存在不代表跨库 JOIN、字段绑定、页面绑定或跨库事务已验证。
|
|
77
|
+
|
|
78
|
+
单库 schema 分析见 [db analyze](rabetbase-db-analyze.md);跨库业务查询见 [跨库 BFF 指南](../guides/cross-database-bff.md)。
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"name": "rabetbase",
|
|
4
4
|
"packageName": "@lovrabet/rabetbase-cli",
|
|
5
|
-
"packageVersion": "2.5.
|
|
6
|
-
"skillVersion": "2.5.
|
|
5
|
+
"packageVersion": "2.5.6-beta.1",
|
|
6
|
+
"skillVersion": "2.5.6-beta.1",
|
|
7
7
|
"files": [
|
|
8
8
|
"SKILL.md",
|
|
9
9
|
"guides/approval-flow-development-workflow.md",
|
|
@@ -84,6 +84,7 @@
|
|
|
84
84
|
"references/rabetbase-dataset-user-deleted-field-list.md",
|
|
85
85
|
"references/rabetbase-db-analyze.md",
|
|
86
86
|
"references/rabetbase-db-create.md",
|
|
87
|
+
"references/rabetbase-db-cross-analyze.md",
|
|
87
88
|
"references/rabetbase-db-delete.md",
|
|
88
89
|
"references/rabetbase-db-detail.md",
|
|
89
90
|
"references/rabetbase-db-diff-refresh.md",
|
|
@@ -155,5 +156,5 @@
|
|
|
155
156
|
"references/rabetbase-user-account.md",
|
|
156
157
|
"references/rabetbase-workspace.md"
|
|
157
158
|
],
|
|
158
|
-
"digest": "
|
|
159
|
+
"digest": "7f017f021fc2ccd053b53fd6af515b1128eed2935a67ce196b25f75653323980"
|
|
159
160
|
}
|