You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@inlong.apache.org by do...@apache.org on 2023/03/31 06:40:29 UTC

[inlong] branch master updated: [INLONG-7734][Dashboard] Support new layout design & dark theme (#7735)

This is an automated email from the ASF dual-hosted git repository.

dockerzhang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/inlong.git


The following commit(s) were added to refs/heads/master by this push:
     new 8e542c0e1 [INLONG-7734][Dashboard] Support new layout design & dark theme (#7735)
8e542c0e1 is described below

commit 8e542c0e1c42ed8b0634c83fbe17ae4aae0a7dfb
Author: Daniel <le...@apache.org>
AuthorDate: Fri Mar 31 14:40:22 2023 +0800

    [INLONG-7734][Dashboard] Support new layout design & dark theme (#7735)
---
 inlong-dashboard/craco.config.ts                   |  20 -
 inlong-dashboard/package-lock.json                 | 905 ++++++++++++++-------
 inlong-dashboard/package.json                      |   7 +-
 .../components/Layout/NavWidget/index.module.less  |  35 -
 inlong-dashboard/src/configs/default/conf.ts       |   6 +-
 inlong-dashboard/src/configs/menus/index.ts        |   2 +-
 inlong-dashboard/src/configs/routes/conf.ts        |  34 +-
 inlong-dashboard/src/{ => core}/App.tsx            |  12 +-
 .../src/{models => core/stores}/index.ts           |   0
 inlong-dashboard/src/{ => core}/utils/index.ts     |   0
 inlong-dashboard/src/{ => core}/utils/pattern.ts   |   0
 inlong-dashboard/src/{ => core}/utils/request.ts   |   0
 .../utils/requestConcurrentMiddleware.ts           |   0
 inlong-dashboard/src/i18n.ts                       |   2 +-
 inlong-dashboard/src/index.tsx                     |   2 +-
 inlong-dashboard/src/loaders/Loader.ts             |   2 +-
 .../src/loaders/clusters/ClusterDefaultLoader.ts   |   2 +-
 .../src/loaders/consumes/ConsumeDefaultLoader.ts   |   2 +-
 .../src/loaders/groups/GroupDefaultLoader.ts       |   2 +-
 .../src/loaders/nodes/NodeDefaultLoader.ts         |   2 +-
 .../src/loaders/sinks/SinkDefaultLoader.ts         |   2 +-
 .../src/loaders/sources/SourceDefaultLoader.ts     |   2 +-
 .../src/loaders/streams/StreamDefaultLoader.ts     |   2 +-
 .../src/{metas => plugins}/DataStatic.ts           |   0
 .../src/{metas => plugins}/DataWithBackend.ts      |   0
 .../src/{metas => plugins}/RenderList.ts           |   0
 .../src/{metas => plugins}/RenderRow.ts            |   2 +-
 .../clusters/common/ClusterDefaultInfo.ts          |   8 +-
 .../clusters/common/ClusterInfo.ts                 |   0
 .../{metas => plugins}/clusters/defaults/Agent.ts  |   6 +-
 .../clusters/defaults/DataProxy.ts                 |   6 +-
 .../{metas => plugins}/clusters/defaults/Kafka.ts  |   6 +-
 .../{metas => plugins}/clusters/defaults/Pulsar.ts |   6 +-
 .../{metas => plugins}/clusters/defaults/TubeMq.ts |   6 +-
 .../{metas => plugins}/clusters/defaults/index.ts  |   2 +-
 .../{metas => plugins}/clusters/extends/index.ts   |   2 +-
 .../src/{metas => plugins}/clusters/index.ts       |   0
 .../src/{metas => plugins}/clusters/types.ts       |   0
 .../consumes/common/ConsumeDefaultInfo.ts          |  10 +-
 .../consumes/common/ConsumeInfo.ts                 |   0
 .../{metas => plugins}/consumes/common/status.tsx  |   4 +-
 .../{metas => plugins}/consumes/defaults/Kafka.ts  |   6 +-
 .../{metas => plugins}/consumes/defaults/Pulsar.ts |   6 +-
 .../{metas => plugins}/consumes/defaults/TubeMq.ts |   6 +-
 .../{metas => plugins}/consumes/defaults/index.ts  |   2 +-
 .../{metas => plugins}/consumes/extends/index.ts   |   2 +-
 .../src/{metas => plugins}/consumes/index.ts       |   0
 .../src/{metas => plugins}/consumes/types.ts       |   0
 .../groups/common/GroupDefaultInfo.ts              |   8 +-
 .../{metas => plugins}/groups/common/GroupInfo.ts  |   0
 .../{metas => plugins}/groups/common/status.tsx    |   4 +-
 .../{metas => plugins}/groups/defaults/Kafka.ts    |   6 +-
 .../{metas => plugins}/groups/defaults/Pulsar.ts   |   6 +-
 .../{metas => plugins}/groups/defaults/TubeMq.ts   |   6 +-
 .../{metas => plugins}/groups/defaults/index.ts    |   2 +-
 .../src/{metas => plugins}/groups/extends/index.ts |   2 +-
 .../src/{metas => plugins}/groups/index.ts         |   0
 .../src/{metas => plugins}/groups/types.ts         |   0
 inlong-dashboard/src/{metas => plugins}/index.ts   |  17 +-
 .../nodes/common/NodeDefaultInfo.ts                |   8 +-
 .../{metas => plugins}/nodes/common/NodeInfo.ts    |   0
 .../src/{metas => plugins}/nodes/common/dao.ts     |   4 +-
 .../nodes/defaults/ClickHouse.ts                   |   6 +-
 .../nodes/defaults/Elasticsearch.ts                |   6 +-
 .../src/{metas => plugins}/nodes/defaults/Hive.ts  |   6 +-
 .../src/{metas => plugins}/nodes/defaults/Hudi.ts  |   6 +-
 .../{metas => plugins}/nodes/defaults/Iceberg.ts   |   6 +-
 .../src/{metas => plugins}/nodes/defaults/Kudu.ts  |   6 +-
 .../src/{metas => plugins}/nodes/defaults/MySQL.ts |   6 +-
 .../src/{metas => plugins}/nodes/defaults/Redis.ts |   6 +-
 .../{metas => plugins}/nodes/defaults/StarRocks.ts |   6 +-
 .../src/{metas => plugins}/nodes/defaults/index.ts |   2 +-
 .../src/{metas => plugins}/nodes/extends/index.ts  |   2 +-
 .../src/{metas => plugins}/nodes/index.ts          |   0
 .../src/{metas => plugins}/nodes/types.ts          |   0
 .../sinks/common/SinkDefaultInfo.ts                |   6 +-
 .../{metas => plugins}/sinks/common/SinkInfo.ts    |   0
 .../sinks/common/sourceFields.ts                   |   2 +-
 .../sinks/common}/status.tsx                       |   4 +-
 .../sinks/defaults/ClickHouse.ts                   |  10 +-
 .../src/{metas => plugins}/sinks/defaults/Doris.ts |   8 +-
 .../sinks/defaults/Elasticsearch.ts                |  10 +-
 .../{metas => plugins}/sinks/defaults/Greenplum.ts |   8 +-
 .../src/{metas => plugins}/sinks/defaults/HBase.ts |   8 +-
 .../src/{metas => plugins}/sinks/defaults/Hive.ts  |  10 +-
 .../src/{metas => plugins}/sinks/defaults/Hudi.ts  |  10 +-
 .../{metas => plugins}/sinks/defaults/Iceberg.ts   |  10 +-
 .../src/{metas => plugins}/sinks/defaults/Kafka.ts |   6 +-
 .../src/{metas => plugins}/sinks/defaults/Kudu.ts  |  10 +-
 .../src/{metas => plugins}/sinks/defaults/MySQL.ts |  10 +-
 .../{metas => plugins}/sinks/defaults/Oracle.ts    |   8 +-
 .../sinks/defaults/PostgreSQL.ts                   |   8 +-
 .../src/{metas => plugins}/sinks/defaults/Redis.ts |  10 +-
 .../{metas => plugins}/sinks/defaults/SQLServer.ts |   8 +-
 .../{metas => plugins}/sinks/defaults/StarRocks.ts |  10 +-
 .../sinks/defaults/TDSQLPostgreSQL.ts              |   8 +-
 .../src/{metas => plugins}/sinks/defaults/index.ts |   2 +-
 .../src/{metas => plugins}/sinks/extends/index.ts  |   2 +-
 .../src/{metas => plugins}/sinks/index.ts          |   0
 .../src/{metas => plugins}/sinks/types.ts          |   0
 .../sources/common/SourceDefaultInfo.ts            |   6 +-
 .../sources/common/SourceInfo.ts                   |   0
 .../{metas => plugins}/sources/common/status.tsx   |   4 +-
 .../sources/defaults/AutoPush.ts                   |   6 +-
 .../{metas => plugins}/sources/defaults/File.ts    |   8 +-
 .../{metas => plugins}/sources/defaults/Hudi.ts    |   8 +-
 .../{metas => plugins}/sources/defaults/MQTT.ts    |   6 +-
 .../{metas => plugins}/sources/defaults/Mongodb.ts |   6 +-
 .../sources/defaults/MySQLBinlog.ts                |   6 +-
 .../{metas => plugins}/sources/defaults/Oracle.ts  |   6 +-
 .../sources/defaults/PostgreSQL.ts                 |   6 +-
 .../{metas => plugins}/sources/defaults/Redis.ts   |   6 +-
 .../sources/defaults/SQLServer.ts                  |   6 +-
 .../{metas => plugins}/sources/defaults/index.ts   |   2 +-
 .../{metas => plugins}/sources/extends/index.ts    |   2 +-
 .../src/{metas => plugins}/sources/index.ts        |   0
 .../src/{metas => plugins}/sources/types.ts        |   0
 .../streams/common/StreamDefaultInfo.ts            |  10 +-
 .../streams/common/StreamInfo.ts                   |   0
 .../{metas => plugins}/streams/common/status.tsx   |   4 +-
 .../{metas => plugins}/streams/defaults/index.ts   |   2 +-
 .../{metas => plugins}/streams/extends/index.ts    |   2 +-
 .../src/{metas => plugins}/streams/index.ts        |   0
 .../src/{metas => plugins}/streams/types.ts        |   0
 inlong-dashboard/src/{metas => plugins}/types.ts   |   0
 inlong-dashboard/src/themes/antd.var.less          |  71 --
 .../{ => ui}/components/Charts/generate-config.ts  |   2 +-
 .../src/{ => ui}/components/Charts/index.tsx       |   0
 .../src/{ => ui}/components/DashboardCard/Card.tsx |   0
 .../{ => ui}/components/DashboardCard/CardList.tsx |   0
 .../components/DashboardCard/index.module.less     |   2 +-
 .../src/{ => ui}/components/DashboardCard/index.ts |   0
 .../components/EditableTable/index.module.less     |   0
 .../{ => ui}/components/EditableTable/index.tsx    |   4 +-
 .../components/FormGenerator/FormGenerator.tsx     |   4 +-
 .../components/FormGenerator/FormItemContent.tsx   |   2 +-
 .../{ => ui}/components/FormGenerator/index.tsx    |   0
 .../{ => ui}/components/FormGenerator/plugins.tsx  |   2 +-
 .../{ => ui}/components/GroupLogs/GroupLogs.tsx    |  16 +-
 .../src/{ => ui}/components/GroupLogs/index.ts     |   0
 .../src/{ => ui}/components/HighSelect/index.tsx   |   2 +-
 .../src/{ => ui}/components/HighTable/index.tsx    |   0
 .../components/HighTable/style.module.less         |   0
 .../{ => ui}/components/Icons/DashCancelled.svg    |   0
 .../src/{ => ui}/components/Icons/DashPending.svg  |   0
 .../src/{ => ui}/components/Icons/DashRejected.svg |   0
 .../{ => ui}/components/Icons/DashToBeAssigned.svg |   0
 .../src/{ => ui}/components/Icons/DashTotal.svg    |   0
 .../{ => ui}/components/Icons/DashTotalRevert.svg  |   0
 .../src/{ => ui}/components/Icons/index.ts         |   0
 .../components/Layout/NavWidget/KeyModal.tsx       |  10 +-
 .../components/Layout/NavWidget/LocaleSelect.tsx   |   6 +-
 .../components/Layout/NavWidget/PasswordModal.tsx  |  10 +-
 .../{ => ui}/components/Layout/NavWidget/index.tsx |  25 +-
 .../{ => ui/components/Layout}/defaultSettings.js  |   5 +-
 .../src/{ => ui}/components/Layout/index.tsx       |  43 +-
 .../src/{ => ui}/components/NodeSelect/index.tsx   |   2 +-
 .../components/PageContainer/Container.tsx         |   0
 .../components/PageContainer/PageContainer.tsx     |  16 +-
 .../components/PageContainer/index.module.less     |   0
 .../src/{ => ui}/components/PageContainer/index.ts |   0
 .../{ => ui}/components/Provider/antd.cover.less   |   5 +
 .../src/{ => ui}/components/Provider/index.tsx     |   8 +-
 .../src/{ => ui}/components/StatusTag/index.tsx    |   2 +-
 .../src/{ => ui}/components/TextSwitch/index.tsx   |   2 +-
 .../src/{ => ui}/components/UserSelect/index.tsx   |   6 +-
 inlong-dashboard/src/{ => ui}/hooks/index.ts       |   0
 inlong-dashboard/src/{ => ui}/locales/cn.json      |   0
 inlong-dashboard/src/{ => ui}/locales/en.json      |   0
 .../src/{ => ui}/locales/extends/cn.json           |   0
 .../src/{ => ui}/locales/extends/en.json           |   0
 .../pages/ClusterTags/ClusterBindModal.tsx         |  10 +-
 .../src/{ => ui}/pages/ClusterTags/ClusterList.tsx |  10 +-
 .../{ => ui}/pages/ClusterTags/TagDetailModal.tsx  |  12 +-
 .../{ => ui}/pages/ClusterTags/index.module.less   |   0
 .../src/{ => ui}/pages/ClusterTags/index.tsx       |   8 +-
 .../src/{ => ui}/pages/Clusters/CreateModal.tsx    |  14 +-
 .../src/{ => ui}/pages/Clusters/NodeEditModal.tsx  |  12 +-
 .../src/{ => ui}/pages/Clusters/NodeManage.tsx     |  12 +-
 .../src/{ => ui}/pages/Clusters/index.tsx          |  14 +-
 .../src/{ => ui}/pages/ConsumeDashboard/config.tsx |   4 +-
 .../src/{ => ui}/pages/ConsumeDashboard/index.tsx  |  14 +-
 .../{ => ui}/pages/ConsumeDetail/Info/config.tsx   |   4 +-
 .../{ => ui}/pages/ConsumeDetail/Info/index.tsx    |   8 +-
 .../src/{ => ui}/pages/ConsumeDetail/common.d.ts   |   0
 .../src/{ => ui}/pages/ConsumeDetail/index.tsx     |   6 +-
 inlong-dashboard/src/{ => ui}/pages/Error/404.tsx  |   0
 .../src/{ => ui}/pages/GroupDashboard/config.tsx   |   4 +-
 .../src/{ => ui}/pages/GroupDashboard/index.tsx    |  16 +-
 .../{ => ui}/pages/GroupDetail/Audit/config.tsx    |   2 +-
 .../src/{ => ui}/pages/GroupDetail/Audit/index.tsx |  10 +-
 .../pages/GroupDetail/DataSources/DetailModal.tsx  |  12 +-
 .../pages/GroupDetail/DataSources/index.tsx        |  16 +-
 .../pages/GroupDetail/DataStorage/DetailModal.tsx  |  16 +-
 .../pages/GroupDetail/DataStorage/index.tsx        |  16 +-
 .../pages/GroupDetail/DataStorage}/status.tsx      |   4 +-
 .../GroupDetail/DataStream/SourceSinkCard.tsx      |   0
 .../GroupDetail/DataStream/StreamItemModal.tsx     |  12 +-
 .../pages/GroupDetail/DataStream/config.tsx        |   2 +-
 .../pages/GroupDetail/DataStream/helper.ts         |   0
 .../pages/GroupDetail/DataStream/index.tsx         |  10 +-
 .../src/{ => ui}/pages/GroupDetail/Info/config.tsx |   4 +-
 .../src/{ => ui}/pages/GroupDetail/Info/index.tsx  |  10 +-
 .../src/{ => ui}/pages/GroupDetail/common.d.ts     |   0
 .../src/{ => ui}/pages/GroupDetail/index.tsx       |   8 +-
 .../src/{ => ui}/pages/Login/index.module.less     |   0
 .../src/{ => ui}/pages/Login/index.tsx             |   4 +-
 .../src/{ => ui}/pages/Nodes/DetailModal.tsx       |  16 +-
 .../src/{ => ui}/pages/Nodes/index.tsx             |  10 +-
 .../src/{ => ui}/pages/Process/Applies/config.tsx  |   2 +-
 .../src/{ => ui}/pages/Process/Applies/index.tsx   |   6 +-
 .../src/{ => ui}/pages/Process/Applies/status.tsx  |   4 +-
 .../{ => ui}/pages/Process/Approvals/config.tsx    |   2 +-
 .../src/{ => ui}/pages/Process/Approvals/index.tsx |   6 +-
 .../{ => ui}/pages/Process/Approvals/status.tsx    |   4 +-
 .../src/{ => ui}/pages/Process/index.tsx           |   8 +-
 .../src/{ => ui}/pages/ProcessDetail/Consume.tsx   |   2 +-
 .../{ => ui}/pages/ProcessDetail/ConsumeConfig.tsx |   2 +-
 .../src/{ => ui}/pages/ProcessDetail/Group.tsx     |   2 +-
 .../{ => ui}/pages/ProcessDetail/GroupConfig.tsx   |   2 +-
 .../src/{ => ui}/pages/ProcessDetail/Steps.tsx     |   0
 .../src/{ => ui}/pages/ProcessDetail/common.d.ts   |   2 +-
 .../src/{ => ui}/pages/ProcessDetail/index.tsx     |   8 +-
 .../pages/ProcessManagement/DetailModal.tsx        |  12 +-
 .../{ => ui}/pages/ProcessManagement/config.tsx    |   2 +-
 .../src/{ => ui}/pages/ProcessManagement/index.tsx |  10 +-
 .../{ => ui}/pages/UserManagement/DetailModal.tsx  |  10 +-
 .../src/{ => ui}/pages/UserManagement/config.tsx   |   2 +-
 .../src/{ => ui}/pages/UserManagement/index.tsx    |  10 +-
 .../src/{ => ui}/pages/UserManagement/status.tsx   |   2 +-
 inlong-dashboard/vite.config.ts                    |  18 -
 231 files changed, 1203 insertions(+), 964 deletions(-)

diff --git a/inlong-dashboard/craco.config.ts b/inlong-dashboard/craco.config.ts
index 8feaa6265..cb84fcf81 100644
--- a/inlong-dashboard/craco.config.ts
+++ b/inlong-dashboard/craco.config.ts
@@ -19,7 +19,6 @@
 
 import CracoLess from 'craco-less';
 import { CracoAliasPlugin } from 'react-app-alias';
-import AntdDayjsWebpackPlugin from 'antd-dayjs-webpack-plugin';
 import type { CracoConfig } from 'craco__craco';
 import dotenv from 'dotenv';
 
@@ -28,19 +27,6 @@ dotenv.config();
 
 const config: CracoConfig = {
   plugins: [
-    {
-      plugin: CracoLess,
-      options: {
-        lessLoaderOptions: {
-          lessOptions: {
-            modifyVars: {
-              hack: `true; @import "@/themes/antd.var.less";`,
-            },
-            javascriptEnabled: true,
-          },
-        },
-      },
-    },
     {
       plugin: CracoAliasPlugin,
       options: {
@@ -51,9 +37,6 @@ const config: CracoConfig = {
     },
   ],
   webpack: {
-    plugins: {
-      add: [new AntdDayjsWebpackPlugin()],
-    },
     configure: webpackConfig => {
       if (webpackConfig.resolve?.extensions && process.env.INLONG_ENV) {
         const tsIndex = webpackConfig.resolve.extensions.findIndex(item => item === '.ts');
@@ -62,9 +45,6 @@ const config: CracoConfig = {
       return webpackConfig;
     },
   },
-  babel: {
-    plugins: [['import', { libraryName: 'antd', libraryDirectory: 'lib', style: true }]],
-  },
 };
 
 export default config;
diff --git a/inlong-dashboard/package-lock.json b/inlong-dashboard/package-lock.json
index 9bf14ce47..5e5b426fa 100644
--- a/inlong-dashboard/package-lock.json
+++ b/inlong-dashboard/package-lock.json
@@ -30,19 +30,49 @@
       }
     },
     "@ant-design/colors": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-6.0.0.tgz",
-      "integrity": "sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ==",
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-7.0.0.tgz",
+      "integrity": "sha512-iVm/9PfGCbC0dSMBrz7oiEXZaaGH7ceU40OJEfKmyuzR9R5CRimJYPlRiFtMQGQcbNMea/ePcoIebi4ASGYXtg==",
       "requires": {
         "@ctrl/tinycolor": "^3.4.0"
       }
     },
+    "@ant-design/cssinjs": {
+      "version": "1.7.1",
+      "resolved": "https://registry.npmjs.org/@ant-design/cssinjs/-/cssinjs-1.7.1.tgz",
+      "integrity": "sha512-7pwBx1ozVXDKLXKrORRCetIxIvDxZLVSzj8hTuD/SYGXDPkMzT0PxvJIyBPixAJ/eqejFARP0hrgk4XREOgGbA==",
+      "requires": {
+        "@babel/runtime": "^7.11.1",
+        "@emotion/hash": "^0.8.0",
+        "@emotion/unitless": "^0.7.5",
+        "classnames": "^2.3.1",
+        "csstype": "^3.0.10",
+        "rc-util": "^5.27.0",
+        "stylis": "^4.0.13"
+      },
+      "dependencies": {
+        "csstype": {
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz",
+          "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw=="
+        },
+        "rc-util": {
+          "version": "5.29.3",
+          "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.29.3.tgz",
+          "integrity": "sha512-wX6ZwQTzY2v7phJBquN4mSEIFR0E0qumlENx0zjENtDvoVSq2s7cR95UidKRO1hOHfDsecsfM9D1gO4Kebs7fA==",
+          "requires": {
+            "@babel/runtime": "^7.18.3",
+            "react-is": "^16.12.0"
+          }
+        }
+      }
+    },
     "@ant-design/icons": {
-      "version": "4.7.0",
-      "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-4.7.0.tgz",
-      "integrity": "sha512-aoB4Z7JA431rt6d4u+8xcNPPCrdufSRMUOpxa1ab6mz1JCQZOEVolj2WVs/tDFmN62zzK30mNelEsprLYsSF3g==",
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-5.0.1.tgz",
+      "integrity": "sha512-ZyF4ksXCcdtwA/1PLlnFLcF/q8/MhwxXhKHh4oCHDA4Ip+ZzAHoICtyp4wZWfiCVDP0yuz3HsjyvuldHFb3wjA==",
       "requires": {
-        "@ant-design/colors": "^6.0.0",
+        "@ant-design/colors": "^7.0.0",
         "@ant-design/icons-svg": "^4.2.1",
         "@babel/runtime": "^7.11.2",
         "classnames": "^2.2.6",
@@ -55,31 +85,48 @@
       "integrity": "sha512-EB0iwlKDGpG93hW8f85CTJTs4SvMX7tt5ceupvhALp1IF44SeUFOMhKUOYqpsoYWQKAOuTRDMqn75rEaKDp0Xw=="
     },
     "@ant-design/pro-layout": {
-      "version": "6.38.19",
-      "resolved": "https://registry.npmjs.org/@ant-design/pro-layout/-/pro-layout-6.38.19.tgz",
-      "integrity": "sha512-GH88dJWvR2yuZL5K4fbIKm0PW3Y/LUsjC3xHZuazbaQJvHlFjm2L7xvSP3hd5FLkSABcbMVe6Ol6WC1/Br73FA==",
+      "version": "7.10.3",
+      "resolved": "https://registry.npmjs.org/@ant-design/pro-layout/-/pro-layout-7.10.3.tgz",
+      "integrity": "sha512-r8S+KqtyKFmt9eG5/G7KS2O8oIpmxZA3/WIYGMbSOyD4YkwmK1MF9KCjUErdHxQxIS9IL8Fc6V23/8KVAZmZyQ==",
       "requires": {
-        "@ant-design/icons": "^4.0.0",
-        "@ant-design/pro-provider": "1.10.0",
-        "@ant-design/pro-utils": "1.45.0",
+        "@ant-design/icons": "^5.0.0",
+        "@ant-design/pro-provider": "^2.7.0",
+        "@ant-design/pro-utils": "^2.7.2",
         "@babel/runtime": "^7.18.0",
-        "@umijs/route-utils": "^2.1.0",
-        "@umijs/ssr-darkreader": "^4.9.44",
+        "@umijs/route-utils": "^4.0.0",
         "@umijs/use-params": "^1.0.9",
-        "antd": "^4.20.0 ",
         "classnames": "^2.2.6",
         "lodash.merge": "^4.6.2",
         "omit.js": "^2.0.2",
         "path-to-regexp": "2.4.0",
         "rc-resize-observer": "^1.1.0",
         "rc-util": "^5.0.6",
-        "swr": "^1.2.0",
-        "unstated-next": "^1.1.0",
+        "swr": "^2.0.0",
         "use-json-comparison": "^1.0.3",
         "use-media-antd-query": "^1.1.0",
         "warning": "^4.0.3"
       },
       "dependencies": {
+        "@ant-design/colors": {
+          "version": "7.0.0",
+          "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-7.0.0.tgz",
+          "integrity": "sha512-iVm/9PfGCbC0dSMBrz7oiEXZaaGH7ceU40OJEfKmyuzR9R5CRimJYPlRiFtMQGQcbNMea/ePcoIebi4ASGYXtg==",
+          "requires": {
+            "@ctrl/tinycolor": "^3.4.0"
+          }
+        },
+        "@ant-design/icons": {
+          "version": "5.0.1",
+          "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-5.0.1.tgz",
+          "integrity": "sha512-ZyF4ksXCcdtwA/1PLlnFLcF/q8/MhwxXhKHh4oCHDA4Ip+ZzAHoICtyp4wZWfiCVDP0yuz3HsjyvuldHFb3wjA==",
+          "requires": {
+            "@ant-design/colors": "^7.0.0",
+            "@ant-design/icons-svg": "^4.2.1",
+            "@babel/runtime": "^7.11.2",
+            "classnames": "^2.2.6",
+            "rc-util": "^5.9.4"
+          }
+        },
         "path-to-regexp": {
           "version": "2.4.0",
           "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.4.0.tgz",
@@ -88,42 +135,64 @@
       }
     },
     "@ant-design/pro-provider": {
-      "version": "1.10.0",
-      "resolved": "https://registry.npmjs.org/@ant-design/pro-provider/-/pro-provider-1.10.0.tgz",
-      "integrity": "sha512-gbQtq+Qlnob6aEghiWX/kXEzNhe4eOFlv5Ue2/xsal+22qvot/kFoOB652TD76fMI7vlkoema1pTKsvD5Uji6A==",
+      "version": "2.7.0",
+      "resolved": "https://registry.npmjs.org/@ant-design/pro-provider/-/pro-provider-2.7.0.tgz",
+      "integrity": "sha512-5iKr0rIGekmOH7t5C6k0AsNp8CROroTzewjnaYLF3gt+kdz4+q8IQ5rmQG78e0npcJp6yQLJvIxevuJl5kFNfw==",
       "requires": {
+        "@ant-design/cssinjs": "^1.5.6",
         "@babel/runtime": "^7.18.0",
-        "antd": "^4.20.0 ",
+        "@ctrl/tinycolor": "^3.4.0",
         "rc-util": "^5.0.1",
-        "swr": "^1.2.0"
+        "swr": "^2.0.0"
       }
     },
     "@ant-design/pro-utils": {
-      "version": "1.45.0",
-      "resolved": "https://registry.npmjs.org/@ant-design/pro-utils/-/pro-utils-1.45.0.tgz",
-      "integrity": "sha512-Tk9uYj1Ep7ISeC4pk701jeQ91fUOG5zQmyNrKqeBo1i402ErcK7Nw9uCCvCUU3KxWmgywhWLy1VaVFl0KDQTgQ==",
+      "version": "2.7.2",
+      "resolved": "https://registry.npmjs.org/@ant-design/pro-utils/-/pro-utils-2.7.2.tgz",
+      "integrity": "sha512-1nzw9x4Hy/LXPUGWvCaFQd1g5SkX86yDp9KFZ3m4gvVREo4/7QTp0iyZasEWweaND3JNLcaXXU8sLfMiMgHIiw==",
       "requires": {
         "@ant-design/icons": "^4.3.0",
-        "@ant-design/pro-provider": "1.10.0",
+        "@ant-design/pro-provider": "^2.7.0",
         "@babel/runtime": "^7.18.0",
-        "antd": "^4.20.0 ",
         "classnames": "^2.2.6",
-        "moment": "^2.27.0",
+        "dayjs": "^1.11.4",
         "rc-util": "^5.0.6",
         "react-sortable-hoc": "^2.0.0",
-        "swr": "^1.2.0"
+        "swr": "^2.0.0"
+      },
+      "dependencies": {
+        "@ant-design/colors": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-6.0.0.tgz",
+          "integrity": "sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ==",
+          "requires": {
+            "@ctrl/tinycolor": "^3.4.0"
+          }
+        },
+        "@ant-design/icons": {
+          "version": "4.8.0",
+          "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-4.8.0.tgz",
+          "integrity": "sha512-T89P2jG2vM7OJ0IfGx2+9FC5sQjtTzRSz+mCHTXkFn/ELZc2YpfStmYHmqzq2Jx55J0F7+O6i5/ZKFSVNWCKNg==",
+          "requires": {
+            "@ant-design/colors": "^6.0.0",
+            "@ant-design/icons-svg": "^4.2.1",
+            "@babel/runtime": "^7.11.2",
+            "classnames": "^2.2.6",
+            "rc-util": "^5.9.4"
+          }
+        }
       }
     },
     "@ant-design/react-slick": {
-      "version": "0.29.2",
-      "resolved": "https://registry.npmjs.org/@ant-design/react-slick/-/react-slick-0.29.2.tgz",
-      "integrity": "sha512-kgjtKmkGHa19FW21lHnAfyyH9AAoh35pBdcJ53rHmQ3O+cfFHGHnUbj/HFrRNJ5vIts09FKJVAD8RpaC+RaWfA==",
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/@ant-design/react-slick/-/react-slick-1.0.0.tgz",
+      "integrity": "sha512-OKxZsn8TAf8fYxP79rDXgLs9zvKMTslK6dJ4iLhDXOujUqC5zJPBRszyrcEHXcMPOm1Sgk40JgyF3yiL/Swd7w==",
       "requires": {
         "@babel/runtime": "^7.10.4",
         "classnames": "^2.2.5",
         "json2mq": "^0.2.0",
-        "lodash": "^4.17.21",
-        "resize-observer-polyfill": "^1.5.1"
+        "resize-observer-polyfill": "^1.5.1",
+        "throttle-debounce": "^5.0.0"
       }
     },
     "@apideck/better-ajv-errors": {
@@ -1753,6 +1822,16 @@
       "integrity": "sha512-RpfLEtTlyIxeNPGKcokS+p3BZII/Q3bYxryFRglh5H3A3T8q9fsLYm72VYAMEOOIBLEa8o93kFLiBDUWKrwXZA==",
       "dev": true
     },
+    "@emotion/hash": {
+      "version": "0.8.0",
+      "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz",
+      "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow=="
+    },
+    "@emotion/unitless": {
+      "version": "0.7.5",
+      "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz",
+      "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg=="
+    },
     "@esbuild/linux-loong64": {
       "version": "0.14.54",
       "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz",
@@ -2473,10 +2552,169 @@
         }
       }
     },
-    "@qixian.cs/path-to-regexp": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/@qixian.cs/path-to-regexp/-/path-to-regexp-6.1.0.tgz",
-      "integrity": "sha512-2jIiLiVZB1jnY7IIRQKtoV8Gnr7XIhk4mC88ONGunZE3hYt5IHUG4BE/6+JiTBjjEWQLBeWnZB8hGpppkufiVw=="
+    "@rc-component/context": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/@rc-component/context/-/context-1.3.0.tgz",
+      "integrity": "sha512-6QdaCJ7Wn5UZLJs15IEfqy4Ru3OaL5ctqpQYWd5rlfV9wwzrzdt6+kgAQZV/qdB0MUPN4nhyBfRembQCIvBf+w==",
+      "requires": {
+        "@babel/runtime": "^7.10.1",
+        "rc-util": "^5.27.0"
+      },
+      "dependencies": {
+        "rc-util": {
+          "version": "5.29.3",
+          "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.29.3.tgz",
+          "integrity": "sha512-wX6ZwQTzY2v7phJBquN4mSEIFR0E0qumlENx0zjENtDvoVSq2s7cR95UidKRO1hOHfDsecsfM9D1gO4Kebs7fA==",
+          "requires": {
+            "@babel/runtime": "^7.18.3",
+            "react-is": "^16.12.0"
+          }
+        }
+      }
+    },
+    "@rc-component/mini-decimal": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/@rc-component/mini-decimal/-/mini-decimal-1.0.1.tgz",
+      "integrity": "sha512-9N8nRk0oKj1qJzANKl+n9eNSMUGsZtjwNuDCiZ/KA+dt1fE3zq5x2XxclRcAbOIXnZcJ53ozP2Pa60gyELXagA==",
+      "requires": {
+        "@babel/runtime": "^7.18.0"
+      }
+    },
+    "@rc-component/mutate-observer": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/@rc-component/mutate-observer/-/mutate-observer-1.0.0.tgz",
+      "integrity": "sha512-okqRJSfNisXdI6CUeOLZC5ukBW/8kir2Ii4PJiKpUt+3+uS7dxwJUMxsUZquxA1rQuL8YcEmKVp/TCnR+yUdZA==",
+      "requires": {
+        "@babel/runtime": "^7.18.0",
+        "classnames": "^2.3.2",
+        "rc-util": "^5.24.4"
+      },
+      "dependencies": {
+        "classnames": {
+          "version": "2.3.2",
+          "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz",
+          "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw=="
+        },
+        "rc-util": {
+          "version": "5.29.3",
+          "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.29.3.tgz",
+          "integrity": "sha512-wX6ZwQTzY2v7phJBquN4mSEIFR0E0qumlENx0zjENtDvoVSq2s7cR95UidKRO1hOHfDsecsfM9D1gO4Kebs7fA==",
+          "requires": {
+            "@babel/runtime": "^7.18.3",
+            "react-is": "^16.12.0"
+          }
+        }
+      }
+    },
+    "@rc-component/portal": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/@rc-component/portal/-/portal-1.1.1.tgz",
+      "integrity": "sha512-m8w3dFXX0H6UkJ4wtfrSwhe2/6M08uz24HHrF8pWfAXPwA9hwCuTE5per/C86KwNLouRpwFGcr7LfpHaa1F38g==",
+      "requires": {
+        "@babel/runtime": "^7.18.0",
+        "classnames": "^2.3.2",
+        "rc-util": "^5.24.4"
+      },
+      "dependencies": {
+        "classnames": {
+          "version": "2.3.2",
+          "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz",
+          "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw=="
+        },
+        "rc-util": {
+          "version": "5.29.3",
+          "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.29.3.tgz",
+          "integrity": "sha512-wX6ZwQTzY2v7phJBquN4mSEIFR0E0qumlENx0zjENtDvoVSq2s7cR95UidKRO1hOHfDsecsfM9D1gO4Kebs7fA==",
+          "requires": {
+            "@babel/runtime": "^7.18.3",
+            "react-is": "^16.12.0"
+          }
+        }
+      }
+    },
+    "@rc-component/tour": {
+      "version": "1.8.0",
+      "resolved": "https://registry.npmjs.org/@rc-component/tour/-/tour-1.8.0.tgz",
+      "integrity": "sha512-rrRGioHTLQlGca27G2+lw7QpRb3uuMYCUIJjj31/B44VCJS0P2tqYhOgtzvWQmaLMlWH3ZlpzotkKX13NT4XEA==",
+      "requires": {
+        "@babel/runtime": "^7.18.0",
+        "@rc-component/portal": "^1.0.0-9",
+        "@rc-component/trigger": "^1.3.6",
+        "classnames": "^2.3.2",
+        "rc-util": "^5.24.4"
+      },
+      "dependencies": {
+        "classnames": {
+          "version": "2.3.2",
+          "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz",
+          "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw=="
+        },
+        "rc-util": {
+          "version": "5.29.3",
+          "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.29.3.tgz",
+          "integrity": "sha512-wX6ZwQTzY2v7phJBquN4mSEIFR0E0qumlENx0zjENtDvoVSq2s7cR95UidKRO1hOHfDsecsfM9D1gO4Kebs7fA==",
+          "requires": {
+            "@babel/runtime": "^7.18.3",
+            "react-is": "^16.12.0"
+          }
+        }
+      }
+    },
+    "@rc-component/trigger": {
+      "version": "1.6.2",
+      "resolved": "https://registry.npmjs.org/@rc-component/trigger/-/trigger-1.6.2.tgz",
+      "integrity": "sha512-MxIokdiDnBACGYGWtGp19pnBVKPKmrP7yDjGfkE+HtyATLs9T8DOdd53EZnk1DbuEUn+6EMYigKMmXOqffTYxw==",
+      "requires": {
+        "@babel/runtime": "^7.18.3",
+        "@rc-component/portal": "^1.1.0",
+        "classnames": "^2.3.2",
+        "rc-align": "^4.0.0",
+        "rc-motion": "^2.0.0",
+        "rc-resize-observer": "^1.3.1",
+        "rc-util": "^5.29.2"
+      },
+      "dependencies": {
+        "classnames": {
+          "version": "2.3.2",
+          "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz",
+          "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw=="
+        },
+        "rc-resize-observer": {
+          "version": "1.3.1",
+          "resolved": "https://registry.npmjs.org/rc-resize-observer/-/rc-resize-observer-1.3.1.tgz",
+          "integrity": "sha512-iFUdt3NNhflbY3mwySv5CA1TC06zdJ+pfo0oc27xpf4PIOvfZwZGtD9Kz41wGYqC4SLio93RVAirSSpYlV/uYg==",
+          "requires": {
+            "@babel/runtime": "^7.20.7",
+            "classnames": "^2.2.1",
+            "rc-util": "^5.27.0",
+            "resize-observer-polyfill": "^1.5.1"
+          },
+          "dependencies": {
+            "@babel/runtime": {
+              "version": "7.21.0",
+              "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz",
+              "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==",
+              "requires": {
+                "regenerator-runtime": "^0.13.11"
+              }
+            }
+          }
+        },
+        "rc-util": {
+          "version": "5.29.3",
+          "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.29.3.tgz",
+          "integrity": "sha512-wX6ZwQTzY2v7phJBquN4mSEIFR0E0qumlENx0zjENtDvoVSq2s7cR95UidKRO1hOHfDsecsfM9D1gO4Kebs7fA==",
+          "requires": {
+            "@babel/runtime": "^7.18.3",
+            "react-is": "^16.12.0"
+          }
+        },
+        "regenerator-runtime": {
+          "version": "0.13.11",
+          "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
+          "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
+        }
+      }
     },
     "@rollup/plugin-babel": {
       "version": "5.3.1",
@@ -3696,27 +3934,9 @@
       }
     },
     "@umijs/route-utils": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/@umijs/route-utils/-/route-utils-2.2.0.tgz",
-      "integrity": "sha512-1t/A5+KuoK+AX0FcddNbUKMpMskuDsSSZRlQoTXDBBTDKUgWwG8KSX/NnfTCYJQrntL4A9WYymygop1jAw+Wdw==",
-      "requires": {
-        "@qixian.cs/path-to-regexp": "^6.1.0",
-        "fast-deep-equal": "^3.1.3",
-        "lodash.isequal": "^4.5.0",
-        "memoize-one": "^5.1.1"
-      },
-      "dependencies": {
-        "memoize-one": {
-          "version": "5.2.1",
-          "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz",
-          "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q=="
-        }
-      }
-    },
-    "@umijs/ssr-darkreader": {
-      "version": "4.9.45",
-      "resolved": "https://registry.npmjs.org/@umijs/ssr-darkreader/-/ssr-darkreader-4.9.45.tgz",
-      "integrity": "sha512-XlcwzSYQ/SRZpHdwIyMDS4FOGX5kP4U/2g2mykyn/iPQTK4xTiQAyBu6UnnDnn7d5P8s7Atzh1C7H0ETNOypJg=="
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/@umijs/route-utils/-/route-utils-4.0.1.tgz",
+      "integrity": "sha512-+1ixf1BTOLuH+ORb4x8vYMPeIt38n9q0fJDwhv9nSxrV46mxbLF0nmELIo9CKQB2gHfuC4+hww6xejJ6VYnBHQ=="
     },
     "@umijs/use-params": {
       "version": "1.0.9",
@@ -4134,62 +4354,96 @@
       }
     },
     "antd": {
-      "version": "4.22.7",
-      "resolved": "https://registry.npmjs.org/antd/-/antd-4.22.7.tgz",
-      "integrity": "sha512-CMf5tYHtlhP1blYjwNTRsB7G/bocwKmIFHgYYk4pZNgo1kk/XnPPI2/MKRCXWc54wuCQQlnmL/2AKtE7HWaE8g==",
+      "version": "5.3.3",
+      "resolved": "https://registry.npmjs.org/antd/-/antd-5.3.3.tgz",
+      "integrity": "sha512-QR4cGBTFiF+PFjnCgrUMvove60vc9LWv6fq8Rt/LMhFchvAu8yRuSow4RDCwAWoc1JNimUHMrs4+3TBW4uvqlA==",
       "requires": {
-        "@ant-design/colors": "^6.0.0",
-        "@ant-design/icons": "^4.7.0",
-        "@ant-design/react-slick": "~0.29.1",
+        "@ant-design/colors": "^7.0.0",
+        "@ant-design/cssinjs": "^1.7.1",
+        "@ant-design/icons": "^5.0.0",
+        "@ant-design/react-slick": "~1.0.0",
         "@babel/runtime": "^7.18.3",
-        "@ctrl/tinycolor": "^3.4.0",
+        "@ctrl/tinycolor": "^3.6.0",
+        "@rc-component/mutate-observer": "^1.0.0",
+        "@rc-component/tour": "~1.8.0",
+        "@rc-component/trigger": "^1.5.9",
         "classnames": "^2.2.6",
         "copy-to-clipboard": "^3.2.0",
-        "lodash": "^4.17.21",
-        "memoize-one": "^6.0.0",
-        "moment": "^2.29.2",
-        "rc-cascader": "~3.6.0",
+        "dayjs": "^1.11.1",
+        "qrcode.react": "^3.1.0",
+        "rc-cascader": "~3.9.0",
         "rc-checkbox": "~2.3.0",
-        "rc-collapse": "~3.3.0",
-        "rc-dialog": "~8.9.0",
-        "rc-drawer": "~5.1.0",
+        "rc-collapse": "~3.5.2",
+        "rc-dialog": "~9.0.2",
+        "rc-drawer": "~6.1.1",
         "rc-dropdown": "~4.0.0",
-        "rc-field-form": "~1.27.0",
-        "rc-image": "~5.7.0",
-        "rc-input": "~0.0.1-alpha.5",
-        "rc-input-number": "~7.3.5",
-        "rc-mentions": "~1.9.1",
-        "rc-menu": "~9.6.3",
+        "rc-field-form": "~1.28.0",
+        "rc-image": "~5.15.2",
+        "rc-input": "~0.2.1",
+        "rc-input-number": "~7.4.0",
+        "rc-mentions": "~2.1.0",
+        "rc-menu": "~9.8.3",
         "rc-motion": "^2.6.1",
-        "rc-notification": "~4.6.0",
-        "rc-pagination": "~3.1.17",
-        "rc-picker": "~2.6.10",
-        "rc-progress": "~3.3.2",
-        "rc-rate": "~2.9.0",
+        "rc-notification": "~5.0.0",
+        "rc-pagination": "~3.3.0",
+        "rc-picker": "~3.3.1",
+        "rc-progress": "~3.4.1",
+        "rc-rate": "~2.10.0",
         "rc-resize-observer": "^1.2.0",
-        "rc-segmented": "~2.1.0",
-        "rc-select": "~14.1.1",
-        "rc-slider": "~10.0.0",
-        "rc-steps": "~4.1.0",
-        "rc-switch": "~3.2.0",
-        "rc-table": "~7.25.3",
-        "rc-tabs": "~11.16.0",
-        "rc-textarea": "~0.3.0",
-        "rc-tooltip": "~5.2.0",
-        "rc-tree": "~5.6.5",
-        "rc-tree-select": "~5.4.0",
-        "rc-trigger": "^5.2.10",
+        "rc-segmented": "~2.1.2",
+        "rc-select": "~14.3.0",
+        "rc-slider": "~10.1.0",
+        "rc-steps": "~6.0.0",
+        "rc-switch": "~4.0.0",
+        "rc-table": "~7.31.0",
+        "rc-tabs": "~12.5.6",
+        "rc-textarea": "~1.1.0",
+        "rc-tooltip": "~6.0.0",
+        "rc-tree": "~5.7.0",
+        "rc-tree-select": "~5.7.0",
+        "rc-trigger": "^5.3.4",
         "rc-upload": "~4.3.0",
-        "rc-util": "^5.22.5",
-        "scroll-into-view-if-needed": "^2.2.25"
+        "rc-util": "^5.27.0",
+        "scroll-into-view-if-needed": "^3.0.3",
+        "throttle-debounce": "^5.0.0"
+      },
+      "dependencies": {
+        "@ant-design/colors": {
+          "version": "7.0.0",
+          "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-7.0.0.tgz",
+          "integrity": "sha512-iVm/9PfGCbC0dSMBrz7oiEXZaaGH7ceU40OJEfKmyuzR9R5CRimJYPlRiFtMQGQcbNMea/ePcoIebi4ASGYXtg==",
+          "requires": {
+            "@ctrl/tinycolor": "^3.4.0"
+          }
+        },
+        "@ant-design/icons": {
+          "version": "5.0.1",
+          "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-5.0.1.tgz",
+          "integrity": "sha512-ZyF4ksXCcdtwA/1PLlnFLcF/q8/MhwxXhKHh4oCHDA4Ip+ZzAHoICtyp4wZWfiCVDP0yuz3HsjyvuldHFb3wjA==",
+          "requires": {
+            "@ant-design/colors": "^7.0.0",
+            "@ant-design/icons-svg": "^4.2.1",
+            "@babel/runtime": "^7.11.2",
+            "classnames": "^2.2.6",
+            "rc-util": "^5.9.4"
+          }
+        },
+        "@ctrl/tinycolor": {
+          "version": "3.6.0",
+          "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.0.tgz",
+          "integrity": "sha512-/Z3l6pXthq0JvMYdUFyX9j0MaCltlIn6mfh9jLyQwg5aPKxkyNa0PTHtU1AlFXLNk55ZuAeJRcpvq+tmLfKmaQ=="
+        },
+        "rc-util": {
+          "version": "5.29.3",
+          "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.29.3.tgz",
+          "integrity": "sha512-wX6ZwQTzY2v7phJBquN4mSEIFR0E0qumlENx0zjENtDvoVSq2s7cR95UidKRO1hOHfDsecsfM9D1gO4Kebs7fA==",
+          "requires": {
+            "@babel/runtime": "^7.18.3",
+            "react-is": "^16.12.0"
+          }
+        }
       }
     },
-    "antd-dayjs-webpack-plugin": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/antd-dayjs-webpack-plugin/-/antd-dayjs-webpack-plugin-1.0.6.tgz",
-      "integrity": "sha512-UlK3BfA0iE2c5+Zz/Bd2iPAkT6cICtrKG4/swSik5MZweBHtgmu1aUQCHvICdiv39EAShdZy/edfP6mlkS/xXg==",
-      "dev": true
-    },
     "anymatch": {
       "version": "3.1.2",
       "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
@@ -5179,9 +5433,9 @@
       }
     },
     "compute-scroll-into-view": {
-      "version": "1.0.17",
-      "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz",
-      "integrity": "sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg=="
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-3.0.0.tgz",
+      "integrity": "sha512-Yk1An4qzo5++Cu6peT9PsmRKIU8tALpmdoE09n//AfGQFcPfx21/tMGMsmKYmLJWaBJrGOJ5Jz5hoU+7cZZUWQ=="
     },
     "concat-map": {
       "version": "0.0.1",
@@ -5255,9 +5509,9 @@
       }
     },
     "copy-to-clipboard": {
-      "version": "3.3.2",
-      "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.2.tgz",
-      "integrity": "sha512-Vme1Z6RUDzrb6xAI7EZlVZ5uvOk2F//GaxKUxajDqm9LhOVM1inxNAD2vy+UZDYsd0uyA9s7b3/FVZPSxqrCfg==",
+      "version": "3.3.3",
+      "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz",
+      "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==",
       "requires": {
         "toggle-selection": "^1.0.6"
       }
@@ -5639,11 +5893,6 @@
         "whatwg-url": "^8.0.0"
       }
     },
-    "date-fns": {
-      "version": "2.29.2",
-      "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.2.tgz",
-      "integrity": "sha512-0VNbwmWJDS/G3ySwFSJA3ayhbURMTJLtwM2DTxf9CWondCnh6DTNlO9JgRSq6ibf4eD0lfMJNBxUdEAHHix+bA=="
-    },
     "dayjs": {
       "version": "1.11.5",
       "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.5.tgz",
@@ -5869,9 +6118,9 @@
       "dev": true
     },
     "dom-align": {
-      "version": "1.12.3",
-      "resolved": "https://registry.npmjs.org/dom-align/-/dom-align-1.12.3.tgz",
-      "integrity": "sha512-Gj9hZN3a07cbR6zviMUBOMPdWxYhbMI+x+WS0NAIu2zFZmbK8ys9R79g+iG9qLnlCwpFoaB+fKy8Pdv470GsPA=="
+      "version": "1.12.4",
+      "resolved": "https://registry.npmjs.org/dom-align/-/dom-align-1.12.4.tgz",
+      "integrity": "sha512-R8LUSEay/68zE5c8/3BDxiTEvgb4xZTF0RKmAHfiEVN3klfIpXfi2/QCoiWPccVQ0J/ZGdz9OjzL4uJEP/MRAw=="
     },
     "dom-converter": {
       "version": "0.2.0",
@@ -7068,7 +7317,8 @@
     "fast-deep-equal": {
       "version": "3.1.3",
       "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
+      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+      "dev": true
     },
     "fast-diff": {
       "version": "1.2.0",
@@ -10687,11 +10937,6 @@
         "fs-monkey": "^1.0.3"
       }
     },
-    "memoize-one": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz",
-      "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw=="
-    },
     "meow": {
       "version": "9.0.0",
       "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz",
@@ -10895,11 +11140,6 @@
         "minimist": "^1.2.6"
       }
     },
-    "moment": {
-      "version": "2.29.4",
-      "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
-      "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w=="
-    },
     "ms": {
       "version": "2.1.2",
       "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
@@ -12422,6 +12662,11 @@
       "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==",
       "dev": true
     },
+    "qrcode.react": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/qrcode.react/-/qrcode.react-3.1.0.tgz",
+      "integrity": "sha512-oyF+Urr3oAMUG/OiOuONL3HXM+53wvuH3mtIWQrYmsXoAq0DkvZp2RYUWFSMFtbdOpuS++9v+WAkzNVkMlNW6Q=="
+    },
     "qs": {
       "version": "6.11.0",
       "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
@@ -12502,28 +12747,38 @@
       }
     },
     "rc-align": {
-      "version": "4.0.12",
-      "resolved": "https://registry.npmjs.org/rc-align/-/rc-align-4.0.12.tgz",
-      "integrity": "sha512-3DuwSJp8iC/dgHzwreOQl52soj40LchlfUHtgACOUtwGuoFIOVh6n/sCpfqCU8kO5+iz6qR0YKvjgB8iPdE3aQ==",
+      "version": "4.0.15",
+      "resolved": "https://registry.npmjs.org/rc-align/-/rc-align-4.0.15.tgz",
+      "integrity": "sha512-wqJtVH60pka/nOX7/IspElA8gjPNQKIx/ZqJ6heATCkXpe1Zg4cPVrMD2vC96wjsFFL8WsmhPbx9tdMo1qqlIA==",
       "requires": {
         "@babel/runtime": "^7.10.1",
         "classnames": "2.x",
         "dom-align": "^1.7.0",
-        "lodash": "^4.17.21",
-        "rc-util": "^5.3.0",
+        "rc-util": "^5.26.0",
         "resize-observer-polyfill": "^1.5.1"
+      },
+      "dependencies": {
+        "rc-util": {
+          "version": "5.29.3",
+          "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.29.3.tgz",
+          "integrity": "sha512-wX6ZwQTzY2v7phJBquN4mSEIFR0E0qumlENx0zjENtDvoVSq2s7cR95UidKRO1hOHfDsecsfM9D1gO4Kebs7fA==",
+          "requires": {
+            "@babel/runtime": "^7.18.3",
+            "react-is": "^16.12.0"
+          }
+        }
       }
     },
     "rc-cascader": {
-      "version": "3.6.2",
-      "resolved": "https://registry.npmjs.org/rc-cascader/-/rc-cascader-3.6.2.tgz",
-      "integrity": "sha512-sf2otpazlROTzkD3nZVfIzXmfBLiEOBTXA5wxozGXBpS902McDpvF0bdcYBu5hN+rviEAm6Mh9cLXNQ1Ty8wKQ==",
+      "version": "3.9.1",
+      "resolved": "https://registry.npmjs.org/rc-cascader/-/rc-cascader-3.9.1.tgz",
+      "integrity": "sha512-wMOQrCWobkaQz3zHEFB82RNBLDkL6tDucOf4VSKQ8Z6SiVBqIfqnEHaEiYvL9GMI3/zStVGqwvOFar/xyOm+xw==",
       "requires": {
         "@babel/runtime": "^7.12.5",
         "array-tree-filter": "^2.1.0",
         "classnames": "^2.3.1",
-        "rc-select": "~14.1.0",
-        "rc-tree": "~5.6.3",
+        "rc-select": "~14.3.0",
+        "rc-tree": "~5.7.0",
         "rc-util": "^5.6.1"
       }
     },
@@ -12537,34 +12792,46 @@
       }
     },
     "rc-collapse": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/rc-collapse/-/rc-collapse-3.3.1.tgz",
-      "integrity": "sha512-cOJfcSe3R8vocrF8T+PgaHDrgeA1tX+lwfhwSj60NX9QVRidsILIbRNDLD6nAzmcvVC5PWiIRiR4S1OobxdhCg==",
+      "version": "3.5.2",
+      "resolved": "https://registry.npmjs.org/rc-collapse/-/rc-collapse-3.5.2.tgz",
+      "integrity": "sha512-/TNiT3DW1t3sUCiVD/DPUYooJZ3BLA93/2rZsB3eM2bGJCCla2X9D2E4tgm7LGMQGy5Atb2lMUn2FQuvQNvavQ==",
       "requires": {
         "@babel/runtime": "^7.10.1",
         "classnames": "2.x",
         "rc-motion": "^2.3.4",
-        "rc-util": "^5.2.1",
-        "shallowequal": "^1.1.0"
+        "rc-util": "^5.27.0"
+      },
+      "dependencies": {
+        "rc-util": {
+          "version": "5.29.3",
+          "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.29.3.tgz",
+          "integrity": "sha512-wX6ZwQTzY2v7phJBquN4mSEIFR0E0qumlENx0zjENtDvoVSq2s7cR95UidKRO1hOHfDsecsfM9D1gO4Kebs7fA==",
+          "requires": {
+            "@babel/runtime": "^7.18.3",
+            "react-is": "^16.12.0"
+          }
+        }
       }
     },
     "rc-dialog": {
-      "version": "8.9.0",
-      "resolved": "https://registry.npmjs.org/rc-dialog/-/rc-dialog-8.9.0.tgz",
-      "integrity": "sha512-Cp0tbJnrvPchJfnwIvOMWmJ4yjX3HWFatO6oBFD1jx8QkgsQCR0p8nUWAKdd3seLJhEC39/v56kZaEjwp9muoQ==",
+      "version": "9.0.2",
+      "resolved": "https://registry.npmjs.org/rc-dialog/-/rc-dialog-9.0.2.tgz",
+      "integrity": "sha512-s3U+24xWUuB6Bn2Lk/Qt6rufy+uT+QvWkiFhNBcO9APLxcFFczWamaq7x9h8SCuhfc1nHcW4y8NbMsnAjNnWyg==",
       "requires": {
         "@babel/runtime": "^7.10.1",
+        "@rc-component/portal": "^1.0.0-8",
         "classnames": "^2.2.6",
         "rc-motion": "^2.3.0",
         "rc-util": "^5.21.0"
       }
     },
     "rc-drawer": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/rc-drawer/-/rc-drawer-5.1.0.tgz",
-      "integrity": "sha512-pU3Tsn99pxGdYowXehzZbdDVE+4lDXSGb7p8vA9mSmr569oc2Izh4Zw5vLKSe/Xxn2p5MSNbLVqD4tz+pK6SOw==",
+      "version": "6.1.5",
+      "resolved": "https://registry.npmjs.org/rc-drawer/-/rc-drawer-6.1.5.tgz",
+      "integrity": "sha512-MDRomQXFi+tvDuwsRAddJ2Oy2ayLCZ29weMzp3rJFO9UNEVLEVV7nuyx5lEgNJIdM//tE6wWQV95cTUiMVqD6w==",
       "requires": {
         "@babel/runtime": "^7.10.1",
+        "@rc-component/portal": "^1.0.0-6",
         "classnames": "^2.2.6",
         "rc-motion": "^2.6.1",
         "rc-util": "^5.21.2"
@@ -12582,9 +12849,9 @@
       }
     },
     "rc-field-form": {
-      "version": "1.27.1",
-      "resolved": "https://registry.npmjs.org/rc-field-form/-/rc-field-form-1.27.1.tgz",
-      "integrity": "sha512-RShegnwFu6TH8tl2olCxn+B4Wyh5EiQH8c/7wucbkLNyue05YiH5gomUAg1vbZjp71yFKwegClctsEG5CNBWAA==",
+      "version": "1.28.0",
+      "resolved": "https://registry.npmjs.org/rc-field-form/-/rc-field-form-1.28.0.tgz",
+      "integrity": "sha512-k7VfxFiQQkaJV7G5TMfZfeN905WGwd6CQXsblH+s8g9wcOn7gIacjl2N7Xr4EPDFR4dAECtxcbd0guwIT01vjw==",
       "requires": {
         "@babel/runtime": "^7.18.0",
         "async-validator": "^4.1.0",
@@ -12592,20 +12859,22 @@
       }
     },
     "rc-image": {
-      "version": "5.7.1",
-      "resolved": "https://registry.npmjs.org/rc-image/-/rc-image-5.7.1.tgz",
-      "integrity": "sha512-QyMfdhoUfb5W14plqXSisaYwpdstcLYnB0MjX5ccIK2rydQM9sDPuekQWu500DDGR2dBaIF5vx9XbWkNFK17Fg==",
+      "version": "5.15.2",
+      "resolved": "https://registry.npmjs.org/rc-image/-/rc-image-5.15.2.tgz",
+      "integrity": "sha512-QaeWP20v51eGyrkl24PyusTmbMk42A3vGPl7hEa15jcQjECOX36tLtvLk5sjl3vaLQpMskB8BbwiqPsN7I7aow==",
       "requires": {
         "@babel/runtime": "^7.11.2",
+        "@rc-component/portal": "^1.0.2",
         "classnames": "^2.2.6",
-        "rc-dialog": "~8.9.0",
+        "rc-dialog": "~9.0.0",
+        "rc-motion": "^2.6.2",
         "rc-util": "^5.0.6"
       }
     },
     "rc-input": {
-      "version": "0.0.1-alpha.7",
-      "resolved": "https://registry.npmjs.org/rc-input/-/rc-input-0.0.1-alpha.7.tgz",
-      "integrity": "sha512-eozaqpCYWSY5LBMwlHgC01GArkVEP+XlJ84OMvdkwUnJBSv83Yxa15pZpn7vACAj84uDC4xOA2CoFdbLuqB08Q==",
+      "version": "0.2.2",
+      "resolved": "https://registry.npmjs.org/rc-input/-/rc-input-0.2.2.tgz",
+      "integrity": "sha512-xgkVcFgtRO0Hl9hmvslZhObNyxbSpTmy3nR1Tk4XrjjZ9lFJ7GcJBy6ss30Pdb0oX36cHzLN8I7VCjBGeRNB9A==",
       "requires": {
         "@babel/runtime": "^7.11.1",
         "classnames": "^2.2.1",
@@ -12613,46 +12882,69 @@
       }
     },
     "rc-input-number": {
-      "version": "7.3.6",
-      "resolved": "https://registry.npmjs.org/rc-input-number/-/rc-input-number-7.3.6.tgz",
-      "integrity": "sha512-Se62oMOBn9HwF/gSag+YtAYyKZsjJzEsqmyAJHAnAvPfjZJOu7dLMlQRwBbTtELbKXM/Y5Fztcq8CW2Y9f49qA==",
+      "version": "7.4.2",
+      "resolved": "https://registry.npmjs.org/rc-input-number/-/rc-input-number-7.4.2.tgz",
+      "integrity": "sha512-yGturTw7WGP+M1GbJ+UTAO7L4buxeW6oilhL9Sq3DezsRS8/9qec4UiXUbeoiX9bzvRXH11JvgskBtxSp4YSNg==",
       "requires": {
         "@babel/runtime": "^7.10.1",
+        "@rc-component/mini-decimal": "^1.0.1",
         "classnames": "^2.2.5",
-        "rc-util": "^5.23.0"
+        "rc-util": "^5.28.0"
+      },
+      "dependencies": {
+        "rc-util": {
+          "version": "5.29.3",
+          "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.29.3.tgz",
+          "integrity": "sha512-wX6ZwQTzY2v7phJBquN4mSEIFR0E0qumlENx0zjENtDvoVSq2s7cR95UidKRO1hOHfDsecsfM9D1gO4Kebs7fA==",
+          "requires": {
+            "@babel/runtime": "^7.18.3",
+            "react-is": "^16.12.0"
+          }
+        }
       }
     },
     "rc-mentions": {
-      "version": "1.9.2",
-      "resolved": "https://registry.npmjs.org/rc-mentions/-/rc-mentions-1.9.2.tgz",
-      "integrity": "sha512-uxb/lzNnEGmvraKWNGE6KXMVXvt8RQv9XW8R0Dqi3hYsyPiAZeHRCHQKdLARuk5YBhFhZ6ga55D/8XuY367g3g==",
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/rc-mentions/-/rc-mentions-2.1.0.tgz",
+      "integrity": "sha512-yXfq/CcEbrbcVcbhjRSzVNjITfMwCO6KspmLIviAsxxMDHT/VYy9F0EgWNEuwUrDqJkN7c0foVJngR2dBvhMPw==",
       "requires": {
         "@babel/runtime": "^7.10.1",
+        "@rc-component/trigger": "^1.5.0",
         "classnames": "^2.2.6",
-        "rc-menu": "~9.6.0",
-        "rc-textarea": "^0.3.0",
-        "rc-trigger": "^5.0.4",
+        "rc-input": "^0.2.2",
+        "rc-menu": "~9.8.0",
+        "rc-textarea": "^1.0.0",
         "rc-util": "^5.22.5"
       }
     },
     "rc-menu": {
-      "version": "9.6.3",
-      "resolved": "https://registry.npmjs.org/rc-menu/-/rc-menu-9.6.3.tgz",
-      "integrity": "sha512-KY9QilKWgkJZ0JSpOBgIpQF2wMRRodRxpIMYyIJ3Nd5N6xfVLOxXCxevHcBplt+Ez7MhUF+I03MuAKqWQJLZgw==",
+      "version": "9.8.3",
+      "resolved": "https://registry.npmjs.org/rc-menu/-/rc-menu-9.8.3.tgz",
+      "integrity": "sha512-KCwiF+Z1hpf4c9Ww9P6J/tDnmk83x9zYKHkVmXrXiZlQP7RnMTJskQSUJa27CaQYDEwwfDqpek8+rBU8P79AxA==",
       "requires": {
         "@babel/runtime": "^7.10.1",
         "classnames": "2.x",
         "rc-motion": "^2.4.3",
-        "rc-overflow": "^1.2.0",
+        "rc-overflow": "^1.2.8",
         "rc-trigger": "^5.1.2",
-        "rc-util": "^5.12.0",
-        "shallowequal": "^1.1.0"
+        "rc-util": "^5.27.0"
+      },
+      "dependencies": {
+        "rc-util": {
+          "version": "5.29.3",
+          "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.29.3.tgz",
+          "integrity": "sha512-wX6ZwQTzY2v7phJBquN4mSEIFR0E0qumlENx0zjENtDvoVSq2s7cR95UidKRO1hOHfDsecsfM9D1gO4Kebs7fA==",
+          "requires": {
+            "@babel/runtime": "^7.18.3",
+            "react-is": "^16.12.0"
+          }
+        }
       }
     },
     "rc-motion": {
-      "version": "2.6.2",
-      "resolved": "https://registry.npmjs.org/rc-motion/-/rc-motion-2.6.2.tgz",
-      "integrity": "sha512-4w1FaX3dtV749P8GwfS4fYnFG4Rb9pxvCYPc/b2fw1cmlHJWNNgOFIz7ysiD+eOrzJSvnLJWlNQQncpNMXwwpg==",
+      "version": "2.6.3",
+      "resolved": "https://registry.npmjs.org/rc-motion/-/rc-motion-2.6.3.tgz",
+      "integrity": "sha512-xFLkes3/7VL/J+ah9jJruEW/Akbx5F6jVa2wG5o/ApGKQKSOd5FR3rseHLL9+xtJg4PmCwo6/1tqhDO/T+jFHA==",
       "requires": {
         "@babel/runtime": "^7.11.1",
         "classnames": "^2.2.1",
@@ -12660,20 +12952,20 @@
       }
     },
     "rc-notification": {
-      "version": "4.6.0",
-      "resolved": "https://registry.npmjs.org/rc-notification/-/rc-notification-4.6.0.tgz",
-      "integrity": "sha512-xF3MKgIoynzjQAO4lqsoraiFo3UXNYlBfpHs0VWvwF+4pimen9/H1DYLN2mfRWhHovW6gRpla73m2nmyIqAMZQ==",
+      "version": "5.0.3",
+      "resolved": "https://registry.npmjs.org/rc-notification/-/rc-notification-5.0.3.tgz",
+      "integrity": "sha512-+wHbHu6RiTNtsZYx42WxWA+tC5m0qyKvJAauO4/6LIEyJspK8fRlFQz+OCFgFwGuNs3cOdo9tLs+cPfztSZwbQ==",
       "requires": {
         "@babel/runtime": "^7.10.1",
         "classnames": "2.x",
-        "rc-motion": "^2.2.0",
+        "rc-motion": "^2.6.0",
         "rc-util": "^5.20.1"
       }
     },
     "rc-overflow": {
-      "version": "1.2.8",
-      "resolved": "https://registry.npmjs.org/rc-overflow/-/rc-overflow-1.2.8.tgz",
-      "integrity": "sha512-QJ0UItckWPQ37ZL1dMEBAdY1dhfTXFL9k6oTTcyydVwoUNMnMqCGqnRNA98axSr/OeDKqR6DVFyi8eA5RQI/uQ==",
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/rc-overflow/-/rc-overflow-1.3.0.tgz",
+      "integrity": "sha512-p2Qt4SWPTHAYl4oAao1THy669Fm5q8pYBDBHRaFOekCvcdcrgIx0ByXQMEkyPm8wUDX4BK6aARWecvCRc/7CTA==",
       "requires": {
         "@babel/runtime": "^7.11.1",
         "classnames": "^2.2.1",
@@ -12682,33 +12974,40 @@
       }
     },
     "rc-pagination": {
-      "version": "3.1.17",
-      "resolved": "https://registry.npmjs.org/rc-pagination/-/rc-pagination-3.1.17.tgz",
-      "integrity": "sha512-/BQ5UxcBnW28vFAcP2hfh+Xg15W0QZn8TWYwdCApchMH1H0CxiaUUcULP8uXcFM1TygcdKWdt3JqsL9cTAfdkQ==",
+      "version": "3.3.1",
+      "resolved": "https://registry.npmjs.org/rc-pagination/-/rc-pagination-3.3.1.tgz",
+      "integrity": "sha512-eI4dSeB3OrFxll7KzWa3ZH63LV2tHxt0AUmZmDwuI6vc3CK5lZhaKUYq0fRowb5586hN+L26j5WZoSz9cwEfjg==",
       "requires": {
         "@babel/runtime": "^7.10.1",
         "classnames": "^2.2.1"
       }
     },
     "rc-picker": {
-      "version": "2.6.10",
-      "resolved": "https://registry.npmjs.org/rc-picker/-/rc-picker-2.6.10.tgz",
-      "integrity": "sha512-9wYtw0DFWs9FO92Qh2D76P0iojUr8ZhLOtScUeOit6ks/F+TBLrOC1uze3IOu+u9gbDAjmosNWLKbBzx/Yuv2w==",
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/rc-picker/-/rc-picker-3.3.4.tgz",
+      "integrity": "sha512-y7muUVAXqcacXXgLERCC9klEClZybOjWrcVZ54glxO5y+UO2MZmBk+ysWhhVHQ0l2nNtY+wj19gk1xnv+5eCxg==",
       "requires": {
         "@babel/runtime": "^7.10.1",
+        "@rc-component/trigger": "^1.5.0",
         "classnames": "^2.2.1",
-        "date-fns": "2.x",
-        "dayjs": "1.x",
-        "moment": "^2.24.0",
-        "rc-trigger": "^5.0.4",
-        "rc-util": "^5.4.0",
-        "shallowequal": "^1.1.0"
+        "rc-util": "^5.27.0"
+      },
+      "dependencies": {
+        "rc-util": {
+          "version": "5.29.3",
+          "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.29.3.tgz",
+          "integrity": "sha512-wX6ZwQTzY2v7phJBquN4mSEIFR0E0qumlENx0zjENtDvoVSq2s7cR95UidKRO1hOHfDsecsfM9D1gO4Kebs7fA==",
+          "requires": {
+            "@babel/runtime": "^7.18.3",
+            "react-is": "^16.12.0"
+          }
+        }
       }
     },
     "rc-progress": {
-      "version": "3.3.3",
-      "resolved": "https://registry.npmjs.org/rc-progress/-/rc-progress-3.3.3.tgz",
-      "integrity": "sha512-MDVNVHzGanYtRy2KKraEaWeZLri2ZHWIRyaE1a9MQ2MuJ09m+Wxj5cfcaoaR6z5iRpHpA59YeUxAlpML8N4PJw==",
+      "version": "3.4.1",
+      "resolved": "https://registry.npmjs.org/rc-progress/-/rc-progress-3.4.1.tgz",
+      "integrity": "sha512-eAFDHXlk8aWpoXl0llrenPMt9qKHQXphxcVsnKs0FHC6eCSk1ebJtyaVjJUzKe0233ogiLDeEFK1Uihz3s67hw==",
       "requires": {
         "@babel/runtime": "^7.10.1",
         "classnames": "^2.2.6",
@@ -12716,9 +13015,9 @@
       }
     },
     "rc-rate": {
-      "version": "2.9.2",
-      "resolved": "https://registry.npmjs.org/rc-rate/-/rc-rate-2.9.2.tgz",
-      "integrity": "sha512-SaiZFyN8pe0Fgphv8t3+kidlej+cq/EALkAJAc3A0w0XcPaH2L1aggM8bhe1u6GAGuQNAoFvTLjw4qLPGRKV5g==",
+      "version": "2.10.0",
+      "resolved": "https://registry.npmjs.org/rc-rate/-/rc-rate-2.10.0.tgz",
+      "integrity": "sha512-TCjEpKPeN1m0EnGDDbb1KyxjNTJRzoReiPdtbrBJEey4Ryf/UGOQ6vqmz2yC6DJdYVDVUoZPdoz043ryh0t/nQ==",
       "requires": {
         "@babel/runtime": "^7.10.1",
         "classnames": "^2.2.5",
@@ -12737,9 +13036,9 @@
       }
     },
     "rc-segmented": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/rc-segmented/-/rc-segmented-2.1.0.tgz",
-      "integrity": "sha512-hUlonro+pYoZcwrH6Vm56B2ftLfQh046hrwif/VwLIw1j3zGt52p5mREBwmeVzXnSwgnagpOpfafspzs1asjGw==",
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/rc-segmented/-/rc-segmented-2.1.2.tgz",
+      "integrity": "sha512-qGo1bCr83ESXpXVOCXjFe1QJlCAQXyi9KCiy8eX3rIMYlTeJr/ftySIaTnYsitL18SvWf5ZEHsfqIWoX0EMfFQ==",
       "requires": {
         "@babel/runtime": "^7.11.1",
         "classnames": "^2.2.1",
@@ -12748,44 +13047,54 @@
       }
     },
     "rc-select": {
-      "version": "14.1.9",
-      "resolved": "https://registry.npmjs.org/rc-select/-/rc-select-14.1.9.tgz",
-      "integrity": "sha512-DK01+Q7oCWr5jVPiEp/BTQ8xCB4rI4LfXzZtSmBWJhOMuibyZD1Vlz/DlVKCUFmtBM4SzG4/SltGHoGlcbCqiw==",
+      "version": "14.3.0",
+      "resolved": "https://registry.npmjs.org/rc-select/-/rc-select-14.3.0.tgz",
+      "integrity": "sha512-y+TeAKvAvfAS7WXn4nFU8xtWJ1kLC7SVBvX3UQYtfU+N3BYNpNzHw/3F1Gu34rN2YWTG4hwspwFvDuRtGXytlQ==",
       "requires": {
         "@babel/runtime": "^7.10.1",
+        "@rc-component/trigger": "^1.4.0",
         "classnames": "2.x",
         "rc-motion": "^2.0.1",
         "rc-overflow": "^1.0.0",
-        "rc-trigger": "^5.0.4",
         "rc-util": "^5.16.1",
-        "rc-virtual-list": "^3.2.0"
+        "rc-virtual-list": "^3.4.13"
       }
     },
     "rc-slider": {
-      "version": "10.0.1",
-      "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-10.0.1.tgz",
-      "integrity": "sha512-igTKF3zBet7oS/3yNiIlmU8KnZ45npmrmHlUUio8PNbIhzMcsh+oE/r2UD42Y6YD2D/s+kzCQkzQrPD6RY435Q==",
+      "version": "10.1.1",
+      "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-10.1.1.tgz",
+      "integrity": "sha512-gn8oXazZISEhnmRinI89Z/JD/joAaM35jp+gDtIVSTD/JJMCCBqThqLk1SVJmvtfeiEF/kKaFY0+qt4SDHFUDw==",
       "requires": {
         "@babel/runtime": "^7.10.1",
         "classnames": "^2.2.5",
-        "rc-util": "^5.18.1",
-        "shallowequal": "^1.1.0"
+        "rc-util": "^5.27.0"
+      },
+      "dependencies": {
+        "rc-util": {
+          "version": "5.29.3",
+          "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.29.3.tgz",
+          "integrity": "sha512-wX6ZwQTzY2v7phJBquN4mSEIFR0E0qumlENx0zjENtDvoVSq2s7cR95UidKRO1hOHfDsecsfM9D1gO4Kebs7fA==",
+          "requires": {
+            "@babel/runtime": "^7.18.3",
+            "react-is": "^16.12.0"
+          }
+        }
       }
     },
     "rc-steps": {
-      "version": "4.1.4",
-      "resolved": "https://registry.npmjs.org/rc-steps/-/rc-steps-4.1.4.tgz",
-      "integrity": "sha512-qoCqKZWSpkh/b03ASGx1WhpKnuZcRWmvuW+ZUu4mvMdfvFzVxblTwUM+9aBd0mlEUFmt6GW8FXhMpHkK3Uzp3w==",
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/rc-steps/-/rc-steps-6.0.0.tgz",
+      "integrity": "sha512-+KfMZIty40mYCQSDvYbZ1jwnuObLauTiIskT1hL4FFOBHP6ZOr8LK0m143yD3kEN5XKHSEX1DIwCj3AYZpoeNQ==",
       "requires": {
-        "@babel/runtime": "^7.10.2",
+        "@babel/runtime": "^7.16.7",
         "classnames": "^2.2.3",
-        "rc-util": "^5.0.1"
+        "rc-util": "^5.16.1"
       }
     },
     "rc-switch": {
-      "version": "3.2.2",
-      "resolved": "https://registry.npmjs.org/rc-switch/-/rc-switch-3.2.2.tgz",
-      "integrity": "sha512-+gUJClsZZzvAHGy1vZfnwySxj+MjLlGRyXKXScrtCTcmiYNPzxDFOxdQ/3pK1Kt/0POvwJ/6ALOR8gwdXGhs+A==",
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/rc-switch/-/rc-switch-4.0.0.tgz",
+      "integrity": "sha512-IfrYC99vN0gKaTyjQdqYuADU0eH00SAFHg3jOp8HrmUpJruhV1SohJzrCbPqPraZeX/6X/QKkdLfkdnUub05WA==",
       "requires": {
         "@babel/runtime": "^7.10.1",
         "classnames": "^2.2.1",
@@ -12793,56 +13102,79 @@
       }
     },
     "rc-table": {
-      "version": "7.25.3",
-      "resolved": "https://registry.npmjs.org/rc-table/-/rc-table-7.25.3.tgz",
-      "integrity": "sha512-McsLJ2rg8EEpRBRYN4Pf9gT7ZNYnjvF9zrBpUBBbUX/fxk+eGi5ff1iPIhMyiHsH71/BmTUzX9nc9XqupD0nMg==",
+      "version": "7.31.1",
+      "resolved": "https://registry.npmjs.org/rc-table/-/rc-table-7.31.1.tgz",
+      "integrity": "sha512-KZPi35aGpv2VaL1Jbc58FBJo063HtKyVjhOFWX4AkBV7tjHHQokMdUoua5E+GPJh6QZUpK/a8PjKa9IZzPLIEA==",
       "requires": {
         "@babel/runtime": "^7.10.1",
+        "@rc-component/context": "^1.3.0",
         "classnames": "^2.2.5",
         "rc-resize-observer": "^1.1.0",
-        "rc-util": "^5.22.5",
-        "shallowequal": "^1.1.0"
+        "rc-util": "^5.27.1"
+      },
+      "dependencies": {
+        "rc-util": {
+          "version": "5.29.3",
+          "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.29.3.tgz",
+          "integrity": "sha512-wX6ZwQTzY2v7phJBquN4mSEIFR0E0qumlENx0zjENtDvoVSq2s7cR95UidKRO1hOHfDsecsfM9D1gO4Kebs7fA==",
+          "requires": {
+            "@babel/runtime": "^7.18.3",
+            "react-is": "^16.12.0"
+          }
+        }
       }
     },
     "rc-tabs": {
-      "version": "11.16.1",
-      "resolved": "https://registry.npmjs.org/rc-tabs/-/rc-tabs-11.16.1.tgz",
-      "integrity": "sha512-bR7Dap23YyfzZQwtKomhiFEFzZuE7WaKWo+ypNRSGB9PDKSc6tM12VP8LWYkvmmQHthgwP0WRN8nFbSJWuqLYw==",
+      "version": "12.5.10",
+      "resolved": "https://registry.npmjs.org/rc-tabs/-/rc-tabs-12.5.10.tgz",
+      "integrity": "sha512-Ay0l0jtd4eXepFH9vWBvinBjqOpqzcsJTerBGwJy435P2S90Uu38q8U/mvc1sxUEVOXX5ZCFbxcWPnfG3dH+tQ==",
       "requires": {
         "@babel/runtime": "^7.11.2",
         "classnames": "2.x",
         "rc-dropdown": "~4.0.0",
-        "rc-menu": "~9.6.0",
+        "rc-menu": "~9.8.0",
+        "rc-motion": "^2.6.2",
         "rc-resize-observer": "^1.0.0",
-        "rc-util": "^5.5.0"
+        "rc-util": "^5.16.0"
       }
     },
     "rc-textarea": {
-      "version": "0.3.7",
-      "resolved": "https://registry.npmjs.org/rc-textarea/-/rc-textarea-0.3.7.tgz",
-      "integrity": "sha512-yCdZ6binKmAQB13hc/oehh0E/QRwoPP1pjF21aHBxlgXO3RzPF6dUu4LG2R4FZ1zx/fQd2L1faktulrXOM/2rw==",
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/rc-textarea/-/rc-textarea-1.1.0.tgz",
+      "integrity": "sha512-NNYSrnCfVunH/ffGak33FDrQSwAljrqnKVYruBrDD8JcKmQFiPsW6v0HzouvqhcJX6hTqLFOci4tZMkmsJdwdw==",
       "requires": {
         "@babel/runtime": "^7.10.1",
         "classnames": "^2.2.1",
+        "rc-input": "^0.2.1",
         "rc-resize-observer": "^1.0.0",
-        "rc-util": "^5.7.0",
-        "shallowequal": "^1.1.0"
+        "rc-util": "^5.27.0"
+      },
+      "dependencies": {
+        "rc-util": {
+          "version": "5.29.3",
+          "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.29.3.tgz",
+          "integrity": "sha512-wX6ZwQTzY2v7phJBquN4mSEIFR0E0qumlENx0zjENtDvoVSq2s7cR95UidKRO1hOHfDsecsfM9D1gO4Kebs7fA==",
+          "requires": {
+            "@babel/runtime": "^7.18.3",
+            "react-is": "^16.12.0"
+          }
+        }
       }
     },
     "rc-tooltip": {
-      "version": "5.2.2",
-      "resolved": "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-5.2.2.tgz",
-      "integrity": "sha512-jtQzU/18S6EI3lhSGoDYhPqNpWajMtS5VV/ld1LwyfrDByQpYmw/LW6U7oFXXLukjfDHQ7Ju705A82PRNFWYhg==",
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-6.0.1.tgz",
+      "integrity": "sha512-MdvPlsD1fDSxKp9+HjXrc/CxLmA/s11QYIh1R7aExxfodKP7CZA++DG1AjrW80F8IUdHYcR43HAm0Y2BYPelHA==",
       "requires": {
         "@babel/runtime": "^7.11.2",
-        "classnames": "^2.3.1",
-        "rc-trigger": "^5.0.0"
+        "@rc-component/trigger": "^1.0.4",
+        "classnames": "^2.3.1"
       }
     },
     "rc-tree": {
-      "version": "5.6.6",
-      "resolved": "https://registry.npmjs.org/rc-tree/-/rc-tree-5.6.6.tgz",
-      "integrity": "sha512-HI/q4D4AHOp48OZcBUvJFWkI5OfnZivvGYI0xzI0dy0Mita2KcTGZv7/Yl6Aq3bL3od3x5AqAXq/7qxR3x4Kkg==",
+      "version": "5.7.3",
+      "resolved": "https://registry.npmjs.org/rc-tree/-/rc-tree-5.7.3.tgz",
+      "integrity": "sha512-Oql2S9+ZmT+mfTp5SNo1XM0QvkENjc0mPRFsHWRFSPuKird0OYMZZKmLznUJ+0aGDeFFWN42wiUZJtMFhrLgLw==",
       "requires": {
         "@babel/runtime": "^7.10.1",
         "classnames": "2.x",
@@ -12852,21 +13184,21 @@
       }
     },
     "rc-tree-select": {
-      "version": "5.4.1",
-      "resolved": "https://registry.npmjs.org/rc-tree-select/-/rc-tree-select-5.4.1.tgz",
-      "integrity": "sha512-xhXnKP8Stu2Q7wTcjJaSzSOLd4wmFtUZOwmy1cioaWyPbpiKlYdnALXA/9U49HOaV3KFXdRHE9Yi0KYED7yOAQ==",
+      "version": "5.7.0",
+      "resolved": "https://registry.npmjs.org/rc-tree-select/-/rc-tree-select-5.7.0.tgz",
+      "integrity": "sha512-YGMpBFK9qBkgng2ZhOw7yFiL9VnjHij+uNvP+tiU/QZGdf2XcO8LHXQNUZRGAEzx4PT5lUs6d7kIfkQ9a74bqg==",
       "requires": {
         "@babel/runtime": "^7.10.1",
         "classnames": "2.x",
-        "rc-select": "~14.1.0",
-        "rc-tree": "~5.6.1",
+        "rc-select": "~14.3.0",
+        "rc-tree": "~5.7.0",
         "rc-util": "^5.16.1"
       }
     },
     "rc-trigger": {
-      "version": "5.3.1",
-      "resolved": "https://registry.npmjs.org/rc-trigger/-/rc-trigger-5.3.1.tgz",
-      "integrity": "sha512-5gaFbDkYSefZ14j2AdzucXzlWgU2ri5uEjkHvsf1ynRhdJbKxNOnw4PBZ9+FVULNGFiDzzlVF8RJnR9P/xrnKQ==",
+      "version": "5.3.4",
+      "resolved": "https://registry.npmjs.org/rc-trigger/-/rc-trigger-5.3.4.tgz",
+      "integrity": "sha512-mQv+vas0TwKcjAO2izNPkqR4j86OemLRmvL2nOzdP9OWNWA1ivoTt5hzFqYNW9zACwmTezRiN8bttrC7cZzYSw==",
       "requires": {
         "@babel/runtime": "^7.18.3",
         "classnames": "^2.2.6",
@@ -12896,13 +13228,29 @@
       }
     },
     "rc-virtual-list": {
-      "version": "3.4.8",
-      "resolved": "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-3.4.8.tgz",
-      "integrity": "sha512-qSN+Rv4i/E7RCTvTMr1uZo7f3crJJg/5DekoCagydo9zsXrxj07zsFSxqizqW+ldGA16lwa8So/bIbV9Ofjddg==",
+      "version": "3.4.13",
+      "resolved": "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-3.4.13.tgz",
+      "integrity": "sha512-cPOVDmcNM7rH6ANotanMDilW/55XnFPw0Jh/GQYtrzZSy3AmWvCnqVNyNC/pgg3lfVmX2994dlzAhuUrd4jG7w==",
       "requires": {
+        "@babel/runtime": "^7.20.0",
         "classnames": "^2.2.6",
         "rc-resize-observer": "^1.0.0",
         "rc-util": "^5.15.0"
+      },
+      "dependencies": {
+        "@babel/runtime": {
+          "version": "7.21.0",
+          "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz",
+          "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==",
+          "requires": {
+            "regenerator-runtime": "^0.13.11"
+          }
+        },
+        "regenerator-runtime": {
+          "version": "0.13.11",
+          "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
+          "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
+        }
       }
     },
     "react": {
@@ -13836,11 +14184,11 @@
       "integrity": "sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA=="
     },
     "scroll-into-view-if-needed": {
-      "version": "2.2.29",
-      "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.29.tgz",
-      "integrity": "sha512-hxpAR6AN+Gh53AdAimHM6C8oTN1ppwVZITihix+WqalywBeFcQ6LdQP5ABNl26nX8GTEL7VT+b8lKpdqq65wXg==",
+      "version": "3.0.6",
+      "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.0.6.tgz",
+      "integrity": "sha512-x+CW0kOzlFNOnseF0DBr0AJ5m+TgGmSOdEZwyiZW0gV87XBvxQKw5A8DvFFgabznA68XqLgVX+PwPX8OzsFvRA==",
       "requires": {
-        "compute-scroll-into-view": "^1.0.17"
+        "compute-scroll-into-view": "^3.0.0"
       }
     },
     "select-hose": {
@@ -14629,6 +14977,11 @@
         "stylelint-config-recommended": "^9.0.0"
       }
     },
+    "stylis": {
+      "version": "4.1.3",
+      "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.1.3.tgz",
+      "integrity": "sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA=="
+    },
     "supports-color": {
       "version": "5.5.0",
       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -14726,9 +15079,12 @@
       }
     },
     "swr": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/swr/-/swr-1.3.0.tgz",
-      "integrity": "sha512-dkghQrOl2ORX9HYrMDtPa7LTVHJjCTeZoB1dqTbnnEDlSvN8JEKpYIYurDfvbQFUUS8Cg8PceFVZNkW0KNNYPw=="
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/swr/-/swr-2.1.1.tgz",
+      "integrity": "sha512-OgwqZmpjOgxNbaez6qzTVqiRWn+Ti5Uzmktk2c01Afqwc50q6z15DeNC8m9G1aY+w2BwEAsKvk59iq6aHlhgyw==",
+      "requires": {
+        "use-sync-external-store": "^1.2.0"
+      }
     },
     "symbol-tree": {
       "version": "3.2.4",
@@ -15014,6 +15370,11 @@
       "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==",
       "dev": true
     },
+    "throttle-debounce": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-5.0.0.tgz",
+      "integrity": "sha512-2iQTSgkkc1Zyk0MeVrt/3BvuOXYPl/R8Z0U2xxo9rjwNciaHDG3R+Lm6dh4EeUci49DanvBnuqI6jshoQQRGEg=="
+    },
     "through": {
       "version": "2.3.8",
       "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
@@ -15297,11 +15658,6 @@
       "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==",
       "dev": true
     },
-    "unstated-next": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/unstated-next/-/unstated-next-1.1.0.tgz",
-      "integrity": "sha512-AAn47ZncPvgBGOvMcn8tSRxsrqwf2VdAPxLASTuLJvZt4rhKfDvUkmYZLGfclImSfTVMv7tF4ynaVxin0JjDCA=="
-    },
     "upath": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
@@ -15347,6 +15703,11 @@
       "resolved": "https://registry.npmjs.org/use-media-antd-query/-/use-media-antd-query-1.1.0.tgz",
       "integrity": "sha512-B6kKZwNV4R+l4Rl11sWO7HqOay9alzs1Vp1b4YJqjz33YxbltBCZtt/yxXxkXN9rc1S7OeEL/GbwC30Wmqhw6Q=="
     },
+    "use-sync-external-store": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz",
+      "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA=="
+    },
     "util-deprecate": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
diff --git a/inlong-dashboard/package.json b/inlong-dashboard/package.json
index 19cfd24f5..046c8192f 100644
--- a/inlong-dashboard/package.json
+++ b/inlong-dashboard/package.json
@@ -3,10 +3,10 @@
   "version": "0.1.0",
   "private": true,
   "dependencies": {
-    "@ant-design/icons": "^4.5.0",
-    "@ant-design/pro-layout": "^6.38.19",
+    "@ant-design/icons": "^5.0.1",
+    "@ant-design/pro-layout": "^7.10.3",
     "ahooks": "^2.10.0",
-    "antd": "^4.22.7",
+    "antd": "^5.3.3",
     "dayjs": "^1.10.4",
     "echarts": "^5.2.2",
     "i18next": "^20.3.1",
@@ -73,7 +73,6 @@
     "@types/react-redux": "^7.1.9",
     "@types/react-router-dom": "^5.1.5",
     "@vitejs/plugin-react": "^2.0.1",
-    "antd-dayjs-webpack-plugin": "^1.0.6",
     "babel-plugin-import": "^1.13.5",
     "craco-less": "^2.1.0-alpha.0",
     "dotenv": "^16.0.3",
diff --git a/inlong-dashboard/src/components/Layout/NavWidget/index.module.less b/inlong-dashboard/src/components/Layout/NavWidget/index.module.less
deleted file mode 100644
index dd64e35fb..000000000
--- a/inlong-dashboard/src/components/Layout/NavWidget/index.module.less
+++ /dev/null
@@ -1,35 +0,0 @@
-
-/*
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements.  See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership.  The ASF licenses this file
-* to you under the Apache License, Version 2.0 (the
-* "License"); you may not use this file except in compliance
-* with the License.  You may obtain a copy of the License at
-*
-*   http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing,
-* software distributed under the License is distributed on an
-* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-* KIND, either express or implied.  See the License for the
-* specific language governing permissions and limitations
-* under the License.
-*/
-
-.iconToolBar {
-  display: inline-block;
-  font-size: 20px;
-  cursor: pointer;
-  
-  > * {
-    display: inline-block;
-    vertical-align: middle;
-    line-height: 20px;
-    height: 20px;
-    margin-right: 20px;
-    margin-right: 20px;
-    color: inherit;
-  }
-}
diff --git a/inlong-dashboard/src/configs/default/conf.ts b/inlong-dashboard/src/configs/default/conf.ts
index 443662b23..931bc617c 100644
--- a/inlong-dashboard/src/configs/default/conf.ts
+++ b/inlong-dashboard/src/configs/default/conf.ts
@@ -18,10 +18,10 @@
  */
 import { PageLoading } from '@ant-design/pro-layout';
 import i18n from '@/i18n';
-import Provider from '@/components/Provider';
-import Layout from '@/components/Layout';
+import Provider from '@/ui/components/Provider';
+import Layout from '@/ui/components/Layout';
 import { message } from 'antd';
-import type { SuccessResponse } from '@/utils/request';
+import type { SuccessResponse } from '@/core/utils/request';
 
 const conf = {
   title: '',
diff --git a/inlong-dashboard/src/configs/menus/index.ts b/inlong-dashboard/src/configs/menus/index.ts
index d02fddecf..fb9d47425 100644
--- a/inlong-dashboard/src/configs/menus/index.ts
+++ b/inlong-dashboard/src/configs/menus/index.ts
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-import { treeToArray } from '@/utils';
+import { treeToArray } from '@/core/utils';
 import menusTreeConf from './conf';
 
 export interface MenuItemType {
diff --git a/inlong-dashboard/src/configs/routes/conf.ts b/inlong-dashboard/src/configs/routes/conf.ts
index 0b76a36f7..d0ac006ff 100644
--- a/inlong-dashboard/src/configs/routes/conf.ts
+++ b/inlong-dashboard/src/configs/routes/conf.ts
@@ -22,33 +22,33 @@ import type { RouteProps } from '.';
 const conf: RouteProps[] = [
   {
     path: '/login',
-    component: () => import('@/pages/Login'),
+    component: () => import('@/ui/pages/Login'),
   },
   {
     path: '/group',
-    component: () => import('@/pages/GroupDashboard'),
+    component: () => import('@/ui/pages/GroupDashboard'),
     childRoutes: [
       {
         path: '/create/:id?',
-        component: () => import('@/pages/GroupDetail'),
+        component: () => import('@/ui/pages/GroupDetail'),
       },
       {
         path: '/detail/:id',
-        component: () => import('@/pages/GroupDetail'),
+        component: () => import('@/ui/pages/GroupDetail'),
       },
     ],
   },
   {
     path: '/consume',
-    component: () => import('@/pages/ConsumeDashboard'),
+    component: () => import('@/ui/pages/ConsumeDashboard'),
     childRoutes: [
       {
         path: '/create/:id?',
-        component: () => import('@/pages/ConsumeDetail'),
+        component: () => import('@/ui/pages/ConsumeDetail'),
       },
       {
         path: '/detail/:id',
-        component: () => import('@/pages/ConsumeDetail'),
+        component: () => import('@/ui/pages/ConsumeDetail'),
       },
     ],
   },
@@ -57,48 +57,48 @@ const conf: RouteProps[] = [
     childRoutes: [
       {
         path: '/:type?',
-        component: () => import('@/pages/Process'),
+        component: () => import('@/ui/pages/Process'),
         childRoutes: [
           {
             path: '/:id',
-            component: () => import('@/pages/ProcessDetail'),
+            component: () => import('@/ui/pages/ProcessDetail'),
           },
         ],
       },
       {
         path: '/detail/:id',
-        component: () => import('@/pages/ProcessDetail'),
+        component: () => import('@/ui/pages/ProcessDetail'),
       },
     ],
   },
   {
     path: '/user',
-    component: () => import('@/pages/UserManagement'),
+    component: () => import('@/ui/pages/UserManagement'),
   },
   {
     path: '/approval',
-    component: () => import('@/pages/ProcessManagement'),
+    component: () => import('@/ui/pages/ProcessManagement'),
   },
   {
     path: '/clusters',
-    component: () => import('@/pages/Clusters'),
+    component: () => import('@/ui/pages/Clusters'),
     childRoutes: [
       {
         path: '/node',
-        component: () => import('@/pages/Clusters/NodeManage'),
+        component: () => import('@/ui/pages/Clusters/NodeManage'),
       },
     ],
   },
   {
     path: '/clusterTags',
-    component: () => import('@/pages/ClusterTags'),
+    component: () => import('@/ui/pages/ClusterTags'),
   },
   {
     path: '/node',
-    component: () => import('@/pages/Nodes'),
+    component: () => import('@/ui/pages/Nodes'),
   },
   {
-    component: () => import('@/pages/Error/404'),
+    component: () => import('@/ui/pages/Error/404'),
   },
 ];
 
diff --git a/inlong-dashboard/src/App.tsx b/inlong-dashboard/src/core/App.tsx
similarity index 92%
rename from inlong-dashboard/src/App.tsx
rename to inlong-dashboard/src/core/App.tsx
index 9c3927194..466f7c5d5 100644
--- a/inlong-dashboard/src/App.tsx
+++ b/inlong-dashboard/src/core/App.tsx
@@ -22,13 +22,15 @@
  */
 import React, { Suspense, lazy, useEffect, useCallback } from 'react';
 import { HashRouter as Router, Switch, Route, Redirect } from 'react-router-dom';
-import { useLocation, useHistory, useDispatch, UseRequestProvider, useSelector } from '@/hooks';
+import { useSelector, useDispatch } from 'react-redux';
+import { UseRequestProvider } from 'ahooks';
+import { useLocation, useHistory } from 'react-router';
 import { Provider } from 'react-redux';
 import routes, { RouteProps } from '@/configs/routes';
-import { State } from '@/models';
-import request from '@/utils/request';
+import { State } from '@/core/stores';
+import request from '@/core/utils/request';
 import { localesConfig } from '@/configs/locales';
-import store from './models';
+import store from './stores';
 import { config } from '@/configs/default';
 
 const { AppProvider, AppLoading, AppLayout, useLogin, redirectRoutes } = config;
@@ -104,7 +106,7 @@ const App = () => {
             exact
             path="/login"
             render={() => {
-              const LazyLogin = lazy(() => import('@/pages/Login'));
+              const LazyLogin = lazy(() => import('@/ui/pages/Login'));
               return (
                 <Suspense fallback={<AppLoading />}>
                   <LazyLogin />
diff --git a/inlong-dashboard/src/models/index.ts b/inlong-dashboard/src/core/stores/index.ts
similarity index 100%
rename from inlong-dashboard/src/models/index.ts
rename to inlong-dashboard/src/core/stores/index.ts
diff --git a/inlong-dashboard/src/utils/index.ts b/inlong-dashboard/src/core/utils/index.ts
similarity index 100%
rename from inlong-dashboard/src/utils/index.ts
rename to inlong-dashboard/src/core/utils/index.ts
diff --git a/inlong-dashboard/src/utils/pattern.ts b/inlong-dashboard/src/core/utils/pattern.ts
similarity index 100%
rename from inlong-dashboard/src/utils/pattern.ts
rename to inlong-dashboard/src/core/utils/pattern.ts
diff --git a/inlong-dashboard/src/utils/request.ts b/inlong-dashboard/src/core/utils/request.ts
similarity index 100%
rename from inlong-dashboard/src/utils/request.ts
rename to inlong-dashboard/src/core/utils/request.ts
diff --git a/inlong-dashboard/src/utils/requestConcurrentMiddleware.ts b/inlong-dashboard/src/core/utils/requestConcurrentMiddleware.ts
similarity index 100%
rename from inlong-dashboard/src/utils/requestConcurrentMiddleware.ts
rename to inlong-dashboard/src/core/utils/requestConcurrentMiddleware.ts
diff --git a/inlong-dashboard/src/i18n.ts b/inlong-dashboard/src/i18n.ts
index f71bfb580..f2632f23d 100644
--- a/inlong-dashboard/src/i18n.ts
+++ b/inlong-dashboard/src/i18n.ts
@@ -20,7 +20,7 @@
 import i18n from 'i18next';
 import { initReactI18next } from 'react-i18next';
 import { getCurrentLocale } from '@/configs/locales';
-import { isDevelopEnv } from '@/utils';
+import { isDevelopEnv } from '@/core/utils';
 
 const resources = {
   en: {
diff --git a/inlong-dashboard/src/index.tsx b/inlong-dashboard/src/index.tsx
index 800a2d148..5c6d8b68f 100644
--- a/inlong-dashboard/src/index.tsx
+++ b/inlong-dashboard/src/index.tsx
@@ -19,6 +19,6 @@
 
 import React from 'react';
 import ReactDOM from 'react-dom';
-import App from '@/App';
+import App from '@/core/App';
 
 ReactDOM.render(<App />, document.getElementById('root'));
diff --git a/inlong-dashboard/src/loaders/Loader.ts b/inlong-dashboard/src/loaders/Loader.ts
index 684d75257..3cbbe5abd 100644
--- a/inlong-dashboard/src/loaders/Loader.ts
+++ b/inlong-dashboard/src/loaders/Loader.ts
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-import { MetaExportWithBackendList } from '@/metas/types';
+import { MetaExportWithBackendList } from '@/plugins/types';
 
 export abstract class Loader {
   abstract loadPluginList<T>(
diff --git a/inlong-dashboard/src/loaders/clusters/ClusterDefaultLoader.ts b/inlong-dashboard/src/loaders/clusters/ClusterDefaultLoader.ts
index 14fff610f..3fcaf3e4b 100644
--- a/inlong-dashboard/src/loaders/clusters/ClusterDefaultLoader.ts
+++ b/inlong-dashboard/src/loaders/clusters/ClusterDefaultLoader.ts
@@ -18,7 +18,7 @@
  */
 
 import { Loader } from '@/loaders/Loader';
-import { MetaExportWithBackendList } from '@/metas/types';
+import { MetaExportWithBackendList } from '@/plugins/types';
 
 export class ClusterDefaultLoader implements Loader {
   loadPluginList<T>(
diff --git a/inlong-dashboard/src/loaders/consumes/ConsumeDefaultLoader.ts b/inlong-dashboard/src/loaders/consumes/ConsumeDefaultLoader.ts
index f05cb4891..d9323aee1 100644
--- a/inlong-dashboard/src/loaders/consumes/ConsumeDefaultLoader.ts
+++ b/inlong-dashboard/src/loaders/consumes/ConsumeDefaultLoader.ts
@@ -18,7 +18,7 @@
  */
 
 import { Loader } from '@/loaders/Loader';
-import { MetaExportWithBackendList } from '@/metas/types';
+import { MetaExportWithBackendList } from '@/plugins/types';
 
 export class ConsumeDefaultLoader implements Loader {
   loadPluginList<T>(
diff --git a/inlong-dashboard/src/loaders/groups/GroupDefaultLoader.ts b/inlong-dashboard/src/loaders/groups/GroupDefaultLoader.ts
index ad6caf305..8c4914d87 100644
--- a/inlong-dashboard/src/loaders/groups/GroupDefaultLoader.ts
+++ b/inlong-dashboard/src/loaders/groups/GroupDefaultLoader.ts
@@ -18,7 +18,7 @@
  */
 
 import { Loader } from '@/loaders/Loader';
-import { MetaExportWithBackendList } from '@/metas/types';
+import { MetaExportWithBackendList } from '@/plugins/types';
 
 export class GroupDefaultLoader implements Loader {
   loadPluginList<T>(
diff --git a/inlong-dashboard/src/loaders/nodes/NodeDefaultLoader.ts b/inlong-dashboard/src/loaders/nodes/NodeDefaultLoader.ts
index 8550aa8d6..5884ecf02 100644
--- a/inlong-dashboard/src/loaders/nodes/NodeDefaultLoader.ts
+++ b/inlong-dashboard/src/loaders/nodes/NodeDefaultLoader.ts
@@ -18,7 +18,7 @@
  */
 
 import { Loader } from '@/loaders/Loader';
-import { MetaExportWithBackendList } from '@/metas/types';
+import { MetaExportWithBackendList } from '@/plugins/types';
 
 export class NodeDefaultLoader implements Loader {
   loadPluginList<T>(
diff --git a/inlong-dashboard/src/loaders/sinks/SinkDefaultLoader.ts b/inlong-dashboard/src/loaders/sinks/SinkDefaultLoader.ts
index f7cf921e2..615c27b50 100644
--- a/inlong-dashboard/src/loaders/sinks/SinkDefaultLoader.ts
+++ b/inlong-dashboard/src/loaders/sinks/SinkDefaultLoader.ts
@@ -18,7 +18,7 @@
  */
 
 import { Loader } from '@/loaders/Loader';
-import { MetaExportWithBackendList } from '@/metas/types';
+import { MetaExportWithBackendList } from '@/plugins/types';
 
 export class SinkDefaultLoader implements Loader {
   loadPluginList<T>(
diff --git a/inlong-dashboard/src/loaders/sources/SourceDefaultLoader.ts b/inlong-dashboard/src/loaders/sources/SourceDefaultLoader.ts
index e53220e03..e1f865516 100644
--- a/inlong-dashboard/src/loaders/sources/SourceDefaultLoader.ts
+++ b/inlong-dashboard/src/loaders/sources/SourceDefaultLoader.ts
@@ -18,7 +18,7 @@
  */
 
 import { Loader } from '@/loaders/Loader';
-import { MetaExportWithBackendList } from '@/metas/types';
+import { MetaExportWithBackendList } from '@/plugins/types';
 
 export class SourceDefaultLoader implements Loader {
   loadPluginList<T>(
diff --git a/inlong-dashboard/src/loaders/streams/StreamDefaultLoader.ts b/inlong-dashboard/src/loaders/streams/StreamDefaultLoader.ts
index f75925164..e5c5bad89 100644
--- a/inlong-dashboard/src/loaders/streams/StreamDefaultLoader.ts
+++ b/inlong-dashboard/src/loaders/streams/StreamDefaultLoader.ts
@@ -18,7 +18,7 @@
  */
 
 import { Loader } from '@/loaders/Loader';
-import { MetaExportWithBackendList } from '@/metas/types';
+import { MetaExportWithBackendList } from '@/plugins/types';
 
 export class StreamDefaultLoader implements Loader {
   loadPluginList<T>(
diff --git a/inlong-dashboard/src/metas/DataStatic.ts b/inlong-dashboard/src/plugins/DataStatic.ts
similarity index 100%
rename from inlong-dashboard/src/metas/DataStatic.ts
rename to inlong-dashboard/src/plugins/DataStatic.ts
diff --git a/inlong-dashboard/src/metas/DataWithBackend.ts b/inlong-dashboard/src/plugins/DataWithBackend.ts
similarity index 100%
rename from inlong-dashboard/src/metas/DataWithBackend.ts
rename to inlong-dashboard/src/plugins/DataWithBackend.ts
diff --git a/inlong-dashboard/src/metas/RenderList.ts b/inlong-dashboard/src/plugins/RenderList.ts
similarity index 100%
rename from inlong-dashboard/src/metas/RenderList.ts
rename to inlong-dashboard/src/plugins/RenderList.ts
diff --git a/inlong-dashboard/src/metas/RenderRow.ts b/inlong-dashboard/src/plugins/RenderRow.ts
similarity index 97%
rename from inlong-dashboard/src/metas/RenderRow.ts
rename to inlong-dashboard/src/plugins/RenderRow.ts
index c01643853..91872c188 100644
--- a/inlong-dashboard/src/metas/RenderRow.ts
+++ b/inlong-dashboard/src/plugins/RenderRow.ts
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-import type { FormItemProps as FieldItemType } from '@/components/FormGenerator';
+import type { FormItemProps as FieldItemType } from '@/ui/components/FormGenerator';
 import merge from 'lodash/merge';
 
 export abstract class RenderRow {
diff --git a/inlong-dashboard/src/metas/clusters/common/ClusterDefaultInfo.ts b/inlong-dashboard/src/plugins/clusters/common/ClusterDefaultInfo.ts
similarity index 93%
rename from inlong-dashboard/src/metas/clusters/common/ClusterDefaultInfo.ts
rename to inlong-dashboard/src/plugins/clusters/common/ClusterDefaultInfo.ts
index dc18e62a9..4da07c26d 100644
--- a/inlong-dashboard/src/metas/clusters/common/ClusterDefaultInfo.ts
+++ b/inlong-dashboard/src/plugins/clusters/common/ClusterDefaultInfo.ts
@@ -17,10 +17,10 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
-import UserSelect from '@/components/UserSelect';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
+import UserSelect from '@/ui/components/UserSelect';
 import { clusters, defaultValue } from '..';
 
 const { I18nMap, I18n } = DataWithBackend;
diff --git a/inlong-dashboard/src/metas/clusters/common/ClusterInfo.ts b/inlong-dashboard/src/plugins/clusters/common/ClusterInfo.ts
similarity index 100%
rename from inlong-dashboard/src/metas/clusters/common/ClusterInfo.ts
rename to inlong-dashboard/src/plugins/clusters/common/ClusterInfo.ts
diff --git a/inlong-dashboard/src/metas/clusters/defaults/Agent.ts b/inlong-dashboard/src/plugins/clusters/defaults/Agent.ts
similarity index 85%
rename from inlong-dashboard/src/metas/clusters/defaults/Agent.ts
rename to inlong-dashboard/src/plugins/clusters/defaults/Agent.ts
index 2b81d5bce..94e9d7630 100644
--- a/inlong-dashboard/src/metas/clusters/defaults/Agent.ts
+++ b/inlong-dashboard/src/plugins/clusters/defaults/Agent.ts
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import { ClusterInfo } from '../common/ClusterInfo';
 
 export default class AgentCluster
diff --git a/inlong-dashboard/src/metas/clusters/defaults/DataProxy.ts b/inlong-dashboard/src/plugins/clusters/defaults/DataProxy.ts
similarity index 85%
rename from inlong-dashboard/src/metas/clusters/defaults/DataProxy.ts
rename to inlong-dashboard/src/plugins/clusters/defaults/DataProxy.ts
index a834e4c77..3e2dbfcc8 100644
--- a/inlong-dashboard/src/metas/clusters/defaults/DataProxy.ts
+++ b/inlong-dashboard/src/plugins/clusters/defaults/DataProxy.ts
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import { ClusterInfo } from '../common/ClusterInfo';
 
 export default class DataProxyCluster
diff --git a/inlong-dashboard/src/metas/clusters/defaults/Kafka.ts b/inlong-dashboard/src/plugins/clusters/defaults/Kafka.ts
similarity index 88%
rename from inlong-dashboard/src/metas/clusters/defaults/Kafka.ts
rename to inlong-dashboard/src/plugins/clusters/defaults/Kafka.ts
index d40e21499..13ef52c08 100644
--- a/inlong-dashboard/src/metas/clusters/defaults/Kafka.ts
+++ b/inlong-dashboard/src/plugins/clusters/defaults/Kafka.ts
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import { ClusterInfo } from '../common/ClusterInfo';
 
 const { I18n } = DataWithBackend;
diff --git a/inlong-dashboard/src/metas/clusters/defaults/Pulsar.ts b/inlong-dashboard/src/plugins/clusters/defaults/Pulsar.ts
similarity index 92%
rename from inlong-dashboard/src/metas/clusters/defaults/Pulsar.ts
rename to inlong-dashboard/src/plugins/clusters/defaults/Pulsar.ts
index ba9306585..bbde86c5f 100644
--- a/inlong-dashboard/src/metas/clusters/defaults/Pulsar.ts
+++ b/inlong-dashboard/src/plugins/clusters/defaults/Pulsar.ts
@@ -18,9 +18,9 @@
  */
 
 import i18n from '@/i18n';
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import { ClusterInfo } from '../common/ClusterInfo';
 
 const { I18n } = DataWithBackend;
diff --git a/inlong-dashboard/src/metas/clusters/defaults/TubeMq.ts b/inlong-dashboard/src/plugins/clusters/defaults/TubeMq.ts
similarity index 91%
rename from inlong-dashboard/src/metas/clusters/defaults/TubeMq.ts
rename to inlong-dashboard/src/plugins/clusters/defaults/TubeMq.ts
index d8f229157..17372666c 100644
--- a/inlong-dashboard/src/metas/clusters/defaults/TubeMq.ts
+++ b/inlong-dashboard/src/plugins/clusters/defaults/TubeMq.ts
@@ -18,9 +18,9 @@
  */
 
 import i18n from '@/i18n';
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import { ClusterInfo } from '../common/ClusterInfo';
 
 const { I18n } = DataWithBackend;
diff --git a/inlong-dashboard/src/metas/clusters/defaults/index.ts b/inlong-dashboard/src/plugins/clusters/defaults/index.ts
similarity index 95%
rename from inlong-dashboard/src/metas/clusters/defaults/index.ts
rename to inlong-dashboard/src/plugins/clusters/defaults/index.ts
index 2edda556d..8d923db35 100644
--- a/inlong-dashboard/src/metas/clusters/defaults/index.ts
+++ b/inlong-dashboard/src/plugins/clusters/defaults/index.ts
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-import type { MetaExportWithBackendList } from '@/metas/types';
+import type { MetaExportWithBackendList } from '@/plugins/types';
 import type { ClusterMetaType } from '../types';
 
 export const allDefaultClusters: MetaExportWithBackendList<ClusterMetaType> = [
diff --git a/inlong-dashboard/src/metas/clusters/extends/index.ts b/inlong-dashboard/src/plugins/clusters/extends/index.ts
similarity index 93%
rename from inlong-dashboard/src/metas/clusters/extends/index.ts
rename to inlong-dashboard/src/plugins/clusters/extends/index.ts
index e48f66967..9e3a4b977 100644
--- a/inlong-dashboard/src/metas/clusters/extends/index.ts
+++ b/inlong-dashboard/src/plugins/clusters/extends/index.ts
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-import type { MetaExportWithBackendList } from '@/metas/types';
+import type { MetaExportWithBackendList } from '@/plugins/types';
 import type { ClusterMetaType } from '../types';
 
 export const allExtendsClusters: MetaExportWithBackendList<ClusterMetaType> = [
diff --git a/inlong-dashboard/src/metas/clusters/index.ts b/inlong-dashboard/src/plugins/clusters/index.ts
similarity index 100%
rename from inlong-dashboard/src/metas/clusters/index.ts
rename to inlong-dashboard/src/plugins/clusters/index.ts
diff --git a/inlong-dashboard/src/metas/clusters/types.ts b/inlong-dashboard/src/plugins/clusters/types.ts
similarity index 100%
rename from inlong-dashboard/src/metas/clusters/types.ts
rename to inlong-dashboard/src/plugins/clusters/types.ts
diff --git a/inlong-dashboard/src/metas/consumes/common/ConsumeDefaultInfo.ts b/inlong-dashboard/src/plugins/consumes/common/ConsumeDefaultInfo.ts
similarity index 95%
rename from inlong-dashboard/src/metas/consumes/common/ConsumeDefaultInfo.ts
rename to inlong-dashboard/src/plugins/consumes/common/ConsumeDefaultInfo.ts
index 700b1bfe2..7f78e85b5 100644
--- a/inlong-dashboard/src/metas/consumes/common/ConsumeDefaultInfo.ts
+++ b/inlong-dashboard/src/plugins/consumes/common/ConsumeDefaultInfo.ts
@@ -17,12 +17,12 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import i18n from '@/i18n';
-import UserSelect from '@/components/UserSelect';
-import { timestampFormat } from '@/utils';
+import UserSelect from '@/ui/components/UserSelect';
+import { timestampFormat } from '@/core/utils';
 import {
   statusList,
   lastConsumerStatusList,
diff --git a/inlong-dashboard/src/metas/consumes/common/ConsumeInfo.ts b/inlong-dashboard/src/plugins/consumes/common/ConsumeInfo.ts
similarity index 100%
rename from inlong-dashboard/src/metas/consumes/common/ConsumeInfo.ts
rename to inlong-dashboard/src/plugins/consumes/common/ConsumeInfo.ts
diff --git a/inlong-dashboard/src/metas/consumes/common/status.tsx b/inlong-dashboard/src/plugins/consumes/common/status.tsx
similarity index 95%
rename from inlong-dashboard/src/metas/consumes/common/status.tsx
rename to inlong-dashboard/src/plugins/consumes/common/status.tsx
index ca7e21e48..40d952cb3 100644
--- a/inlong-dashboard/src/metas/consumes/common/status.tsx
+++ b/inlong-dashboard/src/plugins/consumes/common/status.tsx
@@ -19,8 +19,8 @@
 
 import React from 'react';
 import i18n from '@/i18n';
-import StatusTag, { StatusTagProps } from '@/components/StatusTag';
-import { ClockCircleFilled } from '@/components/Icons';
+import StatusTag, { StatusTagProps } from '@/ui/components/StatusTag';
+import { ClockCircleFilled } from '@/ui/components/Icons';
 
 type StatusProp = {
   label: string;
diff --git a/inlong-dashboard/src/metas/consumes/defaults/Kafka.ts b/inlong-dashboard/src/plugins/consumes/defaults/Kafka.ts
similarity index 85%
rename from inlong-dashboard/src/metas/consumes/defaults/Kafka.ts
rename to inlong-dashboard/src/plugins/consumes/defaults/Kafka.ts
index 27392fcc2..af6410a7c 100644
--- a/inlong-dashboard/src/metas/consumes/defaults/Kafka.ts
+++ b/inlong-dashboard/src/plugins/consumes/defaults/Kafka.ts
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import { ConsumeInfo } from '../common/ConsumeInfo';
 
 export default class KafkaConsume
diff --git a/inlong-dashboard/src/metas/consumes/defaults/Pulsar.ts b/inlong-dashboard/src/plugins/consumes/defaults/Pulsar.ts
similarity index 93%
rename from inlong-dashboard/src/metas/consumes/defaults/Pulsar.ts
rename to inlong-dashboard/src/plugins/consumes/defaults/Pulsar.ts
index af13a3042..a34364388 100644
--- a/inlong-dashboard/src/metas/consumes/defaults/Pulsar.ts
+++ b/inlong-dashboard/src/plugins/consumes/defaults/Pulsar.ts
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import i18n from '@/i18n';
 import { ConsumeInfo } from '../common/ConsumeInfo';
 
diff --git a/inlong-dashboard/src/metas/consumes/defaults/TubeMq.ts b/inlong-dashboard/src/plugins/consumes/defaults/TubeMq.ts
similarity index 91%
rename from inlong-dashboard/src/metas/consumes/defaults/TubeMq.ts
rename to inlong-dashboard/src/plugins/consumes/defaults/TubeMq.ts
index e0758b531..05d32238e 100644
--- a/inlong-dashboard/src/metas/consumes/defaults/TubeMq.ts
+++ b/inlong-dashboard/src/plugins/consumes/defaults/TubeMq.ts
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import i18n from '@/i18n';
 import { ConsumeInfo } from '../common/ConsumeInfo';
 
diff --git a/inlong-dashboard/src/metas/consumes/defaults/index.ts b/inlong-dashboard/src/plugins/consumes/defaults/index.ts
similarity index 95%
rename from inlong-dashboard/src/metas/consumes/defaults/index.ts
rename to inlong-dashboard/src/plugins/consumes/defaults/index.ts
index 0f3195d68..e053e4e11 100644
--- a/inlong-dashboard/src/metas/consumes/defaults/index.ts
+++ b/inlong-dashboard/src/plugins/consumes/defaults/index.ts
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-import type { MetaExportWithBackendList } from '@/metas/types';
+import type { MetaExportWithBackendList } from '@/plugins/types';
 import type { ConsumeMetaType } from '../types';
 
 export const allDefaultConsumes: MetaExportWithBackendList<ConsumeMetaType> = [
diff --git a/inlong-dashboard/src/metas/consumes/extends/index.ts b/inlong-dashboard/src/plugins/consumes/extends/index.ts
similarity index 93%
rename from inlong-dashboard/src/metas/consumes/extends/index.ts
rename to inlong-dashboard/src/plugins/consumes/extends/index.ts
index 715e26018..37e98072a 100644
--- a/inlong-dashboard/src/metas/consumes/extends/index.ts
+++ b/inlong-dashboard/src/plugins/consumes/extends/index.ts
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-import type { MetaExportWithBackendList } from '@/metas/types';
+import type { MetaExportWithBackendList } from '@/plugins/types';
 import type { ConsumeMetaType } from '../types';
 
 export const allExtendsConsumes: MetaExportWithBackendList<ConsumeMetaType> = [
diff --git a/inlong-dashboard/src/metas/consumes/index.ts b/inlong-dashboard/src/plugins/consumes/index.ts
similarity index 100%
rename from inlong-dashboard/src/metas/consumes/index.ts
rename to inlong-dashboard/src/plugins/consumes/index.ts
diff --git a/inlong-dashboard/src/metas/consumes/types.ts b/inlong-dashboard/src/plugins/consumes/types.ts
similarity index 100%
rename from inlong-dashboard/src/metas/consumes/types.ts
rename to inlong-dashboard/src/plugins/consumes/types.ts
diff --git a/inlong-dashboard/src/metas/groups/common/GroupDefaultInfo.ts b/inlong-dashboard/src/plugins/groups/common/GroupDefaultInfo.ts
similarity index 94%
rename from inlong-dashboard/src/metas/groups/common/GroupDefaultInfo.ts
rename to inlong-dashboard/src/plugins/groups/common/GroupDefaultInfo.ts
index db603bfe4..bbf3e1595 100644
--- a/inlong-dashboard/src/metas/groups/common/GroupDefaultInfo.ts
+++ b/inlong-dashboard/src/plugins/groups/common/GroupDefaultInfo.ts
@@ -17,11 +17,11 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import i18n from '@/i18n';
-import UserSelect from '@/components/UserSelect';
+import UserSelect from '@/ui/components/UserSelect';
 import { statusList, genStatusTag } from './status';
 import { groups, defaultValue } from '..';
 
diff --git a/inlong-dashboard/src/metas/groups/common/GroupInfo.ts b/inlong-dashboard/src/plugins/groups/common/GroupInfo.ts
similarity index 100%
rename from inlong-dashboard/src/metas/groups/common/GroupInfo.ts
rename to inlong-dashboard/src/plugins/groups/common/GroupInfo.ts
diff --git a/inlong-dashboard/src/metas/groups/common/status.tsx b/inlong-dashboard/src/plugins/groups/common/status.tsx
similarity index 95%
rename from inlong-dashboard/src/metas/groups/common/status.tsx
rename to inlong-dashboard/src/plugins/groups/common/status.tsx
index fa868a25d..76a35194c 100644
--- a/inlong-dashboard/src/metas/groups/common/status.tsx
+++ b/inlong-dashboard/src/plugins/groups/common/status.tsx
@@ -19,8 +19,8 @@
 
 import React from 'react';
 import i18n from '@/i18n';
-import StatusTag, { StatusTagProps } from '@/components/StatusTag';
-import { ClockCircleFilled } from '@/components/Icons';
+import StatusTag, { StatusTagProps } from '@/ui/components/StatusTag';
+import { ClockCircleFilled } from '@/ui/components/Icons';
 
 type StatusProp = {
   label: string;
diff --git a/inlong-dashboard/src/metas/groups/defaults/Kafka.ts b/inlong-dashboard/src/plugins/groups/defaults/Kafka.ts
similarity index 90%
rename from inlong-dashboard/src/metas/groups/defaults/Kafka.ts
rename to inlong-dashboard/src/plugins/groups/defaults/Kafka.ts
index 2106269e3..58e0d0257 100644
--- a/inlong-dashboard/src/metas/groups/defaults/Kafka.ts
+++ b/inlong-dashboard/src/plugins/groups/defaults/Kafka.ts
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import { GroupInfo } from '../common/GroupInfo';
 import i18n from '@/i18n';
 
diff --git a/inlong-dashboard/src/metas/groups/defaults/Pulsar.ts b/inlong-dashboard/src/plugins/groups/defaults/Pulsar.ts
similarity index 97%
rename from inlong-dashboard/src/metas/groups/defaults/Pulsar.ts
rename to inlong-dashboard/src/plugins/groups/defaults/Pulsar.ts
index 7e6be1602..4ca89f804 100644
--- a/inlong-dashboard/src/metas/groups/defaults/Pulsar.ts
+++ b/inlong-dashboard/src/plugins/groups/defaults/Pulsar.ts
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import i18n from '@/i18n';
 import { GroupInfo } from '../common/GroupInfo';
 
diff --git a/inlong-dashboard/src/metas/groups/defaults/TubeMq.ts b/inlong-dashboard/src/plugins/groups/defaults/TubeMq.ts
similarity index 93%
rename from inlong-dashboard/src/metas/groups/defaults/TubeMq.ts
rename to inlong-dashboard/src/plugins/groups/defaults/TubeMq.ts
index 81730fd7a..0b46fa65f 100644
--- a/inlong-dashboard/src/metas/groups/defaults/TubeMq.ts
+++ b/inlong-dashboard/src/plugins/groups/defaults/TubeMq.ts
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import i18n from '@/i18n';
 import { GroupInfo } from '../common/GroupInfo';
 
diff --git a/inlong-dashboard/src/metas/groups/defaults/index.ts b/inlong-dashboard/src/plugins/groups/defaults/index.ts
similarity index 95%
rename from inlong-dashboard/src/metas/groups/defaults/index.ts
rename to inlong-dashboard/src/plugins/groups/defaults/index.ts
index 1eacc5e5b..61384ef76 100644
--- a/inlong-dashboard/src/metas/groups/defaults/index.ts
+++ b/inlong-dashboard/src/plugins/groups/defaults/index.ts
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-import type { MetaExportWithBackendList } from '@/metas/types';
+import type { MetaExportWithBackendList } from '@/plugins/types';
 import type { GroupMetaType } from '../types';
 
 export const allDefaultGroups: MetaExportWithBackendList<GroupMetaType> = [
diff --git a/inlong-dashboard/src/metas/groups/extends/index.ts b/inlong-dashboard/src/plugins/groups/extends/index.ts
similarity index 93%
rename from inlong-dashboard/src/metas/groups/extends/index.ts
rename to inlong-dashboard/src/plugins/groups/extends/index.ts
index d4c701227..5a2ecda6f 100644
--- a/inlong-dashboard/src/metas/groups/extends/index.ts
+++ b/inlong-dashboard/src/plugins/groups/extends/index.ts
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-import type { MetaExportWithBackendList } from '@/metas/types';
+import type { MetaExportWithBackendList } from '@/plugins/types';
 import type { GroupMetaType } from '../types';
 
 export const allExtendsGroups: MetaExportWithBackendList<GroupMetaType> = [
diff --git a/inlong-dashboard/src/metas/groups/index.ts b/inlong-dashboard/src/plugins/groups/index.ts
similarity index 100%
rename from inlong-dashboard/src/metas/groups/index.ts
rename to inlong-dashboard/src/plugins/groups/index.ts
diff --git a/inlong-dashboard/src/metas/groups/types.ts b/inlong-dashboard/src/plugins/groups/types.ts
similarity index 100%
rename from inlong-dashboard/src/metas/groups/types.ts
rename to inlong-dashboard/src/plugins/groups/types.ts
diff --git a/inlong-dashboard/src/metas/index.ts b/inlong-dashboard/src/plugins/index.ts
similarity index 84%
rename from inlong-dashboard/src/metas/index.ts
rename to inlong-dashboard/src/plugins/index.ts
index cdc1f6614..c164c2552 100644
--- a/inlong-dashboard/src/metas/index.ts
+++ b/inlong-dashboard/src/plugins/index.ts
@@ -18,7 +18,7 @@
  */
 
 import { useState, useEffect, useCallback } from 'react';
-import type { MetaExportWithBackendList } from '@/metas/types';
+import type { MetaExportWithBackendList } from '@/plugins/types';
 import { consumes, defaultValue as defaultConsume } from './consumes';
 import { groups, defaultValue as defaultGroup } from './groups';
 import { clusters, defaultValue as defaultCluster } from './clusters';
@@ -64,21 +64,24 @@ export const useDefaultMeta = (metaType: MetaTypeKeys) => {
 
 export const useLoadMeta = <T>(metaType: MetaTypeKeys, subType: string): UseLoadMetaResult<T> => {
   const [loading, setLoading] = useState<boolean>(false);
+  const [loaded, setLoaded] = useState<Record<string, { default: T }>>();
   const [Entity, setEntity] = useState<{ default: T }>();
 
   const { defaultValue } = useDefaultMeta(metaType);
 
   const load = useCallback(
-    async subType => {
+    async _subType => {
       const subList = metasMap[metaType]?.[0];
       const LoadEntity =
-        subList?.find(item => item.value === subType)?.LoadEntity ||
+        subList?.find(item => item.value === _subType)?.LoadEntity ||
         subList?.find(item => item.value === defaultValue)?.LoadEntity;
       if (LoadEntity) {
         setLoading(true);
         try {
           const result = await LoadEntity();
-          setEntity(result);
+          // setEntity(result);
+          // setEntity(prev => ({ ...prev, [_subType]: result }));
+          setLoaded(prev => ({ ...prev, [_subType]: result }));
         } finally {
           setLoading(false);
         }
@@ -91,8 +94,14 @@ export const useLoadMeta = <T>(metaType: MetaTypeKeys, subType: string): UseLoad
     load(subType);
   }, [subType, load]);
 
+  useEffect(() => {
+    const Entity = loaded?.[subType];
+    if (Entity) setEntity(Entity);
+  }, [subType, loaded]);
+
   return {
     loading,
+    // Entity: Entity?.[subType]?.default,
     Entity: Entity?.default,
   };
 };
diff --git a/inlong-dashboard/src/metas/nodes/common/NodeDefaultInfo.ts b/inlong-dashboard/src/plugins/nodes/common/NodeDefaultInfo.ts
similarity index 92%
rename from inlong-dashboard/src/metas/nodes/common/NodeDefaultInfo.ts
rename to inlong-dashboard/src/plugins/nodes/common/NodeDefaultInfo.ts
index cb8d13118..2c5b3a7e3 100644
--- a/inlong-dashboard/src/metas/nodes/common/NodeDefaultInfo.ts
+++ b/inlong-dashboard/src/plugins/nodes/common/NodeDefaultInfo.ts
@@ -17,10 +17,10 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
-import UserSelect from '@/components/UserSelect';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
+import UserSelect from '@/ui/components/UserSelect';
 import { nodes, defaultValue } from '..';
 
 const { I18nMap, I18n } = DataWithBackend;
diff --git a/inlong-dashboard/src/metas/nodes/common/NodeInfo.ts b/inlong-dashboard/src/plugins/nodes/common/NodeInfo.ts
similarity index 100%
rename from inlong-dashboard/src/metas/nodes/common/NodeInfo.ts
rename to inlong-dashboard/src/plugins/nodes/common/NodeInfo.ts
diff --git a/inlong-dashboard/src/metas/nodes/common/dao.ts b/inlong-dashboard/src/plugins/nodes/common/dao.ts
similarity index 96%
rename from inlong-dashboard/src/metas/nodes/common/dao.ts
rename to inlong-dashboard/src/plugins/nodes/common/dao.ts
index 93c643ed2..5b5efcebf 100644
--- a/inlong-dashboard/src/metas/nodes/common/dao.ts
+++ b/inlong-dashboard/src/plugins/nodes/common/dao.ts
@@ -17,8 +17,8 @@
  * under the License.
  */
 
-import { useRequest } from '@/hooks';
-import request from '@/utils/request';
+import { useRequest } from 'ahooks';
+import request from '@/core/utils/request';
 import type { NodeInfo } from './NodeInfo';
 import { nodes } from '..';
 
diff --git a/inlong-dashboard/src/metas/nodes/defaults/ClickHouse.ts b/inlong-dashboard/src/plugins/nodes/defaults/ClickHouse.ts
similarity index 90%
rename from inlong-dashboard/src/metas/nodes/defaults/ClickHouse.ts
rename to inlong-dashboard/src/plugins/nodes/defaults/ClickHouse.ts
index d1d7161bf..90d6af658 100644
--- a/inlong-dashboard/src/metas/nodes/defaults/ClickHouse.ts
+++ b/inlong-dashboard/src/plugins/nodes/defaults/ClickHouse.ts
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import { NodeInfo } from '../common/NodeInfo';
 
 const { I18n } = DataWithBackend;
diff --git a/inlong-dashboard/src/metas/nodes/defaults/Elasticsearch.ts b/inlong-dashboard/src/plugins/nodes/defaults/Elasticsearch.ts
similarity index 95%
rename from inlong-dashboard/src/metas/nodes/defaults/Elasticsearch.ts
rename to inlong-dashboard/src/plugins/nodes/defaults/Elasticsearch.ts
index dc7653ebe..806fba032 100644
--- a/inlong-dashboard/src/metas/nodes/defaults/Elasticsearch.ts
+++ b/inlong-dashboard/src/plugins/nodes/defaults/Elasticsearch.ts
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import { NodeInfo } from '../common/NodeInfo';
 import i18n from '@/i18n';
 
diff --git a/inlong-dashboard/src/metas/nodes/defaults/Hive.ts b/inlong-dashboard/src/plugins/nodes/defaults/Hive.ts
similarity index 91%
rename from inlong-dashboard/src/metas/nodes/defaults/Hive.ts
rename to inlong-dashboard/src/plugins/nodes/defaults/Hive.ts
index 49221c66a..c507ad06e 100644
--- a/inlong-dashboard/src/metas/nodes/defaults/Hive.ts
+++ b/inlong-dashboard/src/plugins/nodes/defaults/Hive.ts
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import i18n from '@/i18n';
 import { NodeInfo } from '../common/NodeInfo';
 
diff --git a/inlong-dashboard/src/metas/nodes/defaults/Hudi.ts b/inlong-dashboard/src/plugins/nodes/defaults/Hudi.ts
similarity index 93%
rename from inlong-dashboard/src/metas/nodes/defaults/Hudi.ts
rename to inlong-dashboard/src/plugins/nodes/defaults/Hudi.ts
index f21a47171..b6edbd550 100644
--- a/inlong-dashboard/src/metas/nodes/defaults/Hudi.ts
+++ b/inlong-dashboard/src/plugins/nodes/defaults/Hudi.ts
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import { NodeInfo } from '../common/NodeInfo';
 
 const { I18n } = DataWithBackend;
diff --git a/inlong-dashboard/src/metas/nodes/defaults/Iceberg.ts b/inlong-dashboard/src/plugins/nodes/defaults/Iceberg.ts
similarity index 93%
rename from inlong-dashboard/src/metas/nodes/defaults/Iceberg.ts
rename to inlong-dashboard/src/plugins/nodes/defaults/Iceberg.ts
index ebb5483fa..3e46eebd2 100644
--- a/inlong-dashboard/src/metas/nodes/defaults/Iceberg.ts
+++ b/inlong-dashboard/src/plugins/nodes/defaults/Iceberg.ts
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import { NodeInfo } from '../common/NodeInfo';
 
 const { I18n } = DataWithBackend;
diff --git a/inlong-dashboard/src/metas/nodes/defaults/Kudu.ts b/inlong-dashboard/src/plugins/nodes/defaults/Kudu.ts
similarity index 93%
rename from inlong-dashboard/src/metas/nodes/defaults/Kudu.ts
rename to inlong-dashboard/src/plugins/nodes/defaults/Kudu.ts
index ae1fcae1d..d58531f4b 100644
--- a/inlong-dashboard/src/metas/nodes/defaults/Kudu.ts
+++ b/inlong-dashboard/src/plugins/nodes/defaults/Kudu.ts
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import { NodeInfo } from '../common/NodeInfo';
 import i18n from '@/i18n';
 
diff --git a/inlong-dashboard/src/metas/nodes/defaults/MySQL.ts b/inlong-dashboard/src/plugins/nodes/defaults/MySQL.ts
similarity index 91%
rename from inlong-dashboard/src/metas/nodes/defaults/MySQL.ts
rename to inlong-dashboard/src/plugins/nodes/defaults/MySQL.ts
index bb6167a5b..f4aa1e2b3 100644
--- a/inlong-dashboard/src/metas/nodes/defaults/MySQL.ts
+++ b/inlong-dashboard/src/plugins/nodes/defaults/MySQL.ts
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import { NodeInfo } from '../common/NodeInfo';
 
 const { I18n } = DataWithBackend;
diff --git a/inlong-dashboard/src/metas/nodes/defaults/Redis.ts b/inlong-dashboard/src/plugins/nodes/defaults/Redis.ts
similarity index 95%
rename from inlong-dashboard/src/metas/nodes/defaults/Redis.ts
rename to inlong-dashboard/src/plugins/nodes/defaults/Redis.ts
index 6f8c302c2..76f5873e5 100644
--- a/inlong-dashboard/src/metas/nodes/defaults/Redis.ts
+++ b/inlong-dashboard/src/plugins/nodes/defaults/Redis.ts
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import { NodeInfo } from '../common/NodeInfo';
 import i18n from '@/i18n';
 
diff --git a/inlong-dashboard/src/metas/nodes/defaults/StarRocks.ts b/inlong-dashboard/src/plugins/nodes/defaults/StarRocks.ts
similarity index 92%
rename from inlong-dashboard/src/metas/nodes/defaults/StarRocks.ts
rename to inlong-dashboard/src/plugins/nodes/defaults/StarRocks.ts
index 0a49b5a51..5caac292c 100644
--- a/inlong-dashboard/src/metas/nodes/defaults/StarRocks.ts
+++ b/inlong-dashboard/src/plugins/nodes/defaults/StarRocks.ts
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import { NodeInfo } from '../common/NodeInfo';
 
 const { I18n } = DataWithBackend;
diff --git a/inlong-dashboard/src/metas/nodes/defaults/index.ts b/inlong-dashboard/src/plugins/nodes/defaults/index.ts
similarity index 96%
rename from inlong-dashboard/src/metas/nodes/defaults/index.ts
rename to inlong-dashboard/src/plugins/nodes/defaults/index.ts
index 65af13919..a14a85d59 100644
--- a/inlong-dashboard/src/metas/nodes/defaults/index.ts
+++ b/inlong-dashboard/src/plugins/nodes/defaults/index.ts
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-import type { MetaExportWithBackendList } from '@/metas/types';
+import type { MetaExportWithBackendList } from '@/plugins/types';
 import type { NodeMetaType } from '../types';
 
 export const allDefaultNodes: MetaExportWithBackendList<NodeMetaType> = [
diff --git a/inlong-dashboard/src/metas/nodes/extends/index.ts b/inlong-dashboard/src/plugins/nodes/extends/index.ts
similarity index 93%
rename from inlong-dashboard/src/metas/nodes/extends/index.ts
rename to inlong-dashboard/src/plugins/nodes/extends/index.ts
index 741949cca..0fa06019d 100644
--- a/inlong-dashboard/src/metas/nodes/extends/index.ts
+++ b/inlong-dashboard/src/plugins/nodes/extends/index.ts
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-import type { MetaExportWithBackendList } from '@/metas/types';
+import type { MetaExportWithBackendList } from '@/plugins/types';
 import type { NodeMetaType } from '../types';
 
 export const allExtendsNodes: MetaExportWithBackendList<NodeMetaType> = [
diff --git a/inlong-dashboard/src/metas/nodes/index.ts b/inlong-dashboard/src/plugins/nodes/index.ts
similarity index 100%
rename from inlong-dashboard/src/metas/nodes/index.ts
rename to inlong-dashboard/src/plugins/nodes/index.ts
diff --git a/inlong-dashboard/src/metas/nodes/types.ts b/inlong-dashboard/src/plugins/nodes/types.ts
similarity index 100%
rename from inlong-dashboard/src/metas/nodes/types.ts
rename to inlong-dashboard/src/plugins/nodes/types.ts
diff --git a/inlong-dashboard/src/metas/sinks/common/SinkDefaultInfo.ts b/inlong-dashboard/src/plugins/sinks/common/SinkDefaultInfo.ts
similarity index 95%
rename from inlong-dashboard/src/metas/sinks/common/SinkDefaultInfo.ts
rename to inlong-dashboard/src/plugins/sinks/common/SinkDefaultInfo.ts
index f95ae001d..066dbdbd0 100644
--- a/inlong-dashboard/src/metas/sinks/common/SinkDefaultInfo.ts
+++ b/inlong-dashboard/src/plugins/sinks/common/SinkDefaultInfo.ts
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import i18n from '@/i18n';
 import { statusList, genStatusTag } from './status';
 import { sinks, defaultValue } from '..';
diff --git a/inlong-dashboard/src/metas/sinks/common/SinkInfo.ts b/inlong-dashboard/src/plugins/sinks/common/SinkInfo.ts
similarity index 100%
rename from inlong-dashboard/src/metas/sinks/common/SinkInfo.ts
rename to inlong-dashboard/src/plugins/sinks/common/SinkInfo.ts
diff --git a/inlong-dashboard/src/metas/sinks/common/sourceFields.ts b/inlong-dashboard/src/plugins/sinks/common/sourceFields.ts
similarity index 96%
rename from inlong-dashboard/src/metas/sinks/common/sourceFields.ts
rename to inlong-dashboard/src/plugins/sinks/common/sourceFields.ts
index e8a1a716d..7d0abc638 100644
--- a/inlong-dashboard/src/metas/sinks/common/sourceFields.ts
+++ b/inlong-dashboard/src/plugins/sinks/common/sourceFields.ts
@@ -18,7 +18,7 @@
  */
 
 import i18n from '@/i18n';
-import { ColumnsItemProps } from '@/components/EditableTable';
+import { ColumnsItemProps } from '@/ui/components/EditableTable';
 
 export const fieldTypes = ['int', 'long', 'float', 'double', 'string', 'date', 'timestamp'].map(
   item => ({
diff --git a/inlong-dashboard/src/pages/GroupDetail/DataStorage/status.tsx b/inlong-dashboard/src/plugins/sinks/common/status.tsx
similarity index 93%
rename from inlong-dashboard/src/pages/GroupDetail/DataStorage/status.tsx
rename to inlong-dashboard/src/plugins/sinks/common/status.tsx
index 6d836ecc2..407c8eb3f 100644
--- a/inlong-dashboard/src/pages/GroupDetail/DataStorage/status.tsx
+++ b/inlong-dashboard/src/plugins/sinks/common/status.tsx
@@ -19,8 +19,8 @@
 
 import React from 'react';
 import i18n from '@/i18n';
-import StatusTag, { StatusTagProps } from '@/components/StatusTag';
-import { ClockCircleFilled } from '@/components/Icons';
+import StatusTag, { StatusTagProps } from '@/ui/components/StatusTag';
+import { ClockCircleFilled } from '@/ui/components/Icons';
 
 type StatusProp = {
   label: string;
diff --git a/inlong-dashboard/src/metas/sinks/defaults/ClickHouse.ts b/inlong-dashboard/src/plugins/sinks/defaults/ClickHouse.ts
similarity index 97%
rename from inlong-dashboard/src/metas/sinks/defaults/ClickHouse.ts
rename to inlong-dashboard/src/plugins/sinks/defaults/ClickHouse.ts
index 829cc7f1e..b417b4ae0 100644
--- a/inlong-dashboard/src/metas/sinks/defaults/ClickHouse.ts
+++ b/inlong-dashboard/src/plugins/sinks/defaults/ClickHouse.ts
@@ -17,14 +17,14 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import i18n from '@/i18n';
-import EditableTable from '@/components/EditableTable';
+import EditableTable from '@/ui/components/EditableTable';
 import { SinkInfo } from '../common/SinkInfo';
 import { sourceFields } from '../common/sourceFields';
-import NodeSelect from '@/components/NodeSelect';
+import NodeSelect from '@/ui/components/NodeSelect';
 
 const { I18n } = DataWithBackend;
 const { FieldDecorator } = RenderRow;
diff --git a/inlong-dashboard/src/metas/sinks/defaults/Doris.ts b/inlong-dashboard/src/plugins/sinks/defaults/Doris.ts
similarity index 96%
rename from inlong-dashboard/src/metas/sinks/defaults/Doris.ts
rename to inlong-dashboard/src/plugins/sinks/defaults/Doris.ts
index 2ac77fb30..552afcd1e 100644
--- a/inlong-dashboard/src/metas/sinks/defaults/Doris.ts
+++ b/inlong-dashboard/src/plugins/sinks/defaults/Doris.ts
@@ -17,11 +17,11 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import i18n from '@/i18n';
-import EditableTable from '@/components/EditableTable';
+import EditableTable from '@/ui/components/EditableTable';
 import { SinkInfo } from '../common/SinkInfo';
 import { sourceFields } from '../common/sourceFields';
 
diff --git a/inlong-dashboard/src/metas/sinks/defaults/Elasticsearch.ts b/inlong-dashboard/src/plugins/sinks/defaults/Elasticsearch.ts
similarity index 95%
rename from inlong-dashboard/src/metas/sinks/defaults/Elasticsearch.ts
rename to inlong-dashboard/src/plugins/sinks/defaults/Elasticsearch.ts
index 857a71158..60c904e0b 100644
--- a/inlong-dashboard/src/metas/sinks/defaults/Elasticsearch.ts
+++ b/inlong-dashboard/src/plugins/sinks/defaults/Elasticsearch.ts
@@ -17,14 +17,14 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import i18n from '@/i18n';
-import EditableTable from '@/components/EditableTable';
+import EditableTable from '@/ui/components/EditableTable';
 import { sourceFields } from '../common/sourceFields';
 import { SinkInfo } from '../common/SinkInfo';
-import NodeSelect from '@/components/NodeSelect';
+import NodeSelect from '@/ui/components/NodeSelect';
 
 const { I18n } = DataWithBackend;
 const { FieldDecorator } = RenderRow;
diff --git a/inlong-dashboard/src/metas/sinks/defaults/Greenplum.ts b/inlong-dashboard/src/plugins/sinks/defaults/Greenplum.ts
similarity index 96%
rename from inlong-dashboard/src/metas/sinks/defaults/Greenplum.ts
rename to inlong-dashboard/src/plugins/sinks/defaults/Greenplum.ts
index 73853895c..c8aced62a 100644
--- a/inlong-dashboard/src/metas/sinks/defaults/Greenplum.ts
+++ b/inlong-dashboard/src/plugins/sinks/defaults/Greenplum.ts
@@ -15,11 +15,11 @@
  * limitations under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import i18n from '@/i18n';
-import EditableTable from '@/components/EditableTable';
+import EditableTable from '@/ui/components/EditableTable';
 import { sourceFields } from '../common/sourceFields';
 import { SinkInfo } from '../common/SinkInfo';
 
diff --git a/inlong-dashboard/src/metas/sinks/defaults/HBase.ts b/inlong-dashboard/src/plugins/sinks/defaults/HBase.ts
similarity index 95%
rename from inlong-dashboard/src/metas/sinks/defaults/HBase.ts
rename to inlong-dashboard/src/plugins/sinks/defaults/HBase.ts
index c0c745d49..8c08a50cb 100644
--- a/inlong-dashboard/src/metas/sinks/defaults/HBase.ts
+++ b/inlong-dashboard/src/plugins/sinks/defaults/HBase.ts
@@ -15,11 +15,11 @@
  * limitations under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import i18n from '@/i18n';
-import EditableTable from '@/components/EditableTable';
+import EditableTable from '@/ui/components/EditableTable';
 import { SinkInfo } from '../common/SinkInfo';
 import { sourceFields } from '../common/sourceFields';
 
diff --git a/inlong-dashboard/src/metas/sinks/defaults/Hive.ts b/inlong-dashboard/src/plugins/sinks/defaults/Hive.ts
similarity index 97%
rename from inlong-dashboard/src/metas/sinks/defaults/Hive.ts
rename to inlong-dashboard/src/plugins/sinks/defaults/Hive.ts
index 76d23af46..80d464b16 100644
--- a/inlong-dashboard/src/metas/sinks/defaults/Hive.ts
+++ b/inlong-dashboard/src/plugins/sinks/defaults/Hive.ts
@@ -17,14 +17,14 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import i18n from '@/i18n';
-import EditableTable from '@/components/EditableTable';
+import EditableTable from '@/ui/components/EditableTable';
 import { SinkInfo } from '../common/SinkInfo';
 import { sourceFields } from '../common/sourceFields';
-import NodeSelect from '@/components/NodeSelect';
+import NodeSelect from '@/ui/components/NodeSelect';
 
 const { I18n } = DataWithBackend;
 const { FieldDecorator } = RenderRow;
diff --git a/inlong-dashboard/src/metas/sinks/defaults/Hudi.ts b/inlong-dashboard/src/plugins/sinks/defaults/Hudi.ts
similarity index 96%
rename from inlong-dashboard/src/metas/sinks/defaults/Hudi.ts
rename to inlong-dashboard/src/plugins/sinks/defaults/Hudi.ts
index 786d129e0..ee8246e7f 100644
--- a/inlong-dashboard/src/metas/sinks/defaults/Hudi.ts
+++ b/inlong-dashboard/src/plugins/sinks/defaults/Hudi.ts
@@ -17,14 +17,14 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import i18n from '@/i18n';
-import EditableTable from '@/components/EditableTable';
+import EditableTable from '@/ui/components/EditableTable';
 import { sourceFields } from '../common/sourceFields';
 import { SinkInfo } from '../common/SinkInfo';
-import NodeSelect from '@/components/NodeSelect';
+import NodeSelect from '@/ui/components/NodeSelect';
 
 const { I18n } = DataWithBackend;
 const { FieldDecorator } = RenderRow;
diff --git a/inlong-dashboard/src/metas/sinks/defaults/Iceberg.ts b/inlong-dashboard/src/plugins/sinks/defaults/Iceberg.ts
similarity index 96%
rename from inlong-dashboard/src/metas/sinks/defaults/Iceberg.ts
rename to inlong-dashboard/src/plugins/sinks/defaults/Iceberg.ts
index f7d06190a..f27742927 100644
--- a/inlong-dashboard/src/metas/sinks/defaults/Iceberg.ts
+++ b/inlong-dashboard/src/plugins/sinks/defaults/Iceberg.ts
@@ -17,14 +17,14 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import i18n from '@/i18n';
-import EditableTable from '@/components/EditableTable';
+import EditableTable from '@/ui/components/EditableTable';
 import { sourceFields } from '../common/sourceFields';
 import { SinkInfo } from '../common/SinkInfo';
-import NodeSelect from '@/components/NodeSelect';
+import NodeSelect from '@/ui/components/NodeSelect';
 
 const { I18n } = DataWithBackend;
 const { FieldDecorator } = RenderRow;
diff --git a/inlong-dashboard/src/metas/sinks/defaults/Kafka.ts b/inlong-dashboard/src/plugins/sinks/defaults/Kafka.ts
similarity index 94%
rename from inlong-dashboard/src/metas/sinks/defaults/Kafka.ts
rename to inlong-dashboard/src/plugins/sinks/defaults/Kafka.ts
index 6a9609bd8..119a019e6 100644
--- a/inlong-dashboard/src/metas/sinks/defaults/Kafka.ts
+++ b/inlong-dashboard/src/plugins/sinks/defaults/Kafka.ts
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import { SinkInfo } from '../common/SinkInfo';
 
 const { I18n } = DataWithBackend;
diff --git a/inlong-dashboard/src/metas/sinks/defaults/Kudu.ts b/inlong-dashboard/src/plugins/sinks/defaults/Kudu.ts
similarity index 96%
rename from inlong-dashboard/src/metas/sinks/defaults/Kudu.ts
rename to inlong-dashboard/src/plugins/sinks/defaults/Kudu.ts
index fdd2e6f25..a0d080dd4 100644
--- a/inlong-dashboard/src/metas/sinks/defaults/Kudu.ts
+++ b/inlong-dashboard/src/plugins/sinks/defaults/Kudu.ts
@@ -17,14 +17,14 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import i18n from '@/i18n';
-import EditableTable from '@/components/EditableTable';
+import EditableTable from '@/ui/components/EditableTable';
 import { sourceFields } from '../common/sourceFields';
 import { SinkInfo } from '../common/SinkInfo';
-import NodeSelect from '@/components/NodeSelect';
+import NodeSelect from '@/ui/components/NodeSelect';
 
 const { I18n } = DataWithBackend;
 const { FieldDecorator } = RenderRow;
diff --git a/inlong-dashboard/src/metas/sinks/defaults/MySQL.ts b/inlong-dashboard/src/plugins/sinks/defaults/MySQL.ts
similarity index 96%
rename from inlong-dashboard/src/metas/sinks/defaults/MySQL.ts
rename to inlong-dashboard/src/plugins/sinks/defaults/MySQL.ts
index 92ad965a2..2cb4e1c7c 100644
--- a/inlong-dashboard/src/metas/sinks/defaults/MySQL.ts
+++ b/inlong-dashboard/src/plugins/sinks/defaults/MySQL.ts
@@ -15,14 +15,14 @@
  * limitations under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import i18n from '@/i18n';
-import EditableTable from '@/components/EditableTable';
+import EditableTable from '@/ui/components/EditableTable';
 import { sourceFields } from '../common/sourceFields';
 import { SinkInfo } from '../common/SinkInfo';
-import NodeSelect from '@/components/NodeSelect';
+import NodeSelect from '@/ui/components/NodeSelect';
 
 const { I18n } = DataWithBackend;
 const { FieldDecorator } = RenderRow;
diff --git a/inlong-dashboard/src/metas/sinks/defaults/Oracle.ts b/inlong-dashboard/src/plugins/sinks/defaults/Oracle.ts
similarity index 96%
rename from inlong-dashboard/src/metas/sinks/defaults/Oracle.ts
rename to inlong-dashboard/src/plugins/sinks/defaults/Oracle.ts
index a74edf241..26e8baa3a 100644
--- a/inlong-dashboard/src/metas/sinks/defaults/Oracle.ts
+++ b/inlong-dashboard/src/plugins/sinks/defaults/Oracle.ts
@@ -15,13 +15,13 @@
  * limitations under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import i18n from '@/i18n';
 import { SinkInfo } from '../common/SinkInfo';
 import { sourceFields } from '../common/sourceFields';
-import EditableTable from '@/components/EditableTable';
+import EditableTable from '@/ui/components/EditableTable';
 
 const { I18n } = DataWithBackend;
 const { FieldDecorator } = RenderRow;
diff --git a/inlong-dashboard/src/metas/sinks/defaults/PostgreSQL.ts b/inlong-dashboard/src/plugins/sinks/defaults/PostgreSQL.ts
similarity index 97%
rename from inlong-dashboard/src/metas/sinks/defaults/PostgreSQL.ts
rename to inlong-dashboard/src/plugins/sinks/defaults/PostgreSQL.ts
index cb205c68c..2e985b436 100644
--- a/inlong-dashboard/src/metas/sinks/defaults/PostgreSQL.ts
+++ b/inlong-dashboard/src/plugins/sinks/defaults/PostgreSQL.ts
@@ -15,11 +15,11 @@
  * limitations under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import i18n from '@/i18n';
-import EditableTable from '@/components/EditableTable';
+import EditableTable from '@/ui/components/EditableTable';
 import { SinkInfo } from '../common/SinkInfo';
 import { sourceFields } from '../common/sourceFields';
 
diff --git a/inlong-dashboard/src/metas/sinks/defaults/Redis.ts b/inlong-dashboard/src/plugins/sinks/defaults/Redis.ts
similarity index 97%
rename from inlong-dashboard/src/metas/sinks/defaults/Redis.ts
rename to inlong-dashboard/src/plugins/sinks/defaults/Redis.ts
index 30e48c9b1..3cec034f7 100644
--- a/inlong-dashboard/src/metas/sinks/defaults/Redis.ts
+++ b/inlong-dashboard/src/plugins/sinks/defaults/Redis.ts
@@ -17,14 +17,14 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import i18n from '@/i18n';
-import EditableTable from '@/components/EditableTable';
+import EditableTable from '@/ui/components/EditableTable';
 import { sourceFields } from '../common/sourceFields';
 import { SinkInfo } from '../common/SinkInfo';
-import NodeSelect from '@/components/NodeSelect';
+import NodeSelect from '@/ui/components/NodeSelect';
 
 const { I18n } = DataWithBackend;
 const { FieldDecorator } = RenderRow;
diff --git a/inlong-dashboard/src/metas/sinks/defaults/SQLServer.ts b/inlong-dashboard/src/plugins/sinks/defaults/SQLServer.ts
similarity index 97%
rename from inlong-dashboard/src/metas/sinks/defaults/SQLServer.ts
rename to inlong-dashboard/src/plugins/sinks/defaults/SQLServer.ts
index 1a3e7320d..9218985f0 100644
--- a/inlong-dashboard/src/metas/sinks/defaults/SQLServer.ts
+++ b/inlong-dashboard/src/plugins/sinks/defaults/SQLServer.ts
@@ -15,11 +15,11 @@
  * limitations under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import i18n from '@/i18n';
-import EditableTable from '@/components/EditableTable';
+import EditableTable from '@/ui/components/EditableTable';
 import { SinkInfo } from '../common/SinkInfo';
 import { sourceFields } from '../common/sourceFields';
 
diff --git a/inlong-dashboard/src/metas/sinks/defaults/StarRocks.ts b/inlong-dashboard/src/plugins/sinks/defaults/StarRocks.ts
similarity index 96%
rename from inlong-dashboard/src/metas/sinks/defaults/StarRocks.ts
rename to inlong-dashboard/src/plugins/sinks/defaults/StarRocks.ts
index 82823a0ed..a7e4c04da 100644
--- a/inlong-dashboard/src/metas/sinks/defaults/StarRocks.ts
+++ b/inlong-dashboard/src/plugins/sinks/defaults/StarRocks.ts
@@ -15,14 +15,14 @@
  * limitations under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import i18n from '@/i18n';
-import EditableTable from '@/components/EditableTable';
+import EditableTable from '@/ui/components/EditableTable';
 import { sourceFields } from '../common/sourceFields';
 import { SinkInfo } from '../common/SinkInfo';
-import NodeSelect from '@/components/NodeSelect';
+import NodeSelect from '@/ui/components/NodeSelect';
 
 const { I18n } = DataWithBackend;
 const { FieldDecorator } = RenderRow;
diff --git a/inlong-dashboard/src/metas/sinks/defaults/TDSQLPostgreSQL.ts b/inlong-dashboard/src/plugins/sinks/defaults/TDSQLPostgreSQL.ts
similarity index 96%
rename from inlong-dashboard/src/metas/sinks/defaults/TDSQLPostgreSQL.ts
rename to inlong-dashboard/src/plugins/sinks/defaults/TDSQLPostgreSQL.ts
index 79c88b3e1..6a7921b38 100644
--- a/inlong-dashboard/src/metas/sinks/defaults/TDSQLPostgreSQL.ts
+++ b/inlong-dashboard/src/plugins/sinks/defaults/TDSQLPostgreSQL.ts
@@ -15,11 +15,11 @@
  * limitations under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import i18n from '@/i18n';
-import EditableTable from '@/components/EditableTable';
+import EditableTable from '@/ui/components/EditableTable';
 import { sourceFields } from '../common/sourceFields';
 import { SinkInfo } from '../common/SinkInfo';
 
diff --git a/inlong-dashboard/src/metas/sinks/defaults/index.ts b/inlong-dashboard/src/plugins/sinks/defaults/index.ts
similarity index 97%
rename from inlong-dashboard/src/metas/sinks/defaults/index.ts
rename to inlong-dashboard/src/plugins/sinks/defaults/index.ts
index fac78d633..46f8c362e 100644
--- a/inlong-dashboard/src/metas/sinks/defaults/index.ts
+++ b/inlong-dashboard/src/plugins/sinks/defaults/index.ts
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-import type { MetaExportWithBackendList } from '@/metas/types';
+import type { MetaExportWithBackendList } from '@/plugins/types';
 import type { SinkMetaType } from '../types';
 
 export const allDefaultSinks: MetaExportWithBackendList<SinkMetaType> = [
diff --git a/inlong-dashboard/src/metas/sinks/extends/index.ts b/inlong-dashboard/src/plugins/sinks/extends/index.ts
similarity index 93%
rename from inlong-dashboard/src/metas/sinks/extends/index.ts
rename to inlong-dashboard/src/plugins/sinks/extends/index.ts
index ec5ce74bb..243747d86 100644
--- a/inlong-dashboard/src/metas/sinks/extends/index.ts
+++ b/inlong-dashboard/src/plugins/sinks/extends/index.ts
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-import type { MetaExportWithBackendList } from '@/metas/types';
+import type { MetaExportWithBackendList } from '@/plugins/types';
 import type { SinkMetaType } from '../types';
 
 export const allExtendsSinks: MetaExportWithBackendList<SinkMetaType> = [
diff --git a/inlong-dashboard/src/metas/sinks/index.ts b/inlong-dashboard/src/plugins/sinks/index.ts
similarity index 100%
rename from inlong-dashboard/src/metas/sinks/index.ts
rename to inlong-dashboard/src/plugins/sinks/index.ts
diff --git a/inlong-dashboard/src/metas/sinks/types.ts b/inlong-dashboard/src/plugins/sinks/types.ts
similarity index 100%
rename from inlong-dashboard/src/metas/sinks/types.ts
rename to inlong-dashboard/src/plugins/sinks/types.ts
diff --git a/inlong-dashboard/src/metas/sources/common/SourceDefaultInfo.ts b/inlong-dashboard/src/plugins/sources/common/SourceDefaultInfo.ts
similarity index 94%
rename from inlong-dashboard/src/metas/sources/common/SourceDefaultInfo.ts
rename to inlong-dashboard/src/plugins/sources/common/SourceDefaultInfo.ts
index dd2dbd88d..163c555cf 100644
--- a/inlong-dashboard/src/metas/sources/common/SourceDefaultInfo.ts
+++ b/inlong-dashboard/src/plugins/sources/common/SourceDefaultInfo.ts
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import { statusList, genStatusTag } from './status';
 import { sources, defaultValue } from '..';
 
diff --git a/inlong-dashboard/src/metas/sources/common/SourceInfo.ts b/inlong-dashboard/src/plugins/sources/common/SourceInfo.ts
similarity index 100%
rename from inlong-dashboard/src/metas/sources/common/SourceInfo.ts
rename to inlong-dashboard/src/plugins/sources/common/SourceInfo.ts
diff --git a/inlong-dashboard/src/metas/sources/common/status.tsx b/inlong-dashboard/src/plugins/sources/common/status.tsx
similarity index 95%
rename from inlong-dashboard/src/metas/sources/common/status.tsx
rename to inlong-dashboard/src/plugins/sources/common/status.tsx
index 087015831..66d7d3634 100644
--- a/inlong-dashboard/src/metas/sources/common/status.tsx
+++ b/inlong-dashboard/src/plugins/sources/common/status.tsx
@@ -19,8 +19,8 @@
 
 import React from 'react';
 import i18n from '@/i18n';
-import StatusTag, { StatusTagProps } from '@/components/StatusTag';
-import { ClockCircleFilled } from '@/components/Icons';
+import StatusTag, { StatusTagProps } from '@/ui/components/StatusTag';
+import { ClockCircleFilled } from '@/ui/components/Icons';
 
 type StatusProp = {
   label: string;
diff --git a/inlong-dashboard/src/metas/sources/defaults/AutoPush.ts b/inlong-dashboard/src/plugins/sources/defaults/AutoPush.ts
similarity index 85%
rename from inlong-dashboard/src/metas/sources/defaults/AutoPush.ts
rename to inlong-dashboard/src/plugins/sources/defaults/AutoPush.ts
index 51c28ae63..44c31eaeb 100644
--- a/inlong-dashboard/src/metas/sources/defaults/AutoPush.ts
+++ b/inlong-dashboard/src/plugins/sources/defaults/AutoPush.ts
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import { SourceInfo } from '../common/SourceInfo';
 
 export default class AutoPushSource
diff --git a/inlong-dashboard/src/metas/sources/defaults/File.ts b/inlong-dashboard/src/plugins/sources/defaults/File.ts
similarity index 94%
rename from inlong-dashboard/src/metas/sources/defaults/File.ts
rename to inlong-dashboard/src/plugins/sources/defaults/File.ts
index ffa993926..575976289 100644
--- a/inlong-dashboard/src/metas/sources/defaults/File.ts
+++ b/inlong-dashboard/src/plugins/sources/defaults/File.ts
@@ -17,11 +17,11 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import i18n from '@/i18n';
-import rulesPattern from '@/utils/pattern';
+import rulesPattern from '@/core/utils/pattern';
 import { SourceInfo } from '../common/SourceInfo';
 
 const { I18n } = DataWithBackend;
diff --git a/inlong-dashboard/src/metas/sources/defaults/Hudi.ts b/inlong-dashboard/src/plugins/sources/defaults/Hudi.ts
similarity index 94%
rename from inlong-dashboard/src/metas/sources/defaults/Hudi.ts
rename to inlong-dashboard/src/plugins/sources/defaults/Hudi.ts
index 326c00034..aecc54255 100644
--- a/inlong-dashboard/src/metas/sources/defaults/Hudi.ts
+++ b/inlong-dashboard/src/plugins/sources/defaults/Hudi.ts
@@ -17,12 +17,12 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import { SourceInfo } from '../common/SourceInfo';
 import i18n from '@/i18n';
-import EditableTable from '@/components/EditableTable';
+import EditableTable from '@/ui/components/EditableTable';
 
 const { I18n } = DataWithBackend;
 const { FieldDecorator } = RenderRow;
diff --git a/inlong-dashboard/src/metas/sources/defaults/MQTT.ts b/inlong-dashboard/src/plugins/sources/defaults/MQTT.ts
similarity index 94%
rename from inlong-dashboard/src/metas/sources/defaults/MQTT.ts
rename to inlong-dashboard/src/plugins/sources/defaults/MQTT.ts
index e26216777..26bf1bacf 100644
--- a/inlong-dashboard/src/metas/sources/defaults/MQTT.ts
+++ b/inlong-dashboard/src/plugins/sources/defaults/MQTT.ts
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import { SourceInfo } from '../common/SourceInfo';
 
 const { I18n } = DataWithBackend;
diff --git a/inlong-dashboard/src/metas/sources/defaults/Mongodb.ts b/inlong-dashboard/src/plugins/sources/defaults/Mongodb.ts
similarity index 93%
rename from inlong-dashboard/src/metas/sources/defaults/Mongodb.ts
rename to inlong-dashboard/src/plugins/sources/defaults/Mongodb.ts
index bfea4b2da..9e756d6bf 100644
--- a/inlong-dashboard/src/metas/sources/defaults/Mongodb.ts
+++ b/inlong-dashboard/src/plugins/sources/defaults/Mongodb.ts
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import { SourceInfo } from '../common/SourceInfo';
 
 const { I18n } = DataWithBackend;
diff --git a/inlong-dashboard/src/metas/sources/defaults/MySQLBinlog.ts b/inlong-dashboard/src/plugins/sources/defaults/MySQLBinlog.ts
similarity index 95%
rename from inlong-dashboard/src/metas/sources/defaults/MySQLBinlog.ts
rename to inlong-dashboard/src/plugins/sources/defaults/MySQLBinlog.ts
index ba844359e..dedd49ac5 100644
--- a/inlong-dashboard/src/metas/sources/defaults/MySQLBinlog.ts
+++ b/inlong-dashboard/src/plugins/sources/defaults/MySQLBinlog.ts
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import i18n from '@/i18n';
 import { SourceInfo } from '../common/SourceInfo';
 
diff --git a/inlong-dashboard/src/metas/sources/defaults/Oracle.ts b/inlong-dashboard/src/plugins/sources/defaults/Oracle.ts
similarity index 95%
rename from inlong-dashboard/src/metas/sources/defaults/Oracle.ts
rename to inlong-dashboard/src/plugins/sources/defaults/Oracle.ts
index 2cc458e90..504884784 100644
--- a/inlong-dashboard/src/metas/sources/defaults/Oracle.ts
+++ b/inlong-dashboard/src/plugins/sources/defaults/Oracle.ts
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import { SourceInfo } from '../common/SourceInfo';
 import i18n from '@/i18n';
 
diff --git a/inlong-dashboard/src/metas/sources/defaults/PostgreSQL.ts b/inlong-dashboard/src/plugins/sources/defaults/PostgreSQL.ts
similarity index 96%
rename from inlong-dashboard/src/metas/sources/defaults/PostgreSQL.ts
rename to inlong-dashboard/src/plugins/sources/defaults/PostgreSQL.ts
index 03e52d38c..a4fc4a95b 100644
--- a/inlong-dashboard/src/metas/sources/defaults/PostgreSQL.ts
+++ b/inlong-dashboard/src/plugins/sources/defaults/PostgreSQL.ts
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import { SourceInfo } from '../common/SourceInfo';
 import i18n from '@/i18n';
 
diff --git a/inlong-dashboard/src/metas/sources/defaults/Redis.ts b/inlong-dashboard/src/plugins/sources/defaults/Redis.ts
similarity index 97%
rename from inlong-dashboard/src/metas/sources/defaults/Redis.ts
rename to inlong-dashboard/src/plugins/sources/defaults/Redis.ts
index cd2f8b870..05cf370ee 100644
--- a/inlong-dashboard/src/metas/sources/defaults/Redis.ts
+++ b/inlong-dashboard/src/plugins/sources/defaults/Redis.ts
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import { SourceInfo } from '../common/SourceInfo';
 import i18n from '@/i18n';
 
diff --git a/inlong-dashboard/src/metas/sources/defaults/SQLServer.ts b/inlong-dashboard/src/plugins/sources/defaults/SQLServer.ts
similarity index 95%
rename from inlong-dashboard/src/metas/sources/defaults/SQLServer.ts
rename to inlong-dashboard/src/plugins/sources/defaults/SQLServer.ts
index 0bd6e40a8..ea72ab82f 100644
--- a/inlong-dashboard/src/metas/sources/defaults/SQLServer.ts
+++ b/inlong-dashboard/src/plugins/sources/defaults/SQLServer.ts
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import { SourceInfo } from '../common/SourceInfo';
 import i18n from '@/i18n';
 
diff --git a/inlong-dashboard/src/metas/sources/defaults/index.ts b/inlong-dashboard/src/plugins/sources/defaults/index.ts
similarity index 96%
rename from inlong-dashboard/src/metas/sources/defaults/index.ts
rename to inlong-dashboard/src/plugins/sources/defaults/index.ts
index ed1318603..6e4d912b9 100644
--- a/inlong-dashboard/src/metas/sources/defaults/index.ts
+++ b/inlong-dashboard/src/plugins/sources/defaults/index.ts
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-import type { MetaExportWithBackendList } from '@/metas/types';
+import type { MetaExportWithBackendList } from '@/plugins/types';
 import type { SourceMetaType } from '../types';
 
 export const allDefaultSources: MetaExportWithBackendList<SourceMetaType> = [
diff --git a/inlong-dashboard/src/metas/sources/extends/index.ts b/inlong-dashboard/src/plugins/sources/extends/index.ts
similarity index 93%
rename from inlong-dashboard/src/metas/sources/extends/index.ts
rename to inlong-dashboard/src/plugins/sources/extends/index.ts
index 5b63ac6ac..a07a7b0f2 100644
--- a/inlong-dashboard/src/metas/sources/extends/index.ts
+++ b/inlong-dashboard/src/plugins/sources/extends/index.ts
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-import type { MetaExportWithBackendList } from '@/metas/types';
+import type { MetaExportWithBackendList } from '@/plugins/types';
 import type { SourceMetaType } from '../types';
 
 export const allExtendsSources: MetaExportWithBackendList<SourceMetaType> = [
diff --git a/inlong-dashboard/src/metas/sources/index.ts b/inlong-dashboard/src/plugins/sources/index.ts
similarity index 100%
rename from inlong-dashboard/src/metas/sources/index.ts
rename to inlong-dashboard/src/plugins/sources/index.ts
diff --git a/inlong-dashboard/src/metas/sources/types.ts b/inlong-dashboard/src/plugins/sources/types.ts
similarity index 100%
rename from inlong-dashboard/src/metas/sources/types.ts
rename to inlong-dashboard/src/plugins/sources/types.ts
diff --git a/inlong-dashboard/src/metas/streams/common/StreamDefaultInfo.ts b/inlong-dashboard/src/plugins/streams/common/StreamDefaultInfo.ts
similarity index 95%
rename from inlong-dashboard/src/metas/streams/common/StreamDefaultInfo.ts
rename to inlong-dashboard/src/plugins/streams/common/StreamDefaultInfo.ts
index 0ac7b6135..71100e14e 100644
--- a/inlong-dashboard/src/metas/streams/common/StreamDefaultInfo.ts
+++ b/inlong-dashboard/src/plugins/streams/common/StreamDefaultInfo.ts
@@ -17,12 +17,12 @@
  * under the License.
  */
 
-import { DataWithBackend } from '@/metas/DataWithBackend';
-import { RenderRow } from '@/metas/RenderRow';
-import { RenderList } from '@/metas/RenderList';
+import { DataWithBackend } from '@/plugins/DataWithBackend';
+import { RenderRow } from '@/plugins/RenderRow';
+import { RenderList } from '@/plugins/RenderList';
 import i18n from '@/i18n';
-import EditableTable from '@/components/EditableTable';
-import { fieldTypes as sourceFieldsTypes } from '@/metas/sinks/common/sourceFields';
+import EditableTable from '@/ui/components/EditableTable';
+import { fieldTypes as sourceFieldsTypes } from '@/plugins/sinks/common/sourceFields';
 import { statusList, genStatusTag } from './status';
 
 const { I18nMap, I18n } = DataWithBackend;
diff --git a/inlong-dashboard/src/metas/streams/common/StreamInfo.ts b/inlong-dashboard/src/plugins/streams/common/StreamInfo.ts
similarity index 100%
rename from inlong-dashboard/src/metas/streams/common/StreamInfo.ts
rename to inlong-dashboard/src/plugins/streams/common/StreamInfo.ts
diff --git a/inlong-dashboard/src/metas/streams/common/status.tsx b/inlong-dashboard/src/plugins/streams/common/status.tsx
similarity index 93%
rename from inlong-dashboard/src/metas/streams/common/status.tsx
rename to inlong-dashboard/src/plugins/streams/common/status.tsx
index ffe944dd8..2e7e87330 100644
--- a/inlong-dashboard/src/metas/streams/common/status.tsx
+++ b/inlong-dashboard/src/plugins/streams/common/status.tsx
@@ -19,8 +19,8 @@
 
 import React from 'react';
 import i18n from '@/i18n';
-import StatusTag, { StatusTagProps } from '@/components/StatusTag';
-import { ClockCircleFilled } from '@/components/Icons';
+import StatusTag, { StatusTagProps } from '@/ui/components/StatusTag';
+import { ClockCircleFilled } from '@/ui/components/Icons';
 
 type StatusProp = {
   label: string;
diff --git a/inlong-dashboard/src/metas/streams/defaults/index.ts b/inlong-dashboard/src/plugins/streams/defaults/index.ts
similarity index 94%
rename from inlong-dashboard/src/metas/streams/defaults/index.ts
rename to inlong-dashboard/src/plugins/streams/defaults/index.ts
index a4181399c..f0ff61381 100644
--- a/inlong-dashboard/src/metas/streams/defaults/index.ts
+++ b/inlong-dashboard/src/plugins/streams/defaults/index.ts
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-import type { MetaExportWithBackendList } from '@/metas/types';
+import type { MetaExportWithBackendList } from '@/plugins/types';
 import type { StreamMetaType } from '../types';
 
 export const allDefaultStreams: MetaExportWithBackendList<StreamMetaType> = [
diff --git a/inlong-dashboard/src/metas/streams/extends/index.ts b/inlong-dashboard/src/plugins/streams/extends/index.ts
similarity index 93%
rename from inlong-dashboard/src/metas/streams/extends/index.ts
rename to inlong-dashboard/src/plugins/streams/extends/index.ts
index e6f51b573..aff397276 100644
--- a/inlong-dashboard/src/metas/streams/extends/index.ts
+++ b/inlong-dashboard/src/plugins/streams/extends/index.ts
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-import type { MetaExportWithBackendList } from '@/metas/types';
+import type { MetaExportWithBackendList } from '@/plugins/types';
 import type { StreamMetaType } from '../types';
 
 export const allExtendsStreams: MetaExportWithBackendList<StreamMetaType> = [
diff --git a/inlong-dashboard/src/metas/streams/index.ts b/inlong-dashboard/src/plugins/streams/index.ts
similarity index 100%
rename from inlong-dashboard/src/metas/streams/index.ts
rename to inlong-dashboard/src/plugins/streams/index.ts
diff --git a/inlong-dashboard/src/metas/streams/types.ts b/inlong-dashboard/src/plugins/streams/types.ts
similarity index 100%
rename from inlong-dashboard/src/metas/streams/types.ts
rename to inlong-dashboard/src/plugins/streams/types.ts
diff --git a/inlong-dashboard/src/metas/types.ts b/inlong-dashboard/src/plugins/types.ts
similarity index 100%
rename from inlong-dashboard/src/metas/types.ts
rename to inlong-dashboard/src/plugins/types.ts
diff --git a/inlong-dashboard/src/themes/antd.var.less b/inlong-dashboard/src/themes/antd.var.less
deleted file mode 100644
index 687566102..000000000
--- a/inlong-dashboard/src/themes/antd.var.less
+++ /dev/null
@@ -1,71 +0,0 @@
-
-/*
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements.  See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership.  The ASF licenses this file
-* to you under the Apache License, Version 2.0 (the
-* "License"); you may not use this file except in compliance
-* with the License.  You may obtain a copy of the License at
-*
-*   http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing,
-* software distributed under the License is distributed on an
-* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-* KIND, either express or implied.  See the License for the
-* specific language governing permissions and limitations
-* under the License.
-*/
-
-/*
- * Theme config
- *
- * The overwrite operation is configured in webpack because on-demand loading is used
- */
-
-// Contains antd variables and custom variables
-@primary-color: #0052D9;
-@success-color: #02c58d;
-@processing-color: @primary-color;
-@error-color: #e85254;
-@warning-color: #f7b500;
-
-@white: #fff;
-@black: #000;
-
-@text-color: #333;
-@text-color-secondary: #666;
-@text-color-lesser: #999;
-
-// layout
-@font-family: 'PingFang SC', -apple-system, 'Helvetica Neue', Helvetica, BlinkMacSystemFont,
-  'Microsoft YaHei', tahoma, Arial, 'Open Sans', 'Hiragino Sans GB', 'Heiti SC',
-  'WenQuanYi Micro Hei', sans-serif;
-@background-color-light: #f6f7fb;
-@layout-header-background:@primary-color;
-@layout-body-background: #eff2f7;
-
-// card
-@card-head-color: @text-color;
-@card-padding-base: 20px;
-@card-radius: 2px;
-
-// border
-@border-color-split: #f4f4f4;
-@border-color-base: #e5e5e5;
-@border-radius-base: 2px;
-
-// Form
-@label-color: fade(@black, 85%);
-@form-item-margin-bottom: 20px;
-
-// Table
-@table-header-bg: @background-color-light;
-@table-header-color: @text-color-lesser;
-
-// Step
-@process-tail-color: #c5c5c5;
-
-// Custom digital font
-@number-font-family: DINAlternate-Bold;
diff --git a/inlong-dashboard/src/components/Charts/generate-config.ts b/inlong-dashboard/src/ui/components/Charts/generate-config.ts
similarity index 98%
rename from inlong-dashboard/src/components/Charts/generate-config.ts
rename to inlong-dashboard/src/ui/components/Charts/generate-config.ts
index 213ddaedc..71c6dd57f 100644
--- a/inlong-dashboard/src/components/Charts/generate-config.ts
+++ b/inlong-dashboard/src/ui/components/Charts/generate-config.ts
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-import { getStrByteLen } from '@/utils';
+import { getStrByteLen } from '@/core/utils';
 
 type ObjectType = Record<string, any>;
 
diff --git a/inlong-dashboard/src/components/Charts/index.tsx b/inlong-dashboard/src/ui/components/Charts/index.tsx
similarity index 100%
rename from inlong-dashboard/src/components/Charts/index.tsx
rename to inlong-dashboard/src/ui/components/Charts/index.tsx
diff --git a/inlong-dashboard/src/components/DashboardCard/Card.tsx b/inlong-dashboard/src/ui/components/DashboardCard/Card.tsx
similarity index 100%
rename from inlong-dashboard/src/components/DashboardCard/Card.tsx
rename to inlong-dashboard/src/ui/components/DashboardCard/Card.tsx
diff --git a/inlong-dashboard/src/components/DashboardCard/CardList.tsx b/inlong-dashboard/src/ui/components/DashboardCard/CardList.tsx
similarity index 100%
rename from inlong-dashboard/src/components/DashboardCard/CardList.tsx
rename to inlong-dashboard/src/ui/components/DashboardCard/CardList.tsx
diff --git a/inlong-dashboard/src/components/DashboardCard/index.module.less b/inlong-dashboard/src/ui/components/DashboardCard/index.module.less
similarity index 95%
rename from inlong-dashboard/src/components/DashboardCard/index.module.less
rename to inlong-dashboard/src/ui/components/DashboardCard/index.module.less
index a3f0d6558..93249f234 100644
--- a/inlong-dashboard/src/components/DashboardCard/index.module.less
+++ b/inlong-dashboard/src/ui/components/DashboardCard/index.module.less
@@ -19,7 +19,7 @@
 */
 
 .dashCardNums {
-  font-family: @number-font-family;
+  font-family: DINAlternate-Bold;
   font-size: 36px;
   line-height: 1;
 }
diff --git a/inlong-dashboard/src/components/DashboardCard/index.ts b/inlong-dashboard/src/ui/components/DashboardCard/index.ts
similarity index 100%
rename from inlong-dashboard/src/components/DashboardCard/index.ts
rename to inlong-dashboard/src/ui/components/DashboardCard/index.ts
diff --git a/inlong-dashboard/src/components/EditableTable/index.module.less b/inlong-dashboard/src/ui/components/EditableTable/index.module.less
similarity index 100%
rename from inlong-dashboard/src/components/EditableTable/index.module.less
rename to inlong-dashboard/src/ui/components/EditableTable/index.module.less
diff --git a/inlong-dashboard/src/components/EditableTable/index.tsx b/inlong-dashboard/src/ui/components/EditableTable/index.tsx
similarity index 98%
rename from inlong-dashboard/src/components/EditableTable/index.tsx
rename to inlong-dashboard/src/ui/components/EditableTable/index.tsx
index d3ecbfe98..52c35aea2 100644
--- a/inlong-dashboard/src/components/EditableTable/index.tsx
+++ b/inlong-dashboard/src/ui/components/EditableTable/index.tsx
@@ -22,8 +22,8 @@ import { AutoComplete, Button, Table, Input, InputNumber, Form } from 'antd';
 import { FormItemProps } from 'antd/lib/form';
 import { TableProps } from 'antd/lib/table';
 import { useTranslation } from 'react-i18next';
-import HighSelect from '@/components/HighSelect';
-import { useUpdateEffect } from '@/hooks';
+import HighSelect from '@/ui/components/HighSelect';
+import { useUpdateEffect } from '@/ui/hooks';
 import isEqual from 'lodash/isEqual';
 import styles from './index.module.less';
 
diff --git a/inlong-dashboard/src/components/FormGenerator/FormGenerator.tsx b/inlong-dashboard/src/ui/components/FormGenerator/FormGenerator.tsx
similarity index 99%
rename from inlong-dashboard/src/components/FormGenerator/FormGenerator.tsx
rename to inlong-dashboard/src/ui/components/FormGenerator/FormGenerator.tsx
index 86bd73fd8..cb9b65720 100644
--- a/inlong-dashboard/src/components/FormGenerator/FormGenerator.tsx
+++ b/inlong-dashboard/src/ui/components/FormGenerator/FormGenerator.tsx
@@ -21,8 +21,8 @@ import React, { useState, useEffect, useMemo, useCallback } from 'react';
 import { Form } from 'antd';
 import type { FormProps } from 'antd';
 import merge from 'lodash/merge';
-import { usePersistFn } from '@/hooks';
-import { trim } from '@/utils';
+import { usePersistFn } from '@/ui/hooks';
+import { trim } from '@/core/utils';
 import FormItemContent, { FormItemProps as ItemType } from './FormItemContent';
 
 export interface FormItemProps extends Omit<ItemType, 'props'> {
diff --git a/inlong-dashboard/src/components/FormGenerator/FormItemContent.tsx b/inlong-dashboard/src/ui/components/FormGenerator/FormItemContent.tsx
similarity index 99%
rename from inlong-dashboard/src/components/FormGenerator/FormItemContent.tsx
rename to inlong-dashboard/src/ui/components/FormGenerator/FormItemContent.tsx
index 25fb605c8..2ccab2153 100644
--- a/inlong-dashboard/src/components/FormGenerator/FormItemContent.tsx
+++ b/inlong-dashboard/src/ui/components/FormGenerator/FormItemContent.tsx
@@ -21,7 +21,7 @@ import React, { useMemo, useState } from 'react';
 import { createPortal } from 'react-dom';
 import { Col, Row, Form, Space } from 'antd';
 import { FormItemProps as AntdFormItemProps } from 'antd/lib/form';
-import TextSwitch from '@/components/TextSwitch';
+import TextSwitch from '@/ui/components/TextSwitch';
 import plugins from './plugins';
 
 type PluginsTypes = keyof typeof plugins;
diff --git a/inlong-dashboard/src/components/FormGenerator/index.tsx b/inlong-dashboard/src/ui/components/FormGenerator/index.tsx
similarity index 100%
rename from inlong-dashboard/src/components/FormGenerator/index.tsx
rename to inlong-dashboard/src/ui/components/FormGenerator/index.tsx
diff --git a/inlong-dashboard/src/components/FormGenerator/plugins.tsx b/inlong-dashboard/src/ui/components/FormGenerator/plugins.tsx
similarity index 98%
rename from inlong-dashboard/src/components/FormGenerator/plugins.tsx
rename to inlong-dashboard/src/ui/components/FormGenerator/plugins.tsx
index cd01029a5..a9c87802c 100644
--- a/inlong-dashboard/src/components/FormGenerator/plugins.tsx
+++ b/inlong-dashboard/src/ui/components/FormGenerator/plugins.tsx
@@ -33,7 +33,7 @@ import {
   AutoComplete,
   Transfer,
 } from 'antd';
-import HighSelect from '@/components/HighSelect';
+import HighSelect from '@/ui/components/HighSelect';
 import i18n from '@/i18n';
 
 const text: React.FC<Record<string, any>> = ({ value, options, asyncValueLabel }) => {
diff --git a/inlong-dashboard/src/components/GroupLogs/GroupLogs.tsx b/inlong-dashboard/src/ui/components/GroupLogs/GroupLogs.tsx
similarity index 94%
rename from inlong-dashboard/src/components/GroupLogs/GroupLogs.tsx
rename to inlong-dashboard/src/ui/components/GroupLogs/GroupLogs.tsx
index e356b5be0..d66762323 100644
--- a/inlong-dashboard/src/components/GroupLogs/GroupLogs.tsx
+++ b/inlong-dashboard/src/ui/components/GroupLogs/GroupLogs.tsx
@@ -20,12 +20,12 @@
 import React, { useCallback, useState } from 'react';
 import { Modal, message, Button, Collapse, Popover, Timeline, Pagination, Empty } from 'antd';
 import { ModalProps } from 'antd/es/modal';
-import HighTable from '@/components/HighTable';
-import request from '@/utils/request';
+import HighTable from '@/ui/components/HighTable';
+import request from '@/core/utils/request';
 import { useTranslation } from 'react-i18next';
-import { useRequest, useUpdateEffect } from '@/hooks';
-import { timestampFormat } from '@/utils';
-import StatusTag from '@/components/StatusTag';
+import { useRequest, useUpdateEffect } from '@/ui/hooks';
+import { timestampFormat } from '@/core/utils';
+import StatusTag from '@/ui/components/StatusTag';
 
 const { Panel } = Collapse;
 
@@ -87,13 +87,13 @@ const Comp: React.FC<Props> = ({ inlongGroupId, inlongStreamId, ...modalProps })
   );
 
   useUpdateEffect(() => {
-    if (modalProps.visible) {
+    if (modalProps.open) {
       getData();
     }
   }, [options]);
 
   useUpdateEffect(() => {
-    if (modalProps.visible) {
+    if (modalProps.open) {
       getData();
     } else {
       setOptions(prev => ({
@@ -101,7 +101,7 @@ const Comp: React.FC<Props> = ({ inlongGroupId, inlongStreamId, ...modalProps })
         pageNum: 1,
       }));
     }
-  }, [modalProps.visible]);
+  }, [modalProps.open]);
 
   const columns = [
     {
diff --git a/inlong-dashboard/src/components/GroupLogs/index.ts b/inlong-dashboard/src/ui/components/GroupLogs/index.ts
similarity index 100%
rename from inlong-dashboard/src/components/GroupLogs/index.ts
rename to inlong-dashboard/src/ui/components/GroupLogs/index.ts
diff --git a/inlong-dashboard/src/components/HighSelect/index.tsx b/inlong-dashboard/src/ui/components/HighSelect/index.tsx
similarity index 99%
rename from inlong-dashboard/src/components/HighSelect/index.tsx
rename to inlong-dashboard/src/ui/components/HighSelect/index.tsx
index 998008b8b..c363b108b 100644
--- a/inlong-dashboard/src/components/HighSelect/index.tsx
+++ b/inlong-dashboard/src/ui/components/HighSelect/index.tsx
@@ -23,7 +23,7 @@
 import React, { useMemo, useState, useEffect } from 'react';
 import { Select, Space, Input, Spin } from 'antd';
 import type { SelectProps, OptionProps } from 'antd/es/select';
-import { useRequest } from '@/hooks';
+import { useRequest } from '@/ui/hooks';
 import debounce from 'lodash/debounce';
 import i18n from '@/i18n';
 
diff --git a/inlong-dashboard/src/components/HighTable/index.tsx b/inlong-dashboard/src/ui/components/HighTable/index.tsx
similarity index 100%
rename from inlong-dashboard/src/components/HighTable/index.tsx
rename to inlong-dashboard/src/ui/components/HighTable/index.tsx
diff --git a/inlong-dashboard/src/components/HighTable/style.module.less b/inlong-dashboard/src/ui/components/HighTable/style.module.less
similarity index 100%
rename from inlong-dashboard/src/components/HighTable/style.module.less
rename to inlong-dashboard/src/ui/components/HighTable/style.module.less
diff --git a/inlong-dashboard/src/components/Icons/DashCancelled.svg b/inlong-dashboard/src/ui/components/Icons/DashCancelled.svg
similarity index 100%
rename from inlong-dashboard/src/components/Icons/DashCancelled.svg
rename to inlong-dashboard/src/ui/components/Icons/DashCancelled.svg
diff --git a/inlong-dashboard/src/components/Icons/DashPending.svg b/inlong-dashboard/src/ui/components/Icons/DashPending.svg
similarity index 100%
rename from inlong-dashboard/src/components/Icons/DashPending.svg
rename to inlong-dashboard/src/ui/components/Icons/DashPending.svg
diff --git a/inlong-dashboard/src/components/Icons/DashRejected.svg b/inlong-dashboard/src/ui/components/Icons/DashRejected.svg
similarity index 100%
rename from inlong-dashboard/src/components/Icons/DashRejected.svg
rename to inlong-dashboard/src/ui/components/Icons/DashRejected.svg
diff --git a/inlong-dashboard/src/components/Icons/DashToBeAssigned.svg b/inlong-dashboard/src/ui/components/Icons/DashToBeAssigned.svg
similarity index 100%
rename from inlong-dashboard/src/components/Icons/DashToBeAssigned.svg
rename to inlong-dashboard/src/ui/components/Icons/DashToBeAssigned.svg
diff --git a/inlong-dashboard/src/components/Icons/DashTotal.svg b/inlong-dashboard/src/ui/components/Icons/DashTotal.svg
similarity index 100%
rename from inlong-dashboard/src/components/Icons/DashTotal.svg
rename to inlong-dashboard/src/ui/components/Icons/DashTotal.svg
diff --git a/inlong-dashboard/src/components/Icons/DashTotalRevert.svg b/inlong-dashboard/src/ui/components/Icons/DashTotalRevert.svg
similarity index 100%
rename from inlong-dashboard/src/components/Icons/DashTotalRevert.svg
rename to inlong-dashboard/src/ui/components/Icons/DashTotalRevert.svg
diff --git a/inlong-dashboard/src/components/Icons/index.ts b/inlong-dashboard/src/ui/components/Icons/index.ts
similarity index 100%
rename from inlong-dashboard/src/components/Icons/index.ts
rename to inlong-dashboard/src/ui/components/Icons/index.ts
diff --git a/inlong-dashboard/src/components/Layout/NavWidget/KeyModal.tsx b/inlong-dashboard/src/ui/components/Layout/NavWidget/KeyModal.tsx
similarity index 92%
rename from inlong-dashboard/src/components/Layout/NavWidget/KeyModal.tsx
rename to inlong-dashboard/src/ui/components/Layout/NavWidget/KeyModal.tsx
index 5389cb579..8dd4cfbc7 100644
--- a/inlong-dashboard/src/components/Layout/NavWidget/KeyModal.tsx
+++ b/inlong-dashboard/src/ui/components/Layout/NavWidget/KeyModal.tsx
@@ -18,9 +18,9 @@
 import React, { useState } from 'react';
 import { Modal, message } from 'antd';
 import { ModalProps } from 'antd/es/modal';
-import FormGenerator, { useForm } from '@/components/FormGenerator';
-import { useUpdateEffect, useRequest } from '@/hooks';
-import request from '@/utils/request';
+import FormGenerator, { useForm } from '@/ui/components/FormGenerator';
+import { useUpdateEffect, useRequest } from '@/ui/hooks';
+import request from '@/core/utils/request';
 import { useTranslation } from 'react-i18next';
 
 export interface Props extends ModalProps {
@@ -105,10 +105,10 @@ const Comp: React.FC<Props> = ({ id, ...modalProps }) => {
   };
 
   useUpdateEffect(() => {
-    if (modalProps.visible) {
+    if (modalProps.open) {
       getData();
     }
-  }, [modalProps.visible]);
+  }, [modalProps.open]);
 
   useUpdateEffect(() => {
     if (userId !== null) {
diff --git a/inlong-dashboard/src/components/Layout/NavWidget/LocaleSelect.tsx b/inlong-dashboard/src/ui/components/Layout/NavWidget/LocaleSelect.tsx
similarity index 91%
rename from inlong-dashboard/src/components/Layout/NavWidget/LocaleSelect.tsx
rename to inlong-dashboard/src/ui/components/Layout/NavWidget/LocaleSelect.tsx
index a8c1d7bae..9e9cb1657 100644
--- a/inlong-dashboard/src/components/Layout/NavWidget/LocaleSelect.tsx
+++ b/inlong-dashboard/src/ui/components/Layout/NavWidget/LocaleSelect.tsx
@@ -20,8 +20,8 @@
 import React from 'react';
 import { Dropdown, Menu } from 'antd';
 import { GlobalOutlined } from '@ant-design/icons';
-import { useSelector, useLocation } from '@/hooks';
-import { State } from '@/models';
+import { useSelector, useLocation } from '@/ui/hooks';
+import { State } from '@/core/stores';
 import { localesConfig } from '@/configs/locales';
 
 const localeList = Object.keys(localesConfig).map(item => ({
@@ -50,7 +50,7 @@ const SelectLang = () => {
   );
 
   return (
-    <Dropdown overlay={langMenu} placement="bottomRight">
+    <Dropdown dropdownRender={() => langMenu} placement="bottomRight">
       <GlobalOutlined />
     </Dropdown>
   );
diff --git a/inlong-dashboard/src/components/Layout/NavWidget/PasswordModal.tsx b/inlong-dashboard/src/ui/components/Layout/NavWidget/PasswordModal.tsx
similarity index 93%
rename from inlong-dashboard/src/components/Layout/NavWidget/PasswordModal.tsx
rename to inlong-dashboard/src/ui/components/Layout/NavWidget/PasswordModal.tsx
index 5b58460b8..81504dd2e 100644
--- a/inlong-dashboard/src/components/Layout/NavWidget/PasswordModal.tsx
+++ b/inlong-dashboard/src/ui/components/Layout/NavWidget/PasswordModal.tsx
@@ -18,9 +18,9 @@
 import React, { useState } from 'react';
 import { Modal, message } from 'antd';
 import { ModalProps } from 'antd/es/modal';
-import FormGenerator, { useForm } from '@/components/FormGenerator';
-import { useUpdateEffect, useRequest } from '@/hooks';
-import request from '@/utils/request';
+import FormGenerator, { useForm } from '@/ui/components/FormGenerator';
+import { useUpdateEffect, useRequest } from '@/ui/hooks';
+import request from '@/core/utils/request';
 import { useTranslation } from 'react-i18next';
 
 export interface Props extends ModalProps {
@@ -117,12 +117,12 @@ const Comp: React.FC<Props> = ({ id, ...modalProps }) => {
   };
 
   useUpdateEffect(() => {
-    if (modalProps.visible) {
+    if (modalProps.open) {
       getData();
     } else {
       form.resetFields();
     }
-  }, [modalProps.visible]);
+  }, [modalProps.open]);
 
   useUpdateEffect(() => {
     if (userId !== null) {
diff --git a/inlong-dashboard/src/components/Layout/NavWidget/index.tsx b/inlong-dashboard/src/ui/components/Layout/NavWidget/index.tsx
similarity index 80%
rename from inlong-dashboard/src/components/Layout/NavWidget/index.tsx
rename to inlong-dashboard/src/ui/components/Layout/NavWidget/index.tsx
index 8e6d7903d..0791bda8b 100644
--- a/inlong-dashboard/src/components/Layout/NavWidget/index.tsx
+++ b/inlong-dashboard/src/ui/components/Layout/NavWidget/index.tsx
@@ -18,13 +18,11 @@
  */
 
 import React, { useState } from 'react';
-import { Dropdown, Menu } from 'antd';
-import { useSelector } from '@/hooks';
-import { State } from '@/models';
+import { Dropdown } from 'antd';
+import { useSelector } from '@/ui/hooks';
+import { State } from '@/core/stores';
 import { useTranslation } from 'react-i18next';
-import request from '@/utils/request';
-import LocaleSelect from './LocaleSelect';
-import styles from './index.module.less';
+import request from '@/core/utils/request';
 import PasswordModal from './PasswordModal';
 import KeyModal from './KeyModal';
 
@@ -64,16 +62,13 @@ const Comp: React.FC = () => {
   ];
 
   return (
-    <div style={{ marginRight: '20px' }}>
-      <span className={styles.iconToolBar}>
-        <LocaleSelect />
-      </span>
-      <Dropdown overlay={<Menu items={menuItems} />} placement="bottomLeft">
-        <span>{userName}</span>
+    <>
+      <Dropdown menu={{ items: menuItems }} placement="bottomLeft">
+        <span style={{ fontSize: 14 }}>{userName}</span>
       </Dropdown>
       <PasswordModal
         {...createModal}
-        visible={createModal.visible as boolean}
+        open={createModal.visible as boolean}
         onCancel={() => setCreateModal({ visible: false })}
         onOk={async () => {
           runLogout();
@@ -82,13 +77,13 @@ const Comp: React.FC = () => {
       />
       <KeyModal
         {...keyModal}
-        visible={keyModal.visible as boolean}
+        open={keyModal.visible as boolean}
         onCancel={() => setKeyModal({ visible: false })}
         onOk={async () => {
           setKeyModal({ visible: false });
         }}
       />
-    </div>
+    </>
   );
 };
 
diff --git a/inlong-dashboard/src/defaultSettings.js b/inlong-dashboard/src/ui/components/Layout/defaultSettings.js
similarity index 93%
rename from inlong-dashboard/src/defaultSettings.js
rename to inlong-dashboard/src/ui/components/Layout/defaultSettings.js
index 13a266f55..61ba51e51 100644
--- a/inlong-dashboard/src/defaultSettings.js
+++ b/inlong-dashboard/src/ui/components/Layout/defaultSettings.js
@@ -20,9 +20,10 @@
 // eslint-disable-next-line
 export default {
   navTheme: 'light',
+  layout: 'mix',
   primaryColor: '#0052D9',
-  layout: 'top',
-  contentWidth: 'Fixed',
+  contentWidth: 'Fluid',
   splitMenus: false,
   fixedHeader: true,
+  fixSiderbar: true,
 };
diff --git a/inlong-dashboard/src/components/Layout/index.tsx b/inlong-dashboard/src/ui/components/Layout/index.tsx
similarity index 74%
rename from inlong-dashboard/src/components/Layout/index.tsx
rename to inlong-dashboard/src/ui/components/Layout/index.tsx
index 29b964616..1216e604e 100644
--- a/inlong-dashboard/src/components/Layout/index.tsx
+++ b/inlong-dashboard/src/ui/components/Layout/index.tsx
@@ -17,11 +17,12 @@
  * under the License.
  */
 
+import { SmileOutlined, SmileTwoTone } from '@ant-design/icons';
 import { config } from '@/configs/default';
 import menusTree from '@/configs/menus';
-import defaultSettings from '@/defaultSettings';
-import { useLocation, useSelector } from '@/hooks';
-import { isDevelopEnv } from '@/utils';
+import defaultSettings from './defaultSettings';
+import { useLocation, useSelector } from '@/ui/hooks';
+import { isDevelopEnv } from '@/core/utils';
 import ProBasicLayout, {
   getMenuData,
   MenuDataItem,
@@ -31,8 +32,9 @@ import ProBasicLayout, {
 import React, { useCallback, useEffect, useMemo, useState } from 'react';
 import { Link } from 'react-router-dom';
 import type { MenuProps } from 'antd/es/menu';
-import { State } from '@/models';
+import { State } from '@/core/stores';
 import NavWidget from './NavWidget';
+import LocaleSelect from './NavWidget/LocaleSelect';
 
 const renderMenuItem = (menus: MenuDataItem[]): MenuDataItem[] =>
   menus.map(({ icon, children, ...item }) => ({
@@ -59,7 +61,7 @@ const BasicLayout: React.FC = props => {
     const firstPathname = `/${pathname.slice(1).split('/')?.[0]}`;
     const select = breadcrumbMap.get(firstPathname);
     if (select) {
-      // setOpenKeys((select as MenuDataItem)['pro_layout_parentKeys']);
+      setOpenKeys((select as MenuDataItem)['pro_layout_parentKeys']);
       setSelectedKeys([(select as MenuDataItem)['key'] as string]);
     }
   }, [breadcrumbMap, pathname]);
@@ -83,23 +85,35 @@ const BasicLayout: React.FC = props => {
     };
   }, [handleOnOpenChange, openKeys, selectedKeys]);
 
+  const [navTheme, setNavTheme] = useState(
+    window.matchMedia('(prefers-color-scheme: dark)')?.matches ? 'realDark' : settings.navTheme,
+  );
+
+  useEffect(() => {
+    window.matchMedia('(prefers-color-scheme: dark)').onchange = e => {
+      setNavTheme(e.matches ? 'realDark' : settings.navTheme);
+    };
+  }, [settings.navTheme]);
+
   return (
     <>
       <ProBasicLayout
         {...settings}
         title={config.title}
-        logo={config.logo}
+        logo={<img src={config.logo} style={{ height: 50 }} alt="Logo" />}
         menuDataRender={menuDataRender}
         menuItemRender={menuItemRender}
-        menuHeaderRender={(logo, title) => (
-          <a href="#/">
-            {logo}
-            {title}
-          </a>
-        )}
+        navTheme={navTheme}
         menuProps={menuProps}
-        rightContentRender={() => <NavWidget />}
-        headerHeight={64}
+        actionsRender={() => [
+          navTheme === 'realDark' ? (
+            <SmileOutlined onClick={() => setNavTheme(settings.navTheme)} />
+          ) : (
+            <SmileTwoTone onClick={() => setNavTheme('realDark')} />
+          ),
+          <LocaleSelect />,
+          <NavWidget />,
+        ]}
       >
         {props.children}
       </ProBasicLayout>
@@ -109,6 +123,7 @@ const BasicLayout: React.FC = props => {
           getContainer={() => document.getElementById('root')}
           settings={settings}
           onSettingChange={setSetting}
+          enableDarkTheme
         />
       )}
     </>
diff --git a/inlong-dashboard/src/components/NodeSelect/index.tsx b/inlong-dashboard/src/ui/components/NodeSelect/index.tsx
similarity index 96%
rename from inlong-dashboard/src/components/NodeSelect/index.tsx
rename to inlong-dashboard/src/ui/components/NodeSelect/index.tsx
index 5c89e7638..9316db586 100644
--- a/inlong-dashboard/src/components/NodeSelect/index.tsx
+++ b/inlong-dashboard/src/ui/components/NodeSelect/index.tsx
@@ -16,7 +16,7 @@
  */
 
 import React from 'react';
-import HighSelect, { HighSelectProps } from '@/components/HighSelect';
+import HighSelect, { HighSelectProps } from '@/ui/components/HighSelect';
 import i18n from '@/i18n';
 import { Link } from 'react-router-dom';
 
diff --git a/inlong-dashboard/src/components/PageContainer/Container.tsx b/inlong-dashboard/src/ui/components/PageContainer/Container.tsx
similarity index 100%
rename from inlong-dashboard/src/components/PageContainer/Container.tsx
rename to inlong-dashboard/src/ui/components/PageContainer/Container.tsx
diff --git a/inlong-dashboard/src/components/PageContainer/PageContainer.tsx b/inlong-dashboard/src/ui/components/PageContainer/PageContainer.tsx
similarity index 87%
rename from inlong-dashboard/src/components/PageContainer/PageContainer.tsx
rename to inlong-dashboard/src/ui/components/PageContainer/PageContainer.tsx
index 54d2d3f87..e51602deb 100644
--- a/inlong-dashboard/src/components/PageContainer/PageContainer.tsx
+++ b/inlong-dashboard/src/ui/components/PageContainer/PageContainer.tsx
@@ -21,8 +21,8 @@ import React from 'react';
 import { Link } from 'react-router-dom';
 import { PageContainer as ProPageContainer, FooterToolbar } from '@ant-design/pro-layout';
 import { Card } from 'antd';
-import { useSelector } from '@/hooks';
-import { State } from '@/models';
+import { useSelector } from '@/ui/hooks';
+import { State } from '@/core/stores';
 import Container from './Container';
 
 export { FooterToolbar };
@@ -77,17 +77,13 @@ const PageContainer: React.FC<PageContainerProps> = ({
       header={{
         title: '',
         breadcrumb: breadcrumbData?.length && {
-          routes: breadcrumbData.map(item => ({
+          items: breadcrumbData.map(item => ({
             path: item.path,
-            breadcrumbName: item.name,
+            title: item.name,
           })),
-          itemRender: (route, params, routes) => {
+          itemRender: (route: any, params, routes) => {
             const last = routes.indexOf(route) === routes.length - 1;
-            return last ? (
-              <span>{route.breadcrumbName}</span>
-            ) : (
-              <Link to={route.path}>{route.breadcrumbName}</Link>
-            );
+            return last ? <span>{route.title}</span> : <Link to={route.path}>{route.title}</Link>;
           },
         },
       }}
diff --git a/inlong-dashboard/src/components/PageContainer/index.module.less b/inlong-dashboard/src/ui/components/PageContainer/index.module.less
similarity index 100%
rename from inlong-dashboard/src/components/PageContainer/index.module.less
rename to inlong-dashboard/src/ui/components/PageContainer/index.module.less
diff --git a/inlong-dashboard/src/components/PageContainer/index.ts b/inlong-dashboard/src/ui/components/PageContainer/index.ts
similarity index 100%
rename from inlong-dashboard/src/components/PageContainer/index.ts
rename to inlong-dashboard/src/ui/components/PageContainer/index.ts
diff --git a/inlong-dashboard/src/components/Provider/antd.cover.less b/inlong-dashboard/src/ui/components/Provider/antd.cover.less
similarity index 97%
rename from inlong-dashboard/src/components/Provider/antd.cover.less
rename to inlong-dashboard/src/ui/components/Provider/antd.cover.less
index e5db5f825..fd44dc1dd 100644
--- a/inlong-dashboard/src/components/Provider/antd.cover.less
+++ b/inlong-dashboard/src/ui/components/Provider/antd.cover.less
@@ -21,6 +21,11 @@
 /**
  * Public library coverage code
  */
+html, body {
+  margin: 0;
+  height: 100%;
+}
+
 body {
   .ant-pro-top-nav-header-logo img {
     height: 100%;
diff --git a/inlong-dashboard/src/components/Provider/index.tsx b/inlong-dashboard/src/ui/components/Provider/index.tsx
similarity index 93%
rename from inlong-dashboard/src/components/Provider/index.tsx
rename to inlong-dashboard/src/ui/components/Provider/index.tsx
index e03cd3737..a07edcce4 100644
--- a/inlong-dashboard/src/components/Provider/index.tsx
+++ b/inlong-dashboard/src/ui/components/Provider/index.tsx
@@ -20,8 +20,8 @@
 import React, { useEffect, useCallback, useState } from 'react';
 import { ConfigProvider, Spin } from 'antd';
 import dayjs from 'dayjs';
-import { useDispatch, useSelector, useRequest } from '@/hooks';
-import { State } from '@/models';
+import { useDispatch, useSelector, useRequest } from '@/ui/hooks';
+import { State } from '@/core/stores';
 import { localesConfig } from '@/configs/locales';
 import i18n from '@/i18n';
 import './antd.cover.less';
@@ -59,11 +59,11 @@ const Provider = ({ children }) => {
     const [messagesDefault, messagesExtends, antdMessages] = await Promise.all([
       import(
         /* webpackChunkName: 'default-locales-[request]' */
-        `@/locales/${locale}.json`
+        `@/ui/locales/${locale}.json`
       ),
       import(
         /* webpackChunkName: 'extends-locales-[request]' */
-        `@/locales/extends/${locale}.json`
+        `@/ui/locales/extends/${locale}.json`
       ),
       import(
         /* webpackInclude: /(zh_CN|en_US)\.js$/ */
diff --git a/inlong-dashboard/src/components/StatusTag/index.tsx b/inlong-dashboard/src/ui/components/StatusTag/index.tsx
similarity index 98%
rename from inlong-dashboard/src/components/StatusTag/index.tsx
rename to inlong-dashboard/src/ui/components/StatusTag/index.tsx
index fad856b37..15e906f8c 100644
--- a/inlong-dashboard/src/components/StatusTag/index.tsx
+++ b/inlong-dashboard/src/ui/components/StatusTag/index.tsx
@@ -19,7 +19,7 @@
 
 import React from 'react';
 import { Tag } from 'antd';
-import { CheckCircleFilled, ClockCircleFilled, CloseCircleFilled } from '@/components/Icons';
+import { CheckCircleFilled, ClockCircleFilled, CloseCircleFilled } from '@/ui/components/Icons';
 
 export interface StatusTagProps {
   type: 'default' | 'primary' | 'success' | 'error' | 'warning';
diff --git a/inlong-dashboard/src/components/TextSwitch/index.tsx b/inlong-dashboard/src/ui/components/TextSwitch/index.tsx
similarity index 96%
rename from inlong-dashboard/src/components/TextSwitch/index.tsx
rename to inlong-dashboard/src/ui/components/TextSwitch/index.tsx
index cd8a57105..df455ac7b 100644
--- a/inlong-dashboard/src/components/TextSwitch/index.tsx
+++ b/inlong-dashboard/src/ui/components/TextSwitch/index.tsx
@@ -20,7 +20,7 @@
 import React, { useState, useEffect } from 'react';
 import i18n from '@/i18n';
 import { Button } from 'antd';
-import { MinusOutlined, PlusOutlined } from '@/components/Icons';
+import { MinusOutlined, PlusOutlined } from '@/ui/components/Icons';
 
 export interface Props {
   value?: boolean;
diff --git a/inlong-dashboard/src/components/UserSelect/index.tsx b/inlong-dashboard/src/ui/components/UserSelect/index.tsx
similarity index 96%
rename from inlong-dashboard/src/components/UserSelect/index.tsx
rename to inlong-dashboard/src/ui/components/UserSelect/index.tsx
index 853e8a36b..43b6b8bcc 100644
--- a/inlong-dashboard/src/components/UserSelect/index.tsx
+++ b/inlong-dashboard/src/ui/components/UserSelect/index.tsx
@@ -20,9 +20,9 @@
 import React, { useState, useEffect } from 'react';
 import { Tag } from 'antd';
 import type { DefaultOptionType } from 'antd/es/select';
-import { State } from '@/models';
-import { useSelector } from '@/hooks';
-import HighSelect, { HighSelectProps } from '@/components/HighSelect';
+import { State } from '@/core/stores';
+import { useSelector } from '@/ui/hooks';
+import HighSelect, { HighSelectProps } from '@/ui/components/HighSelect';
 
 export interface UserSelectProps extends HighSelectProps {
   onChange?: (value: string | string[]) => void;
diff --git a/inlong-dashboard/src/hooks/index.ts b/inlong-dashboard/src/ui/hooks/index.ts
similarity index 100%
rename from inlong-dashboard/src/hooks/index.ts
rename to inlong-dashboard/src/ui/hooks/index.ts
diff --git a/inlong-dashboard/src/locales/cn.json b/inlong-dashboard/src/ui/locales/cn.json
similarity index 100%
rename from inlong-dashboard/src/locales/cn.json
rename to inlong-dashboard/src/ui/locales/cn.json
diff --git a/inlong-dashboard/src/locales/en.json b/inlong-dashboard/src/ui/locales/en.json
similarity index 100%
rename from inlong-dashboard/src/locales/en.json
rename to inlong-dashboard/src/ui/locales/en.json
diff --git a/inlong-dashboard/src/locales/extends/cn.json b/inlong-dashboard/src/ui/locales/extends/cn.json
similarity index 100%
rename from inlong-dashboard/src/locales/extends/cn.json
rename to inlong-dashboard/src/ui/locales/extends/cn.json
diff --git a/inlong-dashboard/src/locales/extends/en.json b/inlong-dashboard/src/ui/locales/extends/en.json
similarity index 100%
rename from inlong-dashboard/src/locales/extends/en.json
rename to inlong-dashboard/src/ui/locales/extends/en.json
diff --git a/inlong-dashboard/src/pages/ClusterTags/ClusterBindModal.tsx b/inlong-dashboard/src/ui/pages/ClusterTags/ClusterBindModal.tsx
similarity index 92%
rename from inlong-dashboard/src/pages/ClusterTags/ClusterBindModal.tsx
rename to inlong-dashboard/src/ui/pages/ClusterTags/ClusterBindModal.tsx
index 9cecf3b1e..96a16a4c6 100644
--- a/inlong-dashboard/src/pages/ClusterTags/ClusterBindModal.tsx
+++ b/inlong-dashboard/src/ui/pages/ClusterTags/ClusterBindModal.tsx
@@ -20,10 +20,10 @@
 import React, { useCallback } from 'react';
 import { Modal, message } from 'antd';
 import { ModalProps } from 'antd/es/modal';
-import FormGenerator, { useForm } from '@/components/FormGenerator';
-import { useUpdateEffect } from '@/hooks';
+import FormGenerator, { useForm } from '@/ui/components/FormGenerator';
+import { useUpdateEffect } from '@/ui/hooks';
 import i18n from '@/i18n';
-import request from '@/utils/request';
+import request from '@/core/utils/request';
 
 export interface Props extends ModalProps {
   clusterTag: string;
@@ -48,11 +48,11 @@ const Comp: React.FC<Props> = ({ clusterTag, ...modalProps }) => {
   };
 
   useUpdateEffect(() => {
-    if (modalProps.visible) {
+    if (modalProps.open) {
       // open
       form.resetFields();
     }
-  }, [modalProps.visible]);
+  }, [modalProps.open]);
 
   const getCreateFormContent = useCallback(
     () => [
diff --git a/inlong-dashboard/src/pages/ClusterTags/ClusterList.tsx b/inlong-dashboard/src/ui/pages/ClusterTags/ClusterList.tsx
similarity index 95%
rename from inlong-dashboard/src/pages/ClusterTags/ClusterList.tsx
rename to inlong-dashboard/src/ui/pages/ClusterTags/ClusterList.tsx
index 490192788..892079a3b 100644
--- a/inlong-dashboard/src/pages/ClusterTags/ClusterList.tsx
+++ b/inlong-dashboard/src/ui/pages/ClusterTags/ClusterList.tsx
@@ -20,12 +20,12 @@
 import React, { useCallback, useEffect, useMemo, useState } from 'react';
 import { Button, Modal, message } from 'antd';
 import i18n from '@/i18n';
-import HighTable from '@/components/HighTable';
+import HighTable from '@/ui/components/HighTable';
 import { defaultSize } from '@/configs/pagination';
-import { useRequest } from '@/hooks';
-import { clusters } from '@/metas/clusters';
+import { useRequest } from '@/ui/hooks';
+import { clusters } from '@/plugins/clusters';
 import ClusterBindModal from './ClusterBindModal';
-import request from '@/utils/request';
+import request from '@/core/utils/request';
 
 export interface ClusterListProps {
   clusterTag: string;
@@ -189,7 +189,7 @@ const Comp: React.FC<ClusterListProps> = ({ clusterTag }) => {
       <ClusterBindModal
         {...clusterBindModal}
         clusterTag={clusterTag}
-        visible={clusterBindModal.visible as boolean}
+        open={clusterBindModal.visible as boolean}
         onOk={async () => {
           await getList();
           setClusterBindModal({ visible: false });
diff --git a/inlong-dashboard/src/pages/ClusterTags/TagDetailModal.tsx b/inlong-dashboard/src/ui/pages/ClusterTags/TagDetailModal.tsx
similarity index 91%
rename from inlong-dashboard/src/pages/ClusterTags/TagDetailModal.tsx
rename to inlong-dashboard/src/ui/pages/ClusterTags/TagDetailModal.tsx
index 4be5427d9..0a601ad35 100644
--- a/inlong-dashboard/src/pages/ClusterTags/TagDetailModal.tsx
+++ b/inlong-dashboard/src/ui/pages/ClusterTags/TagDetailModal.tsx
@@ -21,10 +21,10 @@ import React, { useMemo } from 'react';
 import i18n from '@/i18n';
 import { Modal, message } from 'antd';
 import { ModalProps } from 'antd/es/modal';
-import FormGenerator, { useForm } from '@/components/FormGenerator';
-import { useRequest, useUpdateEffect } from '@/hooks';
-import UserSelect from '@/components/UserSelect';
-import request from '@/utils/request';
+import FormGenerator, { useForm } from '@/ui/components/FormGenerator';
+import { useRequest, useUpdateEffect } from '@/ui/hooks';
+import UserSelect from '@/ui/components/UserSelect';
+import request from '@/core/utils/request';
 
 export interface TagDetailModalProps extends ModalProps {
   id?: number;
@@ -70,14 +70,14 @@ const TagDetailModal: React.FC<TagDetailModalProps> = ({ id, ...modalProps }) =>
   };
 
   useUpdateEffect(() => {
-    if (modalProps.visible) {
+    if (modalProps.open) {
       // open
       form.resetFields();
       if (id) {
         getData(id);
       }
     }
-  }, [modalProps.visible]);
+  }, [modalProps.open]);
 
   const content = useMemo(() => {
     return [
diff --git a/inlong-dashboard/src/pages/ClusterTags/index.module.less b/inlong-dashboard/src/ui/pages/ClusterTags/index.module.less
similarity index 100%
rename from inlong-dashboard/src/pages/ClusterTags/index.module.less
rename to inlong-dashboard/src/ui/pages/ClusterTags/index.module.less
diff --git a/inlong-dashboard/src/pages/ClusterTags/index.tsx b/inlong-dashboard/src/ui/pages/ClusterTags/index.tsx
similarity index 96%
rename from inlong-dashboard/src/pages/ClusterTags/index.tsx
rename to inlong-dashboard/src/ui/pages/ClusterTags/index.tsx
index 40fa6a929..d35098b10 100644
--- a/inlong-dashboard/src/pages/ClusterTags/index.tsx
+++ b/inlong-dashboard/src/ui/pages/ClusterTags/index.tsx
@@ -19,10 +19,10 @@
 
 import React, { useState, useCallback, useMemo } from 'react';
 import { Button, Card, List, Col, Row, Descriptions, Input, Modal, message } from 'antd';
-import { PageContainer } from '@/components/PageContainer';
-import { useRequest } from '@/hooks';
+import { PageContainer } from '@/ui/components/PageContainer';
+import { useRequest } from '@/ui/hooks';
 import i18n from '@/i18n';
-import request from '@/utils/request';
+import request from '@/core/utils/request';
 import ClusterList from './ClusterList';
 import TagDetailModal from './TagDetailModal';
 import styles from './index.module.less';
@@ -186,7 +186,7 @@ const Comp: React.FC = () => {
 
       <TagDetailModal
         {...tagDetailModal}
-        visible={tagDetailModal.visible as boolean}
+        open={tagDetailModal.visible as boolean}
         onOk={async () => {
           await getList();
           setTagDetailModal({ visible: false });
diff --git a/inlong-dashboard/src/pages/Clusters/CreateModal.tsx b/inlong-dashboard/src/ui/pages/Clusters/CreateModal.tsx
similarity index 92%
rename from inlong-dashboard/src/pages/Clusters/CreateModal.tsx
rename to inlong-dashboard/src/ui/pages/Clusters/CreateModal.tsx
index 252c99445..cc36947c6 100644
--- a/inlong-dashboard/src/pages/Clusters/CreateModal.tsx
+++ b/inlong-dashboard/src/ui/pages/Clusters/CreateModal.tsx
@@ -20,10 +20,10 @@
 import React, { useState, useMemo } from 'react';
 import { Modal, message, Button } from 'antd';
 import { ModalProps } from 'antd/es/modal';
-import FormGenerator, { useForm } from '@/components/FormGenerator';
-import { useRequest, useUpdateEffect } from '@/hooks';
-import request from '@/utils/request';
-import { useDefaultMeta, useLoadMeta, ClusterMetaType } from '@/metas';
+import FormGenerator, { useForm } from '@/ui/components/FormGenerator';
+import { useRequest, useUpdateEffect } from '@/ui/hooks';
+import request from '@/core/utils/request';
+import { useDefaultMeta, useLoadMeta, ClusterMetaType } from '@/plugins';
 import i18n from '@/i18n';
 
 export interface Props extends ModalProps {
@@ -94,7 +94,7 @@ const Comp: React.FC<Props> = ({ id, defaultType, ...modalProps }) => {
   };
 
   useUpdateEffect(() => {
-    if (modalProps.visible) {
+    if (modalProps.open) {
       if (id) {
         getData(id);
       } else {
@@ -104,7 +104,7 @@ const Comp: React.FC<Props> = ({ id, defaultType, ...modalProps }) => {
     } else {
       form.resetFields();
     }
-  }, [modalProps.visible]);
+  }, [modalProps.open]);
 
   const { Entity } = useLoadMeta<ClusterMetaType>('cluster', type);
 
@@ -117,7 +117,7 @@ const Comp: React.FC<Props> = ({ id, defaultType, ...modalProps }) => {
       {...modalProps}
       title={id ? i18n.t('pages.Clusters.Edit') : i18n.t('pages.Clusters.Create')}
       footer={[
-        <Button key="cancel" onClick={modalProps.onCancel}>
+        <Button key="cancel" onClick={e => modalProps.onCancel(e)}>
           {i18n.t('basic.Cancel')}
         </Button>,
         <Button key="save" type="primary" onClick={onOk}>
diff --git a/inlong-dashboard/src/pages/Clusters/NodeEditModal.tsx b/inlong-dashboard/src/ui/pages/Clusters/NodeEditModal.tsx
similarity index 92%
rename from inlong-dashboard/src/pages/Clusters/NodeEditModal.tsx
rename to inlong-dashboard/src/ui/pages/Clusters/NodeEditModal.tsx
index a085ec0c0..8e85977ab 100644
--- a/inlong-dashboard/src/pages/Clusters/NodeEditModal.tsx
+++ b/inlong-dashboard/src/ui/pages/Clusters/NodeEditModal.tsx
@@ -21,10 +21,10 @@ import React, { useMemo } from 'react';
 import i18n from '@/i18n';
 import { Modal, message } from 'antd';
 import { ModalProps } from 'antd/es/modal';
-import FormGenerator, { useForm } from '@/components/FormGenerator';
-import { useRequest, useUpdateEffect } from '@/hooks';
-import request from '@/utils/request';
-import rulesPattern from '@/utils/pattern';
+import FormGenerator, { useForm } from '@/ui/components/FormGenerator';
+import { useRequest, useUpdateEffect } from '@/ui/hooks';
+import request from '@/core/utils/request';
+import rulesPattern from '@/core/utils/pattern';
 
 export interface NodeEditModalProps extends ModalProps {
   id?: number;
@@ -69,14 +69,14 @@ const NodeEditModal: React.FC<NodeEditModalProps> = ({ id, type, clusterId, ...m
   };
 
   useUpdateEffect(() => {
-    if (modalProps.visible) {
+    if (modalProps.open) {
       // open
       form.resetFields();
       if (id) {
         getData(id);
       }
     }
-  }, [modalProps.visible]);
+  }, [modalProps.open]);
 
   const content = useMemo(() => {
     return [
diff --git a/inlong-dashboard/src/pages/Clusters/NodeManage.tsx b/inlong-dashboard/src/ui/pages/Clusters/NodeManage.tsx
similarity index 93%
rename from inlong-dashboard/src/pages/Clusters/NodeManage.tsx
rename to inlong-dashboard/src/ui/pages/Clusters/NodeManage.tsx
index 9368f9128..d1a3aef14 100644
--- a/inlong-dashboard/src/pages/Clusters/NodeManage.tsx
+++ b/inlong-dashboard/src/ui/pages/Clusters/NodeManage.tsx
@@ -21,13 +21,13 @@ import React, { useCallback, useMemo, useState } from 'react';
 import { Button, Modal, message } from 'antd';
 import i18n from '@/i18n';
 import { parse } from 'qs';
-import HighTable from '@/components/HighTable';
-import { PageContainer } from '@/components/PageContainer';
+import HighTable from '@/ui/components/HighTable';
+import { PageContainer } from '@/ui/components/PageContainer';
 import { defaultSize } from '@/configs/pagination';
-import { useRequest, useLocation } from '@/hooks';
+import { useRequest, useLocation } from '@/ui/hooks';
 import NodeEditModal from './NodeEditModal';
-import request from '@/utils/request';
-import { timestampFormat } from '@/utils';
+import request from '@/core/utils/request';
+import { timestampFormat } from '@/core/utils';
 
 const getFilterFormContent = defaultValues => [
   {
@@ -184,7 +184,7 @@ const Comp: React.FC = () => {
         type={type}
         clusterId={+clusterId}
         {...nodeEditModal}
-        visible={nodeEditModal.visible as boolean}
+        open={nodeEditModal.visible as boolean}
         onOk={async () => {
           await getList();
           setNodeEditModal({ visible: false });
diff --git a/inlong-dashboard/src/pages/Clusters/index.tsx b/inlong-dashboard/src/ui/pages/Clusters/index.tsx
similarity index 94%
rename from inlong-dashboard/src/pages/Clusters/index.tsx
rename to inlong-dashboard/src/ui/pages/Clusters/index.tsx
index d9ece45a1..a9a7b8aeb 100644
--- a/inlong-dashboard/src/pages/Clusters/index.tsx
+++ b/inlong-dashboard/src/ui/pages/Clusters/index.tsx
@@ -21,14 +21,14 @@ import React, { useCallback, useMemo, useState } from 'react';
 import { Button, Modal, message } from 'antd';
 import { Link } from 'react-router-dom';
 import i18n from '@/i18n';
-import HighTable from '@/components/HighTable';
-import { PageContainer } from '@/components/PageContainer';
+import HighTable from '@/ui/components/HighTable';
+import { PageContainer } from '@/ui/components/PageContainer';
 import { defaultSize } from '@/configs/pagination';
-import { useRequest } from '@/hooks';
-import { useDefaultMeta, useLoadMeta, ClusterMetaType } from '@/metas';
+import { useRequest } from '@/ui/hooks';
+import { useDefaultMeta, useLoadMeta, ClusterMetaType } from '@/plugins';
 import CreateModal from './CreateModal';
-import request from '@/utils/request';
-import { timestampFormat } from '@/utils';
+import request from '@/core/utils/request';
+import { timestampFormat } from '@/core/utils';
 
 const Comp: React.FC = () => {
   const { defaultValue, options: clusters } = useDefaultMeta('cluster');
@@ -191,7 +191,7 @@ const Comp: React.FC = () => {
       <CreateModal
         {...createModal}
         defaultType={options.type}
-        visible={createModal.visible as boolean}
+        open={createModal.visible as boolean}
         onOk={async () => {
           await getList();
           setCreateModal({ visible: false });
diff --git a/inlong-dashboard/src/pages/ConsumeDashboard/config.tsx b/inlong-dashboard/src/ui/pages/ConsumeDashboard/config.tsx
similarity index 98%
rename from inlong-dashboard/src/pages/ConsumeDashboard/config.tsx
rename to inlong-dashboard/src/ui/pages/ConsumeDashboard/config.tsx
index 9453a914b..8dc97b5d6 100644
--- a/inlong-dashboard/src/pages/ConsumeDashboard/config.tsx
+++ b/inlong-dashboard/src/ui/pages/ConsumeDashboard/config.tsx
@@ -21,8 +21,8 @@ import React, { useMemo } from 'react';
 import { Button } from 'antd';
 import { Link } from 'react-router-dom';
 import i18n from '@/i18n';
-import { DashTotal, DashToBeAssigned, DashPending, DashRejected } from '@/components/Icons';
-import { useDefaultMeta, useLoadMeta, ConsumeMetaType } from '@/metas';
+import { DashTotal, DashToBeAssigned, DashPending, DashRejected } from '@/ui/components/Icons';
+import { useDefaultMeta, useLoadMeta, ConsumeMetaType } from '@/plugins';
 
 export const dashCardList = [
   {
diff --git a/inlong-dashboard/src/pages/ConsumeDashboard/index.tsx b/inlong-dashboard/src/ui/pages/ConsumeDashboard/index.tsx
similarity index 91%
rename from inlong-dashboard/src/pages/ConsumeDashboard/index.tsx
rename to inlong-dashboard/src/ui/pages/ConsumeDashboard/index.tsx
index 24ed5776f..af541665b 100644
--- a/inlong-dashboard/src/pages/ConsumeDashboard/index.tsx
+++ b/inlong-dashboard/src/ui/pages/ConsumeDashboard/index.tsx
@@ -19,16 +19,16 @@
 
 import React, { useCallback, useState } from 'react';
 import { Button, Card, Modal, message } from 'antd';
-import { PageContainer, Container } from '@/components/PageContainer';
-import HighTable from '@/components/HighTable';
-import { DashboardCardList } from '@/components/DashboardCard';
-import { useRequest, useHistory } from '@/hooks';
-import request from '@/utils/request';
+import { PageContainer, Container } from '@/ui/components/PageContainer';
+import HighTable from '@/ui/components/HighTable';
+import { DashboardCardList } from '@/ui/components/DashboardCard';
+import { useRequest, useHistory } from '@/ui/hooks';
+import request from '@/core/utils/request';
 import { defaultSize } from '@/configs/pagination';
 import { dashCardList, useColumns } from './config';
-import { statusList, lastConsumerStatusList } from '@/metas/consumes/common/status';
+import { statusList, lastConsumerStatusList } from '@/plugins/consumes/common/status';
 import i18n from '@/i18n';
-import { useDefaultMeta } from '@/metas';
+import { useDefaultMeta } from '@/plugins';
 
 const Comp: React.FC = () => {
   const { options: consumes } = useDefaultMeta('consume');
diff --git a/inlong-dashboard/src/pages/ConsumeDetail/Info/config.tsx b/inlong-dashboard/src/ui/pages/ConsumeDetail/Info/config.tsx
similarity index 94%
rename from inlong-dashboard/src/pages/ConsumeDetail/Info/config.tsx
rename to inlong-dashboard/src/ui/pages/ConsumeDetail/Info/config.tsx
index 858689352..ea7c2cdbb 100644
--- a/inlong-dashboard/src/pages/ConsumeDetail/Info/config.tsx
+++ b/inlong-dashboard/src/ui/pages/ConsumeDetail/Info/config.tsx
@@ -18,8 +18,8 @@
  */
 
 import { useMemo } from 'react';
-import { useLoadMeta, ConsumeMetaType } from '@/metas';
-import { excludeObjectArray } from '@/utils';
+import { useLoadMeta, ConsumeMetaType } from '@/plugins';
+import { excludeObjectArray } from '@/core/utils';
 
 export const useFormContent = ({ mqType, editing, isCreate }) => {
   const { Entity } = useLoadMeta<ConsumeMetaType>('consume', mqType);
diff --git a/inlong-dashboard/src/pages/ConsumeDetail/Info/index.tsx b/inlong-dashboard/src/ui/pages/ConsumeDetail/Info/index.tsx
similarity index 95%
rename from inlong-dashboard/src/pages/ConsumeDetail/Info/index.tsx
rename to inlong-dashboard/src/ui/pages/ConsumeDetail/Info/index.tsx
index bb40a4e5c..72aa6f96a 100644
--- a/inlong-dashboard/src/pages/ConsumeDetail/Info/index.tsx
+++ b/inlong-dashboard/src/ui/pages/ConsumeDetail/Info/index.tsx
@@ -19,11 +19,11 @@
 
 import React, { forwardRef, useImperativeHandle, useMemo, useState } from 'react';
 import { Button, message, Space, Table } from 'antd';
-import FormGenerator, { useForm } from '@/components/FormGenerator';
-import { useBoolean, useRequest } from '@/hooks';
-import request from '@/utils/request';
+import FormGenerator, { useForm } from '@/ui/components/FormGenerator';
+import { useBoolean, useRequest } from '@/ui/hooks';
+import request from '@/core/utils/request';
 import { useTranslation } from 'react-i18next';
-import { useDefaultMeta } from '@/metas';
+import { useDefaultMeta } from '@/plugins';
 import { CommonInterface } from '../common';
 import { useFormContent } from './config';
 
diff --git a/inlong-dashboard/src/pages/ConsumeDetail/common.d.ts b/inlong-dashboard/src/ui/pages/ConsumeDetail/common.d.ts
similarity index 100%
rename from inlong-dashboard/src/pages/ConsumeDetail/common.d.ts
rename to inlong-dashboard/src/ui/pages/ConsumeDetail/common.d.ts
diff --git a/inlong-dashboard/src/pages/ConsumeDetail/index.tsx b/inlong-dashboard/src/ui/pages/ConsumeDetail/index.tsx
similarity index 97%
rename from inlong-dashboard/src/pages/ConsumeDetail/index.tsx
rename to inlong-dashboard/src/ui/pages/ConsumeDetail/index.tsx
index 4b6917b64..a40005b34 100644
--- a/inlong-dashboard/src/pages/ConsumeDetail/index.tsx
+++ b/inlong-dashboard/src/ui/pages/ConsumeDetail/index.tsx
@@ -21,9 +21,9 @@ import React, { useState, useMemo, useRef, useEffect } from 'react';
 import { Tabs, Button, Card, message, Steps, Space } from 'antd';
 import { useTranslation } from 'react-i18next';
 import { parse } from 'qs';
-import { PageContainer, FooterToolbar } from '@/components/PageContainer';
-import { useParams, useRequest, useSet, useHistory, useLocation } from '@/hooks';
-import request from '@/utils/request';
+import { PageContainer, FooterToolbar } from '@/ui/components/PageContainer';
+import { useParams, useRequest, useSet, useHistory, useLocation } from '@/ui/hooks';
+import request from '@/core/utils/request';
 import Info from './Info';
 
 const Comp: React.FC = () => {
diff --git a/inlong-dashboard/src/pages/Error/404.tsx b/inlong-dashboard/src/ui/pages/Error/404.tsx
similarity index 100%
rename from inlong-dashboard/src/pages/Error/404.tsx
rename to inlong-dashboard/src/ui/pages/Error/404.tsx
diff --git a/inlong-dashboard/src/pages/GroupDashboard/config.tsx b/inlong-dashboard/src/ui/pages/GroupDashboard/config.tsx
similarity index 97%
rename from inlong-dashboard/src/pages/GroupDashboard/config.tsx
rename to inlong-dashboard/src/ui/pages/GroupDashboard/config.tsx
index 0c4616f71..b160f6240 100644
--- a/inlong-dashboard/src/pages/GroupDashboard/config.tsx
+++ b/inlong-dashboard/src/ui/pages/GroupDashboard/config.tsx
@@ -20,9 +20,9 @@
 import React, { useMemo } from 'react';
 import { Link } from 'react-router-dom';
 import i18n from '@/i18n';
-import { DashTotal, DashToBeAssigned, DashPending, DashRejected } from '@/components/Icons';
+import { DashTotal, DashToBeAssigned, DashPending, DashRejected } from '@/ui/components/Icons';
 import { Button } from 'antd';
-import { useDefaultMeta, useLoadMeta, GroupMetaType } from '@/metas';
+import { useDefaultMeta, useLoadMeta, GroupMetaType } from '@/plugins';
 
 export const dashCardList = [
   {
diff --git a/inlong-dashboard/src/pages/GroupDashboard/index.tsx b/inlong-dashboard/src/ui/pages/GroupDashboard/index.tsx
similarity index 92%
rename from inlong-dashboard/src/pages/GroupDashboard/index.tsx
rename to inlong-dashboard/src/ui/pages/GroupDashboard/index.tsx
index 04642b0e4..e059ad9c9 100644
--- a/inlong-dashboard/src/pages/GroupDashboard/index.tsx
+++ b/inlong-dashboard/src/ui/pages/GroupDashboard/index.tsx
@@ -20,16 +20,16 @@
 import React, { useCallback, useState } from 'react';
 import i18n from '@/i18n';
 import { Button, Card, Modal, message } from 'antd';
-import { PageContainer, Container } from '@/components/PageContainer';
-import HighTable from '@/components/HighTable';
-import { DashboardCardList } from '@/components/DashboardCard';
-import request from '@/utils/request';
-import { useRequest, useHistory } from '@/hooks';
+import { PageContainer, Container } from '@/ui/components/PageContainer';
+import HighTable from '@/ui/components/HighTable';
+import { DashboardCardList } from '@/ui/components/DashboardCard';
+import request from '@/core/utils/request';
+import { useRequest, useHistory } from '@/ui/hooks';
 import { defaultSize } from '@/configs/pagination';
-import { GroupLogs } from '@/components/GroupLogs';
+import { GroupLogs } from '@/ui/components/GroupLogs';
 import { dashCardList, useColumns } from './config';
-import { statusList } from '@/metas/groups/common/status';
-import { useDefaultMeta } from '@/metas';
+import { statusList } from '@/plugins/groups/common/status';
+import { useDefaultMeta } from '@/plugins';
 
 const Comp: React.FC = () => {
   const { options: groups } = useDefaultMeta('group');
diff --git a/inlong-dashboard/src/pages/GroupDetail/Audit/config.tsx b/inlong-dashboard/src/ui/pages/GroupDetail/Audit/config.tsx
similarity index 99%
rename from inlong-dashboard/src/pages/GroupDetail/Audit/config.tsx
rename to inlong-dashboard/src/ui/pages/GroupDetail/Audit/config.tsx
index 6d1a5712d..7a7637f0e 100644
--- a/inlong-dashboard/src/pages/GroupDetail/Audit/config.tsx
+++ b/inlong-dashboard/src/ui/pages/GroupDetail/Audit/config.tsx
@@ -21,7 +21,7 @@ import React from 'react';
 import { Button } from 'antd';
 import dayjs from 'dayjs';
 import i18n from '@/i18n';
-import { sinks } from '@/metas/sinks';
+import { sinks } from '@/plugins/sinks';
 
 export const timeStaticsDimList = [
   {
diff --git a/inlong-dashboard/src/pages/GroupDetail/Audit/index.tsx b/inlong-dashboard/src/ui/pages/GroupDetail/Audit/index.tsx
similarity index 93%
rename from inlong-dashboard/src/pages/GroupDetail/Audit/index.tsx
rename to inlong-dashboard/src/ui/pages/GroupDetail/Audit/index.tsx
index 9c279fda0..6e1d44d20 100644
--- a/inlong-dashboard/src/pages/GroupDetail/Audit/index.tsx
+++ b/inlong-dashboard/src/ui/pages/GroupDetail/Audit/index.tsx
@@ -18,11 +18,11 @@
  */
 
 import React, { useMemo, useState } from 'react';
-import FormGenerator, { useForm } from '@/components/FormGenerator';
-import HighTable from '@/components/HighTable';
-import { useRequest } from '@/hooks';
-import { timestampFormat } from '@/utils';
-import Charts from '@/components/Charts';
+import FormGenerator, { useForm } from '@/ui/components/FormGenerator';
+import HighTable from '@/ui/components/HighTable';
+import { useRequest } from '@/ui/hooks';
+import { timestampFormat } from '@/core/utils';
+import Charts from '@/ui/components/Charts';
 import { CommonInterface } from '../common';
 import {
   getFormContent,
diff --git a/inlong-dashboard/src/pages/GroupDetail/DataSources/DetailModal.tsx b/inlong-dashboard/src/ui/pages/GroupDetail/DataSources/DetailModal.tsx
similarity index 91%
rename from inlong-dashboard/src/pages/GroupDetail/DataSources/DetailModal.tsx
rename to inlong-dashboard/src/ui/pages/GroupDetail/DataSources/DetailModal.tsx
index 701e60f99..72c281e96 100644
--- a/inlong-dashboard/src/pages/GroupDetail/DataSources/DetailModal.tsx
+++ b/inlong-dashboard/src/ui/pages/GroupDetail/DataSources/DetailModal.tsx
@@ -20,11 +20,11 @@
 import React, { useMemo, useState } from 'react';
 import { Modal, message } from 'antd';
 import { ModalProps } from 'antd/es/modal';
-import FormGenerator, { useForm } from '@/components/FormGenerator';
-import { useRequest, useUpdateEffect } from '@/hooks';
+import FormGenerator, { useForm } from '@/ui/components/FormGenerator';
+import { useRequest, useUpdateEffect } from '@/ui/hooks';
 import { useTranslation } from 'react-i18next';
-import { useDefaultMeta, useLoadMeta, SourceMetaType } from '@/metas';
-import request from '@/utils/request';
+import { useDefaultMeta, useLoadMeta, SourceMetaType } from '@/plugins';
+import request from '@/core/utils/request';
 
 export interface Props extends ModalProps {
   // When editing, use the ID to call the interface for obtaining details
@@ -86,7 +86,7 @@ const Comp: React.FC<Props> = ({
   };
 
   useUpdateEffect(() => {
-    if (modalProps.visible) {
+    if (modalProps.open) {
       // open
       if (id) {
         getData(id);
@@ -97,7 +97,7 @@ const Comp: React.FC<Props> = ({
     } else {
       form.resetFields();
     }
-  }, [modalProps.visible]);
+  }, [modalProps.open]);
 
   const formContent = useMemo(() => {
     return Entity ? new Entity().renderRow() : [];
diff --git a/inlong-dashboard/src/pages/GroupDetail/DataSources/index.tsx b/inlong-dashboard/src/ui/pages/GroupDetail/DataSources/index.tsx
similarity index 95%
rename from inlong-dashboard/src/pages/GroupDetail/DataSources/index.tsx
rename to inlong-dashboard/src/ui/pages/GroupDetail/DataSources/index.tsx
index 9370d6f1a..a1ae65c0c 100644
--- a/inlong-dashboard/src/pages/GroupDetail/DataSources/index.tsx
+++ b/inlong-dashboard/src/ui/pages/GroupDetail/DataSources/index.tsx
@@ -28,16 +28,16 @@ import {
   StopOutlined,
   PlayCircleOutlined,
 } from '@ant-design/icons';
-import HighTable from '@/components/HighTable';
+import HighTable from '@/ui/components/HighTable';
 import { defaultSize } from '@/configs/pagination';
-import { useRequest } from '@/hooks';
-import { useDefaultMeta, useLoadMeta, SourceMetaType } from '@/metas';
+import { useRequest } from '@/ui/hooks';
+import { useDefaultMeta, useLoadMeta, SourceMetaType } from '@/plugins';
 import DetailModal from './DetailModal';
 import i18n from '@/i18n';
-import request from '@/utils/request';
-import { pickObjectArray } from '@/utils';
+import request from '@/core/utils/request';
+import { pickObjectArray } from '@/core/utils';
 import { CommonInterface } from '../common';
-import { sources } from '@/metas/sources';
+import { sources } from '@/plugins/sources';
 
 interface Props extends CommonInterface {
   inlongStreamId?: string;
@@ -236,7 +236,7 @@ const Comp = ({ inlongGroupId, inlongStreamId, readonly }: Props, ref) => {
       <Card
         size="small"
         title={
-          <Badge size="small" count={data?.total} offset={[15, 0]}>
+          <Badge size="small" count={data?.total} offset={[12, 3]}>
             {i18n.t('pages.GroupDetail.Sources')}
           </Badge>
         }
@@ -324,7 +324,7 @@ const Comp = ({ inlongGroupId, inlongStreamId, readonly }: Props, ref) => {
         defaultType={options.sourceType}
         inlongGroupId={inlongGroupId}
         inlongStreamId={inlongStreamId}
-        visible={createModal.visible as boolean}
+        open={createModal.visible as boolean}
         onOk={async () => {
           await getList();
           setCreateModal({ visible: false });
diff --git a/inlong-dashboard/src/pages/GroupDetail/DataStorage/DetailModal.tsx b/inlong-dashboard/src/ui/pages/GroupDetail/DataStorage/DetailModal.tsx
similarity index 92%
rename from inlong-dashboard/src/pages/GroupDetail/DataStorage/DetailModal.tsx
rename to inlong-dashboard/src/ui/pages/GroupDetail/DataStorage/DetailModal.tsx
index 3b90dee98..2cd807e68 100644
--- a/inlong-dashboard/src/pages/GroupDetail/DataStorage/DetailModal.tsx
+++ b/inlong-dashboard/src/ui/pages/GroupDetail/DataStorage/DetailModal.tsx
@@ -20,12 +20,12 @@
 import React, { useEffect, useMemo, useState } from 'react';
 import { Button, Skeleton, Modal, message } from 'antd';
 import { ModalProps } from 'antd/es/modal';
-import { useRequest, useUpdateEffect } from '@/hooks';
+import { useRequest, useUpdateEffect } from '@/ui/hooks';
 import { useTranslation } from 'react-i18next';
-import EditableTable from '@/components/EditableTable';
-import FormGenerator, { useForm } from '@/components/FormGenerator';
-import { useLoadMeta, SinkMetaType } from '@/metas';
-import request from '@/utils/request';
+import EditableTable from '@/ui/components/EditableTable';
+import FormGenerator, { useForm } from '@/ui/components/FormGenerator';
+import { useLoadMeta, SinkMetaType } from '@/plugins';
+import request from '@/core/utils/request';
 
 export interface DetailModalProps extends ModalProps {
   inlongGroupId: string;
@@ -117,7 +117,7 @@ const Comp: React.FC<DetailModalProps> = ({
   }, [Entity, streamDetail, form, id]);
 
   useUpdateEffect(() => {
-    if (modalProps.visible) {
+    if (modalProps.open) {
       // open
       if (id) {
         getGroupData();
@@ -130,7 +130,7 @@ const Comp: React.FC<DetailModalProps> = ({
       form.resetFields();
       setSinkType('');
     }
-  }, [modalProps.visible]);
+  }, [modalProps.open]);
 
   const formContent = useMemo(() => {
     if (Entity) {
@@ -174,7 +174,7 @@ const Comp: React.FC<DetailModalProps> = ({
       width={1200}
       {...modalProps}
       footer={[
-        <Button key="cancel" onClick={modalProps.onCancel}>
+        <Button key="cancel" onClick={e => modalProps.onCancel(e)}>
           {t('pages.GroupDetail.Sink.Cancel')}
         </Button>,
         <Button key="save" type="primary" onClick={() => onOk(false)}>
diff --git a/inlong-dashboard/src/pages/GroupDetail/DataStorage/index.tsx b/inlong-dashboard/src/ui/pages/GroupDetail/DataStorage/index.tsx
similarity index 94%
rename from inlong-dashboard/src/pages/GroupDetail/DataStorage/index.tsx
rename to inlong-dashboard/src/ui/pages/GroupDetail/DataStorage/index.tsx
index 2f6193b5a..9e155b1ce 100644
--- a/inlong-dashboard/src/pages/GroupDetail/DataStorage/index.tsx
+++ b/inlong-dashboard/src/ui/pages/GroupDetail/DataStorage/index.tsx
@@ -26,16 +26,16 @@ import {
   EditOutlined,
   DeleteOutlined,
 } from '@ant-design/icons';
-import HighTable from '@/components/HighTable';
+import HighTable from '@/ui/components/HighTable';
 import { defaultSize } from '@/configs/pagination';
-import { useRequest } from '@/hooks';
+import { useRequest } from '@/ui/hooks';
 import i18n from '@/i18n';
 import DetailModal from './DetailModal';
-import { useDefaultMeta, useLoadMeta, SinkMetaType } from '@/metas';
-import request from '@/utils/request';
-import { pickObjectArray } from '@/utils';
+import { useDefaultMeta, useLoadMeta, SinkMetaType } from '@/plugins';
+import request from '@/core/utils/request';
+import { pickObjectArray } from '@/core/utils';
 import { CommonInterface } from '../common';
-import { sinks } from '@/metas/sinks';
+import { sinks } from '@/plugins/sinks';
 
 interface Props extends CommonInterface {
   inlongStreamId?: string;
@@ -179,7 +179,7 @@ const Comp = ({ inlongGroupId, inlongStreamId, readonly }: Props, ref) => {
       <Card
         size="small"
         title={
-          <Badge size="small" count={data?.total} offset={[15, 0]}>
+          <Badge size="small" count={data?.total} offset={[12, 3]}>
             {i18n.t('pages.GroupDetail.Sinks')}
           </Badge>
         }
@@ -255,7 +255,7 @@ const Comp = ({ inlongGroupId, inlongStreamId, readonly }: Props, ref) => {
         defaultType={options.sinkType}
         inlongGroupId={inlongGroupId}
         inlongStreamId={inlongStreamId}
-        visible={createModal.visible as boolean}
+        open={createModal.visible as boolean}
         onOk={async () => {
           await getList();
           setCreateModal({ visible: false });
diff --git a/inlong-dashboard/src/metas/sinks/common/status.tsx b/inlong-dashboard/src/ui/pages/GroupDetail/DataStorage/status.tsx
similarity index 93%
rename from inlong-dashboard/src/metas/sinks/common/status.tsx
rename to inlong-dashboard/src/ui/pages/GroupDetail/DataStorage/status.tsx
index 6d836ecc2..407c8eb3f 100644
--- a/inlong-dashboard/src/metas/sinks/common/status.tsx
+++ b/inlong-dashboard/src/ui/pages/GroupDetail/DataStorage/status.tsx
@@ -19,8 +19,8 @@
 
 import React from 'react';
 import i18n from '@/i18n';
-import StatusTag, { StatusTagProps } from '@/components/StatusTag';
-import { ClockCircleFilled } from '@/components/Icons';
+import StatusTag, { StatusTagProps } from '@/ui/components/StatusTag';
+import { ClockCircleFilled } from '@/ui/components/Icons';
 
 type StatusProp = {
   label: string;
diff --git a/inlong-dashboard/src/pages/GroupDetail/DataStream/SourceSinkCard.tsx b/inlong-dashboard/src/ui/pages/GroupDetail/DataStream/SourceSinkCard.tsx
similarity index 100%
rename from inlong-dashboard/src/pages/GroupDetail/DataStream/SourceSinkCard.tsx
rename to inlong-dashboard/src/ui/pages/GroupDetail/DataStream/SourceSinkCard.tsx
diff --git a/inlong-dashboard/src/pages/GroupDetail/DataStream/StreamItemModal.tsx b/inlong-dashboard/src/ui/pages/GroupDetail/DataStream/StreamItemModal.tsx
similarity index 93%
rename from inlong-dashboard/src/pages/GroupDetail/DataStream/StreamItemModal.tsx
rename to inlong-dashboard/src/ui/pages/GroupDetail/DataStream/StreamItemModal.tsx
index 9aff9cd21..4687994d5 100644
--- a/inlong-dashboard/src/pages/GroupDetail/DataStream/StreamItemModal.tsx
+++ b/inlong-dashboard/src/ui/pages/GroupDetail/DataStream/StreamItemModal.tsx
@@ -20,11 +20,11 @@
 import React, { useMemo } from 'react';
 import { Modal, message } from 'antd';
 import { ModalProps } from 'antd/es/modal';
-import FormGenerator, { useForm } from '@/components/FormGenerator';
-import { useUpdateEffect, useRequest } from '@/hooks';
+import FormGenerator, { useForm } from '@/ui/components/FormGenerator';
+import { useUpdateEffect, useRequest } from '@/ui/hooks';
 import i18n from '@/i18n';
-import { useLoadMeta, useDefaultMeta, StreamMetaType } from '@/metas';
-import request from '@/utils/request';
+import { useLoadMeta, useDefaultMeta, StreamMetaType } from '@/plugins';
+import request from '@/core/utils/request';
 import { dataToValues, valuesToData } from './helper';
 
 export interface Props extends ModalProps {
@@ -140,14 +140,14 @@ const Comp: React.FC<Props> = ({ inlongGroupId, inlongStreamId, mqType, ...modal
   };
 
   useUpdateEffect(() => {
-    if (modalProps.visible) {
+    if (modalProps.open) {
       // open
       form.resetFields(); // Note that it will cause the form to remount to initiate a select request
       if (inlongStreamId) {
         getStreamData();
       }
     }
-  }, [modalProps.visible]);
+  }, [modalProps.open]);
 
   return (
     <Modal
diff --git a/inlong-dashboard/src/pages/GroupDetail/DataStream/config.tsx b/inlong-dashboard/src/ui/pages/GroupDetail/DataStream/config.tsx
similarity index 95%
rename from inlong-dashboard/src/pages/GroupDetail/DataStream/config.tsx
rename to inlong-dashboard/src/ui/pages/GroupDetail/DataStream/config.tsx
index a86a11b7d..b906633e4 100644
--- a/inlong-dashboard/src/pages/GroupDetail/DataStream/config.tsx
+++ b/inlong-dashboard/src/ui/pages/GroupDetail/DataStream/config.tsx
@@ -18,7 +18,7 @@
  */
 
 import i18n from '@/i18n';
-import { statusList } from '@/metas/streams/common/status';
+import { statusList } from '@/plugins/streams/common/status';
 
 export const getFilterFormContent = (defaultValues = {} as any) => [
   {
diff --git a/inlong-dashboard/src/pages/GroupDetail/DataStream/helper.ts b/inlong-dashboard/src/ui/pages/GroupDetail/DataStream/helper.ts
similarity index 100%
rename from inlong-dashboard/src/pages/GroupDetail/DataStream/helper.ts
rename to inlong-dashboard/src/ui/pages/GroupDetail/DataStream/helper.ts
diff --git a/inlong-dashboard/src/pages/GroupDetail/DataStream/index.tsx b/inlong-dashboard/src/ui/pages/GroupDetail/DataStream/index.tsx
similarity index 96%
rename from inlong-dashboard/src/pages/GroupDetail/DataStream/index.tsx
rename to inlong-dashboard/src/ui/pages/GroupDetail/DataStream/index.tsx
index 10da98439..8915811ce 100644
--- a/inlong-dashboard/src/pages/GroupDetail/DataStream/index.tsx
+++ b/inlong-dashboard/src/ui/pages/GroupDetail/DataStream/index.tsx
@@ -20,13 +20,13 @@
 import React, { useState, useImperativeHandle, forwardRef, useMemo } from 'react';
 import { Button, Modal, message } from 'antd';
 import { RightCircleTwoTone, DownCircleTwoTone } from '@ant-design/icons';
-import HighTable from '@/components/HighTable';
+import HighTable from '@/ui/components/HighTable';
 import { defaultSize } from '@/configs/pagination';
-import { useRequest } from '@/hooks';
-import request from '@/utils/request';
+import { useRequest } from '@/ui/hooks';
+import request from '@/core/utils/request';
 import { useTranslation } from 'react-i18next';
-import { useLoadMeta, useDefaultMeta, StreamMetaType } from '@/metas';
-import { GroupLogs } from '@/components/GroupLogs';
+import { useLoadMeta, useDefaultMeta, StreamMetaType } from '@/plugins';
+import { GroupLogs } from '@/ui/components/GroupLogs';
 import { CommonInterface } from '../common';
 import StreamItemModal from './StreamItemModal';
 import SourceSinkCard from './SourceSinkCard';
diff --git a/inlong-dashboard/src/pages/GroupDetail/Info/config.tsx b/inlong-dashboard/src/ui/pages/GroupDetail/Info/config.tsx
similarity index 97%
rename from inlong-dashboard/src/pages/GroupDetail/Info/config.tsx
rename to inlong-dashboard/src/ui/pages/GroupDetail/Info/config.tsx
index e9cf0849a..6b1fa968e 100644
--- a/inlong-dashboard/src/pages/GroupDetail/Info/config.tsx
+++ b/inlong-dashboard/src/ui/pages/GroupDetail/Info/config.tsx
@@ -20,8 +20,8 @@
 import React, { useCallback, useMemo } from 'react';
 import { Divider } from 'antd';
 import i18n from '@/i18n';
-import { useLoadMeta, GroupMetaType } from '@/metas';
-import { excludeObjectArray } from '@/utils';
+import { useLoadMeta, GroupMetaType } from '@/plugins';
+import { excludeObjectArray } from '@/core/utils';
 
 export const useFormContent = ({ mqType, editing, isCreate, isUpdate }) => {
   const { Entity } = useLoadMeta<GroupMetaType>('group', mqType);
diff --git a/inlong-dashboard/src/pages/GroupDetail/Info/index.tsx b/inlong-dashboard/src/ui/pages/GroupDetail/Info/index.tsx
similarity index 93%
rename from inlong-dashboard/src/pages/GroupDetail/Info/index.tsx
rename to inlong-dashboard/src/ui/pages/GroupDetail/Info/index.tsx
index 297ebfde0..54ebbbe5b 100644
--- a/inlong-dashboard/src/pages/GroupDetail/Info/index.tsx
+++ b/inlong-dashboard/src/ui/pages/GroupDetail/Info/index.tsx
@@ -19,12 +19,12 @@
 
 import React, { useEffect, useMemo, useImperativeHandle, forwardRef, useState } from 'react';
 import { Button, Space, message } from 'antd';
-import FormGenerator, { useForm } from '@/components/FormGenerator';
-import { useRequest, useBoolean, useSelector } from '@/hooks';
+import FormGenerator, { useForm } from '@/ui/components/FormGenerator';
+import { useRequest, useBoolean, useSelector } from '@/ui/hooks';
 import { useTranslation } from 'react-i18next';
-import { useDefaultMeta } from '@/metas';
-import request from '@/utils/request';
-import { State } from '@/models';
+import { useDefaultMeta } from '@/plugins';
+import request from '@/core/utils/request';
+import { State } from '@/core/stores';
 import { CommonInterface } from '../common';
 import { useFormContent } from './config';
 
diff --git a/inlong-dashboard/src/pages/GroupDetail/common.d.ts b/inlong-dashboard/src/ui/pages/GroupDetail/common.d.ts
similarity index 100%
rename from inlong-dashboard/src/pages/GroupDetail/common.d.ts
rename to inlong-dashboard/src/ui/pages/GroupDetail/common.d.ts
diff --git a/inlong-dashboard/src/pages/GroupDetail/index.tsx b/inlong-dashboard/src/ui/pages/GroupDetail/index.tsx
similarity index 96%
rename from inlong-dashboard/src/pages/GroupDetail/index.tsx
rename to inlong-dashboard/src/ui/pages/GroupDetail/index.tsx
index 690a66d6d..45fe557e4 100644
--- a/inlong-dashboard/src/pages/GroupDetail/index.tsx
+++ b/inlong-dashboard/src/ui/pages/GroupDetail/index.tsx
@@ -19,11 +19,11 @@
 
 import React, { useMemo, useState, useRef, useEffect } from 'react';
 import { Tabs, Button, Card, message, Steps, Space } from 'antd';
-import { PageContainer, FooterToolbar } from '@/components/PageContainer';
+import { PageContainer, FooterToolbar } from '@/ui/components/PageContainer';
 import { parse } from 'qs';
-import { useParams, useRequest, useSet, useHistory, useLocation } from '@/hooks';
+import { useParams, useRequest, useSet, useHistory, useLocation } from '@/ui/hooks';
 import { useTranslation } from 'react-i18next';
-import request from '@/utils/request';
+import request from '@/core/utils/request';
 import Info from './Info';
 import DataStream from './DataStream';
 import Audit from './Audit';
@@ -115,7 +115,7 @@ const Comp: React.FC = () => {
     });
 
     if (sourceData.total < 1 && sinkData.total < 1) {
-      message.warn(t('pages.GroupDetail.Info.SubmittedWarn'));
+      message.warning(t('pages.GroupDetail.Info.SubmittedWarn'));
       return;
     }
     await request({
diff --git a/inlong-dashboard/src/pages/Login/index.module.less b/inlong-dashboard/src/ui/pages/Login/index.module.less
similarity index 100%
rename from inlong-dashboard/src/pages/Login/index.module.less
rename to inlong-dashboard/src/ui/pages/Login/index.module.less
diff --git a/inlong-dashboard/src/pages/Login/index.tsx b/inlong-dashboard/src/ui/pages/Login/index.tsx
similarity index 95%
rename from inlong-dashboard/src/pages/Login/index.tsx
rename to inlong-dashboard/src/ui/pages/Login/index.tsx
index 9103f2226..41e1b20a4 100644
--- a/inlong-dashboard/src/pages/Login/index.tsx
+++ b/inlong-dashboard/src/ui/pages/Login/index.tsx
@@ -22,8 +22,8 @@ import { Button } from 'antd';
 import { UserOutlined, LockOutlined } from '@ant-design/icons';
 import { useTranslation } from 'react-i18next';
 import { config } from '@/configs/default';
-import FormGenerator, { useForm } from '@/components/FormGenerator';
-import request from '@/utils/request';
+import FormGenerator, { useForm } from '@/ui/components/FormGenerator';
+import request from '@/core/utils/request';
 import styles from './index.module.less';
 
 const Comp: React.FC = () => {
diff --git a/inlong-dashboard/src/pages/Nodes/DetailModal.tsx b/inlong-dashboard/src/ui/pages/Nodes/DetailModal.tsx
similarity index 89%
rename from inlong-dashboard/src/pages/Nodes/DetailModal.tsx
rename to inlong-dashboard/src/ui/pages/Nodes/DetailModal.tsx
index 4afdc4371..72cb3ee1d 100644
--- a/inlong-dashboard/src/pages/Nodes/DetailModal.tsx
+++ b/inlong-dashboard/src/ui/pages/Nodes/DetailModal.tsx
@@ -20,12 +20,12 @@
 import React, { useState, useMemo } from 'react';
 import { Modal, message, Button } from 'antd';
 import { ModalProps } from 'antd/es/modal';
-import FormGenerator, { useForm } from '@/components/FormGenerator';
-import { useUpdateEffect } from '@/hooks';
-import { dao } from '@/metas/nodes';
-import { useDefaultMeta, useLoadMeta, NodeMetaType } from '@/metas';
+import FormGenerator, { useForm } from '@/ui/components/FormGenerator';
+import { useUpdateEffect } from '@/ui/hooks';
+import { dao } from '@/plugins/nodes';
+import { useDefaultMeta, useLoadMeta, NodeMetaType } from '@/plugins';
 import i18n from '@/i18n';
-import request from '@/utils/request';
+import request from '@/core/utils/request';
 
 const { useFindNodeDao, useSaveNodeDao } = dao;
 
@@ -80,7 +80,7 @@ const Comp: React.FC<Props> = ({ id, defaultType, ...modalProps }) => {
   };
 
   useUpdateEffect(() => {
-    if (modalProps.visible) {
+    if (modalProps.open) {
       // open
       if (id) {
         getData(id);
@@ -91,7 +91,7 @@ const Comp: React.FC<Props> = ({ id, defaultType, ...modalProps }) => {
     } else {
       form.resetFields();
     }
-  }, [modalProps.visible]);
+  }, [modalProps.open]);
 
   const { Entity } = useLoadMeta<NodeMetaType>('node', type);
 
@@ -105,7 +105,7 @@ const Comp: React.FC<Props> = ({ id, defaultType, ...modalProps }) => {
       width={720}
       title={id ? i18n.t('basic.Detail') : i18n.t('basic.Create')}
       footer={[
-        <Button key="cancel" onClick={modalProps.onCancel}>
+        <Button key="cancel" onClick={e => modalProps.onCancel(e)}>
           {i18n.t('basic.Cancel')}
         </Button>,
         <Button key="save" type="primary" onClick={onOk}>
diff --git a/inlong-dashboard/src/pages/Nodes/index.tsx b/inlong-dashboard/src/ui/pages/Nodes/index.tsx
similarity index 94%
rename from inlong-dashboard/src/pages/Nodes/index.tsx
rename to inlong-dashboard/src/ui/pages/Nodes/index.tsx
index 01b282b11..75fa706d8 100644
--- a/inlong-dashboard/src/pages/Nodes/index.tsx
+++ b/inlong-dashboard/src/ui/pages/Nodes/index.tsx
@@ -20,11 +20,11 @@
 import React, { useCallback, useMemo, useState } from 'react';
 import { Button, Modal, message } from 'antd';
 import i18n from '@/i18n';
-import HighTable from '@/components/HighTable';
-import { PageContainer } from '@/components/PageContainer';
+import HighTable from '@/ui/components/HighTable';
+import { PageContainer } from '@/ui/components/PageContainer';
 import { defaultSize } from '@/configs/pagination';
-import { dao } from '@/metas/nodes';
-import { useDefaultMeta, useLoadMeta, NodeMetaType } from '@/metas';
+import { dao } from '@/plugins/nodes';
+import { useDefaultMeta, useLoadMeta, NodeMetaType } from '@/plugins';
 import DetailModal from './DetailModal';
 
 const { useListNodeDao, useDeleteNodeDao } = dao;
@@ -163,7 +163,7 @@ const Comp: React.FC = () => {
       <DetailModal
         {...detailModal}
         defaultType={options.type}
-        visible={detailModal.visible as boolean}
+        open={detailModal.visible as boolean}
         onOk={async () => {
           await getList();
           setDetailModal({ visible: false });
diff --git a/inlong-dashboard/src/pages/Process/Applies/config.tsx b/inlong-dashboard/src/ui/pages/Process/Applies/config.tsx
similarity index 98%
rename from inlong-dashboard/src/pages/Process/Applies/config.tsx
rename to inlong-dashboard/src/ui/pages/Process/Applies/config.tsx
index 54d53a0a6..59444e779 100644
--- a/inlong-dashboard/src/pages/Process/Applies/config.tsx
+++ b/inlong-dashboard/src/ui/pages/Process/Applies/config.tsx
@@ -21,7 +21,7 @@ import React from 'react';
 import { Link } from 'react-router-dom';
 import i18n from '@/i18n';
 import { statusList, genStatusTag } from './status';
-import { timestampFormat } from '@/utils';
+import { timestampFormat } from '@/core/utils';
 
 export const getFilterFormContent = defaultValues => [
   {
diff --git a/inlong-dashboard/src/pages/Process/Applies/index.tsx b/inlong-dashboard/src/ui/pages/Process/Applies/index.tsx
similarity index 93%
rename from inlong-dashboard/src/pages/Process/Applies/index.tsx
rename to inlong-dashboard/src/ui/pages/Process/Applies/index.tsx
index 46479824b..79131a143 100644
--- a/inlong-dashboard/src/pages/Process/Applies/index.tsx
+++ b/inlong-dashboard/src/ui/pages/Process/Applies/index.tsx
@@ -18,9 +18,9 @@
  */
 
 import React, { useState } from 'react';
-import { State } from '@/models';
-import HighTable from '@/components/HighTable';
-import { useRequest, useSelector } from '@/hooks';
+import { State } from '@/core/stores';
+import HighTable from '@/ui/components/HighTable';
+import { useRequest, useSelector } from '@/ui/hooks';
 import { defaultSize } from '@/configs/pagination';
 import { getFilterFormContent, getColumns } from './config';
 
diff --git a/inlong-dashboard/src/pages/Process/Applies/status.tsx b/inlong-dashboard/src/ui/pages/Process/Applies/status.tsx
similarity index 93%
rename from inlong-dashboard/src/pages/Process/Applies/status.tsx
rename to inlong-dashboard/src/ui/pages/Process/Applies/status.tsx
index c7aef6752..ff731374c 100644
--- a/inlong-dashboard/src/pages/Process/Applies/status.tsx
+++ b/inlong-dashboard/src/ui/pages/Process/Applies/status.tsx
@@ -19,8 +19,8 @@
 
 import React from 'react';
 import i18n from '@/i18n';
-import StatusTag, { StatusTagProps } from '@/components/StatusTag';
-import { CloseCircleFilled } from '@/components/Icons';
+import StatusTag, { StatusTagProps } from '@/ui/components/StatusTag';
+import { CloseCircleFilled } from '@/ui/components/Icons';
 
 type StatusProp = {
   label: string;
diff --git a/inlong-dashboard/src/pages/Process/Approvals/config.tsx b/inlong-dashboard/src/ui/pages/Process/Approvals/config.tsx
similarity index 98%
rename from inlong-dashboard/src/pages/Process/Approvals/config.tsx
rename to inlong-dashboard/src/ui/pages/Process/Approvals/config.tsx
index b45158b7b..4d276725f 100644
--- a/inlong-dashboard/src/pages/Process/Approvals/config.tsx
+++ b/inlong-dashboard/src/ui/pages/Process/Approvals/config.tsx
@@ -21,7 +21,7 @@ import React from 'react';
 import { Link } from 'react-router-dom';
 import i18n from '@/i18n';
 import { statusList, genStatusTag } from './status';
-import { timestampFormat } from '@/utils';
+import { timestampFormat } from '@/core/utils';
 
 export const getFilterFormContent = defaultValues => [
   {
diff --git a/inlong-dashboard/src/pages/Process/Approvals/index.tsx b/inlong-dashboard/src/ui/pages/Process/Approvals/index.tsx
similarity index 93%
rename from inlong-dashboard/src/pages/Process/Approvals/index.tsx
rename to inlong-dashboard/src/ui/pages/Process/Approvals/index.tsx
index db65aeeff..4b4f4a681 100644
--- a/inlong-dashboard/src/pages/Process/Approvals/index.tsx
+++ b/inlong-dashboard/src/ui/pages/Process/Approvals/index.tsx
@@ -18,9 +18,9 @@
  */
 
 import React, { useState } from 'react';
-import { State } from '@/models';
-import HighTable from '@/components/HighTable';
-import { useRequest, useSelector } from '@/hooks';
+import { State } from '@/core/stores';
+import HighTable from '@/ui/components/HighTable';
+import { useRequest, useSelector } from '@/ui/hooks';
 import { defaultSize } from '@/configs/pagination';
 import { getFilterFormContent, getColumns } from './config';
 
diff --git a/inlong-dashboard/src/pages/Process/Approvals/status.tsx b/inlong-dashboard/src/ui/pages/Process/Approvals/status.tsx
similarity index 93%
rename from inlong-dashboard/src/pages/Process/Approvals/status.tsx
rename to inlong-dashboard/src/ui/pages/Process/Approvals/status.tsx
index b9efaeeab..9078bb40b 100644
--- a/inlong-dashboard/src/pages/Process/Approvals/status.tsx
+++ b/inlong-dashboard/src/ui/pages/Process/Approvals/status.tsx
@@ -19,8 +19,8 @@
 
 import React from 'react';
 import i18n from '@/i18n';
-import StatusTag, { StatusTagProps } from '@/components/StatusTag';
-import { CloseCircleFilled } from '@/components/Icons';
+import StatusTag, { StatusTagProps } from '@/ui/components/StatusTag';
+import { CloseCircleFilled } from '@/ui/components/Icons';
 
 type StatusProp = {
   label: string;
diff --git a/inlong-dashboard/src/pages/Process/index.tsx b/inlong-dashboard/src/ui/pages/Process/index.tsx
similarity index 92%
rename from inlong-dashboard/src/pages/Process/index.tsx
rename to inlong-dashboard/src/ui/pages/Process/index.tsx
index 12a4e9f7d..cf5937ada 100644
--- a/inlong-dashboard/src/pages/Process/index.tsx
+++ b/inlong-dashboard/src/ui/pages/Process/index.tsx
@@ -19,10 +19,10 @@
 
 import React, { useState, useMemo } from 'react';
 import { Card } from 'antd';
-import { PageContainer, Container } from '@/components/PageContainer';
-import { DashTotalRevert, DashPending, DashRejected, DashCancelled } from '@/components/Icons';
-import { DashboardCardList } from '@/components/DashboardCard';
-import { useRequest, useHistory, useParams } from '@/hooks';
+import { PageContainer, Container } from '@/ui/components/PageContainer';
+import { DashTotalRevert, DashPending, DashRejected, DashCancelled } from '@/ui/components/Icons';
+import { DashboardCardList } from '@/ui/components/DashboardCard';
+import { useRequest, useHistory, useParams } from '@/ui/hooks';
 import i18n from '@/i18n';
 import Applies, { activedName as AppliesActivedName } from './Applies';
 import Approvals, { activedName as ApprovalsActivedName } from './Approvals';
diff --git a/inlong-dashboard/src/pages/ProcessDetail/Consume.tsx b/inlong-dashboard/src/ui/pages/ProcessDetail/Consume.tsx
similarity index 96%
rename from inlong-dashboard/src/pages/ProcessDetail/Consume.tsx
rename to inlong-dashboard/src/ui/pages/ProcessDetail/Consume.tsx
index 6dc2f57f8..0a5e7a9b7 100644
--- a/inlong-dashboard/src/pages/ProcessDetail/Consume.tsx
+++ b/inlong-dashboard/src/ui/pages/ProcessDetail/Consume.tsx
@@ -18,7 +18,7 @@
  */
 
 import React, { forwardRef, useEffect, useImperativeHandle } from 'react';
-import FormGenerator, { useForm } from '@/components/FormGenerator';
+import FormGenerator, { useForm } from '@/ui/components/FormGenerator';
 import { CommonInterface } from './common';
 import { useConsumeFormContent, getFormContent } from './ConsumeConfig';
 
diff --git a/inlong-dashboard/src/pages/ProcessDetail/ConsumeConfig.tsx b/inlong-dashboard/src/ui/pages/ProcessDetail/ConsumeConfig.tsx
similarity index 97%
rename from inlong-dashboard/src/pages/ProcessDetail/ConsumeConfig.tsx
rename to inlong-dashboard/src/ui/pages/ProcessDetail/ConsumeConfig.tsx
index 01b410bd5..0df1097f9 100644
--- a/inlong-dashboard/src/pages/ProcessDetail/ConsumeConfig.tsx
+++ b/inlong-dashboard/src/ui/pages/ProcessDetail/ConsumeConfig.tsx
@@ -20,7 +20,7 @@
 import React, { useMemo } from 'react';
 import { Divider } from 'antd';
 import i18n from '@/i18n';
-import { useLoadMeta, ConsumeMetaType } from '@/metas';
+import { useLoadMeta, ConsumeMetaType } from '@/plugins';
 
 export const useConsumeFormContent = (mqType = '') => {
   const { Entity } = useLoadMeta<ConsumeMetaType>('consume', mqType);
diff --git a/inlong-dashboard/src/pages/ProcessDetail/Group.tsx b/inlong-dashboard/src/ui/pages/ProcessDetail/Group.tsx
similarity index 97%
rename from inlong-dashboard/src/pages/ProcessDetail/Group.tsx
rename to inlong-dashboard/src/ui/pages/ProcessDetail/Group.tsx
index aaeb4ef63..3f62f6583 100644
--- a/inlong-dashboard/src/pages/ProcessDetail/Group.tsx
+++ b/inlong-dashboard/src/ui/pages/ProcessDetail/Group.tsx
@@ -18,7 +18,7 @@
  */
 
 import React, { useMemo, forwardRef, useImperativeHandle, useEffect } from 'react';
-import FormGenerator, { useForm } from '@/components/FormGenerator';
+import FormGenerator, { useForm } from '@/ui/components/FormGenerator';
 import { CommonInterface } from './common';
 import { useGroupFormContent, getFormContent } from './GroupConfig';
 
diff --git a/inlong-dashboard/src/pages/ProcessDetail/GroupConfig.tsx b/inlong-dashboard/src/ui/pages/ProcessDetail/GroupConfig.tsx
similarity index 98%
rename from inlong-dashboard/src/pages/ProcessDetail/GroupConfig.tsx
rename to inlong-dashboard/src/ui/pages/ProcessDetail/GroupConfig.tsx
index f4f62ed55..d106945fb 100644
--- a/inlong-dashboard/src/pages/ProcessDetail/GroupConfig.tsx
+++ b/inlong-dashboard/src/ui/pages/ProcessDetail/GroupConfig.tsx
@@ -20,7 +20,7 @@
 import React, { useMemo } from 'react';
 import { Divider, Table } from 'antd';
 import i18n from '@/i18n';
-import { useLoadMeta, GroupMetaType } from '@/metas';
+import { useLoadMeta, GroupMetaType } from '@/plugins';
 
 export const useGroupFormContent = ({ mqType = '', isFinished, isViwer }) => {
   const { Entity } = useLoadMeta<GroupMetaType>('group', mqType);
diff --git a/inlong-dashboard/src/pages/ProcessDetail/Steps.tsx b/inlong-dashboard/src/ui/pages/ProcessDetail/Steps.tsx
similarity index 100%
rename from inlong-dashboard/src/pages/ProcessDetail/Steps.tsx
rename to inlong-dashboard/src/ui/pages/ProcessDetail/Steps.tsx
diff --git a/inlong-dashboard/src/pages/ProcessDetail/common.d.ts b/inlong-dashboard/src/ui/pages/ProcessDetail/common.d.ts
similarity index 95%
rename from inlong-dashboard/src/pages/ProcessDetail/common.d.ts
rename to inlong-dashboard/src/ui/pages/ProcessDetail/common.d.ts
index d91fa24c9..e9e1ee58c 100644
--- a/inlong-dashboard/src/pages/ProcessDetail/common.d.ts
+++ b/inlong-dashboard/src/ui/pages/ProcessDetail/common.d.ts
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-import { FormItemProps } from '@/components/FormGenerator';
+import { FormItemProps } from '@/ui/components/FormGenerator';
 export interface CommonInterface {
   // Additional approval information form (suffix)
   suffixContent: FormItemProps[];
diff --git a/inlong-dashboard/src/pages/ProcessDetail/index.tsx b/inlong-dashboard/src/ui/pages/ProcessDetail/index.tsx
similarity index 97%
rename from inlong-dashboard/src/pages/ProcessDetail/index.tsx
rename to inlong-dashboard/src/ui/pages/ProcessDetail/index.tsx
index 8a1759182..ab3a02c37 100644
--- a/inlong-dashboard/src/pages/ProcessDetail/index.tsx
+++ b/inlong-dashboard/src/ui/pages/ProcessDetail/index.tsx
@@ -20,11 +20,11 @@
 import React, { useMemo, useRef } from 'react';
 import { Button, Card, Modal, message, Space } from 'antd';
 import { parse } from 'qs';
-import { PageContainer, Container, FooterToolbar } from '@/components/PageContainer';
-import { useParams, useRequest, useLocation, useHistory } from '@/hooks';
+import { PageContainer, Container, FooterToolbar } from '@/ui/components/PageContainer';
+import { useParams, useRequest, useLocation, useHistory } from '@/ui/hooks';
 import i18n from '@/i18n';
-import { timestampFormat } from '@/utils';
-import request from '@/utils/request';
+import { timestampFormat } from '@/core/utils';
+import request from '@/core/utils/request';
 import Steps from './Steps';
 import Group from './Group';
 import Consume from './Consume';
diff --git a/inlong-dashboard/src/pages/ProcessManagement/DetailModal.tsx b/inlong-dashboard/src/ui/pages/ProcessManagement/DetailModal.tsx
similarity index 90%
rename from inlong-dashboard/src/pages/ProcessManagement/DetailModal.tsx
rename to inlong-dashboard/src/ui/pages/ProcessManagement/DetailModal.tsx
index 0cc176f34..15d3a04a0 100644
--- a/inlong-dashboard/src/pages/ProcessManagement/DetailModal.tsx
+++ b/inlong-dashboard/src/ui/pages/ProcessManagement/DetailModal.tsx
@@ -20,10 +20,10 @@ import React from 'react';
 import { Modal, message } from 'antd';
 import { ModalProps } from 'antd/es/modal';
 import i18n from '@/i18n';
-import FormGenerator, { useForm } from '@/components/FormGenerator';
-import { useUpdateEffect, useRequest } from '@/hooks';
-import request from '@/utils/request';
-import UserSelect from '@/components/UserSelect';
+import FormGenerator, { useForm } from '@/ui/components/FormGenerator';
+import { useUpdateEffect, useRequest } from '@/ui/hooks';
+import request from '@/core/utils/request';
+import UserSelect from '@/ui/components/UserSelect';
 
 export interface Props extends ModalProps {
   id?: number;
@@ -89,10 +89,10 @@ const Comp: React.FC<Props> = ({ id, ...modalProps }) => {
   };
 
   useUpdateEffect(() => {
-    if (modalProps.visible) {
+    if (modalProps.open) {
       id ? getData(id) : form.resetFields();
     }
-  }, [modalProps.visible]);
+  }, [modalProps.open]);
 
   return (
     <Modal
diff --git a/inlong-dashboard/src/pages/ProcessManagement/config.tsx b/inlong-dashboard/src/ui/pages/ProcessManagement/config.tsx
similarity index 98%
rename from inlong-dashboard/src/pages/ProcessManagement/config.tsx
rename to inlong-dashboard/src/ui/pages/ProcessManagement/config.tsx
index 25bdcfe6d..3f02cf7e5 100644
--- a/inlong-dashboard/src/pages/ProcessManagement/config.tsx
+++ b/inlong-dashboard/src/ui/pages/ProcessManagement/config.tsx
@@ -20,7 +20,7 @@
 import React from 'react';
 import { Button, Space } from 'antd';
 import i18n from '@/i18n';
-import { timestampFormat } from '@/utils';
+import { timestampFormat } from '@/core/utils';
 
 export const getFilterFormContent = () => [
   {
diff --git a/inlong-dashboard/src/pages/ProcessManagement/index.tsx b/inlong-dashboard/src/ui/pages/ProcessManagement/index.tsx
similarity index 93%
rename from inlong-dashboard/src/pages/ProcessManagement/index.tsx
rename to inlong-dashboard/src/ui/pages/ProcessManagement/index.tsx
index eae8c6b3b..55d9c8706 100644
--- a/inlong-dashboard/src/pages/ProcessManagement/index.tsx
+++ b/inlong-dashboard/src/ui/pages/ProcessManagement/index.tsx
@@ -19,11 +19,11 @@
 
 import React, { useState } from 'react';
 import { Button, Card, Modal, message } from 'antd';
-import { PageContainer, Container } from '@/components/PageContainer';
-import HighTable from '@/components/HighTable';
-import { useRequest } from '@/hooks';
+import { PageContainer, Container } from '@/ui/components/PageContainer';
+import HighTable from '@/ui/components/HighTable';
+import { useRequest } from '@/ui/hooks';
 import { useTranslation } from 'react-i18next';
-import request from '@/utils/request';
+import request from '@/core/utils/request';
 import { defaultSize } from '@/configs/pagination';
 import ApprovalDetailModal from './DetailModal';
 import { getFilterFormContent, getColumns } from './config';
@@ -125,7 +125,7 @@ const Comp: React.FC = () => {
 
       <ApprovalDetailModal
         {...createModal}
-        visible={createModal.visible as boolean}
+        open={createModal.visible as boolean}
         onOk={async () => {
           await getList();
           setCreateModal({ visible: false });
diff --git a/inlong-dashboard/src/pages/UserManagement/DetailModal.tsx b/inlong-dashboard/src/ui/pages/UserManagement/DetailModal.tsx
similarity index 94%
rename from inlong-dashboard/src/pages/UserManagement/DetailModal.tsx
rename to inlong-dashboard/src/ui/pages/UserManagement/DetailModal.tsx
index cdb52db47..685e473a6 100644
--- a/inlong-dashboard/src/pages/UserManagement/DetailModal.tsx
+++ b/inlong-dashboard/src/ui/pages/UserManagement/DetailModal.tsx
@@ -20,9 +20,9 @@ import React from 'react';
 import { Modal, message } from 'antd';
 import { ModalProps } from 'antd/es/modal';
 import i18n from '@/i18n';
-import FormGenerator, { useForm } from '@/components/FormGenerator';
-import { useUpdateEffect, useRequest } from '@/hooks';
-import request from '@/utils/request';
+import FormGenerator, { useForm } from '@/ui/components/FormGenerator';
+import { useUpdateEffect, useRequest } from '@/ui/hooks';
+import request from '@/core/utils/request';
 
 export interface Props extends ModalProps {
   id?: number;
@@ -123,11 +123,11 @@ const Comp: React.FC<Props> = ({ id, ...modalProps }) => {
   };
 
   useUpdateEffect(() => {
-    if (modalProps.visible) {
+    if (modalProps.open) {
       // open
       id ? getData(id) : form.resetFields();
     }
-  }, [modalProps.visible]);
+  }, [modalProps.open]);
 
   return (
     <Modal
diff --git a/inlong-dashboard/src/pages/UserManagement/config.tsx b/inlong-dashboard/src/ui/pages/UserManagement/config.tsx
similarity index 97%
rename from inlong-dashboard/src/pages/UserManagement/config.tsx
rename to inlong-dashboard/src/ui/pages/UserManagement/config.tsx
index 0902a8240..4b881299e 100644
--- a/inlong-dashboard/src/pages/UserManagement/config.tsx
+++ b/inlong-dashboard/src/ui/pages/UserManagement/config.tsx
@@ -21,7 +21,7 @@ import React from 'react';
 import { Button } from 'antd';
 import i18n from '@/i18n';
 import { genStatusTag } from './status';
-import { timestampFormat } from '@/utils';
+import { timestampFormat } from '@/core/utils';
 
 export const getFilterFormContent = () => [
   {
diff --git a/inlong-dashboard/src/pages/UserManagement/index.tsx b/inlong-dashboard/src/ui/pages/UserManagement/index.tsx
similarity index 93%
rename from inlong-dashboard/src/pages/UserManagement/index.tsx
rename to inlong-dashboard/src/ui/pages/UserManagement/index.tsx
index 0574ccc87..6b2438bb3 100644
--- a/inlong-dashboard/src/pages/UserManagement/index.tsx
+++ b/inlong-dashboard/src/ui/pages/UserManagement/index.tsx
@@ -19,11 +19,11 @@
 
 import React, { useState } from 'react';
 import { Button, Card, Modal, message } from 'antd';
-import { PageContainer, Container } from '@/components/PageContainer';
-import HighTable from '@/components/HighTable';
-import { useRequest } from '@/hooks';
+import { PageContainer, Container } from '@/ui/components/PageContainer';
+import HighTable from '@/ui/components/HighTable';
+import { useRequest } from '@/ui/hooks';
 import { useTranslation } from 'react-i18next';
-import request from '@/utils/request';
+import request from '@/core/utils/request';
 import { defaultSize } from '@/configs/pagination';
 import DataSourcesCreateModal from './DetailModal';
 import { getFilterFormContent, getColumns } from './config';
@@ -130,7 +130,7 @@ const Comp: React.FC = () => {
 
       <DataSourcesCreateModal
         {...createModal}
-        visible={createModal.visible as boolean}
+        open={createModal.visible as boolean}
         onOk={async () => {
           await getList();
           setCreateModal({ visible: false });
diff --git a/inlong-dashboard/src/pages/UserManagement/status.tsx b/inlong-dashboard/src/ui/pages/UserManagement/status.tsx
similarity index 95%
rename from inlong-dashboard/src/pages/UserManagement/status.tsx
rename to inlong-dashboard/src/ui/pages/UserManagement/status.tsx
index 176cc8d2a..7e705b667 100644
--- a/inlong-dashboard/src/pages/UserManagement/status.tsx
+++ b/inlong-dashboard/src/ui/pages/UserManagement/status.tsx
@@ -19,7 +19,7 @@
 
 import React from 'react';
 import i18n from '@/i18n';
-import StatusTag, { StatusTagProps } from '@/components/StatusTag';
+import StatusTag, { StatusTagProps } from '@/ui/components/StatusTag';
 
 type StatusProp = {
   label: string;
diff --git a/inlong-dashboard/vite.config.ts b/inlong-dashboard/vite.config.ts
index d56f799bd..c0b0fa192 100644
--- a/inlong-dashboard/vite.config.ts
+++ b/inlong-dashboard/vite.config.ts
@@ -53,28 +53,10 @@ export default defineConfig({
     }),
     react(),
     tsConfigPaths(),
-    vitePluginImp({
-      libList: [
-        {
-          libName: 'antd',
-          style: name => `antd/es/${name}/style`,
-        },
-      ],
-    }),
     dynamicImport(),
     svgr(),
     eslintPlugin({
       include: ['src/**/*.js', 'src/**/*.jsx', 'src/**/*.ts', 'src/**/*.tsx'],
     }),
   ],
-  css: {
-    preprocessorOptions: {
-      less: {
-        javascriptEnabled: true,
-        modifyVars: {
-          hack: `true; @import "${path.resolve('src/themes/antd.var.less')}";`,
-        },
-      },
-    },
-  },
 });