diff --git a/backend-fastapi/core/menu/service.py b/backend-fastapi/core/menu/service.py index 1a8e44a..3f0bff1 100644 --- a/backend-fastapi/core/menu/service.py +++ b/backend-fastapi/core/menu/service.py @@ -21,6 +21,7 @@ MENU_TREE_CACHE_KEY = "tree:ai_agent_admin" USER_ROUTE_CACHE_PREFIX = "user_route:ai_agent_admin:" AI_AGENT_ADMIN_MENU_NAMES = { + "ControlCenter", "AIPlatform", "AIAgent", "AIWorkflow", @@ -43,7 +44,18 @@ AI_AGENT_ADMIN_MENU_NAMES = { def _filter_ai_agent_admin_menus(menus: List[Menu]) -> List[Menu]: """Keep only the lightweight admin and AI modules for this product.""" - return [menu for menu in menus if menu.name in AI_AGENT_ADMIN_MENU_NAMES] + filtered = [menu for menu in menus if menu.name in AI_AGENT_ADMIN_MENU_NAMES] + for menu in filtered: + _normalize_ai_agent_admin_menu(menu) + return filtered + + +def _normalize_ai_agent_admin_menu(menu: Menu) -> None: + """Route legacy low-code home to a lightweight static dashboard.""" + if menu.name == "ControlCenter": + menu.path = "/control-center" + menu.component = "_core/control-center/index" + menu.query = None class MenuService(BaseService[Menu, MenuCreate, MenuUpdate]): diff --git a/web/apps/web-ele/src/router/access.ts b/web/apps/web-ele/src/router/access.ts index 72cb7f1..b8ba434 100644 --- a/web/apps/web-ele/src/router/access.ts +++ b/web/apps/web-ele/src/router/access.ts @@ -22,6 +22,7 @@ async function generateAccess(options: GenerateMenuAndRoutesOptions) { '../views/_core/announcement/index.vue', '../views/_core/announcement/list.vue', '../views/_core/authentication/**/*.vue', + '../views/_core/control-center/index.vue', '../views/_core/fallback/**/*.vue', '../views/_core/login-log/index.vue', '../views/_core/menu/index.vue', diff --git a/web/apps/web-ele/src/router/routes/index.ts b/web/apps/web-ele/src/router/routes/index.ts index af4f85c..908de7f 100644 --- a/web/apps/web-ele/src/router/routes/index.ts +++ b/web/apps/web-ele/src/router/routes/index.ts @@ -41,6 +41,7 @@ const componentKeys: string[] = Object.keys( '../../views/_core/announcement/index.vue', '../../views/_core/announcement/list.vue', '../../views/_core/authentication/**/*.vue', + '../../views/_core/control-center/index.vue', '../../views/_core/fallback/**/*.vue', '../../views/_core/login-log/index.vue', '../../views/_core/menu/index.vue', diff --git a/web/apps/web-ele/src/views/_core/control-center/index.vue b/web/apps/web-ele/src/views/_core/control-center/index.vue new file mode 100644 index 0000000..da5eee6 --- /dev/null +++ b/web/apps/web-ele/src/views/_core/control-center/index.vue @@ -0,0 +1,734 @@ + + + + + diff --git a/web/packages/@core/preferences/src/config.ts b/web/packages/@core/preferences/src/config.ts index 8e6240e..0551521 100644 --- a/web/packages/@core/preferences/src/config.ts +++ b/web/packages/@core/preferences/src/config.ts @@ -17,7 +17,7 @@ const defaultPreferences: Preferences = { contentPaddingTop: 0, defaultAvatar: 'https://unpkg.com/@vbenjs/static-source@0.1.7/source/avatar-v1.webp', - defaultHomePath: '/ai-platform/agent', + defaultHomePath: '/control-center', dynamicTitle: true, enableCheckUpdates: true, enablePreferences: true,