@lovrabet/rabetbase-cli 2.4.3 → 2.4.4-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/api/api-doc.js +1 -1
- package/lib/api/fetch-model-list.js +1 -1
- package/lib/api/generate-api-file.js +1 -1
- package/lib/auth/auth-server-ui.js +1 -1
- package/lib/auth/auth-server.js +1 -1
- package/lib/auth/constant.js +1 -1
- package/lib/auth/get-cookie.js +1 -1
- package/lib/auth/get-session-user.js +1 -1
- package/lib/auth/is-session-valid.js +1 -1
- package/lib/auth/login-success-html.js +1 -1
- package/lib/auth/logout.js +1 -1
- package/lib/cli-flags.js +1 -1
- package/lib/cli.js +1 -1
- package/lib/commands/api/generate.js +1 -1
- package/lib/commands/api/index.js +1 -1
- package/lib/commands/api/list.js +1 -1
- package/lib/commands/api/pull.js +1 -1
- package/lib/commands/api/shared.js +1 -1
- package/lib/commands/app/index.js +1 -1
- package/lib/commands/app/list.js +1 -1
- package/lib/commands/app/members-list.js +1 -1
- package/lib/commands/app/remote-directory.js +1 -1
- package/lib/commands/app/shared.js +1 -1
- package/lib/commands/app-config/delete.js +1 -1
- package/lib/commands/app-config/get.js +1 -1
- package/lib/commands/app-config/index.js +1 -1
- package/lib/commands/app-config/list.js +1 -1
- package/lib/commands/app-config/set.js +1 -1
- package/lib/commands/app-config/shared.js +1 -1
- package/lib/commands/auth/index.js +1 -1
- package/lib/commands/bff/create.js +1 -1
- package/lib/commands/bff/delete.js +1 -1
- package/lib/commands/bff/detail.js +1 -1
- package/lib/commands/bff/index.js +1 -1
- package/lib/commands/bff/list.js +1 -1
- package/lib/commands/bff/pull.js +1 -1
- package/lib/commands/bff/push.js +1 -1
- package/lib/commands/bff/status.js +1 -1
- package/lib/commands/cli-skill/index.js +1 -1
- package/lib/commands/cli-update.js +1 -1
- package/lib/commands/codegen/index.js +1 -1
- package/lib/commands/codegen/sdk.js +1 -1
- package/lib/commands/codegen/sql.js +1 -1
- package/lib/commands/common/app-registry.js +1 -1
- package/lib/commands/common/app-selector.js +1 -1
- package/lib/commands/common/async-task.js +1 -1
- package/lib/commands/common/dry-run.js +1 -1
- package/lib/commands/common/flags.js +1 -1
- package/lib/commands/common/local-file.js +1 -1
- package/lib/commands/common/validate.js +1 -1
- package/lib/commands/config/get.js +1 -1
- package/lib/commands/config/index.js +1 -1
- package/lib/commands/config/list.js +1 -1
- package/lib/commands/config/set.js +1 -1
- package/lib/commands/config/shared.js +1 -1
- package/lib/commands/data/filter.js +1 -1
- package/lib/commands/data/getOne.js +1 -1
- package/lib/commands/data/index.js +1 -1
- package/lib/commands/data/shared.js +1 -1
- package/lib/commands/dataset/business-group-update.js +1 -1
- package/lib/commands/dataset/capability.js +1 -1
- package/lib/commands/dataset/delete.js +1 -1
- package/lib/commands/dataset/detail.js +1 -1
- package/lib/commands/dataset/extend-update.js +1 -1
- package/lib/commands/dataset/field-update.js +1 -1
- package/lib/commands/dataset/generate.js +1 -1
- package/lib/commands/dataset/index.js +1 -1
- package/lib/commands/dataset/list.js +1 -1
- package/lib/commands/dataset/operations.js +1 -1
- package/lib/commands/dataset/relation-audit.js +1 -1
- package/lib/commands/dataset/relation-create.js +1 -1
- package/lib/commands/dataset/relation-delete.js +1 -1
- package/lib/commands/dataset/relation-shared.js +1 -1
- package/lib/commands/dataset/relation-update.js +1 -1
- package/lib/commands/dataset/relations.js +1 -1
- package/lib/commands/dataset/rename.js +1 -1
- package/lib/commands/dataset/restore.js +1 -1
- package/lib/commands/db/analysis-batching.js +1 -1
- package/lib/commands/db/analyze-batch-plan.js +1 -1
- package/lib/commands/db/analyze-cancel.js +1 -1
- package/lib/commands/db/analyze-start.js +1 -1
- package/lib/commands/db/analyze-status.js +1 -1
- package/lib/commands/db/create.js +1 -1
- package/lib/commands/db/delete.js +1 -1
- package/lib/commands/db/detail.js +1 -1
- package/lib/commands/db/diff-refresh-start.d.ts +2 -0
- package/lib/commands/db/diff-refresh-start.js +1 -0
- package/lib/commands/db/diff-refresh-status.d.ts +2 -0
- package/lib/commands/db/diff-refresh-status.js +1 -0
- package/lib/commands/db/diff.js +1 -1
- package/lib/commands/db/index.js +1 -1
- package/lib/commands/db/list.js +1 -1
- package/lib/commands/db/shared.js +1 -1
- package/lib/commands/db/tables.js +1 -1
- package/lib/commands/db/test.js +1 -1
- package/lib/commands/db/update.js +1 -1
- package/lib/commands/doctor.js +1 -1
- package/lib/commands/file/index.js +1 -1
- package/lib/commands/init/index.js +1 -1
- package/lib/commands/issue/index.js +1 -1
- package/lib/commands/issue/nudge.js +1 -1
- package/lib/commands/issue/report.js +1 -1
- package/lib/commands/issue/shared.js +1 -1
- package/lib/commands/kb/create.js +1 -1
- package/lib/commands/kb/delete.js +1 -1
- package/lib/commands/kb/detail.js +1 -1
- package/lib/commands/kb/index.js +1 -1
- package/lib/commands/kb/list.js +1 -1
- package/lib/commands/kb/shared.js +1 -1
- package/lib/commands/kb/update.js +1 -1
- package/lib/commands/logs/index.js +1 -1
- package/lib/commands/menu/asset-update.js +1 -1
- package/lib/commands/menu/delete.js +1 -1
- package/lib/commands/menu/external-link-create.js +1 -1
- package/lib/commands/menu/external-link-update.js +1 -1
- package/lib/commands/menu/group-create.js +1 -1
- package/lib/commands/menu/group-update.js +1 -1
- package/lib/commands/menu/index.js +1 -1
- package/lib/commands/menu/list.js +1 -1
- package/lib/commands/menu/move.js +1 -1
- package/lib/commands/menu/regroup-start.js +1 -1
- package/lib/commands/menu/rename.js +1 -1
- package/lib/commands/menu/shared/compare-table.js +1 -1
- package/lib/commands/menu/shared/delete-plan.js +1 -1
- package/lib/commands/menu/shared/facts.js +1 -1
- package/lib/commands/menu/shared/index.js +1 -1
- package/lib/commands/menu/shared/inquirer.js +1 -1
- package/lib/commands/menu/shared/local-pages.js +1 -1
- package/lib/commands/menu/shared/logic.js +1 -1
- package/lib/commands/menu/shared/mutations.js +1 -1
- package/lib/commands/menu/shared/service.js +1 -1
- package/lib/commands/menu/shared/sync-core.js +1 -1
- package/lib/commands/menu/shared/update-core.js +1 -1
- package/lib/commands/menu/shared/valid-url.js +1 -1
- package/lib/commands/menu/sync.js +1 -1
- package/lib/commands/notification/config-create.d.ts +2 -0
- package/lib/commands/notification/config-create.js +1 -0
- package/lib/commands/notification/config-delete.d.ts +2 -0
- package/lib/commands/notification/config-delete.js +1 -0
- package/lib/commands/notification/config-list.js +1 -1
- package/lib/commands/notification/config-update.d.ts +2 -0
- package/lib/commands/notification/config-update.js +1 -0
- package/lib/commands/notification/index.js +1 -1
- package/lib/commands/notification/shared.d.ts +97 -0
- package/lib/commands/notification/shared.js +1 -0
- package/lib/commands/ocr/index.js +1 -1
- package/lib/commands/page/generate-start.js +1 -1
- package/lib/commands/page/generate-status.js +1 -1
- package/lib/commands/page/index.js +1 -1
- package/lib/commands/page/pull.js +1 -1
- package/lib/commands/page/push.js +1 -1
- package/lib/commands/page/react/create.js +1 -1
- package/lib/commands/page/react/detail.js +1 -1
- package/lib/commands/page/react/list.js +1 -1
- package/lib/commands/page/react/publish.js +1 -1
- package/lib/commands/page/react/shared.js +1 -1
- package/lib/commands/page/react/syntax.js +1 -1
- package/lib/commands/page/react/template.js +1 -1
- package/lib/commands/page/react/update.js +1 -1
- package/lib/commands/page/relation-audit.js +1 -1
- package/lib/commands/page/restore.js +1 -1
- package/lib/commands/page/shared.js +1 -1
- package/lib/commands/page/standard-page-status.js +1 -1
- package/lib/commands/page/sync.js +1 -1
- package/lib/commands/permit/index.js +1 -1
- package/lib/commands/permit/page-get.js +1 -1
- package/lib/commands/permit/page-set.js +1 -1
- package/lib/commands/permit/role-apis-set.js +1 -1
- package/lib/commands/permit/role-menus-set.js +1 -1
- package/lib/commands/permit/role-menus.js +1 -1
- package/lib/commands/permit/shared.js +1 -1
- package/lib/commands/project/create/enhanced-guided-create.js +1 -1
- package/lib/commands/project/create/format-elapsed.js +1 -1
- package/lib/commands/project/create/main.d.ts +1 -0
- package/lib/commands/project/create/main.js +1 -1
- package/lib/commands/project/create/materialize-project-template.d.ts +11 -0
- package/lib/commands/project/create/materialize-project-template.js +1 -0
- package/lib/commands/project/create/project-name.d.ts +2 -0
- package/lib/commands/project/create/project-name.js +1 -0
- package/lib/commands/project/create/project-template-archive.d.ts +6 -0
- package/lib/commands/project/create/project-template-archive.js +1 -0
- package/lib/commands/project/create/project-template-path.d.ts +1 -3
- package/lib/commands/project/create/project-template-path.js +1 -1
- package/lib/commands/project/create/use-copy-project-template.d.ts +2 -1
- package/lib/commands/project/create/use-copy-project-template.js +1 -1
- package/lib/commands/project/create/use-format-code.js +1 -1
- package/lib/commands/project/create/use-install-dependencies.js +1 -1
- package/lib/commands/project/index.js +1 -1
- package/lib/commands/project/upgrade.js +1 -1
- package/lib/commands/registry.js +1 -1
- package/lib/commands/role/create.js +1 -1
- package/lib/commands/role/delete.js +1 -1
- package/lib/commands/role/detail.js +1 -1
- package/lib/commands/role/index.js +1 -1
- package/lib/commands/role/list.js +1 -1
- package/lib/commands/role/shared.js +1 -1
- package/lib/commands/role/update.js +1 -1
- package/lib/commands/role/user-add.js +1 -1
- package/lib/commands/role/user-remove.js +1 -1
- package/lib/commands/role/user-resolve.js +1 -1
- package/lib/commands/run/index.js +1 -1
- package/lib/commands/schema.js +1 -1
- package/lib/commands/sql/create.js +1 -1
- package/lib/commands/sql/delete.js +1 -1
- package/lib/commands/sql/detail.js +1 -1
- package/lib/commands/sql/exec.js +1 -1
- package/lib/commands/sql/index.js +1 -1
- package/lib/commands/sql/list.js +1 -1
- package/lib/commands/sql/pull.js +1 -1
- package/lib/commands/sql/push.js +1 -1
- package/lib/commands/sql/shared.js +1 -1
- package/lib/commands/sql/status.js +1 -1
- package/lib/commands/sql/validate.js +1 -1
- package/lib/commands/task/index.js +1 -1
- package/lib/commands/task/status.js +1 -1
- package/lib/commands/tenant/index.js +1 -1
- package/lib/commands/tenant/members-list.js +1 -1
- package/lib/commands/tenant/shared.js +1 -1
- package/lib/commands/user-account/dingding-sandbox-bind.js +1 -1
- package/lib/commands/user-account/index.js +1 -1
- package/lib/commands/workspace/add.js +1 -1
- package/lib/commands/workspace/index.js +1 -1
- package/lib/commands/workspace/remove.js +1 -1
- package/lib/config/schema.js +1 -1
- package/lib/constant/cdn.d.ts +2 -0
- package/lib/constant/cdn.js +1 -1
- package/lib/constant/cli.js +1 -1
- package/lib/constant/defaults.js +1 -1
- package/lib/constant/domain.js +1 -1
- package/lib/constant/env.js +1 -1
- package/lib/constant/output.js +1 -1
- package/lib/constant/paths.js +1 -1
- package/lib/constant/risk.js +1 -1
- package/lib/context/app-resolver.js +1 -1
- package/lib/context/auth-resolver.js +1 -1
- package/lib/context/config-loader.js +1 -1
- package/lib/context.d.ts +1 -1
- package/lib/context.js +1 -1
- package/lib/core/alias-resolver.js +1 -1
- package/lib/core/api-client.d.ts +29 -2
- package/lib/core/api-client.js +1 -1
- package/lib/core/bff/config.js +1 -1
- package/lib/core/bff/file-system.js +1 -1
- package/lib/core/bff/hash.js +1 -1
- package/lib/core/bff/lock.js +1 -1
- package/lib/core/bff/utils.js +1 -1
- package/lib/core/db-resolver.js +1 -1
- package/lib/core/page/file-system.js +1 -1
- package/lib/core/page/hash.js +1 -1
- package/lib/core/page/lock.js +1 -1
- package/lib/core/sql-index-auditor.js +1 -1
- package/lib/core/sql-sync/config.js +1 -1
- package/lib/core/sql-sync/file-system.js +1 -1
- package/lib/core/sql-sync/hash.js +1 -1
- package/lib/core/sql-sync/lock.js +1 -1
- package/lib/core/sql-sync/utils.js +1 -1
- package/lib/core/sql-validator.js +1 -1
- package/lib/errors.js +1 -1
- package/lib/framework/build-all-flags.js +1 -1
- package/lib/framework/error-output.js +1 -1
- package/lib/framework/explicit-yes.js +1 -1
- package/lib/framework/flags.js +1 -1
- package/lib/framework/help.js +1 -1
- package/lib/framework/index.js +1 -1
- package/lib/framework/output.js +1 -1
- package/lib/framework/response.js +1 -1
- package/lib/framework/runner-alias.js +1 -1
- package/lib/framework/runner.js +1 -1
- package/lib/framework/schema-export.js +1 -1
- package/lib/framework/types.js +1 -1
- package/lib/generated/build-info.d.ts +4 -4
- package/lib/generated/build-info.js +1 -1
- package/lib/help.js +1 -1
- package/lib/postinstall.js +1 -1
- package/lib/runtime/confirmation.js +1 -1
- package/lib/runtime/event.js +1 -1
- package/lib/runtime/index.js +1 -1
- package/lib/runtime/queue.js +1 -1
- package/lib/runtime/resolve.js +1 -1
- package/lib/skills/builtin-skill.js +1 -1
- package/lib/skills/main.js +1 -1
- package/lib/skills/npx-skills-add.js +1 -1
- package/lib/skills/skill-presence.js +1 -1
- package/lib/telemetry/cli-command-trace.js +1 -1
- package/lib/telemetry/cli-help-trace.js +1 -1
- package/lib/telemetry/ensure-cli-otel-config.js +1 -1
- package/lib/telemetry/register-otel-exit-shutdown.js +1 -1
- package/lib/telemetry/send-cli-trace-log.js +1 -1
- package/lib/telemetry/send-platform-issue-collect-log.js +1 -1
- package/lib/utils/ai_config.js +1 -1
- package/lib/utils/apply-jq-filter.js +1 -1
- package/lib/utils/cdn-config.js +1 -1
- package/lib/utils/check-sdk-version.js +1 -1
- package/lib/utils/cli-version-check.js +1 -1
- package/lib/utils/cli-version-policy.d.ts +13 -0
- package/lib/utils/cli-version-policy.js +1 -1
- package/lib/utils/config.js +1 -1
- package/lib/utils/entity-with-id.js +1 -1
- package/lib/utils/file-utils.js +1 -1
- package/lib/utils/guides-cdn.js +1 -1
- package/lib/utils/http-client.js +1 -1
- package/lib/utils/is-non-interactive.js +1 -1
- package/lib/utils/logger.js +1 -1
- package/lib/utils/params.js +1 -1
- package/lib/utils/platform.js +1 -1
- package/lib/utils/rules-cdn.js +1 -1
- package/lib/utils/sleep.js +1 -1
- package/lib/utils/template-replacer.js +1 -1
- package/lib/utils/update-notice.js +1 -1
- package/lib/utils/version.js +1 -1
- package/lib/utils/with-active-cookie.js +1 -1
- package/lib/utils/write-cli-side-channel.js +1 -1
- package/package.json +9 -4
- package/skills/rabetbase/SKILL.md +33 -22
- package/skills/rabetbase/guides/backend-function.md +5 -3
- package/skills/rabetbase/guides/bff-creation-workflow.md +2 -2
- package/skills/rabetbase/guides/conflict-detection.md +2 -2
- package/skills/rabetbase/guides/database-connection-workflow.md +39 -5
- package/skills/rabetbase/guides/react-custom-page-workflow.md +16 -4
- package/skills/rabetbase/guides/sql-creation-workflow.md +4 -2
- package/skills/rabetbase/guides/sql-mybatis.md +2 -2
- package/skills/rabetbase/knowledge/page-schema/YtPage.md +3 -37
- package/skills/rabetbase/knowledge/react-page/generation-standards.md +14 -3
- package/skills/rabetbase/references/rabetbase-app-config.md +2 -2
- package/skills/rabetbase/references/rabetbase-bff-push.md +4 -5
- package/skills/rabetbase/references/rabetbase-bff-save.md +3 -3
- package/skills/rabetbase/references/rabetbase-config.md +2 -2
- package/skills/rabetbase/references/rabetbase-db-analyze.md +2 -2
- package/skills/rabetbase/references/rabetbase-db-detail.md +3 -0
- package/skills/rabetbase/references/rabetbase-db-diff-refresh.md +53 -0
- package/skills/rabetbase/references/rabetbase-db-diff.md +40 -21
- package/skills/rabetbase/references/rabetbase-db-list.md +1 -1
- package/skills/rabetbase/references/rabetbase-kb.md +5 -3
- package/skills/rabetbase/references/rabetbase-menu-asset-update.md +9 -10
- package/skills/rabetbase/references/rabetbase-menu-external-link-update.md +1 -3
- package/skills/rabetbase/references/rabetbase-menu-regroup-start.md +2 -3
- package/skills/rabetbase/references/rabetbase-notification-config-list.md +2 -2
- package/skills/rabetbase/references/rabetbase-notification-config-mutations.md +56 -0
- package/skills/rabetbase/references/rabetbase-page-react-detail.md +1 -1
- package/skills/rabetbase/references/rabetbase-page-react-list.md +1 -1
- package/skills/rabetbase/references/rabetbase-page-react-publish.md +2 -2
- package/skills/rabetbase/references/rabetbase-project-create.md +3 -0
- package/skills/rabetbase/references/rabetbase-run.md +1 -1
- package/skills/rabetbase/references/rabetbase-sql-create.md +1 -1
- package/skills/rabetbase/references/rabetbase-sql-push.md +3 -4
- package/skills/rabetbase/references/rabetbase-user-account.md +0 -1
- package/skills/rabetbase.manifest.json +5 -5
- package/templates/README.md +14 -2
- package/lib/commands/project/create/non-interactive.d.ts +0 -9
- package/lib/commands/project/create/non-interactive.js +0 -1
- package/lib/utils/copy-directory.d.ts +0 -1
- package/lib/utils/copy-directory.js +0 -1
- package/skills/rabetbase/knowledge/page-schema/LrSmartEcharts.md +0 -291
- package/skills/rabetbase/knowledge/page-schema/LrSmartStatistic.md +0 -223
- package/templates/projects/sub-app-react-demo/.prettierrc +0 -1
- package/templates/projects/sub-app-react-demo/CHANGELOG.md +0 -67
- package/templates/projects/sub-app-react-demo/README.md +0 -246
- package/templates/projects/sub-app-react-demo/docs/quick-start.md +0 -245
- package/templates/projects/sub-app-react-demo/index.html +0 -27
- package/templates/projects/sub-app-react-demo/package.json +0 -34
- package/templates/projects/sub-app-react-demo/public/logo.svg +0 -1
- package/templates/projects/sub-app-react-demo/public/vite.svg +0 -1
- package/templates/projects/sub-app-react-demo/src/api/api.ts +0 -26
- package/templates/projects/sub-app-react-demo/src/api/client.ts +0 -32
- package/templates/projects/sub-app-react-demo/src/components/demo-page-container/DemoPageContainer.module.css +0 -28
- package/templates/projects/sub-app-react-demo/src/components/demo-page-container/DemoPageContainer.tsx +0 -55
- package/templates/projects/sub-app-react-demo/src/layouts/MainLayout.tsx +0 -308
- package/templates/projects/sub-app-react-demo/src/main.tsx +0 -52
- package/templates/projects/sub-app-react-demo/src/pages/dashboard/index.tsx +0 -570
- package/templates/projects/sub-app-react-demo/src/pages/data-screen/index.tsx +0 -531
- package/templates/projects/sub-app-react-demo/src/pages/index.module.css +0 -500
- package/templates/projects/sub-app-react-demo/src/pages/index.tsx +0 -641
- package/templates/projects/sub-app-react-demo/src/pages/sdk-demo/index.tsx +0 -536
- package/templates/projects/sub-app-react-demo/src/pages/workbench/index.module.css +0 -295
- package/templates/projects/sub-app-react-demo/src/pages/workbench/index.tsx +0 -242
- package/templates/projects/sub-app-react-demo/src/router/index.tsx +0 -30
- package/templates/projects/sub-app-react-demo/src/style.css +0 -108
- package/templates/projects/sub-app-react-demo/src/utils/api.ts +0 -12
- package/templates/projects/sub-app-react-demo/src/vite-env.d.ts +0 -2
- package/templates/projects/sub-app-react-demo/tsconfig.json +0 -26
- package/templates/projects/sub-app-react-demo/vite.config.ts +0 -111
|
@@ -1,641 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Title: 子应用启动台
|
|
3
|
-
*/
|
|
4
|
-
import React from "react";
|
|
5
|
-
import { Link } from "react-router-dom";
|
|
6
|
-
import { Alert, Button, Card, Space, Tag, Typography } from "antd";
|
|
7
|
-
import {
|
|
8
|
-
ApiOutlined,
|
|
9
|
-
AppstoreOutlined,
|
|
10
|
-
ArrowRightOutlined,
|
|
11
|
-
BarChartOutlined,
|
|
12
|
-
BookOutlined,
|
|
13
|
-
CheckCircleOutlined,
|
|
14
|
-
CheckOutlined,
|
|
15
|
-
CloudUploadOutlined,
|
|
16
|
-
CodeOutlined,
|
|
17
|
-
CopyOutlined,
|
|
18
|
-
DashboardOutlined,
|
|
19
|
-
DatabaseOutlined,
|
|
20
|
-
DeploymentUnitOutlined,
|
|
21
|
-
LinkOutlined,
|
|
22
|
-
PlayCircleOutlined,
|
|
23
|
-
RocketOutlined,
|
|
24
|
-
SettingOutlined,
|
|
25
|
-
ToolOutlined,
|
|
26
|
-
WarningOutlined,
|
|
27
|
-
} from "@ant-design/icons";
|
|
28
|
-
import styles from "./index.module.css";
|
|
29
|
-
|
|
30
|
-
const { Title, Paragraph, Text } = Typography;
|
|
31
|
-
|
|
32
|
-
interface CopyableCodeProps {
|
|
33
|
-
code: string;
|
|
34
|
-
label: string;
|
|
35
|
-
compact?: boolean;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
function CopyableCode({ code, label, compact = false }: CopyableCodeProps) {
|
|
39
|
-
const [copied, setCopied] = React.useState(false);
|
|
40
|
-
|
|
41
|
-
const handleCopy = async () => {
|
|
42
|
-
try {
|
|
43
|
-
if (navigator.clipboard?.writeText) {
|
|
44
|
-
await navigator.clipboard.writeText(code);
|
|
45
|
-
}
|
|
46
|
-
setCopied(true);
|
|
47
|
-
window.setTimeout(() => setCopied(false), 2000);
|
|
48
|
-
} catch (err) {
|
|
49
|
-
console.error("复制失败:", err);
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
return (
|
|
54
|
-
<div
|
|
55
|
-
className={`${styles.copyBlock} ${
|
|
56
|
-
compact ? styles.copyBlockCompact : ""
|
|
57
|
-
}`}
|
|
58
|
-
>
|
|
59
|
-
<div className={styles.copyHeader}>
|
|
60
|
-
<Text type="secondary">{label}</Text>
|
|
61
|
-
<Button
|
|
62
|
-
size="small"
|
|
63
|
-
icon={copied ? <CheckOutlined /> : <CopyOutlined />}
|
|
64
|
-
onClick={handleCopy}
|
|
65
|
-
className={styles.copyButton}
|
|
66
|
-
>
|
|
67
|
-
{copied ? "已复制" : "复制"}
|
|
68
|
-
</Button>
|
|
69
|
-
</div>
|
|
70
|
-
<pre className={styles.copyPre}>
|
|
71
|
-
<code>{code}</code>
|
|
72
|
-
</pre>
|
|
73
|
-
</div>
|
|
74
|
-
);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
function getAppCodeFromApi(content: string): string | null {
|
|
78
|
-
const match =
|
|
79
|
-
content.match(/RABETBASE_APP_CODE\s*=\s*["']([^"']+)["']/) ||
|
|
80
|
-
content.match(/LOVRABET_APP_CODE\s*=\s*["']([^"']+)["']/) ||
|
|
81
|
-
content.match(/appCode:\s*["']([^"']+)["']/);
|
|
82
|
-
return match ? match[1] : null;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
const feishuDocs = {
|
|
86
|
-
root: "https://qizhiyuntu.feishu.cn/wiki/EaApwb1Wpi2j0ykAkhNcya0ZnEh",
|
|
87
|
-
onboarding:
|
|
88
|
-
"https://qizhiyuntu.feishu.cn/wiki/T5gJwrcQqixLCikNYO2caZYDnsc",
|
|
89
|
-
core: "https://qizhiyuntu.feishu.cn/wiki/S71hw5c2HiwyoHkLgyecKrI8n3M",
|
|
90
|
-
systemPageSdk:
|
|
91
|
-
"https://qizhiyuntu.feishu.cn/wiki/XCdWwnN7ViYOc0knRu8c411uneh",
|
|
92
|
-
sdk: "https://qizhiyuntu.feishu.cn/wiki/B1PLw34AwiDtNmkCAlCcO3T2ngh",
|
|
93
|
-
};
|
|
94
|
-
|
|
95
|
-
function HomePage() {
|
|
96
|
-
const [appCode, setAppCode] = React.useState<string | null>(null);
|
|
97
|
-
const [loading, setLoading] = React.useState(true);
|
|
98
|
-
|
|
99
|
-
React.useEffect(() => {
|
|
100
|
-
const loadAppCode = async () => {
|
|
101
|
-
try {
|
|
102
|
-
const modules = import.meta.glob("/src/api/*.ts", {
|
|
103
|
-
query: "?raw",
|
|
104
|
-
import: "default",
|
|
105
|
-
});
|
|
106
|
-
const apiPath = "/src/api/api.ts";
|
|
107
|
-
|
|
108
|
-
if (apiPath in modules) {
|
|
109
|
-
const content = await modules[apiPath]();
|
|
110
|
-
const code = getAppCodeFromApi(content as string);
|
|
111
|
-
setAppCode(code);
|
|
112
|
-
}
|
|
113
|
-
} catch (err) {
|
|
114
|
-
console.error("加载 api.ts 失败:", err);
|
|
115
|
-
} finally {
|
|
116
|
-
setLoading(false);
|
|
117
|
-
}
|
|
118
|
-
};
|
|
119
|
-
|
|
120
|
-
loadAppCode();
|
|
121
|
-
}, []);
|
|
122
|
-
|
|
123
|
-
const isConfigured = !loading && appCode !== null && appCode !== "NOT-SET";
|
|
124
|
-
const displayAppCode = isConfigured ? appCode : "your-app-code";
|
|
125
|
-
const statusLabel = loading ? "读取中" : isConfigured ? "已配置" : "待配置";
|
|
126
|
-
|
|
127
|
-
const setupPrompt = `请帮我检查当前 Lovrabet React 子应用的项目配置。
|
|
128
|
-
确认 AppCode、.rabetbase.json、SDK 模型文件和 src/api/client.ts 是否完整。
|
|
129
|
-
如果缺少配置,请按当前项目情况补齐,并告诉我可以用于页面开发的数据模型。`;
|
|
130
|
-
|
|
131
|
-
const agentSurfaces = ["Claude Code", "Cursor", "Codex"];
|
|
132
|
-
|
|
133
|
-
const docLinks = [
|
|
134
|
-
{
|
|
135
|
-
title: "Rabetbase CLI 文库",
|
|
136
|
-
description: "从上手路径进入完整研发能力目录。",
|
|
137
|
-
url: feishuDocs.root,
|
|
138
|
-
icon: <BookOutlined />,
|
|
139
|
-
},
|
|
140
|
-
{
|
|
141
|
-
title: "系统页面开发",
|
|
142
|
-
description: "用 SDK 开发列表页、详情页、表单和看板。",
|
|
143
|
-
url: feishuDocs.systemPageSdk,
|
|
144
|
-
icon: <CodeOutlined />,
|
|
145
|
-
},
|
|
146
|
-
{
|
|
147
|
-
title: "TypeScript SDK",
|
|
148
|
-
description: "查看模型客户端、数据读写和类型使用方式。",
|
|
149
|
-
url: feishuDocs.sdk,
|
|
150
|
-
icon: <ApiOutlined />,
|
|
151
|
-
},
|
|
152
|
-
];
|
|
153
|
-
|
|
154
|
-
const taskGuides = [
|
|
155
|
-
{
|
|
156
|
-
title: "刚创建项目",
|
|
157
|
-
description: "确认项目结构、AppCode、SDK 模型和本地启动方式。",
|
|
158
|
-
action: "查看入门与上手",
|
|
159
|
-
url: feishuDocs.onboarding,
|
|
160
|
-
icon: <RocketOutlined />,
|
|
161
|
-
},
|
|
162
|
-
{
|
|
163
|
-
title: "开发客户列表页",
|
|
164
|
-
description: "让 Agent 基于数据模型生成筛选、表格、详情和表单。",
|
|
165
|
-
action: "查看页面开发",
|
|
166
|
-
url: feishuDocs.systemPageSdk,
|
|
167
|
-
icon: <CodeOutlined />,
|
|
168
|
-
},
|
|
169
|
-
{
|
|
170
|
-
title: "调用 SDK 读写数据",
|
|
171
|
-
description: "确认模型别名、字段类型、filter、getOne 和写入接口。",
|
|
172
|
-
action: "查看 SDK 文档",
|
|
173
|
-
url: feishuDocs.sdk,
|
|
174
|
-
icon: <ApiOutlined />,
|
|
175
|
-
},
|
|
176
|
-
{
|
|
177
|
-
title: "做统计和看板",
|
|
178
|
-
description: "把客户活跃度、跟进转化和销售机会做成指标视图。",
|
|
179
|
-
action: "查看核心能力",
|
|
180
|
-
url: feishuDocs.core,
|
|
181
|
-
icon: <BarChartOutlined />,
|
|
182
|
-
},
|
|
183
|
-
{
|
|
184
|
-
title: "封装服务端逻辑",
|
|
185
|
-
description: "把稳定的写入、校验或聚合操作沉淀成可复用能力。",
|
|
186
|
-
action: "查看核心能力",
|
|
187
|
-
url: feishuDocs.core,
|
|
188
|
-
icon: <DeploymentUnitOutlined />,
|
|
189
|
-
},
|
|
190
|
-
{
|
|
191
|
-
title: "构建并发布",
|
|
192
|
-
description: "检查构建产物、页面配置、菜单、路由和主应用接入。",
|
|
193
|
-
action: "查看发布路径",
|
|
194
|
-
url: feishuDocs.core,
|
|
195
|
-
icon: <CloudUploadOutlined />,
|
|
196
|
-
},
|
|
197
|
-
];
|
|
198
|
-
|
|
199
|
-
const promptCards = [
|
|
200
|
-
{
|
|
201
|
-
title: "检查项目上下文",
|
|
202
|
-
description:
|
|
203
|
-
"让 Agent 识别 AppCode、项目配置和 SDK 模型,后续开发不再手动查接口。",
|
|
204
|
-
icon: <SettingOutlined />,
|
|
205
|
-
tags: ["项目配置", "模型同步"],
|
|
206
|
-
prompt: setupPrompt,
|
|
207
|
-
commands: [
|
|
208
|
-
"rabetbase workspace init --appcode <code>",
|
|
209
|
-
"rabetbase config get",
|
|
210
|
-
"rabetbase api pull",
|
|
211
|
-
],
|
|
212
|
-
docUrl: feishuDocs.onboarding,
|
|
213
|
-
docLabel: "入门与上手",
|
|
214
|
-
},
|
|
215
|
-
{
|
|
216
|
-
title: "开发客户列表页",
|
|
217
|
-
description:
|
|
218
|
-
"用真实 CRM 场景描述页面目标,让 Agent 生成列表、筛选和详情交互。",
|
|
219
|
-
icon: <PlayCircleOutlined />,
|
|
220
|
-
tags: ["页面开发", "SDK 接入"],
|
|
221
|
-
prompt: `请在当前 React 子应用里开发一个客户列表页。
|
|
222
|
-
页面需要支持按客户名称、负责人、客户等级和最近跟进时间筛选。
|
|
223
|
-
列表展示客户名称、联系人、负责人、客户等级、最近跟进时间和状态。
|
|
224
|
-
点击客户后打开详情抽屉,详情数据和列表数据都使用 @lovrabet/sdk。`,
|
|
225
|
-
commands: [
|
|
226
|
-
"rabetbase api pull",
|
|
227
|
-
"rabetbase dataset list",
|
|
228
|
-
"rabetbase dataset detail",
|
|
229
|
-
],
|
|
230
|
-
docUrl: feishuDocs.systemPageSdk,
|
|
231
|
-
docLabel: "系统页面开发",
|
|
232
|
-
},
|
|
233
|
-
{
|
|
234
|
-
title: "接入客户编辑表单",
|
|
235
|
-
description: "在列表页基础上补齐新增、编辑和字段校验,形成完整业务闭环。",
|
|
236
|
-
icon: <CodeOutlined />,
|
|
237
|
-
tags: ["表单开发", "写入校验"],
|
|
238
|
-
prompt: `请给客户列表页增加新增客户和编辑客户能力。
|
|
239
|
-
先确认客户模型里可写字段、必填字段和选项字段。
|
|
240
|
-
表单需要包含客户名称、联系人、联系电话、客户等级、负责人和备注。
|
|
241
|
-
提交后使用 @lovrabet/sdk 写入数据,并刷新列表。`,
|
|
242
|
-
commands: [
|
|
243
|
-
"rabetbase dataset detail",
|
|
244
|
-
"rabetbase dataset operations",
|
|
245
|
-
"rabetbase api pull",
|
|
246
|
-
],
|
|
247
|
-
docUrl: feishuDocs.sdk,
|
|
248
|
-
docLabel: "TypeScript SDK",
|
|
249
|
-
},
|
|
250
|
-
{
|
|
251
|
-
title: "改造销售看板",
|
|
252
|
-
description: "把示例看板变成客户活跃度、跟进转化和销售机会分析页。",
|
|
253
|
-
icon: <DashboardOutlined />,
|
|
254
|
-
tags: ["二次开发", "统计看板"],
|
|
255
|
-
prompt: `请把 /dashboard 改造成销售客户看板。
|
|
256
|
-
先读取当前 SDK 模型配置,确认客户、跟进记录和销售机会可用字段。
|
|
257
|
-
页面展示客户总数、本周新增客户、待跟进客户、销售机会金额和最近跟进列表。
|
|
258
|
-
不要写死模拟接口,优先使用项目里的 SDK 客户端。`,
|
|
259
|
-
commands: [
|
|
260
|
-
"rabetbase api pull",
|
|
261
|
-
"rabetbase dataset detail",
|
|
262
|
-
"rabetbase run build",
|
|
263
|
-
],
|
|
264
|
-
docUrl: feishuDocs.systemPageSdk,
|
|
265
|
-
docLabel: "系统页面开发",
|
|
266
|
-
},
|
|
267
|
-
{
|
|
268
|
-
title: "发布接入主应用",
|
|
269
|
-
description:
|
|
270
|
-
"让 Agent 检查构建产物、Lovrabet 主应用接入方式、菜单和路由配置。",
|
|
271
|
-
icon: <DeploymentUnitOutlined />,
|
|
272
|
-
tags: ["构建检查", "主应用接入"],
|
|
273
|
-
prompt: `请检查这个 React 子应用是否可以接入 Lovrabet 主应用。
|
|
274
|
-
确认构建产物、页面路由、basename、菜单同步和 import 加载配置。
|
|
275
|
-
如果发现缺口,请直接修复或列出需要我确认的项。`,
|
|
276
|
-
commands: [
|
|
277
|
-
"rabetbase run build",
|
|
278
|
-
"rabetbase run preview",
|
|
279
|
-
"rabetbase menu sync",
|
|
280
|
-
],
|
|
281
|
-
docUrl: feishuDocs.core,
|
|
282
|
-
docLabel: "核心研发能力",
|
|
283
|
-
},
|
|
284
|
-
];
|
|
285
|
-
|
|
286
|
-
const pageEntries = [
|
|
287
|
-
{
|
|
288
|
-
title: "SDK 演示",
|
|
289
|
-
path: "/sdk-demo",
|
|
290
|
-
description:
|
|
291
|
-
"集中验证 filter、getOne、create、update、delete 等 SDK 调用。",
|
|
292
|
-
icon: <ApiOutlined />,
|
|
293
|
-
tags: ["SDK", "API"],
|
|
294
|
-
},
|
|
295
|
-
{
|
|
296
|
-
title: "工作台",
|
|
297
|
-
path: "/workbench",
|
|
298
|
-
description: "面向日常运营的概览页结构,适合扩展成业务人员首页。",
|
|
299
|
-
icon: <DashboardOutlined />,
|
|
300
|
-
tags: ["运营", "概览"],
|
|
301
|
-
},
|
|
302
|
-
{
|
|
303
|
-
title: "数据看板",
|
|
304
|
-
path: "/dashboard",
|
|
305
|
-
description: "用图表和指标卡展示业务数据,适合作为管理驾驶舱起点。",
|
|
306
|
-
icon: <DatabaseOutlined />,
|
|
307
|
-
tags: ["图表", "指标"],
|
|
308
|
-
},
|
|
309
|
-
{
|
|
310
|
-
title: "数据大屏",
|
|
311
|
-
path: "/data-screen",
|
|
312
|
-
description: "全屏展示型页面示例,适合投屏、会议室和实时监控场景。",
|
|
313
|
-
icon: <BarChartOutlined />,
|
|
314
|
-
tags: ["大屏", "实时"],
|
|
315
|
-
},
|
|
316
|
-
];
|
|
317
|
-
|
|
318
|
-
const integrationSteps = [
|
|
319
|
-
"让 Agent 确认当前项目上下文里已有 AppCode。",
|
|
320
|
-
"让 Agent 刷新 SDK 类型,保持本地模型与平台数据模型一致。",
|
|
321
|
-
"让 Agent 构建并检查可发布到 CDN 的静态产物。",
|
|
322
|
-
"在 Lovrabet 主应用新增或更新页面,选择 import 接入方式。",
|
|
323
|
-
"让 Agent 核对菜单、路由、basename 和主应用访问路径。",
|
|
324
|
-
];
|
|
325
|
-
|
|
326
|
-
return (
|
|
327
|
-
<main className={styles.homepage}>
|
|
328
|
-
<section className={styles.hero}>
|
|
329
|
-
<div className={styles.heroCopy}>
|
|
330
|
-
<Tag color="blue" icon={<RocketOutlined />}>
|
|
331
|
-
Agent-first Rabetbase Template
|
|
332
|
-
</Tag>
|
|
333
|
-
<Title level={1} className={styles.heroTitle}>
|
|
334
|
-
用 Agent 开发 Lovrabet React 子应用
|
|
335
|
-
</Title>
|
|
336
|
-
<Paragraph className={styles.heroText}>
|
|
337
|
-
这是可运行的 React 微前端模板。描述页面目标,Agent
|
|
338
|
-
会读取项目上下文、调用 SDK、改页面并完成构建检查。
|
|
339
|
-
</Paragraph>
|
|
340
|
-
<div className={styles.surfaceRow}>
|
|
341
|
-
{agentSurfaces.map((name) => (
|
|
342
|
-
<Tag key={name}>{name}</Tag>
|
|
343
|
-
))}
|
|
344
|
-
</div>
|
|
345
|
-
<Space size={12} wrap className={styles.heroActions}>
|
|
346
|
-
<Link to="/sdk-demo">
|
|
347
|
-
<Button type="primary" icon={<ApiOutlined />}>
|
|
348
|
-
查看 SDK 演示
|
|
349
|
-
</Button>
|
|
350
|
-
</Link>
|
|
351
|
-
<Button
|
|
352
|
-
href={feishuDocs.systemPageSdk}
|
|
353
|
-
target="_blank"
|
|
354
|
-
rel="noopener noreferrer"
|
|
355
|
-
icon={<BookOutlined />}
|
|
356
|
-
>
|
|
357
|
-
页面开发文档
|
|
358
|
-
</Button>
|
|
359
|
-
<Button
|
|
360
|
-
href={feishuDocs.sdk}
|
|
361
|
-
target="_blank"
|
|
362
|
-
rel="noopener noreferrer"
|
|
363
|
-
icon={<LinkOutlined />}
|
|
364
|
-
>
|
|
365
|
-
SDK 文档
|
|
366
|
-
</Button>
|
|
367
|
-
{isConfigured && appCode && (
|
|
368
|
-
<Button
|
|
369
|
-
href={`https://app.lovrabet.com/app/${appCode}/data/intro/`}
|
|
370
|
-
target="_blank"
|
|
371
|
-
icon={<AppstoreOutlined />}
|
|
372
|
-
>
|
|
373
|
-
应用配置后台
|
|
374
|
-
</Button>
|
|
375
|
-
)}
|
|
376
|
-
</Space>
|
|
377
|
-
</div>
|
|
378
|
-
|
|
379
|
-
<aside className={styles.statusPanel}>
|
|
380
|
-
<div className={styles.statusHeader}>
|
|
381
|
-
<div>
|
|
382
|
-
<Text type="secondary">项目状态</Text>
|
|
383
|
-
<Title level={2}>项目上下文</Title>
|
|
384
|
-
</div>
|
|
385
|
-
<Tag
|
|
386
|
-
color={
|
|
387
|
-
loading ? "processing" : isConfigured ? "success" : "warning"
|
|
388
|
-
}
|
|
389
|
-
>
|
|
390
|
-
{statusLabel}
|
|
391
|
-
</Tag>
|
|
392
|
-
</div>
|
|
393
|
-
<div className={styles.statusCode}>
|
|
394
|
-
<Text type="secondary">AppCode</Text>
|
|
395
|
-
<strong>{loading ? "读取中" : displayAppCode}</strong>
|
|
396
|
-
</div>
|
|
397
|
-
<div className={styles.statusGrid}>
|
|
398
|
-
<div>
|
|
399
|
-
<Text type="secondary">API 文件</Text>
|
|
400
|
-
<strong>src/api/api.ts</strong>
|
|
401
|
-
</div>
|
|
402
|
-
<div>
|
|
403
|
-
<Text type="secondary">路由模式</Text>
|
|
404
|
-
<strong>src/pages 自动路由</strong>
|
|
405
|
-
</div>
|
|
406
|
-
<div>
|
|
407
|
-
<Text type="secondary">SDK 客户端</Text>
|
|
408
|
-
<strong>src/api/client.ts</strong>
|
|
409
|
-
</div>
|
|
410
|
-
<div>
|
|
411
|
-
<Text type="secondary">推荐下一步</Text>
|
|
412
|
-
<strong>开发客户列表页</strong>
|
|
413
|
-
</div>
|
|
414
|
-
</div>
|
|
415
|
-
<div className={styles.statusLinks}>
|
|
416
|
-
<Button
|
|
417
|
-
block
|
|
418
|
-
href={feishuDocs.systemPageSdk}
|
|
419
|
-
target="_blank"
|
|
420
|
-
rel="noopener noreferrer"
|
|
421
|
-
icon={<BookOutlined />}
|
|
422
|
-
>
|
|
423
|
-
系统页面开发文档
|
|
424
|
-
</Button>
|
|
425
|
-
<Button
|
|
426
|
-
block
|
|
427
|
-
href={feishuDocs.root}
|
|
428
|
-
target="_blank"
|
|
429
|
-
rel="noopener noreferrer"
|
|
430
|
-
icon={<LinkOutlined />}
|
|
431
|
-
>
|
|
432
|
-
Rabetbase 文库首页
|
|
433
|
-
</Button>
|
|
434
|
-
</div>
|
|
435
|
-
</aside>
|
|
436
|
-
</section>
|
|
437
|
-
|
|
438
|
-
{!loading && !isConfigured && (
|
|
439
|
-
<Alert
|
|
440
|
-
type="warning"
|
|
441
|
-
showIcon
|
|
442
|
-
icon={<WarningOutlined />}
|
|
443
|
-
className={styles.setupAlert}
|
|
444
|
-
message="项目尚未配置 AppCode"
|
|
445
|
-
description={
|
|
446
|
-
<div className={styles.alertBody}>
|
|
447
|
-
<Paragraph>
|
|
448
|
-
直接把下面这段话发给 Claude Code、Cursor 或 Codex。Agent
|
|
449
|
-
会根据项目情况补齐配置并刷新 SDK 模型。
|
|
450
|
-
</Paragraph>
|
|
451
|
-
<CopyableCode
|
|
452
|
-
code={setupPrompt}
|
|
453
|
-
label="可直接输入的 Prompt"
|
|
454
|
-
compact
|
|
455
|
-
/>
|
|
456
|
-
</div>
|
|
457
|
-
}
|
|
458
|
-
/>
|
|
459
|
-
)}
|
|
460
|
-
|
|
461
|
-
<section className={styles.section}>
|
|
462
|
-
<div className={styles.sectionHeader}>
|
|
463
|
-
<div>
|
|
464
|
-
<Text type="secondary">飞书文库导航</Text>
|
|
465
|
-
<Title level={2}>按任务选择下一步</Title>
|
|
466
|
-
</div>
|
|
467
|
-
</div>
|
|
468
|
-
<div className={styles.taskGrid}>
|
|
469
|
-
{taskGuides.map((item) => (
|
|
470
|
-
<a
|
|
471
|
-
key={item.title}
|
|
472
|
-
className={styles.taskCard}
|
|
473
|
-
href={item.url}
|
|
474
|
-
target="_blank"
|
|
475
|
-
rel="noopener noreferrer"
|
|
476
|
-
>
|
|
477
|
-
<span className={styles.iconBox}>{item.icon}</span>
|
|
478
|
-
<span>
|
|
479
|
-
<strong>{item.title}</strong>
|
|
480
|
-
<span>{item.description}</span>
|
|
481
|
-
</span>
|
|
482
|
-
<em>
|
|
483
|
-
{item.action} <ArrowRightOutlined />
|
|
484
|
-
</em>
|
|
485
|
-
</a>
|
|
486
|
-
))}
|
|
487
|
-
</div>
|
|
488
|
-
</section>
|
|
489
|
-
|
|
490
|
-
<section className={styles.section}>
|
|
491
|
-
<div className={styles.sectionHeader}>
|
|
492
|
-
<div>
|
|
493
|
-
<Text type="secondary">在线文库</Text>
|
|
494
|
-
<Title level={2}>常用入口</Title>
|
|
495
|
-
</div>
|
|
496
|
-
</div>
|
|
497
|
-
<div className={styles.docGrid}>
|
|
498
|
-
{docLinks.map((item) => (
|
|
499
|
-
<a
|
|
500
|
-
key={item.title}
|
|
501
|
-
className={styles.docCard}
|
|
502
|
-
href={item.url}
|
|
503
|
-
target="_blank"
|
|
504
|
-
rel="noopener noreferrer"
|
|
505
|
-
>
|
|
506
|
-
<span className={styles.routeIcon}>{item.icon}</span>
|
|
507
|
-
<strong>{item.title}</strong>
|
|
508
|
-
<span>{item.description}</span>
|
|
509
|
-
<em>
|
|
510
|
-
打开文档 <ArrowRightOutlined />
|
|
511
|
-
</em>
|
|
512
|
-
</a>
|
|
513
|
-
))}
|
|
514
|
-
</div>
|
|
515
|
-
</section>
|
|
516
|
-
|
|
517
|
-
<section className={styles.section}>
|
|
518
|
-
<div className={styles.sectionHeader}>
|
|
519
|
-
<div>
|
|
520
|
-
<Text type="secondary">AI 开发方式</Text>
|
|
521
|
-
<Title level={2}>直接输入这些 Prompt</Title>
|
|
522
|
-
</div>
|
|
523
|
-
<Button
|
|
524
|
-
href={feishuDocs.systemPageSdk}
|
|
525
|
-
target="_blank"
|
|
526
|
-
rel="noopener noreferrer"
|
|
527
|
-
icon={<ToolOutlined />}
|
|
528
|
-
>
|
|
529
|
-
查看页面开发文档
|
|
530
|
-
</Button>
|
|
531
|
-
</div>
|
|
532
|
-
<div className={styles.promptGrid}>
|
|
533
|
-
{promptCards.map((item) => (
|
|
534
|
-
<Card key={item.title} className={styles.promptCard}>
|
|
535
|
-
<div className={styles.cardHeading}>
|
|
536
|
-
<span className={styles.iconBox}>{item.icon}</span>
|
|
537
|
-
<div>
|
|
538
|
-
<Title level={3}>{item.title}</Title>
|
|
539
|
-
<Paragraph>{item.description}</Paragraph>
|
|
540
|
-
</div>
|
|
541
|
-
</div>
|
|
542
|
-
<div className={styles.tagRow}>
|
|
543
|
-
{item.tags.map((tag) => (
|
|
544
|
-
<Tag key={tag}>{tag}</Tag>
|
|
545
|
-
))}
|
|
546
|
-
</div>
|
|
547
|
-
<div className={styles.commandList}>
|
|
548
|
-
<Text type="secondary">AI 可能调用</Text>
|
|
549
|
-
<div>
|
|
550
|
-
{item.commands.map((command) => (
|
|
551
|
-
<Text code key={command}>
|
|
552
|
-
{command}
|
|
553
|
-
</Text>
|
|
554
|
-
))}
|
|
555
|
-
</div>
|
|
556
|
-
</div>
|
|
557
|
-
<CopyableCode
|
|
558
|
-
code={item.prompt}
|
|
559
|
-
label="可直接输入的 Prompt"
|
|
560
|
-
compact
|
|
561
|
-
/>
|
|
562
|
-
<Button
|
|
563
|
-
type="link"
|
|
564
|
-
href={item.docUrl}
|
|
565
|
-
target="_blank"
|
|
566
|
-
rel="noopener noreferrer"
|
|
567
|
-
className={styles.inlineDocLink}
|
|
568
|
-
>
|
|
569
|
-
{item.docLabel} <ArrowRightOutlined />
|
|
570
|
-
</Button>
|
|
571
|
-
</Card>
|
|
572
|
-
))}
|
|
573
|
-
</div>
|
|
574
|
-
</section>
|
|
575
|
-
|
|
576
|
-
<section className={styles.section}>
|
|
577
|
-
<div className={styles.sectionHeader}>
|
|
578
|
-
<div>
|
|
579
|
-
<Text type="secondary">页面示例</Text>
|
|
580
|
-
<Title level={2}>内置页面入口</Title>
|
|
581
|
-
</div>
|
|
582
|
-
</div>
|
|
583
|
-
<div className={styles.pageGrid}>
|
|
584
|
-
{pageEntries.map((entry) => (
|
|
585
|
-
<Card key={entry.path} className={styles.routeCard}>
|
|
586
|
-
<div className={styles.routeIcon}>{entry.icon}</div>
|
|
587
|
-
<Title level={3}>{entry.title}</Title>
|
|
588
|
-
<Paragraph>{entry.description}</Paragraph>
|
|
589
|
-
<div className={styles.tagRow}>
|
|
590
|
-
{entry.tags.map((tag) => (
|
|
591
|
-
<Tag key={tag}>{tag}</Tag>
|
|
592
|
-
))}
|
|
593
|
-
</div>
|
|
594
|
-
<Link className={styles.routeLink} to={entry.path}>
|
|
595
|
-
打开页面 <ArrowRightOutlined />
|
|
596
|
-
</Link>
|
|
597
|
-
</Card>
|
|
598
|
-
))}
|
|
599
|
-
</div>
|
|
600
|
-
</section>
|
|
601
|
-
|
|
602
|
-
<section className={styles.bottomGrid}>
|
|
603
|
-
<Card className={styles.sectionCard}>
|
|
604
|
-
<div className={styles.cardTitleLine}>
|
|
605
|
-
<CloudUploadOutlined />
|
|
606
|
-
<Title level={2}>接入主应用检查清单</Title>
|
|
607
|
-
</div>
|
|
608
|
-
<ol className={styles.checkList}>
|
|
609
|
-
{integrationSteps.map((step) => (
|
|
610
|
-
<li key={step}>
|
|
611
|
-
<CheckCircleOutlined />
|
|
612
|
-
<span>{step}</span>
|
|
613
|
-
</li>
|
|
614
|
-
))}
|
|
615
|
-
</ol>
|
|
616
|
-
</Card>
|
|
617
|
-
|
|
618
|
-
<Card className={styles.sectionCard}>
|
|
619
|
-
<div className={styles.cardTitleLine}>
|
|
620
|
-
<ToolOutlined />
|
|
621
|
-
<Title level={2}>Agent 开发提示</Title>
|
|
622
|
-
</div>
|
|
623
|
-
<Paragraph className={styles.mutedText}>
|
|
624
|
-
日常开发时,直接描述业务页面、数据来源、交互方式和验收标准。
|
|
625
|
-
Agent 会结合当前项目配置、SDK 模型和飞书文库完成实现。
|
|
626
|
-
</Paragraph>
|
|
627
|
-
<CopyableCode
|
|
628
|
-
code={`请基于当前 Lovrabet React 子应用开发客户列表页。
|
|
629
|
-
先确认可用的客户数据模型和字段。
|
|
630
|
-
页面需要包含筛选、表格、详情抽屉和新增表单。
|
|
631
|
-
数据读写使用项目里的 @lovrabet/sdk,并在完成后运行构建检查。`}
|
|
632
|
-
label="推荐起步 Prompt"
|
|
633
|
-
compact
|
|
634
|
-
/>
|
|
635
|
-
</Card>
|
|
636
|
-
</section>
|
|
637
|
-
</main>
|
|
638
|
-
);
|
|
639
|
-
}
|
|
640
|
-
|
|
641
|
-
export default HomePage;
|