@lovrabet/rabetbase-cli 2.4.5 → 2.4.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/README.md +3 -2
- package/lib/api/api-doc.js +1 -1
- package/lib/api/fetch-model-list.js +1 -1
- package/lib/api/generate-api-file.js +1 -1
- package/lib/auth/auth-server-ui.js +1 -1
- package/lib/auth/auth-server.js +1 -1
- package/lib/auth/constant.js +1 -1
- package/lib/auth/get-cookie.js +1 -1
- package/lib/auth/get-session-user.js +1 -1
- package/lib/auth/is-session-valid.js +1 -1
- package/lib/auth/login-success-html.js +1 -1
- package/lib/auth/logout.js +1 -1
- package/lib/cli-flags.js +1 -1
- package/lib/cli.js +1 -1
- package/lib/commands/api/generate.js +1 -1
- package/lib/commands/api/index.js +1 -1
- package/lib/commands/api/list.js +1 -1
- package/lib/commands/api/pull.js +1 -1
- package/lib/commands/api/shared.js +1 -1
- package/lib/commands/app/index.js +1 -1
- package/lib/commands/app/list.js +1 -1
- package/lib/commands/app/members-list.js +1 -1
- package/lib/commands/app/remote-directory.js +1 -1
- package/lib/commands/app/shared.js +1 -1
- package/lib/commands/app-config/delete.js +1 -1
- package/lib/commands/app-config/get.js +1 -1
- package/lib/commands/app-config/index.js +1 -1
- package/lib/commands/app-config/list.js +1 -1
- package/lib/commands/app-config/set.js +1 -1
- package/lib/commands/app-config/shared.js +1 -1
- package/lib/commands/auth/index.js +1 -1
- package/lib/commands/bff/create.js +1 -1
- package/lib/commands/bff/delete.js +1 -1
- package/lib/commands/bff/detail.js +1 -1
- package/lib/commands/bff/index.js +1 -1
- package/lib/commands/bff/list.js +1 -1
- package/lib/commands/bff/pull.js +1 -1
- package/lib/commands/bff/push.js +1 -1
- package/lib/commands/bff/status.js +1 -1
- package/lib/commands/cli-skill/index.js +1 -1
- package/lib/commands/cli-update.js +1 -1
- package/lib/commands/codegen/index.js +1 -1
- package/lib/commands/codegen/sdk.js +1 -1
- package/lib/commands/codegen/sql.js +1 -1
- package/lib/commands/common/app-registry.js +1 -1
- package/lib/commands/common/app-selector.js +1 -1
- package/lib/commands/common/async-task.js +1 -1
- package/lib/commands/common/dry-run.js +1 -1
- package/lib/commands/common/flags.js +1 -1
- package/lib/commands/common/local-file.js +1 -1
- package/lib/commands/common/validate.js +1 -1
- package/lib/commands/config/get.js +1 -1
- package/lib/commands/config/index.js +1 -1
- package/lib/commands/config/list.js +1 -1
- package/lib/commands/config/set.js +1 -1
- package/lib/commands/config/shared.js +1 -1
- package/lib/commands/data/filter.js +1 -1
- package/lib/commands/data/getOne.js +1 -1
- package/lib/commands/data/index.js +1 -1
- package/lib/commands/data/shared.js +1 -1
- package/lib/commands/dataset/business-group-update.js +1 -1
- package/lib/commands/dataset/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-update.js +1 -1
- package/lib/commands/dataset/generate.js +1 -1
- package/lib/commands/dataset/index.js +1 -1
- package/lib/commands/dataset/list.js +1 -1
- package/lib/commands/dataset/operations.js +1 -1
- package/lib/commands/dataset/relation-audit.js +1 -1
- package/lib/commands/dataset/relation-create.js +1 -1
- package/lib/commands/dataset/relation-delete.js +1 -1
- package/lib/commands/dataset/relation-shared.js +1 -1
- package/lib/commands/dataset/relation-update.js +1 -1
- package/lib/commands/dataset/relations.js +1 -1
- package/lib/commands/dataset/rename.js +1 -1
- package/lib/commands/dataset/restore.js +1 -1
- package/lib/commands/db/analysis-batching.js +1 -1
- package/lib/commands/db/analyze-batch-plan.js +1 -1
- package/lib/commands/db/analyze-cancel.js +1 -1
- package/lib/commands/db/analyze-start.js +1 -1
- package/lib/commands/db/analyze-status.js +1 -1
- package/lib/commands/db/create.js +1 -1
- package/lib/commands/db/delete.js +1 -1
- package/lib/commands/db/detail.js +1 -1
- package/lib/commands/db/diff-refresh-start.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/tables.js +1 -1
- package/lib/commands/db/test.js +1 -1
- package/lib/commands/db/update.js +1 -1
- package/lib/commands/doctor.js +1 -1
- package/lib/commands/file/index.js +1 -1
- package/lib/commands/init/index.js +1 -1
- package/lib/commands/issue/index.js +1 -1
- package/lib/commands/issue/nudge.js +1 -1
- package/lib/commands/issue/report.js +1 -1
- package/lib/commands/issue/shared.js +1 -1
- package/lib/commands/kb/create.js +1 -1
- package/lib/commands/kb/delete.js +1 -1
- package/lib/commands/kb/detail.js +1 -1
- package/lib/commands/kb/index.js +1 -1
- package/lib/commands/kb/list.js +1 -1
- package/lib/commands/kb/shared.js +1 -1
- package/lib/commands/kb/update.js +1 -1
- package/lib/commands/logs/index.js +1 -1
- package/lib/commands/menu/asset-update.js +1 -1
- package/lib/commands/menu/delete.js +1 -1
- package/lib/commands/menu/external-link-create.js +1 -1
- package/lib/commands/menu/external-link-update.js +1 -1
- package/lib/commands/menu/group-create.js +1 -1
- package/lib/commands/menu/group-update.js +1 -1
- package/lib/commands/menu/index.js +1 -1
- package/lib/commands/menu/list.js +1 -1
- package/lib/commands/menu/move.js +1 -1
- package/lib/commands/menu/regroup-start.js +1 -1
- package/lib/commands/menu/rename.js +1 -1
- package/lib/commands/menu/shared/compare-table.js +1 -1
- package/lib/commands/menu/shared/delete-plan.js +1 -1
- package/lib/commands/menu/shared/facts.js +1 -1
- package/lib/commands/menu/shared/index.js +1 -1
- package/lib/commands/menu/shared/inquirer.js +1 -1
- package/lib/commands/menu/shared/local-pages.js +1 -1
- package/lib/commands/menu/shared/logic.js +1 -1
- package/lib/commands/menu/shared/mutations.js +1 -1
- package/lib/commands/menu/shared/service.js +1 -1
- package/lib/commands/menu/shared/sync-core.js +1 -1
- package/lib/commands/menu/shared/update-core.js +1 -1
- package/lib/commands/menu/shared/valid-url.js +1 -1
- package/lib/commands/menu/sync.js +1 -1
- package/lib/commands/notification/config-create.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/{standard-page-status.d.ts → create.d.ts} +1 -1
- package/lib/commands/page/create.js +1 -0
- package/lib/commands/page/{react → custom}/detail.d.ts +1 -1
- package/lib/commands/page/custom/detail.js +1 -0
- package/lib/commands/page/{react → custom}/list.d.ts +1 -1
- package/lib/commands/page/custom/list.js +1 -0
- package/lib/commands/page/{react → custom}/publish.d.ts +1 -1
- package/lib/commands/page/custom/publish.js +1 -0
- package/lib/commands/page/{react → custom}/shared.d.ts +15 -15
- package/lib/commands/page/custom/shared.js +1 -0
- package/lib/commands/page/{react → custom}/syntax.d.ts +2 -2
- package/lib/commands/page/custom/syntax.js +1 -0
- package/lib/commands/page/custom/template.js +1 -0
- package/lib/commands/page/{react → custom}/update.d.ts +1 -1
- package/lib/commands/page/custom/update.js +1 -0
- package/lib/commands/page/data-list-status.d.ts +2 -0
- package/lib/commands/page/data-list-status.js +1 -0
- 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.d.ts +18 -18
- 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/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/run/index.js +1 -1
- package/lib/commands/schema.js +1 -1
- package/lib/commands/sql/create.js +1 -1
- package/lib/commands/sql/delete.js +1 -1
- package/lib/commands/sql/detail.js +1 -1
- package/lib/commands/sql/exec.js +1 -1
- package/lib/commands/sql/index.js +1 -1
- package/lib/commands/sql/list.js +1 -1
- package/lib/commands/sql/pull.js +1 -1
- package/lib/commands/sql/push.js +1 -1
- package/lib/commands/sql/shared.js +1 -1
- package/lib/commands/sql/status.js +1 -1
- package/lib/commands/sql/validate.js +1 -1
- package/lib/commands/task/index.js +1 -1
- package/lib/commands/task/status.js +1 -1
- package/lib/commands/tenant/index.js +1 -1
- package/lib/commands/tenant/members-list.js +1 -1
- package/lib/commands/tenant/shared.js +1 -1
- package/lib/commands/user-account/dingding-sandbox-bind.js +1 -1
- package/lib/commands/user-account/index.js +1 -1
- package/lib/commands/workspace/add.js +1 -1
- package/lib/commands/workspace/index.js +1 -1
- package/lib/commands/workspace/remove.js +1 -1
- package/lib/config/schema.js +1 -1
- package/lib/constant/cdn.js +1 -1
- package/lib/constant/cli.js +1 -1
- package/lib/constant/defaults.js +1 -1
- package/lib/constant/domain.js +1 -1
- package/lib/constant/env.js +1 -1
- package/lib/constant/output.js +1 -1
- package/lib/constant/paths.js +1 -1
- package/lib/constant/risk.js +1 -1
- package/lib/context/app-resolver.js +1 -1
- package/lib/context/auth-resolver.js +1 -1
- package/lib/context/config-loader.js +1 -1
- package/lib/context.js +1 -1
- package/lib/core/alias-resolver.js +1 -1
- package/lib/core/api-client.d.ts +43 -43
- package/lib/core/api-client.js +1 -1
- package/lib/core/bff/config.js +1 -1
- package/lib/core/bff/file-system.js +1 -1
- package/lib/core/bff/hash.js +1 -1
- package/lib/core/bff/lock.js +1 -1
- package/lib/core/bff/utils.d.ts +3 -1
- package/lib/core/bff/utils.js +1 -1
- package/lib/core/db-resolver.js +1 -1
- package/lib/core/page/file-system.js +1 -1
- package/lib/core/page/hash.js +1 -1
- package/lib/core/page/lock.js +1 -1
- package/lib/core/sql-index-auditor.js +1 -1
- package/lib/core/sql-sync/config.js +1 -1
- package/lib/core/sql-sync/file-system.js +1 -1
- package/lib/core/sql-sync/hash.js +1 -1
- package/lib/core/sql-sync/lock.js +1 -1
- package/lib/core/sql-sync/utils.js +1 -1
- package/lib/core/sql-validator.js +1 -1
- package/lib/errors.js +1 -1
- package/lib/framework/build-all-flags.js +1 -1
- package/lib/framework/error-output.js +1 -1
- package/lib/framework/explicit-yes.js +1 -1
- package/lib/framework/flags.js +1 -1
- package/lib/framework/help.js +1 -1
- package/lib/framework/index.js +1 -1
- package/lib/framework/output.js +1 -1
- package/lib/framework/response.js +1 -1
- package/lib/framework/runner-alias.js +1 -1
- package/lib/framework/runner.js +1 -1
- package/lib/framework/schema-export.js +1 -1
- package/lib/framework/types.js +1 -1
- package/lib/generated/build-info.d.ts +4 -4
- package/lib/generated/build-info.js +1 -1
- package/lib/help.js +1 -1
- package/lib/postinstall.js +1 -1
- package/lib/runtime/confirmation.js +1 -1
- package/lib/runtime/event.js +1 -1
- package/lib/runtime/index.js +1 -1
- package/lib/runtime/queue.js +1 -1
- package/lib/runtime/resolve.js +1 -1
- package/lib/skills/builtin-skill.js +1 -1
- package/lib/skills/main.js +1 -1
- package/lib/skills/npx-skills-add.js +1 -1
- package/lib/skills/skill-presence.js +1 -1
- package/lib/telemetry/cli-command-trace.js +1 -1
- package/lib/telemetry/cli-help-trace.js +1 -1
- package/lib/telemetry/ensure-cli-otel-config.js +1 -1
- package/lib/telemetry/register-otel-exit-shutdown.js +1 -1
- package/lib/telemetry/send-cli-trace-log.js +1 -1
- package/lib/telemetry/send-platform-issue-collect-log.js +1 -1
- package/lib/utils/ai_config.js +1 -1
- package/lib/utils/apply-jq-filter.js +1 -1
- package/lib/utils/cdn-config.js +1 -1
- package/lib/utils/check-sdk-version.js +1 -1
- package/lib/utils/cli-version-check.js +1 -1
- package/lib/utils/cli-version-policy.js +1 -1
- package/lib/utils/config.js +1 -1
- package/lib/utils/entity-with-id.js +1 -1
- package/lib/utils/file-utils.js +1 -1
- package/lib/utils/guides-cdn.js +1 -1
- package/lib/utils/http-client.js +1 -1
- package/lib/utils/is-non-interactive.js +1 -1
- package/lib/utils/logger.js +1 -1
- package/lib/utils/params.js +1 -1
- package/lib/utils/platform.js +1 -1
- package/lib/utils/rules-cdn.js +1 -1
- package/lib/utils/sleep.js +1 -1
- package/lib/utils/template-replacer.js +1 -1
- package/lib/utils/update-notice.js +1 -1
- package/lib/utils/version.js +1 -1
- package/lib/utils/with-active-cookie.js +1 -1
- package/lib/utils/write-cli-side-channel.js +1 -1
- package/package.json +1 -1
- package/skills/rabetbase/SKILL.md +34 -34
- package/skills/rabetbase/guides/backend-function.md +63 -18
- package/skills/rabetbase/guides/bff-creation-workflow.md +2 -0
- package/skills/rabetbase/guides/{react-custom-page-workflow.md → custom-page-workflow.md} +45 -45
- package/skills/rabetbase/guides/page-development-workflow.md +22 -22
- package/skills/rabetbase/knowledge/{react-page → custom-page}/components.md +2 -2
- package/skills/rabetbase/knowledge/{react-page → custom-page}/generation-standards.md +6 -6
- package/skills/rabetbase/knowledge/page-schema/LrSmartTable.md +6 -6
- package/skills/rabetbase/knowledge/page-schema/external-resources-usage.md +1 -1
- package/skills/rabetbase/references/rabetbase-bff-create.md +2 -0
- package/skills/rabetbase/references/{rabetbase-standard-page-status.md → rabetbase-data-list-status.md} +6 -6
- package/skills/rabetbase/references/rabetbase-dataset-generate.md +1 -1
- package/skills/rabetbase/references/rabetbase-dataset-relation-mutations.md +1 -1
- package/skills/rabetbase/references/rabetbase-dataset-relations.md +1 -1
- package/skills/rabetbase/references/rabetbase-dataset-restore.md +1 -1
- package/skills/rabetbase/references/rabetbase-menu-list.md +1 -1
- package/skills/rabetbase/references/rabetbase-page-create.md +31 -0
- package/skills/rabetbase/references/{rabetbase-page-react-detail.md → rabetbase-page-custom-detail.md} +5 -5
- package/skills/rabetbase/references/{rabetbase-page-react-list.md → rabetbase-page-custom-list.md} +4 -4
- package/skills/rabetbase/references/{rabetbase-page-react-publish.md → rabetbase-page-custom-publish.md} +6 -6
- package/skills/rabetbase/references/{rabetbase-page-react-update.md → rabetbase-page-custom-update.md} +6 -6
- package/skills/rabetbase/references/rabetbase-page-generate-start.md +5 -4
- package/skills/rabetbase/references/rabetbase-page-generate-status.md +4 -4
- package/skills/rabetbase/references/rabetbase-page-pull.md +2 -2
- package/skills/rabetbase/references/rabetbase-page-relation-binding.md +1 -1
- package/skills/rabetbase/references/rabetbase-page-restore.md +7 -7
- package/skills/rabetbase/references/rabetbase-page-sync.md +3 -3
- package/skills/rabetbase.manifest.json +12 -12
- package/lib/commands/page/react/create.d.ts +0 -2
- package/lib/commands/page/react/create.js +0 -1
- package/lib/commands/page/react/detail.js +0 -1
- package/lib/commands/page/react/list.js +0 -1
- package/lib/commands/page/react/publish.js +0 -1
- package/lib/commands/page/react/shared.js +0 -1
- package/lib/commands/page/react/syntax.js +0 -1
- package/lib/commands/page/react/template.js +0 -1
- package/lib/commands/page/react/update.js +0 -1
- package/lib/commands/page/standard-page-status.js +0 -1
- package/skills/rabetbase/references/rabetbase-page-react-create.md +0 -29
- /package/lib/commands/page/{react → custom}/template.d.ts +0 -0
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 自定义页面工作流
|
|
2
2
|
|
|
3
|
-
本指南说明如何使用 `rabetbase`
|
|
3
|
+
本指南说明如何使用 `rabetbase` 创建、修改和发布自定义页面。页面内容由完整 JSX、样式和多语言文件组成。
|
|
4
4
|
|
|
5
5
|
## 适用范围
|
|
6
6
|
|
|
7
7
|
适用于以下目标:
|
|
8
8
|
|
|
9
|
-
- 新建或修改
|
|
9
|
+
- 新建或修改 自定义页面、看板、门户、落地页或复杂交互页面
|
|
10
10
|
- 使用 ECharts 实现图表、统计卡片和数据大屏
|
|
11
11
|
|
|
12
12
|
## 前置上下文
|
|
@@ -19,58 +19,58 @@
|
|
|
19
19
|
|
|
20
20
|
### 新建页面
|
|
21
21
|
|
|
22
|
-
1. 先阅读 [`rabetbase-page-
|
|
23
|
-
2.
|
|
22
|
+
1. 先阅读 [`rabetbase-page-create.md`](../references/rabetbase-page-create.md)
|
|
23
|
+
2. 使用基础模板时传 `--page-pattern BLANK`;已有完整源码时只传 `--page-content`。先执行 `page create --dry-run`,确认页面名称、父菜单和最终页面文件
|
|
24
24
|
3. 经用户确认后创建页面,记录 `data.after.pageId`。新页面默认尚未发布
|
|
25
|
-
4. 执行 `page
|
|
25
|
+
4. 执行 `page custom-detail --id <pageId>`,以 `data.codeContent` 中的完整页面文件为修改基线
|
|
26
26
|
5. 需要定制初始文件时,再按“更新页面”流程保存完整页面文件
|
|
27
27
|
|
|
28
28
|
创建页面会同时创建菜单入口。不得额外调用菜单创建命令重复创建入口。
|
|
29
29
|
|
|
30
30
|
### 查找或修改已有页面
|
|
31
31
|
|
|
32
|
-
1. 未知页面 ID 时,先阅读 [`rabetbase-page-
|
|
32
|
+
1. 未知页面 ID 时,先阅读 [`rabetbase-page-custom-list.md`](../references/rabetbase-page-custom-list.md),执行 `page custom-list --appcode <appCode>`
|
|
33
33
|
2. 根据 `data.pages[].pageId` 与 `label` 与用户确认目标页面;`data.pages[].pageUrl` 用于查看最新保存内容,`data.pages[].editPageUrl` 用于打开页面编辑器
|
|
34
|
-
3. 阅读 [`rabetbase-page-
|
|
34
|
+
3. 阅读 [`rabetbase-page-custom-detail.md`](../references/rabetbase-page-custom-detail.md),执行 `page custom-detail --id <pageId>`
|
|
35
35
|
4. 只在返回的最新 `data.codeContent` 基础上编辑,不得根据旧缓存或猜测覆盖文件
|
|
36
36
|
|
|
37
37
|
### 更新页面
|
|
38
38
|
|
|
39
|
-
1. 阅读 [`rabetbase-page-
|
|
39
|
+
1. 阅读 [`rabetbase-page-custom-update.md`](../references/rabetbase-page-custom-update.md)
|
|
40
40
|
2. 将新增、修改和保留的所有文件整理为完整 `page-content` JSON
|
|
41
|
-
3. 先执行 `page
|
|
41
|
+
3. 先执行 `page custom-update --dry-run` 审阅完整页面文件
|
|
42
42
|
4. 经用户确认后执行更新
|
|
43
|
-
5. 再执行 `page
|
|
43
|
+
5. 再执行 `page custom-detail --id <pageId>`,确认 `codeContent` 已包含预期文件和内容
|
|
44
44
|
6. 已发布页面更新后,最新保存内容需要再次发布,用户访问的已发布页面才能看到本次修改
|
|
45
45
|
|
|
46
|
-
`page
|
|
46
|
+
`page custom-update` 会完整保存页面文件:未提交的文件会被删除。不得仅提交本次修改的单个文件,也不得为删除文件再调用不存在的独立删除命令。
|
|
47
47
|
|
|
48
|
-
当前 CLI 没有逐文件新增、编辑或删除命令。将本地文件操作整理为完整 `codeContent` 后再调用 `
|
|
48
|
+
当前 CLI 没有逐文件新增、编辑或删除命令。将本地文件操作整理为完整 `codeContent` 后再调用 `custom-update`;每次更新都会创建一个新的保存版本,`custom-detail` 默认读取最新页面内容。
|
|
49
49
|
|
|
50
50
|
### 发布页面
|
|
51
51
|
|
|
52
|
-
1. 先执行 `page
|
|
53
|
-
2. 当前状态为 `FORMAL` 时,表示当前保存内容已发布,不执行 `page
|
|
54
|
-
3. 当前状态不是 `FORMAL` 时,读取 [`rabetbase-page-
|
|
52
|
+
1. 先执行 `page custom-detail --id <pageId>`,确认当前 `data.status`
|
|
53
|
+
2. 当前状态为 `FORMAL` 时,表示当前保存内容已发布,不执行 `page custom-publish`,直接查看已发布页面或继续后续流程
|
|
54
|
+
3. 当前状态不是 `FORMAL` 时,读取 [`rabetbase-page-custom-publish.md`](../references/rabetbase-page-custom-publish.md),再执行 `page custom-publish --dry-run`
|
|
55
55
|
4. 发布会影响用户实际访问的页面,必须取得用户明确确认后再执行
|
|
56
56
|
5. 从 `data.after.status` 确认 `FORMAL`,表示内容已发布
|
|
57
57
|
|
|
58
|
-
`data.pageUrl` 用于查看最新保存内容,包含尚未发布的修改;`data.editPageUrl` 用于打开页面编辑器;`page
|
|
58
|
+
`data.pageUrl` 用于查看最新保存内容,包含尚未发布的修改;`data.editPageUrl` 用于打开页面编辑器;`page custom-publish` 成功返回的 `data.runtimePageUrl` 用于查看已发布内容。不要将三者混用。
|
|
59
59
|
|
|
60
60
|
## 页面生命周期
|
|
61
61
|
|
|
62
|
-
React
|
|
62
|
+
自定义页面的 React JSX 实现有“未发布”和“已发布”两种状态。未发布的修改可通过 `pageUrl` 或编辑器查看,已发布页面只展示最近一次发布的内容。
|
|
63
63
|
|
|
64
64
|
```text
|
|
65
|
-
page
|
|
65
|
+
page create --page-pattern BLANK
|
|
66
66
|
→ 未发布
|
|
67
67
|
→ 生成或更新完整页面文件
|
|
68
68
|
→ 未发布
|
|
69
|
-
→ page
|
|
69
|
+
→ page custom-publish
|
|
70
70
|
→ 已发布(FORMAL)→ 可通过 runtimePageUrl 查看已发布内容
|
|
71
|
-
→ page
|
|
71
|
+
→ page custom-update
|
|
72
72
|
→ 未发布(已发布页面仍显示上一次发布内容)
|
|
73
|
-
→ page
|
|
73
|
+
→ page custom-publish
|
|
74
74
|
→ 已发布(FORMAL)→ 已发布页面展示最新发布内容
|
|
75
75
|
```
|
|
76
76
|
|
|
@@ -81,9 +81,9 @@ page react-create
|
|
|
81
81
|
| 发布后 | 当前已发布版本,状态为 `FORMAL` | 本次已发布内容 | 通过 `runtimePageUrl` 查看或继续修改 |
|
|
82
82
|
| 已发布后再次更新 | 最新保存内容,尚未发布 | 更新前的已发布内容 | 再次发布后才切换已发布页面内容 |
|
|
83
83
|
|
|
84
|
-
`page
|
|
84
|
+
`page custom-detail` 用于确认最新保存内容,`page custom-publish` 用于发布当前保存内容。不要仅因 `custom-update` 成功就认为已发布页面已经更新。
|
|
85
85
|
|
|
86
|
-
`
|
|
86
|
+
`custom-detail` 返回 `FORMAL` 时,表示当前保存内容已经发布。没有新的修改时,跳过重复发布,继续查看已发布页面或后续流程。
|
|
87
87
|
|
|
88
88
|
### 地址语义
|
|
89
89
|
|
|
@@ -95,7 +95,7 @@ page react-create
|
|
|
95
95
|
|
|
96
96
|
## 数据与服务契约
|
|
97
97
|
|
|
98
|
-
图表与统计场景使用 `page
|
|
98
|
+
图表与统计场景使用 `page create` 与 `page custom-update/publish` 管理的 React JSX 页面,呈现层直接使用白名单内的 `echarts@5`。
|
|
99
99
|
|
|
100
100
|
### 选型
|
|
101
101
|
|
|
@@ -130,16 +130,16 @@ page react-create
|
|
|
130
130
|
|
|
131
131
|
### ECharts 呈现层
|
|
132
132
|
|
|
133
|
-
-
|
|
133
|
+
- 在自定义页面的 React JSX 实现中直接使用白名单内的 `echarts@5` 构建图表;按组件生命周期初始化、更新和销毁实例。
|
|
134
134
|
- ECharts 只消费页面已经取得的业务数据,不负责访问数据库、执行 SQL 或做权限判断。
|
|
135
|
-
- `page
|
|
135
|
+
- `page custom-*` 页面与 `project create` 微前端模板是不同运行环境;前者不得因为模板示例使用了包装库,就引入白名单外依赖。
|
|
136
136
|
- 图表查询使用 Dataset、`client.sql.execute({ sqlCode, params })` 或受控 BFF,并完整处理加载、空态、失败和重试行为。
|
|
137
137
|
|
|
138
138
|
## 页面开发参考
|
|
139
139
|
|
|
140
|
-
编写页面内容前,先阅读 [`generation-standards.md`](../knowledge/
|
|
140
|
+
编写页面内容前,先阅读 [`generation-standards.md`](../knowledge/custom-page/generation-standards.md)。
|
|
141
141
|
|
|
142
|
-
- 选择、组合或新增 UI 组件时,按需阅读 [`components.md`](../knowledge/
|
|
142
|
+
- 选择、组合或新增 UI 组件时,按需阅读 [`components.md`](../knowledge/custom-page/components.md)
|
|
143
143
|
- 调用页面上下文、国际化、路由或数据客户端时,按需阅读 `generation-standards.md` 中的“页面上下文内置能力”
|
|
144
144
|
- 未登记的组件、方法、参数和返回结构不得猜测,先补充确认后的规范再复用
|
|
145
145
|
|
|
@@ -156,7 +156,7 @@ src/components/*.jsx
|
|
|
156
156
|
|
|
157
157
|
代码遵循以下约束:
|
|
158
158
|
|
|
159
|
-
- 仅导入 [`generation-standards.md`](../knowledge/
|
|
159
|
+
- 仅导入 [`generation-standards.md`](../knowledge/custom-page/generation-standards.md)“依赖白名单”中的包及其子路径
|
|
160
160
|
- 使用页面上下文时,从 `@/context/app-context` 导入 `useSdkClient`、`useI18n`、`useNavigate`、`useLocation`
|
|
161
161
|
- 数据读取或写入前,先确认数据集及 SDK 用法;接口或字段无法从现有事实确认时,不得猜测请求协议
|
|
162
162
|
- 所有用户可见文案通过 `$i18n.t("key")` 获取,并在 `src/locales/index.js` 提供有效翻译
|
|
@@ -164,39 +164,39 @@ src/components/*.jsx
|
|
|
164
164
|
- CSS 使用 Ant Design CSS 变量,不写死颜色或其他样式常量
|
|
165
165
|
- 不新增白名单外依赖,不使用 `window.location`
|
|
166
166
|
|
|
167
|
-
|
|
167
|
+
传 `--page-pattern BLANK` 时,`page create` 生成基础 JSX、样式和词包。首次自定义时,将初始文案和样式一并调整为上述约束后再发布,不把初始化模板视为最终页面实现。
|
|
168
168
|
|
|
169
169
|
## 页面内容自检
|
|
170
170
|
|
|
171
171
|
在首次提交或每次更新完整 `codeContent` 前,按以下顺序自检:
|
|
172
172
|
|
|
173
|
-
1. 先用 `page
|
|
173
|
+
1. 先用 `page custom-detail --id <pageId>` 读取最新页面文件,避免覆盖其他尚未发布的修改
|
|
174
174
|
2. 确认提交内容包含全部需要保留的文件,入口、样式、词包和组件之间的导入路径一致
|
|
175
|
-
3. 对照 [`generation-standards.md`](../knowledge/
|
|
175
|
+
3. 对照 [`generation-standards.md`](../knowledge/custom-page/generation-standards.md) 检查依赖白名单、国际化、路由、样式和数据契约
|
|
176
176
|
4. 使用组件或内置方法时,分别对照 `components.md` 和 `generation-standards.md` 中的“页面上下文内置能力”,确认不存在未登记的属性、方法或返回结构假设
|
|
177
|
-
5. 先完成“页面生成规范”中的静态自检,再执行 `page
|
|
178
|
-
6. 更新后再次执行 `page
|
|
179
|
-
7. 需要让用户查看已发布页面时,先检查最新 `data.status`。状态为 `FORMAL` 时跳过发布;否则执行 `page
|
|
177
|
+
5. 先完成“页面生成规范”中的静态自检,再执行 `page custom-update --dry-run`。CLI 会阻止缺少 React 源码或存在基础 JS/JSX/TS/TSX 语法错误的内容,但不推断变量引用、模块导出、数据契约或运行时行为
|
|
178
|
+
6. 更新后再次执行 `page custom-detail --id <pageId>`,确认最新保存的 `codeContent` 与提交内容一致
|
|
179
|
+
7. 需要让用户查看已发布页面时,先检查最新 `data.status`。状态为 `FORMAL` 时跳过发布;否则执行 `page custom-publish --dry-run`、取得确认后发布,并确认 `data.after.status` 为 `FORMAL` 和 `data.runtimePageUrl` 已返回
|
|
180
180
|
|
|
181
181
|
当前 CLI 不提供已发布页面截图或自动浏览器预览。发布成功后,使用返回的 `data.runtimePageUrl` 打开已发布页面进行人工预览。
|
|
182
182
|
|
|
183
183
|
## 最小验证闭环
|
|
184
184
|
|
|
185
185
|
```text
|
|
186
|
-
新建:
|
|
186
|
+
新建:create --page-pattern BLANK --dry-run → create --page-pattern BLANK → custom-detail → [按需] custom-update --dry-run → custom-update → custom-detail → [尚未发布(status 非 FORMAL)且经确认] custom-publish --dry-run → custom-publish
|
|
187
187
|
|
|
188
|
-
修改:
|
|
188
|
+
修改:custom-list(按需)→ custom-detail → custom-update --dry-run → custom-update → custom-detail → [尚未发布(status 非 FORMAL)且经确认] custom-publish --dry-run → custom-publish
|
|
189
189
|
```
|
|
190
190
|
|
|
191
191
|
CLI 当前不提供本地预览或独立删除命令。
|
|
192
192
|
|
|
193
193
|
## 参考
|
|
194
194
|
|
|
195
|
-
- [`rabetbase-page-
|
|
196
|
-
- [`rabetbase-page-
|
|
197
|
-
- [`rabetbase-page-
|
|
198
|
-
- [`rabetbase-page-
|
|
199
|
-
- [`rabetbase-page-
|
|
200
|
-
- [`generation-standards.md`](../knowledge/
|
|
201
|
-
- [`components.md`](../knowledge/
|
|
195
|
+
- [`rabetbase-page-create.md`](../references/rabetbase-page-create.md)
|
|
196
|
+
- [`rabetbase-page-custom-list.md`](../references/rabetbase-page-custom-list.md)
|
|
197
|
+
- [`rabetbase-page-custom-detail.md`](../references/rabetbase-page-custom-detail.md)
|
|
198
|
+
- [`rabetbase-page-custom-update.md`](../references/rabetbase-page-custom-update.md)
|
|
199
|
+
- [`rabetbase-page-custom-publish.md`](../references/rabetbase-page-custom-publish.md)
|
|
200
|
+
- [`generation-standards.md`](../knowledge/custom-page/generation-standards.md)
|
|
201
|
+
- [`components.md`](../knowledge/custom-page/components.md)
|
|
202
202
|
- [`rabetbase-codegen-sdk.md`](../references/rabetbase-codegen-sdk.md)
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 数据列表页(Data List Page,page)工作流
|
|
2
2
|
|
|
3
3
|
前置知识:已完成 `rabetbase auth` 登录,当前上下文已有 `appcode`,并已理解 `knowledge/page-schema/` 是 PageSchema 组件知识,不是 `rabetbase page` 命令说明。
|
|
4
4
|
|
|
5
5
|
## 适用范围
|
|
6
6
|
|
|
7
|
-
本工作流只适用于
|
|
7
|
+
本工作流只适用于 **数据列表页(Data List Page,DOV2 `smart_page`)** 路径:
|
|
8
8
|
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
9
|
+
- 基于数据集首次生成数据列表页
|
|
10
|
+
- 数据集字段变更后同步已有数据列表页
|
|
11
|
+
- 将数据列表页 schema 拉到本地进行 IDE 修改,再推回平台
|
|
12
12
|
|
|
13
13
|
不适用于:
|
|
14
14
|
|
|
@@ -16,11 +16,11 @@
|
|
|
16
16
|
- 本地主子应用开发(使用 `rabetbase project`)
|
|
17
17
|
- 只凭“数据集缺页”就批量生成所有页面的场景
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
评论、附件、历史记录等子资源,默认不优先作为独立主页面;若业务目标不是数据列表页(Data List Page),先停下来确认是否还应继续走 `page` 工作流。
|
|
20
20
|
|
|
21
21
|
## 核心原则
|
|
22
22
|
|
|
23
|
-
1.
|
|
23
|
+
1. 数据列表页是数据查看与维护方案,不是所有数据集的默认答案,也不等同于最终业务工作台。
|
|
24
24
|
2. 平台是页面权威来源;本地 schema 开发也必须通过 `pull -> IDE 编辑 -> push` 闭环。
|
|
25
25
|
3. 新编排与自动化链路统一按 async-first 契约编排:任务状态查询与页面事实查询分离。
|
|
26
26
|
4. 生产环境先做 `--dry-run`,确认目标、页面组和风险后再执行真实写操作。
|
|
@@ -33,13 +33,13 @@
|
|
|
33
33
|
|
|
34
34
|
### 1. 确认业务目标
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
先确认这次目标是不是数据列表页最擅长的事情:
|
|
37
37
|
|
|
38
|
-
- 列表 / 新建 / 编辑 /
|
|
38
|
+
- 列表 / 新建 / 编辑 / 详情型数据列表页(Data List Page)
|
|
39
39
|
- 标准管理后台
|
|
40
40
|
- 单数据集或轻度关联数据集
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
如果目标是工作台、看板、时间轴或复杂协作视图,它不属于数据列表页工作流,但仍然属于页面需求,应使用 `rabetbase page create --page-pattern BLANK` 或 `--page-content` 创建 CUSTOM JSX 页面。`rabetbase project` 表达的是独立子应用工程,不是页面类型,也不是复杂页面的兜底入口。
|
|
43
43
|
|
|
44
44
|
### 2. 校验数据集与关联页
|
|
45
45
|
|
|
@@ -54,7 +54,7 @@ rabetbase dataset relations --datasetcode <datasetCode> --format json
|
|
|
54
54
|
|
|
55
55
|
- 数据集是否存在
|
|
56
56
|
- 字段名、字段类型、关联关系是否符合预期
|
|
57
|
-
- `relatedPages`
|
|
57
|
+
- `relatedPages` 中是否已有未删除数据列表页
|
|
58
58
|
|
|
59
59
|
### 3. 判断用 `generate-start / sync`
|
|
60
60
|
|
|
@@ -67,7 +67,7 @@ rabetbase dataset relations --datasetcode <datasetCode> --format json
|
|
|
67
67
|
推荐先做预演(`generate-start` 默认就是预演,必须显式 `--apply` 才提交):
|
|
68
68
|
|
|
69
69
|
```bash
|
|
70
|
-
rabetbase page
|
|
70
|
+
rabetbase page data-list-status --datasetcode <datasetCode> --format json
|
|
71
71
|
rabetbase page generate-start --datasetcode <datasetCode> --format json
|
|
72
72
|
rabetbase page sync --datasetcode <datasetCode> --dry-run --format json
|
|
73
73
|
```
|
|
@@ -81,7 +81,7 @@ rabetbase page generate-start --datasetcode <datasetCode> --apply --format json
|
|
|
81
81
|
rabetbase page generate-status --datasetcode <datasetCode> --task-id <taskId> --format json
|
|
82
82
|
```
|
|
83
83
|
|
|
84
|
-
`taskId` 是首选查询标识;只有旧响应没有 taskId 时才回退 `operationId`,两者都丢失时再用 `clientOperationId`。三种标识必须且只能传一个。查询超时、未知状态或网络失败时继续查询原任务,不重新提交生成。成功终态后,从 `
|
|
84
|
+
`taskId` 是首选查询标识;只有旧响应没有 taskId 时才回退 `operationId`,两者都丢失时再用 `clientOperationId`。三种标识必须且只能传一个。查询超时、未知状态或网络失败时继续查询原任务,不重新提交生成。成功终态后,从 `dataListPageStatus.pageSets[]` 读取页面事实和 `versionTag`;存在多个完整组、残留页或冲突时交给用户确认,不猜测页面组。
|
|
85
85
|
|
|
86
86
|
### 4. 拉取页面 schema 到本地
|
|
87
87
|
|
|
@@ -98,7 +98,7 @@ rabetbase page pull --datasetcode <datasetCode> --version-tag <versionTag> --for
|
|
|
98
98
|
- `--id` 用于单页
|
|
99
99
|
- `--datasetcode` / `--alias` 用于按数据集批量
|
|
100
100
|
- 同一命令里 `--id` 与 `--datasetcode` / `--alias` 互斥
|
|
101
|
-
- 生成链路优先使用 `page generate-status` 的 `
|
|
101
|
+
- 生成链路优先使用 `page generate-status` 的 `dataListPageStatus.pageSets[].versionTag`
|
|
102
102
|
- 批量模式下若同一数据集存在多组页面且 `versionTag` 不唯一,必须由用户确认后显式传 `--version-tag`
|
|
103
103
|
|
|
104
104
|
本地文件位置:
|
|
@@ -143,18 +143,18 @@ rabetbase page push --datasetcode <datasetCode> --version-tag <tag> --format jso
|
|
|
143
143
|
|
|
144
144
|
## 常见分支
|
|
145
145
|
|
|
146
|
-
### A.
|
|
146
|
+
### A. 首次补齐数据列表页
|
|
147
147
|
|
|
148
148
|
```text
|
|
149
|
-
dataset detail →
|
|
149
|
+
dataset detail → page data-list-status → page generate-start(默认预览) → page generate-start --apply → 保存 taskId → page generate-status → 从 dataListPageStatus.pageSets[] 选择 versionTag
|
|
150
150
|
```
|
|
151
151
|
|
|
152
152
|
适用于:
|
|
153
153
|
|
|
154
|
-
-
|
|
155
|
-
-
|
|
154
|
+
- 主业务对象还没有任何数据列表页
|
|
155
|
+
- 目标是快速补齐基础数据列表页(Data List Page)
|
|
156
156
|
|
|
157
|
-
### B.
|
|
157
|
+
### B. 字段变更后同步已有数据列表页
|
|
158
158
|
|
|
159
159
|
```text
|
|
160
160
|
dataset detail → page sync --dry-run → page sync
|
|
@@ -163,7 +163,7 @@ dataset detail → page sync --dry-run → page sync
|
|
|
163
163
|
适用于:
|
|
164
164
|
|
|
165
165
|
- 数据集字段已变化
|
|
166
|
-
-
|
|
166
|
+
- 关联数据列表页已经存在
|
|
167
167
|
|
|
168
168
|
### C. 本地 schema 开发
|
|
169
169
|
|
|
@@ -173,7 +173,7 @@ page pull → IDE 编辑 → page push --dry-run → page push
|
|
|
173
173
|
|
|
174
174
|
适用于:
|
|
175
175
|
|
|
176
|
-
-
|
|
176
|
+
- 数据列表页已经生成
|
|
177
177
|
- 需要在 formal schema 层做本地定制
|
|
178
178
|
|
|
179
179
|
## 参考
|
|
@@ -181,7 +181,7 @@ page pull → IDE 编辑 → page push --dry-run → page push
|
|
|
181
181
|
- [SKILL.md](../SKILL.md)
|
|
182
182
|
- [rabetbase-page-generate-start.md](../references/rabetbase-page-generate-start.md)
|
|
183
183
|
- [rabetbase-page-generate-status.md](../references/rabetbase-page-generate-status.md)
|
|
184
|
-
- [rabetbase-
|
|
184
|
+
- [rabetbase-data-list-status.md](../references/rabetbase-data-list-status.md)
|
|
185
185
|
- [rabetbase-page-sync.md](../references/rabetbase-page-sync.md)
|
|
186
186
|
- [rabetbase-page-pull.md](../references/rabetbase-page-pull.md)
|
|
187
187
|
- [rabetbase-page-push.md](../references/rabetbase-page-push.md)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 自定义页面生成规范
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
本规范用于编写或修改自定义页面的完整 `codeContent`。执行命令流程、参数和发布规则以 [`custom-page-workflow.md`](../../guides/custom-page-workflow.md) 为准。
|
|
4
4
|
|
|
5
5
|
## 使用方式
|
|
6
6
|
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
|
|
16
16
|
| 范畴 | 约束 |
|
|
17
17
|
| -------- | ------------------------------------------------------------------------------------------------------------------------- |
|
|
18
|
-
| 提交内容 | `page
|
|
18
|
+
| 提交内容 | `page custom-update` 提交完整页面文件,未提交的已有文件会被删除 |
|
|
19
19
|
| 推荐结构 | 页面入口仍为 `src/app/index.jsx`;其余文件和组件目录可按页面需要组织,`src/app/index.css`、`src/locales/index.js`、`src/components/*.jsx` 仅为示例 |
|
|
20
20
|
| 组件复用 | 优先查阅并复用已有组件库和页面已有组件;仅当现有能力无法满足需求时才创建新组件 |
|
|
21
21
|
| 依赖 | 仅使用“依赖白名单”中的包及其子路径 |
|
|
@@ -61,9 +61,9 @@
|
|
|
61
61
|
|
|
62
62
|
### `src/app/index.jsx` 模板
|
|
63
63
|
|
|
64
|
-
初始化创建自定义页面时,必须以此模板生成 `src/app/index.jsx`。将 `{{pageName}}` 替换为页面名称;保留词包注册、上下文 Hook 和样式导入,再按需求扩展布局、状态与数据调用。通过 `page
|
|
64
|
+
初始化创建自定义页面时,必须以此模板生成 `src/app/index.jsx`。将 `{{pageName}}` 替换为页面名称;保留词包注册、上下文 Hook 和样式导入,再按需求扩展布局、状态与数据调用。通过 `page create --page-content` 初始化创建时,传入的 `src/app/index.jsx` 也必须从此模板派生。
|
|
65
65
|
|
|
66
|
-
更新已有页面时,以 `page
|
|
66
|
+
更新已有页面时,以 `page custom-detail` 返回的最新 `codeContent` 为基线;不强制套用或补齐本模板,应仅按更新需求修改页面内容。
|
|
67
67
|
|
|
68
68
|
```jsx
|
|
69
69
|
import React from "react";
|
|
@@ -402,6 +402,6 @@ const location = useLocation();
|
|
|
402
402
|
- [ ] 数据集、SQL、BFF 与其他 SDK 调用的资源事实、参数和返回结构均有依据
|
|
403
403
|
- [ ] 路由、状态和错误反馈符合已确认的交互
|
|
404
404
|
- [ ] CSS 未写死颜色或其他样式常量
|
|
405
|
-
- [ ] 已先执行 `page
|
|
405
|
+
- [ ] 已先执行 `page create --dry-run` 或 `page custom-update --dry-run` 审阅完整提交内容,并通过 CLI 的基础 JS/JSX/TS/TSX 语法校验
|
|
406
406
|
|
|
407
407
|
CLI 的基础校验只确认页面包含 `.jsx` 或 `.tsx` 文件,且页面内的 JS、JSX、TS、TSX 文件能够解析。变量引用、相对模块导出、数据调用契约和运行时行为必须由本清单和页面发布后的实际使用继续确认
|
|
@@ -38,9 +38,9 @@ tags: [table, page-schema, select, orderBy, isFetched, defaultSortOrder, sortabl
|
|
|
38
38
|
| toolbar.exportButtons | BatchButton[] | 批量操作 |
|
|
39
39
|
| rowSelection.enable | boolean | 行选择 |
|
|
40
40
|
| pagination.enable | boolean | 分页 |
|
|
41
|
-
| pagination.currentPageKey | string | 系统管理的当前页 state key
|
|
42
|
-
| pagination.pageSizeKey | string | 系统管理的每页条数 state key
|
|
43
|
-
| pagination.totalKey | string | 系统管理的总数 state key
|
|
41
|
+
| pagination.currentPageKey | string | 系统管理的当前页 state key;数据列表页更新时保留 |
|
|
42
|
+
| pagination.pageSizeKey | string | 系统管理的每页条数 state key;数据列表页更新时保留 |
|
|
43
|
+
| pagination.totalKey | string | 系统管理的总数 state key;数据列表页更新时保留 |
|
|
44
44
|
| columnSetting.enable | boolean | 列设置 |
|
|
45
45
|
| columnSetting.storageKey | string | 列设置缓存 key |
|
|
46
46
|
| otherTableProps | Record<string, any> | 其他 Ant Design 5 Table 的原生属性 |
|
|
@@ -213,11 +213,11 @@ V2 页面生成时已为数据集所有字段全量生成 columns,通过 `isSh
|
|
|
213
213
|
|
|
214
214
|
`LrSmartTable` 的分页状态放在页面级 state 中管理,`pagination.currentPageKey`、`pagination.pageSizeKey`、`pagination.totalKey` 用于隔离同一页面中不同表格的分页状态,避免多个表格共用 `currentPage`、`pageSize`、`total` 这类固定 key 后互相影响。
|
|
215
215
|
|
|
216
|
-
这三个 key
|
|
216
|
+
这三个 key 属于系统管理字段,不是业务配置。数据列表页中由生成器或修复工具写入;Agent 更新数据列表页时应保留已有 key,不主动配置、不主动改名。
|
|
217
217
|
|
|
218
218
|
Agent 规则:
|
|
219
219
|
|
|
220
|
-
-
|
|
220
|
+
- 常规数据列表页更新:保留已有分页 key,只维护业务相关的分页开关、数据源、列和按钮。
|
|
221
221
|
- 新增带分页的 `LrSmartTable`:由生成器生成表格独立的分页 key,Agent 不手写固定公共 key。
|
|
222
222
|
- 历史 schema 缺失分页 key:作为修复场景补齐,不把它当成普通配置流程。
|
|
223
223
|
|
|
@@ -617,7 +617,7 @@ context 对象在 **JSFunction** 中通过 `config._context` 访问,用于状
|
|
|
617
617
|
|
|
618
618
|
## 权限配置
|
|
619
619
|
|
|
620
|
-
|
|
620
|
+
当前数据列表页由运行时过滤按钮权限。Agent 只需要维护表格按钮本身;按钮是否展示由运行时权限过滤决定。
|
|
621
621
|
|
|
622
622
|
| 按钮位置 | 当前权限动作 |
|
|
623
623
|
|----------|--------------|
|
|
@@ -40,6 +40,8 @@ BFF 源码**仅**应在此目录树内创建与长期维护(与 `bff status` /
|
|
|
40
40
|
- [`backend-function.md`](../guides/backend-function.md):`context.client`、模型键、返回值、事务、消息通知扩展、禁止事项
|
|
41
41
|
- [`data-api-guidelines.md`](../guides/data-api-guidelines.md):字段、枚举、外键、性能规则
|
|
42
42
|
|
|
43
|
+
脚手架会生成中文 JSDoc 契约,包含真实接口/配置地址、根请求参数、返回值,以及依赖数据集、调用 BF、执行 SQL、副作用等维护项。提交前必须按实际代码补充每个 `params.<字段名>` 的类型与含义,更新依赖维护项;显式抛出异常时还要补充 `@throws`。无依赖或无副作用的项目可以保留“无”,不能把模板提示当作已确认的业务事实。
|
|
44
|
+
|
|
43
45
|
创建可由 CLI 调用的通知型 BFF 时使用 `ENDPOINT`,并先用 [`rabetbase notification config-list`](rabetbase-notification-config-list.md) 确认当前应用真实的通知 `configCode`。纯通知 ENDPOINT 不需要虚构数据集;脚本只通过 `context.client.extension.execute("notification", "send", ...)` 使用 `configCode`、`audiences`、`message`,不得写渠道地址或密钥。
|
|
44
46
|
|
|
45
47
|
## 提示
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
# page
|
|
1
|
+
# page data-list-status
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
查询某个数据集当前数据列表页(Data List Page)事实快照。
|
|
4
4
|
|
|
5
5
|
## 命令
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
rabetbase page
|
|
9
|
-
rabetbase page
|
|
8
|
+
rabetbase page data-list-status --datasetcode 097b7361b76c42bcb12b923fa5a08861 --format json
|
|
9
|
+
rabetbase page data-list-status --alias order --format json
|
|
10
10
|
```
|
|
11
11
|
|
|
12
12
|
## 行为说明
|
|
13
13
|
|
|
14
14
|
- 该命令只返回**页面事实**:
|
|
15
|
-
-
|
|
15
|
+
- 数据列表页组
|
|
16
16
|
- 是否完整
|
|
17
17
|
- 残留页
|
|
18
18
|
- 菜单事实
|
|
@@ -22,7 +22,7 @@ rabetbase page standard-page-status --alias order --format json
|
|
|
22
22
|
## 适用场景
|
|
23
23
|
|
|
24
24
|
- 生成前判断是否允许继续 `generate-start`
|
|
25
|
-
-
|
|
25
|
+
- 生成完成后确认是否真的形成完整数据列表页组
|
|
26
26
|
- 排查为什么当前数据集被判定为 `blocked_*`
|
|
27
27
|
|
|
28
28
|
## 参考
|
|
@@ -185,7 +185,7 @@ Status 成功后的 `data` 包含:
|
|
|
185
185
|
- `PENDING` / `PROCESSING` 都不是完成;始终继续查询同一个 taskId。
|
|
186
186
|
- 超时、未知状态或 start 响应丢失时只做状态恢复,不得自动重提生成请求。
|
|
187
187
|
- 成功后用 `rabetbase dataset detail --code <createdDataset.code> --format compress` 确认结构。
|
|
188
|
-
-
|
|
188
|
+
- 如需生成数据列表页,再执行 `rabetbase page generate-start --datasetcode <createdDataset.code> --format compress`。
|
|
189
189
|
- 真实业务行数据验证交接到 `lovrabet data filter|getOne`。
|
|
190
190
|
|
|
191
191
|
## 常见失败
|
|
@@ -48,7 +48,7 @@ rabetbase dataset relation-delete --appcode <appCode> --relation-id <relationId>
|
|
|
48
48
|
|------|----|:---:|------|
|
|
49
49
|
| `DB_TABLE` | `DB_TABLE` | 是 | V2 数据集之间关系,底层可映射到表关系 |
|
|
50
50
|
| `DB_TABLE` | `METADATA` | 是 | `DB_TABLE` 字段消费 `METADATA` 字典/选项源 |
|
|
51
|
-
| `METADATA` | `METADATA` | 是 | V2
|
|
51
|
+
| `METADATA` | `METADATA` | 是 | V2 数据列表页/配置数据集关系 |
|
|
52
52
|
| `METADATA` | `DB_TABLE` | 否 | CLI 校验阶段拒绝 |
|
|
53
53
|
|
|
54
54
|
| Flag | update | 说明 |
|
|
@@ -57,7 +57,7 @@ rabetbase dataset relations --from-source DB_TABLE --to-source METADATA --format
|
|
|
57
57
|
|
|
58
58
|
## Agent 使用规则
|
|
59
59
|
|
|
60
|
-
-
|
|
60
|
+
- 页面关系审计、数据列表页绑定、字典/选项源判断,直接使用 `dataset relations --format compress`;命令底层默认读取 D0/DO V2 关系事实
|
|
61
61
|
- 更新或删除前确认 `relationId`;写入前确认来源/目标 `datasetCode + field`、`to.labelField`、`relation.cardinality` 和 `relation.bizRelationType`
|
|
62
62
|
- `DB_TABLE -> METADATA` 表示业务表字段消费 METADATA 字典,不要把它理解为数据库外键
|
|
63
63
|
- `METADATA -> METADATA` 可以是自关联父子关系;是否自关联由 `from.datasetCode === to.datasetCode` 自行判断,不在协议里增加派生字段
|
|
@@ -35,7 +35,7 @@ rabetbase dataset restore --dbid 10282 --expected-count 3 --confirm --yes --form
|
|
|
35
35
|
- 命令只在已删除数据集中定位目标。
|
|
36
36
|
- dry-run 输出每个 Dataset 的 `relatedPageCount`,便于判断后续是否需要恢复页面。
|
|
37
37
|
- 每个 Dataset 必须恰好匹配一条删除记录;记录缺失或存在多条匹配记录时中止。
|
|
38
|
-
- 恢复结果固定标记 `pagesRestored=false`。关联页面需按需执行 `rabetbase page restore --id <pageId> --appcode <appCode
|
|
38
|
+
- 恢复结果固定标记 `pagesRestored=false`。关联页面需按需执行 `rabetbase page restore --id <pageId> --appcode <appCode>`;数据列表页恢复会恢复对应菜单。
|
|
39
39
|
- `--dbid` 批量恢复建议始终配合 `--expected-count`。
|
|
40
40
|
- 该命令不会创建新的物理表,也不会修改业务数据。
|
|
41
41
|
|
|
@@ -124,7 +124,7 @@ rabetbase menu list --verbose --format json
|
|
|
124
124
|
## 不负责
|
|
125
125
|
|
|
126
126
|
- 不做本地 `src/pages` 与线上菜单 diff;这类对比使用 `menu sync`。
|
|
127
|
-
-
|
|
127
|
+
- 不做数据列表页菜单审计;dataset-scoped 页面事实使用 `page data-list-status`。
|
|
128
128
|
- 不修改外链 URL;使用 `menu external-link-update`,并带旧 URL 与父级断言。
|
|
129
129
|
- 不修改菜单资源;更新 JS / CSS 资源 URL 使用 `menu asset-update`,并先执行 dry-run。
|
|
130
130
|
- 不修改菜单;改名使用 `menu rename`,空 folder 删除使用计划化的 `menu delete`,分组生命周期使用 `group-create/group-update/regroup-start`,写操作都必须先 dry-run。
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# page create
|
|
2
|
+
|
|
3
|
+
创建 JSX 自定义页面,并同时创建菜单入口。命令固定返回 `pageType=CUSTOM`。
|
|
4
|
+
|
|
5
|
+
该命令不接受 `--page-type`。工作台、看板、门户或复杂交互仍然属于 CUSTOM 页面;`rabetbase project` 管理独立子应用工程,不是页面类型或复杂页面的兜底入口。
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
rabetbase page create --page-pattern BLANK --name "客户看板" --appcode <appCode> --dry-run --format compress
|
|
9
|
+
rabetbase page create --page-pattern BLANK --name "客户看板" --parent-menu-id 100 --appcode <appCode>
|
|
10
|
+
rabetbase page create --name "客户看板" --page-content '<json>' --appcode <appCode>
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## 参数
|
|
14
|
+
|
|
15
|
+
| 参数 | 必填 | 说明 |
|
|
16
|
+
|---|---|---|
|
|
17
|
+
| `--name <name>` | 否 | 可选页面名称,1–100 个字符;省略时默认 `自定义页面_<timestamp>` |
|
|
18
|
+
| `--parent-menu-id <id>` | 否 | 父菜单 ID |
|
|
19
|
+
| `--page-pattern <pattern>` | 条件必填 | 页面模式;当前只支持 `BLANK`,与 `--page-content` 必须且只能提供一个 |
|
|
20
|
+
| `--page-content <json>` | 条件必填 | 完整页面文件 JSON;对象的键为相对路径,值为文件内容,与 `--page-pattern` 必须且只能提供一个 |
|
|
21
|
+
| `--appcode <code>` | 是 | 目标应用 code |
|
|
22
|
+
|
|
23
|
+
## 执行步骤
|
|
24
|
+
|
|
25
|
+
1. 使用基础模板时传 `--page-pattern BLANK`;已有完整源码时只传 `--page-content`。
|
|
26
|
+
2. 使用 `--dry-run` 确认页面名称、父菜单与最终页面文件。
|
|
27
|
+
3. 确认后使用相同参数执行创建。
|
|
28
|
+
4. 从结构化输出的 `data.after.pageId` 确认新页面 ID,并核对 `data.pageType=CUSTOM`;模式创建返回 `data.pagePattern=BLANK`,完整源码创建返回 `null`。
|
|
29
|
+
5. 输出的 `pageUrl` 用于查看最新保存内容,包含尚未发布的修改;`editPageUrl` 用于打开页面编辑器,继续修改页面。
|
|
30
|
+
|
|
31
|
+
页面创建始终同时创建菜单。`BLANK` 模式会按应用语言设置生成词包;读取设置失败时使用默认中英文词包。未发布模式会在本地失败,不请求服务端。
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
# page
|
|
1
|
+
# page custom-detail
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
查询自定义页面详情。
|
|
4
4
|
|
|
5
5
|
```bash
|
|
6
|
-
rabetbase page
|
|
6
|
+
rabetbase page custom-detail --id <pageId> --format compress
|
|
7
7
|
```
|
|
8
8
|
|
|
9
9
|
## 参数
|
|
10
10
|
|
|
11
11
|
| 参数 | 必填 | 说明 |
|
|
12
12
|
|---|---|---|
|
|
13
|
-
| `--id <pageId>` | 是 |
|
|
13
|
+
| `--id <pageId>` | 是 | 自定义页面 ID |
|
|
14
14
|
| `--appcode <code>` | 否 | 目标应用 code,省略时根据 `pageId` 查询 |
|
|
15
15
|
|
|
16
16
|
## 输出
|
|
@@ -23,4 +23,4 @@ rabetbase page react-detail --id <pageId> --format compress
|
|
|
23
23
|
- `runtimePageUrl`:查看已发布内容的页面地址,仅在有已发布内容时返回;格式为 `https://<appCode>.app.lovrabet.com/<pageCode>`(线上)或 `https://<appCode>.daily.lovrabet.com/<pageCode>`(日常)
|
|
24
24
|
- `editPageUrl`:打开页面编辑器的地址,可继续修改页面;线上为 `https://app.lovrabet.com/app/<appCode>/ide/<pageId>`,日常为 `https://daily.lovrabet.com/web-app/app/<appCode>/ide/<pageId>`
|
|
25
25
|
|
|
26
|
-
`data.codeContent` 是当前完整页面文件,可在本地完成新增、修改或删除后,作为 `page
|
|
26
|
+
`data.codeContent` 是当前完整页面文件,可在本地完成新增、修改或删除后,作为 `page custom-update --page-content <json>` 的完整页面内容提交。
|
package/skills/rabetbase/references/{rabetbase-page-react-list.md → rabetbase-page-custom-list.md}
RENAMED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 查询自定义页面 ID
|
|
2
2
|
|
|
3
3
|
## 命令
|
|
4
4
|
|
|
5
5
|
```bash
|
|
6
|
-
rabetbase page
|
|
6
|
+
rabetbase page custom-list --appcode <appCode> --format json
|
|
7
7
|
```
|
|
8
8
|
|
|
9
9
|
## 适用场景
|
|
10
10
|
|
|
11
|
-
需要查找
|
|
11
|
+
需要查找 自定义页面的 `pageId`,再执行 `page custom-detail`、`page custom-update` 或 `page custom-publish`。
|
|
12
12
|
|
|
13
13
|
## 参数
|
|
14
14
|
|
|
@@ -16,7 +16,7 @@ rabetbase page react-list --appcode <appCode> --format json
|
|
|
16
16
|
|
|
17
17
|
## 输出
|
|
18
18
|
|
|
19
|
-
`data.pages` 是当前应用中可操作的
|
|
19
|
+
`data.pages` 是当前应用中可操作的 自定义页面列表
|
|
20
20
|
|
|
21
21
|
- `label`:页面名称
|
|
22
22
|
- `pageUrl`:查看最新保存内容的页面地址,包含尚未发布的修改;日常为 `https://daily.lovrabet.com/web-app/app/<appCode>/pages/<path>`,线上为 `https://app.lovrabet.com/app/<appCode>/pages/<path>`
|