feat: restore lightweight admin modules
This commit is contained in:
@@ -17,11 +17,12 @@ from core.menu.schema import MenuCreate, MenuUpdate
|
|||||||
menu_cache = CacheManager(prefix="menu:")
|
menu_cache = CacheManager(prefix="menu:")
|
||||||
|
|
||||||
# 缓存key
|
# 缓存key
|
||||||
AI_AGENT_ADMIN_MENU_CACHE_VERSION = "v13"
|
AI_AGENT_ADMIN_MENU_CACHE_VERSION = "v16"
|
||||||
MENU_TREE_CACHE_KEY = f"tree:ai_agent_admin:{AI_AGENT_ADMIN_MENU_CACHE_VERSION}"
|
MENU_TREE_CACHE_KEY = f"tree:ai_agent_admin:{AI_AGENT_ADMIN_MENU_CACHE_VERSION}"
|
||||||
USER_ROUTE_CACHE_PREFIX = f"user_route:ai_agent_admin:{AI_AGENT_ADMIN_MENU_CACHE_VERSION}:"
|
USER_ROUTE_CACHE_PREFIX = f"user_route:ai_agent_admin:{AI_AGENT_ADMIN_MENU_CACHE_VERSION}:"
|
||||||
|
|
||||||
AI_AGENT_ADMIN_MENU_NAMES = {
|
AI_AGENT_ADMIN_MENU_NAMES = {
|
||||||
|
"AccountSettings",
|
||||||
"ControlCenter",
|
"ControlCenter",
|
||||||
"AIPlatform",
|
"AIPlatform",
|
||||||
"AIAgent",
|
"AIAgent",
|
||||||
@@ -33,29 +34,116 @@ AI_AGENT_ADMIN_MENU_NAMES = {
|
|||||||
"SystemManagement",
|
"SystemManagement",
|
||||||
"SystemPermission",
|
"SystemPermission",
|
||||||
"UserManagement",
|
"UserManagement",
|
||||||
|
"SystemDept",
|
||||||
"SystemMenu",
|
"SystemMenu",
|
||||||
|
"SystemPost",
|
||||||
|
"SystemDict",
|
||||||
|
"SystemFileManager",
|
||||||
"SystemRole",
|
"SystemRole",
|
||||||
|
"SystemConfigManager",
|
||||||
|
"UIConfigManager",
|
||||||
"Message",
|
"Message",
|
||||||
"MessageList",
|
"MessageList",
|
||||||
"AnnouncementList",
|
"AnnouncementList",
|
||||||
"AnnouncementManage",
|
"AnnouncementManage",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AI_AGENT_ADMIN_VISIBLE_MENU_NAMES = {
|
||||||
|
"ControlCenter",
|
||||||
|
"AIPlatform",
|
||||||
|
"AIAgent",
|
||||||
|
"AIModelConfig",
|
||||||
|
"AIWorkflow",
|
||||||
|
"AIWorkflowRuns",
|
||||||
|
"CodexAgentChat",
|
||||||
|
"KnowledgeBase",
|
||||||
|
"SystemManagement",
|
||||||
|
"SystemPermission",
|
||||||
|
"UserManagement",
|
||||||
|
"SystemDept",
|
||||||
|
"SystemMenu",
|
||||||
|
"SystemPost",
|
||||||
|
"SystemDict",
|
||||||
|
"SystemFileManager",
|
||||||
|
"SystemRole",
|
||||||
|
"SystemConfigManager",
|
||||||
|
"UIConfigManager",
|
||||||
|
"Message",
|
||||||
|
"MessageList",
|
||||||
|
"AnnouncementList",
|
||||||
|
"AnnouncementManage",
|
||||||
|
}
|
||||||
|
|
||||||
|
AI_AGENT_ADMIN_SYSTEM_CHILD_MENU_NAMES = {
|
||||||
|
"SystemPermission",
|
||||||
|
"UserManagement",
|
||||||
|
"SystemDept",
|
||||||
|
"SystemMenu",
|
||||||
|
"SystemPost",
|
||||||
|
"SystemDict",
|
||||||
|
"SystemFileManager",
|
||||||
|
"SystemRole",
|
||||||
|
"UIConfigManager",
|
||||||
|
}
|
||||||
|
|
||||||
|
AI_AGENT_ADMIN_MENU_OVERRIDES = {
|
||||||
|
"SystemConfigManager": {
|
||||||
|
"component": "/_core/system-config/index",
|
||||||
|
"path": "/system-config",
|
||||||
|
"title": "系统配置",
|
||||||
|
},
|
||||||
|
"SystemDict": {
|
||||||
|
"component": "/_core/dict/index",
|
||||||
|
"path": "/system/dict",
|
||||||
|
},
|
||||||
|
"SystemFileManager": {
|
||||||
|
"component": "/_core/file-manager/index",
|
||||||
|
"path": "/system/file-manager",
|
||||||
|
},
|
||||||
|
"UIConfigManager": {
|
||||||
|
"component": "/_core/ui-config/index",
|
||||||
|
"path": "/system/ui-config",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
def _filter_ai_agent_admin_menus(menus: List[Menu]) -> List[Menu]:
|
def _filter_ai_agent_admin_menus(menus: List[Menu]) -> List[Menu]:
|
||||||
"""Keep only the lightweight admin and AI modules for this product."""
|
"""Keep only the lightweight admin and AI modules for this product."""
|
||||||
filtered = [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:
|
for menu in filtered:
|
||||||
_normalize_ai_agent_admin_menu(menu)
|
_normalize_ai_agent_admin_menu(menu)
|
||||||
|
_normalize_ai_agent_admin_parentage(filtered)
|
||||||
return filtered
|
return filtered
|
||||||
|
|
||||||
|
|
||||||
def _normalize_ai_agent_admin_menu(menu: Menu) -> None:
|
def _normalize_ai_agent_admin_menu(menu: Menu) -> None:
|
||||||
"""Keep the retained control center on the original configurable dashboard."""
|
"""Keep the retained control center on the original configurable dashboard."""
|
||||||
|
overrides = AI_AGENT_ADMIN_MENU_OVERRIDES.get(menu.name)
|
||||||
|
if overrides:
|
||||||
|
for key, value in overrides.items():
|
||||||
|
setattr(menu, key, value)
|
||||||
if menu.name == "ControlCenter":
|
if menu.name == "ControlCenter":
|
||||||
menu.path = "/page-render/main_home"
|
menu.path = "/page-render/main_home"
|
||||||
menu.component = "/_core/page-render/index"
|
menu.component = "/_core/page-render/index"
|
||||||
menu.query = {"pageCode": "main_home"}
|
menu.query = {"pageCode": "main_home"}
|
||||||
|
if menu.name in AI_AGENT_ADMIN_VISIBLE_MENU_NAMES:
|
||||||
|
menu.hideInMenu = False
|
||||||
|
|
||||||
|
|
||||||
|
def _normalize_ai_agent_admin_parentage(menus: List[Menu]) -> None:
|
||||||
|
"""Attach retained system children back to the lightweight system catalog."""
|
||||||
|
retained_ids = {menu.id for menu in menus}
|
||||||
|
system_menu = next(
|
||||||
|
(menu for menu in menus if menu.name == "SystemManagement"),
|
||||||
|
None,
|
||||||
|
)
|
||||||
|
for menu in menus:
|
||||||
|
if not menu.parent_id or menu.parent_id in retained_ids:
|
||||||
|
continue
|
||||||
|
if system_menu and menu.name in AI_AGENT_ADMIN_SYSTEM_CHILD_MENU_NAMES:
|
||||||
|
menu.parent_id = system_menu.id
|
||||||
|
else:
|
||||||
|
menu.parent_id = None
|
||||||
|
|
||||||
|
|
||||||
class MenuService(BaseService[Menu, MenuCreate, MenuUpdate]):
|
class MenuService(BaseService[Menu, MenuCreate, MenuUpdate]):
|
||||||
|
|||||||
@@ -17,12 +17,14 @@ from core.role.schema import RoleCreate, RoleUpdate
|
|||||||
def _filter_ai_agent_admin_role_menus(menus: List[Any]) -> List[Any]:
|
def _filter_ai_agent_admin_role_menus(menus: List[Any]) -> List[Any]:
|
||||||
from core.menu.service import (
|
from core.menu.service import (
|
||||||
AI_AGENT_ADMIN_MENU_NAMES,
|
AI_AGENT_ADMIN_MENU_NAMES,
|
||||||
|
_normalize_ai_agent_admin_parentage,
|
||||||
_normalize_ai_agent_admin_menu,
|
_normalize_ai_agent_admin_menu,
|
||||||
)
|
)
|
||||||
|
|
||||||
filtered = [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:
|
for menu in filtered:
|
||||||
_normalize_ai_agent_admin_menu(menu)
|
_normalize_ai_agent_admin_menu(menu)
|
||||||
|
_normalize_ai_agent_admin_parentage(filtered)
|
||||||
return filtered
|
return filtered
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -171,16 +171,21 @@ function filterAvailableRoutes<
|
|||||||
|
|
||||||
async function generateAccess(options: GenerateMenuAndRoutesOptions) {
|
async function generateAccess(options: GenerateMenuAndRoutesOptions) {
|
||||||
const pageMap: ComponentRecordType = import.meta.glob([
|
const pageMap: ComponentRecordType = import.meta.glob([
|
||||||
|
'../views/_core/account-settings/index.vue',
|
||||||
'../views/_core/agent-chat/**/*.vue',
|
'../views/_core/agent-chat/**/*.vue',
|
||||||
'../views/_core/announcement/index.vue',
|
'../views/_core/announcement/index.vue',
|
||||||
'../views/_core/announcement/list.vue',
|
'../views/_core/announcement/list.vue',
|
||||||
'../views/_core/authentication/login.vue',
|
'../views/_core/authentication/login.vue',
|
||||||
|
'../views/_core/dept/index.vue',
|
||||||
|
'../views/_core/dict/index.vue',
|
||||||
'../views/_core/fallback/**/*.vue',
|
'../views/_core/fallback/**/*.vue',
|
||||||
|
'../views/_core/file-manager/index.vue',
|
||||||
'../views/_core/file-preview/index.vue',
|
'../views/_core/file-preview/index.vue',
|
||||||
'../views/_core/menu/index.vue',
|
'../views/_core/menu/index.vue',
|
||||||
'../views/_core/message/index.vue',
|
'../views/_core/message/index.vue',
|
||||||
'../views/_core/page-render/index.vue',
|
'../views/_core/page-render/index.vue',
|
||||||
'../views/_core/permission/index.vue',
|
'../views/_core/permission/index.vue',
|
||||||
|
'../views/_core/post/index.vue',
|
||||||
'../views/_core/role/index.vue',
|
'../views/_core/role/index.vue',
|
||||||
'../views/_core/system-config/index.vue',
|
'../views/_core/system-config/index.vue',
|
||||||
'../views/_core/ui-config/index.vue',
|
'../views/_core/ui-config/index.vue',
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
export const LIGHT_MENU_NAMES = new Set([
|
export const LIGHT_MENU_NAMES = new Set([
|
||||||
|
'AccountSettings',
|
||||||
'ControlCenter',
|
'ControlCenter',
|
||||||
'AIAgent',
|
'AIAgent',
|
||||||
'AIKnowledgeDetail',
|
'AIKnowledgeDetail',
|
||||||
@@ -13,12 +14,18 @@ export const LIGHT_MENU_NAMES = new Set([
|
|||||||
'MessageCenter',
|
'MessageCenter',
|
||||||
'MessageList',
|
'MessageList',
|
||||||
'KnowledgeBase',
|
'KnowledgeBase',
|
||||||
|
'SystemDept',
|
||||||
|
'SystemDict',
|
||||||
|
'SystemFileManager',
|
||||||
'SystemManagement',
|
'SystemManagement',
|
||||||
'SystemConfig',
|
'SystemConfig',
|
||||||
|
'SystemConfigManager',
|
||||||
'SystemMenu',
|
'SystemMenu',
|
||||||
'SystemPermission',
|
'SystemPermission',
|
||||||
|
'SystemPost',
|
||||||
'SystemRole',
|
'SystemRole',
|
||||||
'UIConfig',
|
'UIConfig',
|
||||||
|
'UIConfigManager',
|
||||||
'UserManagement',
|
'UserManagement',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
@@ -35,12 +42,20 @@ const LIGHT_ROUTE_PATH_PREFIXES = [
|
|||||||
'/message/announcement',
|
'/message/announcement',
|
||||||
'/message/announcement-list',
|
'/message/announcement-list',
|
||||||
'/page-render/main_home',
|
'/page-render/main_home',
|
||||||
|
'/core/ui-config',
|
||||||
|
'/system-config',
|
||||||
|
'/system/dept',
|
||||||
|
'/system/dict',
|
||||||
|
'/system/file-manager',
|
||||||
|
'/system/post',
|
||||||
'/system/config',
|
'/system/config',
|
||||||
'/system/menu',
|
'/system/menu',
|
||||||
'/system/new-permission',
|
'/system/new-permission',
|
||||||
'/system/role',
|
'/system/role',
|
||||||
'/system/ui-config',
|
'/system/ui-config',
|
||||||
'/system/user',
|
'/system/user',
|
||||||
|
'/tool/dict',
|
||||||
|
'/user-center',
|
||||||
];
|
];
|
||||||
|
|
||||||
export function isLightMenuName(name?: string) {
|
export function isLightMenuName(name?: string) {
|
||||||
|
|||||||
Reference in New Issue
Block a user