@lovrabet/rabetbase-cli 2.5.2 → 2.5.3-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/api/api-doc.js +1 -1
- package/lib/api/fetch-model-list.js +1 -1
- package/lib/api/generate-api-file.d.ts +1 -1
- package/lib/api/generate-api-file.js +1 -1
- package/lib/api/generate-sdk-config-file.d.ts +2 -1
- package/lib/api/generate-sdk-config-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/logs.d.ts +7 -0
- package/lib/commands/bff/logs.js +1 -0
- 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.d.ts +21 -0
- package/lib/commands/dataset/batch-design.js +1 -0
- 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/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/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.d.ts +2 -0
- package/lib/commands/flow/create.js +1 -0
- package/lib/commands/flow/detail.d.ts +2 -0
- package/lib/commands/flow/detail.js +1 -0
- package/lib/commands/flow/index.d.ts +3 -0
- package/lib/commands/flow/index.js +1 -0
- package/lib/commands/flow/list.d.ts +2 -0
- package/lib/commands/flow/list.js +1 -0
- package/lib/commands/flow/publish.d.ts +2 -0
- package/lib/commands/flow/publish.js +1 -0
- package/lib/commands/flow/runtime-resources-shared.d.ts +40 -0
- package/lib/commands/flow/runtime-resources-shared.js +1 -0
- package/lib/commands/flow/runtime-role-list.d.ts +2 -0
- package/lib/commands/flow/runtime-role-list.js +1 -0
- package/lib/commands/flow/runtime-role-user-list.d.ts +2 -0
- package/lib/commands/flow/runtime-role-user-list.js +1 -0
- package/lib/commands/flow/runtime-user-search.d.ts +2 -0
- package/lib/commands/flow/runtime-user-search.js +1 -0
- package/lib/commands/flow/shared.d.ts +41 -0
- package/lib/commands/flow/shared.js +1 -0
- package/lib/commands/flow/update.d.ts +2 -0
- package/lib/commands/flow/update.js +1 -0
- package/lib/commands/flow/validate.d.ts +3 -0
- package/lib/commands/flow/validate.js +1 -0
- 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/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/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/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/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.d.ts +23 -0
- package/lib/config/region-config.js +1 -0
- package/lib/config/schema.d.ts +15 -0
- 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.d.ts +6 -0
- 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 +13 -0
- package/lib/context.js +1 -1
- package/lib/core/alias-resolver.js +1 -1
- package/lib/core/api-client.d.ts +172 -1
- 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.d.ts +55 -0
- package/lib/core/bff/hook-directory.js +1 -0
- package/lib/core/bff/lock.js +1 -1
- package/lib/core/bff/types.d.ts +15 -0
- package/lib/core/bff/utils.js +1 -1
- package/lib/core/db-resolver.js +1 -1
- package/lib/core/flow-config.d.ts +628 -0
- package/lib/core/flow-config.js +1 -0
- 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.d.ts +6 -0
- package/lib/core/page/lr-smart-jsx.js +1 -0
- 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/types/index.d.ts +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.d.ts +2 -8
- 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.d.ts +2 -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 +27 -8
- package/skills/rabetbase/guides/approval-flow-development-workflow.md +137 -0
- package/skills/rabetbase/guides/backend-function.md +19 -9
- package/skills/rabetbase/guides/bff-creation-workflow.md +10 -1
- package/skills/rabetbase/guides/conflict-detection.md +2 -0
- package/skills/rabetbase/guides/page-development-workflow.md +3 -0
- package/skills/rabetbase/guides/sdk-client-generation.md +6 -5
- package/skills/rabetbase/knowledge/approval-flow/config-json-schema.md +290 -0
- package/skills/rabetbase/knowledge/page-schema/LrSmartJsx.md +11 -3
- package/skills/rabetbase/references/rabetbase-api-pull.md +5 -4
- package/skills/rabetbase/references/rabetbase-app-list.md +3 -0
- package/skills/rabetbase/references/rabetbase-bff-create.md +1 -1
- package/skills/rabetbase/references/rabetbase-bff-list.md +1 -1
- package/skills/rabetbase/references/rabetbase-bff-logs.md +47 -0
- package/skills/rabetbase/references/rabetbase-bff-pull.md +9 -3
- package/skills/rabetbase/references/rabetbase-bff-push.md +10 -2
- package/skills/rabetbase/references/rabetbase-bff-status.md +2 -0
- package/skills/rabetbase/references/rabetbase-config.md +10 -9
- package/skills/rabetbase/references/rabetbase-dataset-generate.md +52 -2
- package/skills/rabetbase/references/rabetbase-doctor.md +2 -2
- package/skills/rabetbase/references/rabetbase-flow-commands.md +86 -0
- package/skills/rabetbase/references/rabetbase-flow-resources.md +83 -0
- package/skills/rabetbase/references/rabetbase-flow-runtime-boundary.md +25 -0
- package/skills/rabetbase/references/rabetbase-instant-api-policy.md +103 -11
- package/skills/rabetbase/references/rabetbase-notification-config-list.md +17 -0
- package/skills/rabetbase/references/rabetbase-page-push.md +5 -1
- package/skills/rabetbase/references/rabetbase-workspace.md +4 -2
- package/skills/rabetbase.manifest.json +9 -3
- package/templates/generate-api/client.ts.tpl +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# dataset generate-start / generate-status
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
从自然语言需求生成可审阅的单数据集或多数据集批次 design 快照,再基于快照提交异步创建任务,最后查询任务状态拿到完整结果。
|
|
4
4
|
|
|
5
5
|
推荐顺序:
|
|
6
6
|
|
|
@@ -10,7 +10,36 @@
|
|
|
10
10
|
|
|
11
11
|
## 适用范围
|
|
12
12
|
|
|
13
|
-
当前能力面向服务端支持的 `METADATA`
|
|
13
|
+
当前能力面向服务端支持的 `METADATA` 数据集生成链路。单数据集保持原协议;批次使用 `kind=dataset-batch`、`schemaVersion=1`,一次创建 1–20 个数据集及其 lookup 关系。
|
|
14
|
+
|
|
15
|
+
## Batch:一次生成多个关联数据集
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
rabetbase dataset generate-start \
|
|
19
|
+
--batch \
|
|
20
|
+
--description "创建客户和订单数据集,订单通过 customer_id 关联客户 id" \
|
|
21
|
+
--design-output .rabetbase/dataset-designs/customer-orders.json \
|
|
22
|
+
--format compress
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
批次 Preview 不需要且不接受 `--name`。审阅文件时确认:`localKey` 唯一且为小写标识;每项 `design.relations` 为空;所有关系只出现在顶层 `relations`;`unresolvedRelations` 仅是待确认提示,不会落库。
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
rabetbase dataset generate-start \
|
|
29
|
+
--apply \
|
|
30
|
+
--design-file .rabetbase/dataset-designs/customer-orders.json \
|
|
31
|
+
--format compress
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Apply 会按 `kind` 自动识别批次。`--batch` 可以显式要求输入必须是批次文件。首次提交默认生成 `dataset-batch-...` 恢复 ID;明确恢复或重试同一批时可传 `--client-operation-id <原ID>`。提交超时、响应损坏或未确认批次模式时,错误 `dataset_batch_submit_outcome_unknown` 会保留原 `clientOperationId`;只运行 `data.query.command` 或文本提示中的 status 查询,不要再次 POST。
|
|
35
|
+
|
|
36
|
+
批次 start 响应必须确认 `mode=batch`。Status 只有同时满足以下条件才返回 `generated_datasets_created`:
|
|
37
|
+
|
|
38
|
+
1. `expectedLocalKeys` 与 `createdDatasets[].localKey` 精确一致,每项都有真实 code。
|
|
39
|
+
2. `expectedRelations` 与 `createdRelations` 按来源数据集、来源字段、目标数据集、目标字段、relationType、cardinality 六元组精确一致;字段名比较忽略大小写。
|
|
40
|
+
3. 集合中不存在缺失、重复或多余项,真实关系携带的数据集 code 与创建结果一致。
|
|
41
|
+
|
|
42
|
+
否则返回 `unknown_reconcile_failed`。批次输出使用复数 `createdDatasets` / `createdRelations`,不输出单数 `createdDataset`。
|
|
14
43
|
|
|
15
44
|
## Preview:生成 design 快照
|
|
16
45
|
|
|
@@ -73,6 +102,21 @@ rabetbase dataset generate-status --client-operation-id dataset-generate-xxx --f
|
|
|
73
102
|
|
|
74
103
|
`--task-id`、`--operation-id` 与 `--client-operation-id` 必须且只能传一个。taskId 是首选恢复标识;CLI 会把它映射为后端 Dataset status 的 `operationId` query,服务端接口本身没有原生 taskId query。只有 status 输出 `status=generated_dataset_created` 且包含非空 `createdDataset.code` 时,后续才可执行 `dataset detail`、`page generate-start` 或 `api pull`。
|
|
75
104
|
|
|
105
|
+
## 生成耗时与失败阶段
|
|
106
|
+
|
|
107
|
+
Preview、Start、Status 的 `data.metrics` 透传服务端实际提供的指标,`data.failedStage` 表示服务端报告的失败阶段。旧响应或没有可用指标时返回 `null`,不代表耗时为零。指标与 design 分离,不能把指标写回设计快照或用于重新创建任务。
|
|
108
|
+
|
|
109
|
+
可选指标包括:`schemaVersion`、`attemptId`、`attempt`、`datasetCount`、`fieldCount`、`previewDurationMs`、`queueWaitMs`、`executionDurationMs`、`resultReadDurationMs`、`stageDurationsMs`、`modelCallCount`、`retryCount`。耗时单位为毫秒;只使用返回中存在的测量值,不补造缺失阶段。重复 Status 查询不会累计服务端执行时间,`resultReadDurationMs` 仅表示本次结果读取。阶段可能嵌套,不能把阶段耗时相加当作端到端耗时。
|
|
110
|
+
|
|
111
|
+
采集基线时:
|
|
112
|
+
|
|
113
|
+
1. 固定输入、模型、环境、数据集数和字段数,分别记录简单结构、复杂枚举、已有数据集引用样例;保留每次原始输出和任务 ID。
|
|
114
|
+
2. 预热后每个样例至少重复 10 次,分开记录 preview、排队、执行、结果读取及客户端观察到的完成耗时;排除人工审阅 design 的时间。10 次仅供初步比较,不足以稳定估计 P95。
|
|
115
|
+
3. 优化前后保持相同条件,比较中位耗时和长尾,同时回读完整字段、枚举、主键及关联,不能以漏保存换速度。
|
|
116
|
+
4. 失败、超时或响应丢失时恢复原任务,不重提;缺指标样本应标注不可用,不能当作零耗时样本。
|
|
117
|
+
|
|
118
|
+
以上步骤只适用于有授权的测试环境。批次指标仍与 design 分离;指标出现只说明可观测性可用,不能独自证明性能已改善或批次结果完整。
|
|
119
|
+
|
|
76
120
|
## dry-run
|
|
77
121
|
|
|
78
122
|
三条路径都支持 `--dry-run`:
|
|
@@ -184,6 +228,8 @@ Status 成功后的 `data` 包含:
|
|
|
184
228
|
- 不要把 start 输出视为已创建 Dataset;必须用 `generate-status` 查询到 `generated_dataset_created`。
|
|
185
229
|
- `PENDING` / `PROCESSING` 都不是完成;始终继续查询同一个 taskId。
|
|
186
230
|
- 超时、未知状态或 start 响应丢失时只做状态恢复,不得自动重提生成请求。
|
|
231
|
+
- 批次响应丢失时保留并复用原 `clientOperationId`;同一 design 自动生成新 ID 会成为另一批操作。
|
|
232
|
+
- 批次成功后逐项使用 `createdDatasets[].code`,并核对 `createdRelations`;不要读取单数 `createdDataset`。
|
|
187
233
|
- 成功后用 `rabetbase dataset detail --code <createdDataset.code> --format compress` 确认结构。
|
|
188
234
|
- 如需生成数据列表页,再执行 `rabetbase page generate-start --datasetcode <createdDataset.code> --format compress`。
|
|
189
235
|
- 真实业务行数据验证交接到 `lovrabet data filter|getOne`。
|
|
@@ -196,6 +242,10 @@ Status 成功后的 `data` 包含:
|
|
|
196
242
|
| Preview 传了 `--design-file` | 去掉 `--design-file`,或改用 `--apply` |
|
|
197
243
|
| Start 缺 `--design-file` | 指向已审阅的 design JSON 文件 |
|
|
198
244
|
| Start 同时传了 `--name` / `--description` / `--design-output` | 删除这些 preview 参数 |
|
|
245
|
+
| Batch Preview 传了 `--name` | 删除 `--name`;批次由 description 描述整体需求 |
|
|
246
|
+
| `--batch --apply` 读取单设计 | 使用 `kind=dataset-batch`、`schemaVersion=1` 的批次文件 |
|
|
247
|
+
| Batch Start 响应未确认 `mode=batch` | 停止,不要自动重提;用原 `clientOperationId` 查询状态 |
|
|
248
|
+
| Batch SUCCESS 缺少完整 expected/created 集合 | 按 `unknown_reconcile_failed` 处理,继续恢复查询或人工核验 |
|
|
199
249
|
| Status 缺任务标识 | 首选传 `--task-id`;旧响应才回退 `--operation-id` 或 `--client-operation-id` |
|
|
200
250
|
| design 文件不是 JSON object | 修正为 JSON object 后重试 |
|
|
201
251
|
|
|
@@ -22,9 +22,9 @@ rabetbase doctor check
|
|
|
22
22
|
| Built-in Skill | 目标路径、包版本、Skill 版本、内容状态;不一致时给出 `rabetbase cli-skill install` 修复命令 |
|
|
23
23
|
| Config Files | 全局和项目级配置文件路径 |
|
|
24
24
|
| Config JSON | 分别检测全局/项目配置文件是否为**合法 JSON**;非法时标红并给出解析错误(常见于尾随逗号、注释等,会导致该侧配置在合并时被忽略) |
|
|
25
|
-
| Country/Region Configuration |
|
|
25
|
+
| Country/Region Configuration | 检查项目、全局和各 app profile 的 `region`;显式未知值会标明来源与修复位置 |
|
|
26
26
|
| Merged Config | 合并后的所有配置项(appCode / env / cookie / apiDir 等) |
|
|
27
|
-
| Apps |
|
|
27
|
+
| Apps | 多应用模式下的应用列表及各自显式或继承的 `region` |
|
|
28
28
|
| API Endpoints | 最终生效的 region 与域名(user / api / runtime / skill / kb / app);KB 管理与 search 共用 SmartCode Java origin |
|
|
29
29
|
| Auth | 登录状态及 cookie 有效性 |
|
|
30
30
|
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# rabetbase flow commands
|
|
2
|
+
|
|
3
|
+
设计态流程定义命令,覆盖表单审批流与独立工作流。除 `validate` 外均需要认证和当前应用;`appCode` 由 CLI 工作区上下文注入。
|
|
4
|
+
|
|
5
|
+
## validate
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
rabetbase flow validate --file <path> [--write-normalized] --format compress
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
- 纯本地命令,不要求登录或 App Code。
|
|
12
|
+
- 返回 `data.valid`、`errors`、`warnings` 和 `normalized`。
|
|
13
|
+
- `--write-normalized` 仅在配置有效时原子写回规范结果。
|
|
14
|
+
- 校验时注入的临时 `flowKey`、`flowName` 和数据集绑定只存在于内存。
|
|
15
|
+
- 空值或默认 `approval.simple-flow.v1` 会从 `flowJson.schemaVersion` 规范化移除;其他版本保留并报 `Unsupported schemaVersion`。
|
|
16
|
+
|
|
17
|
+
Skill 直接执行本机的 `rabetbase flow validate` 命令,不维护额外的校验脚本或第二套规则。
|
|
18
|
+
|
|
19
|
+
## list
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
rabetbase flow list \
|
|
23
|
+
[--flow-code <code>] \
|
|
24
|
+
[--flow-name <name>] \
|
|
25
|
+
[--flow-status <draft|published>] \
|
|
26
|
+
[--dataset-code <code>] \
|
|
27
|
+
[--flow-type <type>] \
|
|
28
|
+
[--page <n>] [--page-size <n>] \
|
|
29
|
+
--format compress
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
调用 `POST /smartapi/flow/page`。输出 `data.flows` 和分页信息,保留后续 detail/update/publish 所需的服务端 `id`。
|
|
33
|
+
|
|
34
|
+
## detail
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
rabetbase flow detail --id <flow-id> --format compress
|
|
38
|
+
rabetbase flow detail --id <flow-id> --output .rabetbase/flows/purchase.json
|
|
39
|
+
rabetbase flow detail --id <flow-id> --output <path> --force
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
调用 `POST /smartapi/flow/detail`。控制台结果保留服务端定义;`--output` 会重新投影、校验并规范化为可移植 FlowConfig。包含当前不支持的自定义表单字段时只读 detail 仍成功,但 `--output` 明确失败,避免生成丢配置文件。目标已存在时必须显式 `--force`,写入使用原子替换。
|
|
43
|
+
|
|
44
|
+
## create
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
rabetbase flow create --file <path> --dry-run --format compress
|
|
48
|
+
rabetbase flow create --file <path> --format compress
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
调用 `POST /smartapi/flow/create`。提交前强制 normalize + validate。请求体只包含外层可写字段、当前工作区 `appCode` 和最小 `flowJson`;文件中的遗留 `id`、`appCode`、状态和部署字段不会提交。
|
|
52
|
+
|
|
53
|
+
`flowType` 必填,支持 `FORM_FLOW`、`INDEPENDENT_FLOW`。`FORM_FLOW` 是表单审批流,禁止 `taskMode: HANDLE`;`INDEPENDENT_FLOW` 是工作流,可以同时包含 `APPROVAL` 和 `HANDLE`,且不能同时配置外层 `datasetCode` 或 `pageId`。`flowJson.pageMode` 只用于独立工作流,当前 CLI 只允许 `CUSTOM_PAGE`,缺省也按 `CUSTOM_PAGE`;`PLATFORM_FORM` 返回不支持错误。`INDEPENDENT_FLOW + CUSTOM_PAGE` 可选配置 `flowJson.startPageId` 和人工节点 `pageId`,两者仅用于导航。
|
|
54
|
+
|
|
55
|
+
Skill 直接提交完整 `nodes + edges` 拓扑,不读取或发送 `templateName`。旧本地文件中的该字段会在规范化时移除并产生 warning。
|
|
56
|
+
|
|
57
|
+
当前公开 Skill 创建独立工作流时使用 `INDEPENDENT_FLOW + 业务自定义页面`;表单审批流仍使用 `FORM_FLOW` 及其外层数据集/页面绑定。CLI 不解析 `formSchema/formDefinitions/formPermissions` 或节点 `form/formPermission`,这些字段会在 validate/create/update 中报错。
|
|
58
|
+
|
|
59
|
+
## update
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
rabetbase flow update --id <flow-id> --file <path> --dry-run --format compress
|
|
63
|
+
rabetbase flow update --id <flow-id> --file <path> --format compress
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
调用 `POST /smartapi/flow/update`。目标 id 只取自 `--id`,不信任文件内字段。服务端对已发布流程的修改限制原样作为远程错误返回。
|
|
67
|
+
|
|
68
|
+
## publish
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
rabetbase flow publish --id <flow-id> --dry-run --format compress
|
|
72
|
+
rabetbase flow publish --id <flow-id> --yes --format compress
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
调用 `POST /smartapi/flow/publish`,风险为 `high-risk-write`。`--dry-run` 不发请求;正式执行必须确认或显式 `--yes`。SmartCode 同步返回发布结果,成功响应即为该命令的完成口径。
|
|
76
|
+
|
|
77
|
+
## 风险与完成口径
|
|
78
|
+
|
|
79
|
+
| 命令 | 风险 | 完成口径 |
|
|
80
|
+
|---|---|---|
|
|
81
|
+
| `validate` | `read` | 本地 `data.valid=true` |
|
|
82
|
+
| `list` / `detail` | `read` | 服务端查询成功;detail 写文件时还需本地原子写入成功 |
|
|
83
|
+
| `create` / `update` | `write` | 服务端返回创建或更新后的定义 |
|
|
84
|
+
| `publish` | `high-risk-write` | 服务端返回发布成功 |
|
|
85
|
+
|
|
86
|
+
本地 `READY` 不等于远程成功。服务端拒绝 create、update 或 publish 时返回 `REMOTE_VALIDATION_FAILED`,不得把 dry-run 或本地校验结果描述为已发布。
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# 流程定义资源发现
|
|
2
|
+
|
|
3
|
+
FlowConfig 中的真实标识必须来自 CLI 查询,不得由 Agent 猜测。
|
|
4
|
+
|
|
5
|
+
## 映射
|
|
6
|
+
|
|
7
|
+
| FlowConfig 字段 | 发现命令 | 选中值 |
|
|
8
|
+
|---|---|---|
|
|
9
|
+
| 外层 `datasetCode` | `dataset list`、`dataset detail` | Dataset `code` |
|
|
10
|
+
| 外层 `pageId` | `menu list` | 与目标页面对应的 `pageId` |
|
|
11
|
+
| `flowJson.startPageId` | `page custom-list`、`page custom-detail` | 自定义页面 `pageId` |
|
|
12
|
+
| `APPROVAL.pageId` | `page custom-list`、`page custom-detail` | 自定义页面 `pageId` |
|
|
13
|
+
| `APPROVAL.assignee.userIds` | `flow runtime-user-search` | 运行态 `users[].userId` |
|
|
14
|
+
| `APPROVAL.assignee.roleId` | `flow runtime-role-list` | 运行态角色 `id` |
|
|
15
|
+
| 角色成员核对 | `flow runtime-role-user-list` | 运行态只读成员清单 |
|
|
16
|
+
| `transferCandidates.userIds` | `flow runtime-user-search` | 运行态 `users[].userId` |
|
|
17
|
+
| `APPROVAL.cc.recipientUserIds` / `END.cc.recipientUserIds` | `flow runtime-user-search` | 运行态 `users[].userId` |
|
|
18
|
+
| `SCRIPT.scriptName` | `bff list --type ENDPOINT` | Endpoint `functionName` |
|
|
19
|
+
| `APPROVAL.timeout.scriptName` | `bff list --type ENDPOINT` | Endpoint `functionName` |
|
|
20
|
+
| `NOTIFICATION.config.configCode` | `notification config-list --all` | `configs[].configCode` |
|
|
21
|
+
| `NOTIFICATION.config.recipients[].value`(固定 USER) | `flow runtime-user-search` | 运行态 `users[].userId` |
|
|
22
|
+
| `NOTIFICATION.config.recipients[].value`(固定 ROLE) | `flow runtime-role-list` | 运行态角色 `id` |
|
|
23
|
+
|
|
24
|
+
`startPageId` 和节点 `pageId` 只选择自定义页面事实,不使用菜单名称、URL 或编辑器地址代替数值 `pageId`。占位符形式的通知收件人来自运行态变量,不需要资源查询;固定 EMAIL 收件人由用户明确提供,不推断邮箱地址。
|
|
25
|
+
|
|
26
|
+
## 搜索运行态应用用户
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
rabetbase flow runtime-user-search --keyword <text> [--page <n>] [--page-size <n>] --format compress
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
- 只查询当前运行态应用已关联的用户,对 userId、nickname、username、displayName、email 做不区分大小写的包含匹配。
|
|
33
|
+
- 输出 `scope: "runtime"`、安全字段 `userId`、`username`、`nickname`、`displayName`、`email`、`status` 和分页信息。
|
|
34
|
+
- 不输出手机号、访问密钥或无关身份字段。
|
|
35
|
+
- 多个候选时必须由用户确认;不要默认取第一项。
|
|
36
|
+
|
|
37
|
+
不要用 `role`、`app members-list` 或 `tenant members-list` 的人员结果填写审批 FlowConfig。
|
|
38
|
+
|
|
39
|
+
## 查询运行态角色
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
rabetbase flow runtime-role-list [--keyword <role-name>] [--page <n>] [--page-size <n>] --format compress
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
- 查询当前应用运行态 `env=RUNTIME` 角色,`--keyword` 由服务端按角色名模糊过滤。
|
|
46
|
+
- 输出 `scope: "runtime"`、角色 `id/name/type`、备注和人数/权限数安全摘要,不输出权限矩阵。
|
|
47
|
+
- `APPROVAL.assignee.roleId` 只能使用这里返回的运行态角色 ID;不要使用 `role list/detail` 的配置端角色 ID。
|
|
48
|
+
|
|
49
|
+
## 查看运行态角色成员
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
rabetbase flow runtime-role-user-list --role <role-id-or-name> [--page <n>] [--page-size <n>] --format compress
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
- 在当前应用运行态角色成员分组中按 ID 或精确名称解析角色。
|
|
56
|
+
- 角色名称不唯一时要求改用角色 ID。
|
|
57
|
+
- 输出 `scope: "runtime"`;只读,不修改成员关系。
|
|
58
|
+
|
|
59
|
+
## 查询通知配置
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
rabetbase notification config-list --all --format compress
|
|
63
|
+
rabetbase notification config-list --type EMAIL --format compress
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
- `--all` 查询 `EMAIL`、`FEISHU`、`DINGTALK`、`WECOM`、`WEBHOOK` 的安全摘要。
|
|
67
|
+
- `--all` 与 `--type` 互斥;未指定时继续默认查询 `EMAIL`。
|
|
68
|
+
- 只使用同一条记录的 `configCode`,不要用渠道名、URL、dataset code 或凭据代替。
|
|
69
|
+
|
|
70
|
+
## 查询脚本
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
rabetbase bff list --type ENDPOINT --name <keyword> --format compress
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
只把确认后的 Endpoint `functionName` 写入 `SCRIPT.scriptName` 或 `APPROVAL.timeout.scriptName`。COMMON、HOOK 或展示名称不能替代 Endpoint 函数名。
|
|
77
|
+
|
|
78
|
+
## 确认规则
|
|
79
|
+
|
|
80
|
+
- 无候选:返回 `NEEDS_USER_CONFIRMATION` 并请求更精确关键词。
|
|
81
|
+
- 多候选:展示稳定 ID、名称和必要上下文,请用户选择。
|
|
82
|
+
- 唯一候选:可以推荐,但身份、角色、脚本和通知配置仍需用户确认。
|
|
83
|
+
- 当前 DSL 无法表达需求:返回 `NEEDS_DSL_EXTENSION`,不要伪造配置。
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# 流程定义设计态与运行态边界
|
|
2
|
+
|
|
3
|
+
`rabetbase flow` 管理 SmartCode 中的表单审批流与独立工作流定义;运行态待办和任务办理不属于本仓 CLI。
|
|
4
|
+
|
|
5
|
+
## rabetbase 负责
|
|
6
|
+
|
|
7
|
+
- 查询、导出和校验 FlowConfig。
|
|
8
|
+
- 创建或更新设计态流程定义。
|
|
9
|
+
- 发布流程定义。
|
|
10
|
+
- 通过 dataset、menu、BFF、notification 命令发现设计资源;通过 `flow runtime-user-search/runtime-role-list/runtime-role-user-list` 只读发现审批所需的运行态人员和角色。
|
|
11
|
+
|
|
12
|
+
## Runtime CLI 负责
|
|
13
|
+
|
|
14
|
+
- 查询当前用户待办和任务详情。
|
|
15
|
+
- 审批、拒绝和转交已有运行态任务。
|
|
16
|
+
- 验证流程实例、业务状态和任务权限。
|
|
17
|
+
|
|
18
|
+
`rabetbase` 只调用已核实的运行态人员/角色只读接口来生成 FlowConfig,不查询或办理任务。需要办理待办时,显式交接到 Runtime CLI 仓库及其公开 Skill。
|
|
19
|
+
|
|
20
|
+
## 完成口径
|
|
21
|
+
|
|
22
|
+
- `flow validate` 成功只表示本地结构和已实现的拓扑规则通过。
|
|
23
|
+
- `flow create/update` 成功只表示服务端保存了设计态定义。
|
|
24
|
+
- `flow publish` 是同步服务端操作;只有成功响应才表示发布完成,dry-run 不表示发布成功。
|
|
25
|
+
- Runtime 最终行为仍需在 Runtime 环境中验证,不能用设计态查询代替。
|
|
@@ -12,29 +12,114 @@
|
|
|
12
12
|
|
|
13
13
|
`init`、`pull`、`validate` 和 `publish` 只使用该路径,不提供 `--file`。目标应用来自当前工作区、`--app <name>` 或 `--appcode <code>`。策略不存入 `.rabetbase.json` 或运行态 app-config。
|
|
14
14
|
|
|
15
|
-
`version`
|
|
15
|
+
`version` 是 JSON 结构版本:`"1"` 保持精确匹配兼容,`"2"` 支持通配选择和排除项;新版 CLI 的 `init` 默认创建版本 2。`revision` 是服务端发布历史版本,首次发布为 1,后续发布和回滚递增;两者含义不同。
|
|
16
16
|
|
|
17
17
|
## 配置结构
|
|
18
18
|
|
|
19
|
+
### 先取得真实 Dataset 选择器
|
|
20
|
+
|
|
21
|
+
策略匹配的是平台 Dataset,不是前端 SDK 的变量名。编辑前按下面顺序取得当前应用的事实:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
# 更新当前应用的本地模型事实;多应用项目显式选择目标
|
|
25
|
+
rabetbase api pull --appcode <appCode> --yes --format compress
|
|
26
|
+
|
|
27
|
+
# 对将被规则覆盖的 Dataset 确认真实 code、字段和支持的操作
|
|
28
|
+
rabetbase dataset detail --appcode <appCode> --code <datasetCode> --format compress
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
`api pull` 生成的模型条目包含 `datasetCode`、可选 `tableName` 和 SDK `alias`。规则中优先只写这个 `datasetCode`;**不能**写 `alias`。例如模型中的 `alias: "brand"` 只是 SDK 调用名,不是策略选择器。只有无法取得 code 的兼容场景才使用 `tableName`;若两者同时填写,服务端要求它们解析为同一个 Dataset。
|
|
32
|
+
|
|
33
|
+
认证不可用、`api pull` 失败或模型文件明显过期时,停止配置并先恢复认证;不要根据业务名称、SDK alias 或旧截图猜测 `datasetCode`。
|
|
34
|
+
|
|
35
|
+
### Dataset 选择器规则
|
|
36
|
+
|
|
37
|
+
| 场景 | 合法写法 | 约束 |
|
|
38
|
+
| --- | --- | --- |
|
|
39
|
+
| v1/v2 的精确 Dataset | `{ "datasetCode": "<real-dataset-code>" }` | 首选;code 来自当前应用的 `api pull` 或 `dataset detail` |
|
|
40
|
+
| v1/v2 的精确物理表 | `{ "tableName": "<real-table-name>" }` | 可用作兼容选择器;不能填 SDK alias |
|
|
41
|
+
| v1/v2 双字段精确选择 | `{ "datasetCode": "…", "tableName": "…" }` | 两值必须解析为同一个 Dataset;已知 code 时不要冗余填写 tableName |
|
|
42
|
+
| 仅 v2 的全部 Dataset | `{ "datasetCode": "*" }` | `datasets` 的唯一元素;不能附带 `tableName`,也不能与精确选择器混用 |
|
|
43
|
+
|
|
44
|
+
`{ "tableName": "*" }` 在任何版本都不支持。版本 1 只接受上面的精确选择器,不能使用 Dataset/API 通配或 `excludes`。
|
|
45
|
+
|
|
46
|
+
### 顶层字段
|
|
47
|
+
|
|
48
|
+
| 字段 | 必填 | 取值 / 约束 | 作用 |
|
|
49
|
+
| --- | --- | --- | --- |
|
|
50
|
+
| `version` | 是 | `"1"` 或 `"2"`;新文件使用 `"2"` | JSON 结构版本,不是服务端发布 revision |
|
|
51
|
+
| `appCode` | 是 | 必须等于当前命令解析出的应用 | 防止跨应用误发布 |
|
|
52
|
+
| `defaults.instantApi` | 是 | `"allow"` 或 `"deny"` | 没有任何规则命中时的最终动作;不能是 `"route"` |
|
|
53
|
+
| `rules` | 否 | 规则数组;缺省或空数组表示全部使用默认动作 | 对特定 Dataset + API 组合覆盖默认动作 |
|
|
54
|
+
|
|
55
|
+
### 规则字段
|
|
56
|
+
|
|
57
|
+
| 字段 | 必填 | 取值 / 约束 |
|
|
58
|
+
| --- | --- | --- |
|
|
59
|
+
| `name` | 是 | 稳定、可读的规则标识,方便审阅和版本回溯 |
|
|
60
|
+
| `description` | 否 | 说明规则的业务目的和影响范围 |
|
|
61
|
+
| `datasets` | 是 | 非空数组;每项优先仅 `{ "datasetCode": "<real-dataset-code>" }` |
|
|
62
|
+
| `apis` | 是 | 非空数组,每项是独立 API 名;不能把多个 API 拼为一个逗号字符串 |
|
|
63
|
+
| `action` | 是 | `"allow"`、`"deny"` 或 `"route"` |
|
|
64
|
+
| `backendFunction` | 条件必填 | 仅 `action: "route"` 时填写;必须是同一应用的普通 `ENDPOINT`,不能是 Personal Backend Function |
|
|
65
|
+
| `excludes` | 仅 v2 可用 | 从本规则的 Dataset × API 匹配集合中扣除的数组;每项都要有 `datasets` 和 `apis`,且不得超出父规则范围 |
|
|
66
|
+
|
|
67
|
+
支持的 API 名称为:`getSelectOptions`、`getList`、`excelExport`、`filter`、`aggregate`、`getOne`、`getOneOrigin`、`create`、`batchCreate`、`update`、`delete`。
|
|
68
|
+
|
|
69
|
+
规则数组**没有优先级**。服务端会先按每条规则的 Dataset × API 组合(扣除 `excludes` 后)计算覆盖范围;仍有重叠就校验失败,而不是“后一条覆盖前一条”。未被任何规则覆盖的组合回退到 `defaults.instantApi`。
|
|
70
|
+
|
|
71
|
+
### 精确匹配示例
|
|
72
|
+
|
|
73
|
+
下面的 `<real-dataset-code>` 必须替换为刚由 `api pull` 得到的 code,不能替换成 alias 或展示名称:
|
|
74
|
+
|
|
75
|
+
```json
|
|
76
|
+
{
|
|
77
|
+
"version": "2",
|
|
78
|
+
"appCode": "app-example",
|
|
79
|
+
"defaults": { "instantApi": "allow" },
|
|
80
|
+
"rules": [
|
|
81
|
+
{
|
|
82
|
+
"name": "deny-sensitive-export",
|
|
83
|
+
"description": "禁止敏感数据集通过 Instant API 导出",
|
|
84
|
+
"datasets": [{ "datasetCode": "<real-dataset-code>" }],
|
|
85
|
+
"apis": ["excelExport"],
|
|
86
|
+
"action": "deny"
|
|
87
|
+
}
|
|
88
|
+
]
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
这是默认放行下的最小收紧方式:仅该 Dataset 的 `excelExport` 被禁止,其他组合继续由默认动作处理。
|
|
93
|
+
|
|
94
|
+
### 版本 2 通配与排除示例
|
|
95
|
+
|
|
19
96
|
```json
|
|
20
97
|
{
|
|
21
|
-
"version": "
|
|
98
|
+
"version": "2",
|
|
22
99
|
"appCode": "app-example",
|
|
23
100
|
"defaults": {
|
|
24
101
|
"instantApi": "allow"
|
|
25
102
|
},
|
|
26
103
|
"rules": [
|
|
27
104
|
{
|
|
28
|
-
"name": "route-student-
|
|
29
|
-
"description": "
|
|
30
|
-
"datasets": [
|
|
105
|
+
"name": "route-all-except-student-create",
|
|
106
|
+
"description": "除学生新增外,全部数据集操作交给统一 Backend Function",
|
|
107
|
+
"datasets": [{"datasetCode": "*"}],
|
|
108
|
+
"apis": ["*"],
|
|
109
|
+
"excludes": [
|
|
31
110
|
{
|
|
32
|
-
"datasetCode": "student23"
|
|
111
|
+
"datasets": [{"datasetCode": "student23"}],
|
|
112
|
+
"apis": ["create"]
|
|
33
113
|
}
|
|
34
114
|
],
|
|
35
|
-
"apis": ["filter"],
|
|
36
115
|
"action": "route",
|
|
37
|
-
"backendFunction": "
|
|
116
|
+
"backendFunction": "unifiedGateway"
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"name": "allow-student-create",
|
|
120
|
+
"datasets": [{"datasetCode": "student23"}],
|
|
121
|
+
"apis": ["create"],
|
|
122
|
+
"action": "allow"
|
|
38
123
|
}
|
|
39
124
|
]
|
|
40
125
|
}
|
|
@@ -43,8 +128,13 @@
|
|
|
43
128
|
- `defaults.instantApi` 只允许 `allow` 或 `deny`,不能是 `route`。
|
|
44
129
|
- `rules[].action` 允许 `allow`、`deny`、`route`。
|
|
45
130
|
- `route` 必须填写 `backendFunction`;其他 action 禁止填写。
|
|
46
|
-
- `datasets[]` 至少填写 `datasetCode` 或 `tableName
|
|
47
|
-
-
|
|
131
|
+
- `datasets[]` 至少填写 `datasetCode` 或 `tableName`;已知 code 时只填写稳定的 `datasetCode`。两者同时填写时必须指向同一 Dataset。
|
|
132
|
+
- 版本 1 只支持精确匹配,不允许 `*` 或 `excludes`。
|
|
133
|
+
- 版本 2 的全部数据集写为 `datasets: [{"datasetCode":"*"}]`。通配项必须是数组唯一元素且不能包含 `tableName`;不支持 `tableName: "*"`。
|
|
134
|
+
- 版本 2 的全部 API 写为 `apis: ["*"]`,`"*"` 必须是数组唯一元素。
|
|
135
|
+
- `excludes[]` 每项包含 `datasets` 和 `apis`,表示从父规则中扣除两者笛卡尔积;排除范围不能超出父规则。
|
|
136
|
+
- 被排除的组合可以由后续其他规则处理;没有其他规则时执行 `defaults.instantApi`。
|
|
137
|
+
- 排除后仍重复的 `datasetCode + api` 会校验失败,规则数组顺序不表示优先级。
|
|
48
138
|
- `apis` 的每个元素是一个独立值。`["filter,create"]` 或包含中文逗号的 `["filter,create"]` 都不是两个 API。
|
|
49
139
|
- 支持的 API:`getSelectOptions`、`getList`、`excelExport`、`filter`、`aggregate`、`getOne`、`getOneOrigin`、`create`、`batchCreate`、`update`、`delete`。
|
|
50
140
|
|
|
@@ -70,7 +160,7 @@ rabetbase instant-api-policy publish --expected-revision 0 --change-summary "ini
|
|
|
70
160
|
rabetbase instant-api-policy publish --expected-revision 0 --change-summary "initial policy" --yes --format compress
|
|
71
161
|
```
|
|
72
162
|
|
|
73
|
-
`init --default-action deny`
|
|
163
|
+
`init --default-action deny` 可以创建版本 2 的默认禁止草稿。`init` 和 `pull` 遇到不同的既有文件时停止;只有 `--force --yes` 可以替换。已有版本 1 文件仍可继续校验和发布。
|
|
74
164
|
|
|
75
165
|
`validate` 调用服务端完整校验,返回 `configHash` 和 `normalizedConfig`,但不发布、不生成 revision。Dataset、API、规则重叠以及 Backend Function 合法性以该结果为准。
|
|
76
166
|
|
|
@@ -90,3 +180,5 @@ rabetbase instant-api-policy rollback --revision 2 --expected-revision 5 --chang
|
|
|
90
180
|
回滚不会把 revision 倒退,也不会覆盖历史。例如当前 revision 为 5,恢复 revision 2 后会生成新的 revision 6。
|
|
91
181
|
|
|
92
182
|
发布和回滚最多提交一次。CLI 随后读取当前策略,要求 configHash 匹配且 revision 推进。响应丢失但回读可以证明结果时返回 verified;证据不足时停止并提示执行 `current`,不得自动重提。Runtime 最迟约 30 秒感知新策略。
|
|
183
|
+
|
|
184
|
+
数据集通配项按应用当前有效数据集展开;应用新增数据集后,会在 Runtime 策略缓存刷新时自动进入通配规则范围。
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
```bash
|
|
8
8
|
rabetbase notification config-list --format compress
|
|
9
9
|
rabetbase notification config-list --type EMAIL --format compress
|
|
10
|
+
rabetbase notification config-list --all --format compress
|
|
10
11
|
rabetbase notification config-list --type EMAIL --appcode app-xxxxx --format json
|
|
11
12
|
```
|
|
12
13
|
|
|
@@ -20,6 +21,8 @@ rabetbase notification config-list --type EMAIL --appcode app-xxxxx --format jso
|
|
|
20
21
|
|
|
21
22
|
类型值使用大写。
|
|
22
23
|
|
|
24
|
+
`--all` 会分别查询 `EMAIL`、`FEISHU`、`DINGTALK`、`WECOM`、`WEBHOOK`,合并为同一份安全摘要。`--all` 与 `--type` 互斥;不传二者时继续保持默认 `EMAIL` 行为。
|
|
25
|
+
|
|
23
26
|
## 输出
|
|
24
27
|
|
|
25
28
|
```json
|
|
@@ -45,6 +48,20 @@ rabetbase notification config-list --type EMAIL --appcode app-xxxxx --format jso
|
|
|
45
48
|
}
|
|
46
49
|
```
|
|
47
50
|
|
|
51
|
+
`--all` 输出使用 `data.channelTypes` 代替单个 `data.channelType`,`configs` 为五种类型结果的合并列表:
|
|
52
|
+
|
|
53
|
+
```json
|
|
54
|
+
{
|
|
55
|
+
"ok": true,
|
|
56
|
+
"data": {
|
|
57
|
+
"appCode": "app-xxxxx",
|
|
58
|
+
"channelTypes": ["EMAIL", "FEISHU", "DINGTALK", "WECOM", "WEBHOOK"],
|
|
59
|
+
"count": 2,
|
|
60
|
+
"configs": []
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
48
65
|
CLI 只输出用于选择配置的安全字段,不输出:
|
|
49
66
|
|
|
50
67
|
* `channelConfig`
|
|
@@ -31,7 +31,11 @@ rabetbase page push --id 1020286 --dry-run --format json
|
|
|
31
31
|
## 行为说明
|
|
32
32
|
|
|
33
33
|
- 单页模式:校验本地文件、读取 lock、比对远端版本,再调用更新接口
|
|
34
|
-
-
|
|
34
|
+
- 批量模式:先完成远端版本检查与 `LrSmartJsx` 编译准备,再只推送结果 hash 与 lock 不同的页面;无基线时会 fail-fast,提示先执行 `page pull`
|
|
35
|
+
- 遇到 `LrSmartJsx` 时,以 `props.render.source` 为唯一手工维护内容;源码变化、`render.value` 缺失或远端无编译值时,CLI 调用平台正式编译器生成 `value`
|
|
36
|
+
- CLI 会把 `LrSmartJsx.props._context` 规范为 `{ "type": "JSExpression", "value": "this" }`;`source` 组件仍通过 `props.env` / `props.sdkClient` 消费平台注入能力
|
|
37
|
+
- `--dry-run` 同样执行编译校验,但不会更新页面;任一组件编译失败时整页不提交
|
|
38
|
+
- 不要手写或直接修改 `render.value`;当 `source` 未变化但本地 `value` 与远端不一致时,命令会拒绝推送并提示修改 `source`
|
|
35
39
|
- 推送后会再次拉取远端 canonical schema,并覆盖本地文件和 lock,避免本地保留非 canonical 版本
|
|
36
40
|
|
|
37
41
|
## 提示
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
## 命令
|
|
10
10
|
|
|
11
11
|
```bash
|
|
12
|
-
rabetbase workspace init --appcode <code> [--
|
|
12
|
+
rabetbase workspace init --appcode <code> [--region cn|id]
|
|
13
13
|
rabetbase workspace init --app <name> --appcode <code>
|
|
14
14
|
rabetbase workspace use --app <name>
|
|
15
15
|
rabetbase workspace use --app <name> --appcode <code>
|
|
@@ -23,7 +23,8 @@ rabetbase workspace remove <name> [--global]
|
|
|
23
23
|
|------|------|
|
|
24
24
|
| `--app <name>` | 工作空间里的应用名,如 `crm`、`order` |
|
|
25
25
|
| `--appcode <code>` | 应用 App Code;不知道本地应用名时可直接使用 |
|
|
26
|
-
| `--
|
|
26
|
+
| `--region <region>` | 写入该 app profile 的国家/地区:`cn` / `id` |
|
|
27
|
+
| `--env <env>` | 历史兼容参数;默认内部路由值不会写入 app profile |
|
|
27
28
|
| `--apiDir <dir>` | 写入该 app profile 的 API 目录 |
|
|
28
29
|
| `--defaultFormat <format>` | 写入该 app profile 的默认输出格式 |
|
|
29
30
|
| `--pageSize <n>` | 写入该 app profile 的分页大小 |
|
|
@@ -39,6 +40,7 @@ rabetbase workspace remove <name> [--global]
|
|
|
39
40
|
- `workspace use --app crm`:切换当前目录默认应用;如果 `crm` 只存在于全局配置,会复制非敏感 profile 字段到当前目录。
|
|
40
41
|
- `workspace use --app crm --appcode app-xxx`:直接在当前目录新增或更新 `crm`,并设为默认应用。
|
|
41
42
|
- `workspace add crm --appcode app-xxx`:登记应用 profile(默认写当前项目,`--global` 写全局)。第一个应用不写 `defaultApp`;增加第二个应用时保留原应用为默认。已存在则更新。
|
|
43
|
+
- `region` 省略时继承项目顶层、再继承全局回退;显式传 `--region cn` 或 `--region id` 时只作用于该应用。
|
|
42
44
|
- `workspace remove crm`:移除本地应用 profile。默认按「项目优先、其次全局」定位要删的那一层,`--global` 强制删全局;只剩一个应用时删除冗余的 `defaultApp`,仍有多个应用时才自动切换;若该应用在项目与全局都有定义,只删单侧并在结果里提示另一侧仍存在。
|
|
43
45
|
|
|
44
46
|
`workspace init` / `workspace use` 不会从全局配置复制 `cookie` / `accessKey` 到项目文件。若当前项目文件里原本已有这些字段,更新应用时会保留它们。
|
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"name": "rabetbase",
|
|
4
4
|
"packageName": "@lovrabet/rabetbase-cli",
|
|
5
|
-
"packageVersion": "2.5.2",
|
|
6
|
-
"skillVersion": "2.5.2",
|
|
5
|
+
"packageVersion": "2.5.3-beta.2",
|
|
6
|
+
"skillVersion": "2.5.3-beta.2",
|
|
7
7
|
"files": [
|
|
8
8
|
"SKILL.md",
|
|
9
|
+
"guides/approval-flow-development-workflow.md",
|
|
9
10
|
"guides/backend-function.md",
|
|
10
11
|
"guides/best-practices.md",
|
|
11
12
|
"guides/bff-creation-workflow.md",
|
|
@@ -22,6 +23,7 @@
|
|
|
22
23
|
"guides/sql-mybatis.md",
|
|
23
24
|
"guides/troubleshooting.md",
|
|
24
25
|
"guides/typescript-sdk.md",
|
|
26
|
+
"knowledge/approval-flow/config-json-schema.md",
|
|
25
27
|
"knowledge/components.md",
|
|
26
28
|
"knowledge/custom-page/generation-standards.md",
|
|
27
29
|
"knowledge/custom-page/page-templates.md",
|
|
@@ -46,6 +48,7 @@
|
|
|
46
48
|
"references/rabetbase-bff-delete.md",
|
|
47
49
|
"references/rabetbase-bff-detail.md",
|
|
48
50
|
"references/rabetbase-bff-list.md",
|
|
51
|
+
"references/rabetbase-bff-logs.md",
|
|
49
52
|
"references/rabetbase-bff-pull.md",
|
|
50
53
|
"references/rabetbase-bff-push.md",
|
|
51
54
|
"references/rabetbase-bff-save.md",
|
|
@@ -85,6 +88,9 @@
|
|
|
85
88
|
"references/rabetbase-deployment-sync-all.md",
|
|
86
89
|
"references/rabetbase-doctor.md",
|
|
87
90
|
"references/rabetbase-file.md",
|
|
91
|
+
"references/rabetbase-flow-commands.md",
|
|
92
|
+
"references/rabetbase-flow-resources.md",
|
|
93
|
+
"references/rabetbase-flow-runtime-boundary.md",
|
|
88
94
|
"references/rabetbase-init.md",
|
|
89
95
|
"references/rabetbase-instant-api-policy.md",
|
|
90
96
|
"references/rabetbase-issue-report.md",
|
|
@@ -140,5 +146,5 @@
|
|
|
140
146
|
"references/rabetbase-user-account.md",
|
|
141
147
|
"references/rabetbase-workspace.md"
|
|
142
148
|
],
|
|
143
|
-
"digest": "
|
|
149
|
+
"digest": "bdb1237d11f707a54a1a189d00c313b8cf7f4ac4f41e9ec7d2aec7e187edbaa9"
|
|
144
150
|
}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
import { createClient, CONFIG_NAMES } from "@lovrabet/sdk";
|
|
11
11
|
import "./{ApiFileName}"; // 导入配置文件,执行 registerModels() 注册
|
|
12
|
-
import { LOVRABET_SDK_CONFIG } from "./
|
|
12
|
+
import { LOVRABET_SDK_CONFIG } from "./{SdkConfigFileName}";
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* 主要的客户端实例
|