From a0996bbd1ce8f03fcaa8ec67abc891893540ce42 Mon Sep 17 00:00:00 2001 From: "xinxin.wu" Date: Wed, 23 Sep 2026 15:51:58 +0800 Subject: [PATCH] refactor: view documentary index --- ui/src/router/ROUTE_README.md | 18 +-- ui/src/router/admin/index.ts | 2 +- ui/src/router/admin/login/index.ts | 4 +- ui/src/router/admin/system/index.ts | 48 +++---- ui/src/router/admin/workflow/index.ts | 10 +- .../admin/workspace/modules/application.ts | 14 +- ui/src/router/admin/workspace/modules/home.ts | 2 +- .../admin/workspace/modules/knowledge.ts | 22 ++-- .../router/admin/workspace/modules/model.ts | 2 +- ui/src/router/admin/workspace/modules/tool.ts | 2 +- .../router/admin/workspace/modules/trigger.ts | 2 +- ui/src/router/chat/routes.ts | 2 +- ui/src/views/VIEW_README.md | 121 +++++++++--------- .../{ChatUserListView.vue => index.vue} | 0 ...rkspaceApplicationDetail.vue => index.vue} | 0 .../{IntegrationView.vue => index.vue} | 0 .../{OperationLogView.vue => index.vue} | 0 .../overview/{OverviewView.vue => index.vue} | 0 .../{SimpleSettingView.vue => index.vue} | 0 .../{ApplicationView.vue => index.vue} | 0 ui/src/views/chat/{ChatView.vue => index.vue} | 0 .../error/{NotFoundView.vue => index.vue} | 0 ui/src/views/home/{HomeView.vue => index.vue} | 0 .../{ChatUserListView.vue => index.vue} | 0 .../{DictionaryView.vue => index.vue} | 0 .../{DocumentListView.vue => index.vue} | 0 .../{ExternalRetrievalView.vue => index.vue} | 0 .../image/{ImageListView.vue => index.vue} | 0 ...spaceKnowledgeDetailView.vue => index.vue} | 0 .../{QuestionListView.vue => index.vue} | 0 .../{RecallTestView.vue => index.vue} | 0 .../{KnowledgeSettingView.vue => index.vue} | 0 .../tag/{TagManagementView.vue => index.vue} | 0 .../{KnowledgeView.vue => index.vue} | 0 .../index.vue} | 2 +- .../views/login/{LoginView.vue => index.vue} | 0 .../views/model/{ModelView.vue => index.vue} | 0 .../{AuthenticationView.vue => index.vue} | 0 .../{PortalSettingView.vue => index.vue} | 0 .../{GroupsListView.vue => index.vue} | 0 .../users/{UserListView.vue => index.vue} | 0 .../groups/{GroupsListView.vue => index.vue} | 0 ...esourceAuthorizationView.vue => index.vue} | 0 .../roles/{RoleListView.vue => index.vue} | 0 .../users/{UserListView.vue => index.vue} | 0 .../{WorkspaceListView.vue => index.vue} | 0 .../system/{SystemView.vue => index.vue} | 0 .../{OperateLogListView.vue => index.vue} | 0 .../index.vue} | 0 .../{ToolResourceView.vue => tool/index.vue} | 0 .../{AuthenticationView.vue => index.vue} | 0 .../{EmailSettingsView.vue => index.vue} | 0 .../theme/{ThemeSettingView.vue => index.vue} | 0 .../{ModelSharedview.vue => model/index.vue} | 0 .../{ToolSharedView.vue => tool/index.vue} | 0 ui/src/views/tool/{ToolView.vue => index.vue} | 0 .../trigger/{TriggerView.vue => index.vue} | 0 ...{ApplicationWorkflowView.vue => index.vue} | 0 .../{KnowledgeWorkflowView.vue => index.vue} | 0 .../tool/{ToolWorkflowView.vue => index.vue} | 0 60 files changed, 127 insertions(+), 124 deletions(-) rename ui/src/views/application-detail/chat-user/{ChatUserListView.vue => index.vue} (100%) rename ui/src/views/application-detail/{WorkspaceApplicationDetail.vue => index.vue} (100%) rename ui/src/views/application-detail/integration/{IntegrationView.vue => index.vue} (100%) rename ui/src/views/application-detail/operation-log/{OperationLogView.vue => index.vue} (100%) rename ui/src/views/application-detail/overview/{OverviewView.vue => index.vue} (100%) rename ui/src/views/application-detail/setting/{SimpleSettingView.vue => index.vue} (100%) rename ui/src/views/application/{ApplicationView.vue => index.vue} (100%) rename ui/src/views/chat/{ChatView.vue => index.vue} (100%) rename ui/src/views/error/{NotFoundView.vue => index.vue} (100%) rename ui/src/views/home/{HomeView.vue => index.vue} (100%) rename ui/src/views/knowledge-detail/chat-user/{ChatUserListView.vue => index.vue} (100%) rename ui/src/views/knowledge-detail/dictionary/{DictionaryView.vue => index.vue} (100%) rename ui/src/views/knowledge-detail/document/{DocumentListView.vue => index.vue} (100%) rename ui/src/views/knowledge-detail/external-retrieval/{ExternalRetrievalView.vue => index.vue} (100%) rename ui/src/views/knowledge-detail/image/{ImageListView.vue => index.vue} (100%) rename ui/src/views/knowledge-detail/{WorkspaceKnowledgeDetailView.vue => index.vue} (100%) rename ui/src/views/knowledge-detail/question/{QuestionListView.vue => index.vue} (100%) rename ui/src/views/knowledge-detail/recall-test/{RecallTestView.vue => index.vue} (100%) rename ui/src/views/knowledge-detail/setting/{KnowledgeSettingView.vue => index.vue} (100%) rename ui/src/views/knowledge-detail/tag/{TagManagementView.vue => index.vue} (100%) rename ui/src/views/knowledge/{KnowledgeView.vue => index.vue} (100%) rename ui/src/views/login/{ForgotPasswordView.vue => forgot-password/index.vue} (99%) rename ui/src/views/login/{LoginView.vue => index.vue} (100%) rename ui/src/views/model/{ModelView.vue => index.vue} (100%) rename ui/src/views/system/chat-management/authentication/{AuthenticationView.vue => index.vue} (100%) rename ui/src/views/system/chat-management/portal-setting/{PortalSettingView.vue => index.vue} (100%) rename ui/src/views/system/chat-management/user-groups/{GroupsListView.vue => index.vue} (100%) rename ui/src/views/system/chat-management/users/{UserListView.vue => index.vue} (100%) rename ui/src/views/system/identity/groups/{GroupsListView.vue => index.vue} (100%) rename ui/src/views/system/identity/resource-authorization/{ResourceAuthorizationView.vue => index.vue} (100%) rename ui/src/views/system/identity/roles/{RoleListView.vue => index.vue} (100%) rename ui/src/views/system/identity/users/{UserListView.vue => index.vue} (100%) rename ui/src/views/system/identity/workspaces/{WorkspaceListView.vue => index.vue} (100%) rename ui/src/views/system/{SystemView.vue => index.vue} (100%) rename ui/src/views/system/operate-logs/{OperateLogListView.vue => index.vue} (100%) rename ui/src/views/system/resource-management/{ModelResourceView.vue => model/index.vue} (100%) rename ui/src/views/system/resource-management/{ToolResourceView.vue => tool/index.vue} (100%) rename ui/src/views/system/settings/authentication/{AuthenticationView.vue => index.vue} (100%) rename ui/src/views/system/settings/email/{EmailSettingsView.vue => index.vue} (100%) rename ui/src/views/system/settings/theme/{ThemeSettingView.vue => index.vue} (100%) rename ui/src/views/system/shared-resources/{ModelSharedview.vue => model/index.vue} (100%) rename ui/src/views/system/shared-resources/{ToolSharedView.vue => tool/index.vue} (100%) rename ui/src/views/tool/{ToolView.vue => index.vue} (100%) rename ui/src/views/trigger/{TriggerView.vue => index.vue} (100%) rename ui/src/views/workflow/application/{ApplicationWorkflowView.vue => index.vue} (100%) rename ui/src/views/workflow/knowledge/{KnowledgeWorkflowView.vue => index.vue} (100%) rename ui/src/views/workflow/tool/{ToolWorkflowView.vue => index.vue} (100%) diff --git a/ui/src/router/ROUTE_README.md b/ui/src/router/ROUTE_README.md index 1c7a2129867..1dd37f1811f 100644 --- a/ui/src/router/ROUTE_README.md +++ b/ui/src/router/ROUTE_README.md @@ -46,7 +46,7 @@ Workspace 根地址为 `/admin/workspace/:workspaceId`。`workspaceId` 只以当 地址、登录成功和从 System 返回 Workspace 时统一进入 `/admin/workspace/default`。父路由的 `scope` 会合并到匹配的子路由 `meta` 中。 -触发器列表地址为 `/admin/workspace/:workspaceId/trigger`,渲染 `views/trigger/TriggerView.vue`。 +触发器列表地址为 `/admin/workspace/:workspaceId/trigger`,渲染 `views/trigger/index.vue`。 每个业务模块在 `admin/workspace/modules` 中独立维护。模块的列表、创建、详情、编辑等页面应放在同一个路由文件中。 @@ -60,7 +60,7 @@ System 根地址为 `/admin/system`,默认进入首页 `/admin/system/home`。 `users`(`system-chat-users`)。子路由还包括 `groups` (`system-chat-groups`)、`authentication`(`system-chat-authentication`) 和 `portal-setting`(`system-portal-setting`),页面组件统一位于 `views/system/chat-management/`。 -门户访问设置渲染 `views/system/chat-management/portal-setting/PortalSettingView.vue`,提供门户访问 +门户访问设置渲染 `views/system/chat-management/portal-setting/index.vue`,提供门户访问 配置和右侧界面预览。 各子路由通过 `meta.resource` 向页面传入对应的后端资源类型。 @@ -85,7 +85,7 @@ Login、Workflow 路由没有挂载 `AppLayout`,因此不会出现在左侧导 登录页面地址为 `/login`;忘记密码使用独立页面 `/forgot-password`,两者均复用登录布局且不挂载 `AppLayout`。 -Admin 使用末尾 catch-all 路由 `not-found` 渲染 `views/error/NotFoundView.vue`。直接访问不存在的 +Admin 使用末尾 catch-all 路由 `not-found` 渲染 `views/error/index.vue`。直接访问不存在的 页面或 Admin API 返回需要全局处理的 404 时,统一进入该页面。 ## Admin 导航拦截器 @@ -244,7 +244,7 @@ System 共享资源页面: /admin/system/share/tools ``` -`system-shared-tools` 渲染 `views/system/shared-resources/ToolSharedView.vue`,提供共享工具管理页面。 +`system-shared-tools` 渲染 `views/system/shared-resources/tool/index.vue`,提供共享工具管理页面。 共享资源路由是 System 导航的一部分,继续在 `admin/system/index.ts` 的 `share` 子路由中维护。 已实现的共享资源页面放在 `views/system/shared-resources/`,由页面处理 System 范围的查询和操作, @@ -256,7 +256,7 @@ System 共享资源页面: { path: 'settings', name: 'system-settings', - component: () => import('@/views/system/SystemView.vue'), + component: () => import('@/views/system/index.vue'), meta: { title: '系统设置', icon: 'icon_setting', @@ -281,7 +281,7 @@ System 共享资源页面: { path: 'users', name: 'system-users', - component: () => import('@/views/system/identity/users/UserListView.vue'), + component: () => import('@/views/system/identity/users/index.vue'), meta: { title: '用户管理', order: 10, @@ -301,7 +301,7 @@ System 共享资源页面: { path: 'users/:id/edit', name: 'system-user-edit', - component: () => import('@/views/system/UserEditView.vue'), + component: () => import('@/views/system/user-edit/index.vue'), meta: { title: '编辑用户', hidden: true, @@ -332,7 +332,7 @@ System 共享资源页面: 检索优化使用 `/retrieval/recall`、`/retrieval/question`、`/retrieval/dictionary`; 授权与集成使用 `/integration/chat-user`、`/integration/external-retrieval`。 分组不挂载页面组件,直接访问分组时重定向到首个子页。新增七个页面暂为占位 View。`setting` -渲染 `knowledge-detail/setting/KnowledgeSettingView.vue`,使用容器提供的知识库详情。`workflow-entry` +渲染 `knowledge-detail/setting/index.vue`,使用容器提供的知识库详情。`workflow-entry` 仅作为目录跳转入口,重定向到独立的 `workflow-knowledge` 全屏画布。画布返回知识库详情。 文档详情路由当前尚未启用;后续接入时通过 `detailActiveMenu` 高亮“文档”。 @@ -360,7 +360,7 @@ Workspace 父路由为 `workspace-application-detail-layout`;System 详情实 ### System 资源管理模型与工具 `/system/resource/models`、`/system/resource/tools` 分别渲染 -`views/system/resource-management/ModelResourceView.vue` 和 `ToolResourceView.vue`, +`views/system/resource-management/model/index.vue` 和 `tool/index.vue`, 继承 `resourceScope: 'system-resource'`,保留原导航名称、顺序与权限。 资源管理工具的全屏工作流使用 `system-resource-workflow-tool`,地址为 `/system/resource/tool/:toolId/workflow`,在 `admin/workflow/index.ts` diff --git a/ui/src/router/admin/index.ts b/ui/src/router/admin/index.ts index 117b894c871..29c826f462b 100644 --- a/ui/src/router/admin/index.ts +++ b/ui/src/router/admin/index.ts @@ -19,7 +19,7 @@ const router = createRouter({ ...workflowRoutes, workspaceRoutes, systemRoutes, - { path: '/:pathMatch(.*)*', name: 'not-found', component: () => import('@/views/error/NotFoundView.vue'), meta: { title: '页面不存在' } }, + { path: '/:pathMatch(.*)*', name: 'not-found', component: () => import('@/views/error/index.vue'), meta: { title: '页面不存在' } }, ], }) diff --git a/ui/src/router/admin/login/index.ts b/ui/src/router/admin/login/index.ts index edfe5fb003b..29817b68e1e 100644 --- a/ui/src/router/admin/login/index.ts +++ b/ui/src/router/admin/login/index.ts @@ -2,6 +2,6 @@ import type { RouteRecordRaw } from 'vue-router' /** 登录及账户安全相关独立页面,不使用 AppLayout,也不会出现在左侧导航中。 */ export const loginRoutes: RouteRecordRaw[] = [ - { path: '/login', name: 'login', component: () => import('@/views/login/LoginView.vue'), meta: { title: '登录' } }, - { path: '/forgot-password', name: 'forgot-password', component: () => import('@/views/login/ForgotPasswordView.vue'), meta: { title: '忘记密码' } }, + { path: '/login', name: 'login', component: () => import('@/views/login/index.vue'), meta: { title: '登录' } }, + { path: '/forgot-password', name: 'forgot-password', component: () => import('@/views/login/forgot-password/index.vue'), meta: { title: '忘记密码' } }, ] diff --git a/ui/src/router/admin/system/index.ts b/ui/src/router/admin/system/index.ts index 09271653d1d..8506e2efce9 100644 --- a/ui/src/router/admin/system/index.ts +++ b/ui/src/router/admin/system/index.ts @@ -12,7 +12,7 @@ export const systemRoutes: RouteRecordRaw = { { path: 'home', name: 'system-home', - component: () => import('@/views/system/SystemView.vue'), + component: () => import('@/views/system/index.vue'), meta: { title: '首页', activeIcon: 'icon_screen_filled', @@ -48,25 +48,25 @@ export const systemRoutes: RouteRecordRaw = { { path: 'users', name: 'system-users', - component: () => import('@/views/system/identity/users/UserListView.vue'), + component: () => import('@/views/system/identity/users/index.vue'), meta: { title: '用户管理', order: 10, permission: perm.system.user.read, next: 'system-workspace' }, }, { path: 'workspace', name: 'system-workspace', - component: () => import('@/views/system/identity/workspaces/WorkspaceListView.vue'), + component: () => import('@/views/system/identity/workspaces/index.vue'), meta: { title: '工作空间', order: 20, permission: perm.system.workspace.read, next: 'system-roles' }, }, { path: 'roles', name: 'system-roles', - component: () => import('@/views/system/identity/roles/RoleListView.vue'), + component: () => import('@/views/system/identity/roles/index.vue'), meta: { title: '角色管理', order: 30, permission: perm.system.role.read, next: 'system-groups' }, }, { path: 'groups', name: 'system-groups', - component: () => import('@/views/system/identity/groups/GroupsListView.vue'), + component: () => import('@/views/system/identity/groups/index.vue'), meta: { title: '用户组', order: 40, permission: perm.system.userGroup.read, next: 'system-authorization' }, }, { @@ -90,7 +90,7 @@ export const systemRoutes: RouteRecordRaw = { { path: 'applications', name: 'system-authorization-applications', - component: () => import('@/views/system/identity/resource-authorization/ResourceAuthorizationView.vue'), + component: () => import('@/views/system/identity/resource-authorization/index.vue'), meta: { title: '智能体', order: 10, @@ -102,7 +102,7 @@ export const systemRoutes: RouteRecordRaw = { { path: 'knowledge', name: 'system-authorization-knowledge', - component: () => import('@/views/system/identity/resource-authorization/ResourceAuthorizationView.vue'), + component: () => import('@/views/system/identity/resource-authorization/index.vue'), meta: { title: '知识库', order: 20, @@ -114,7 +114,7 @@ export const systemRoutes: RouteRecordRaw = { { path: 'tools', name: 'system-authorization-tools', - component: () => import('@/views/system/identity/resource-authorization/ResourceAuthorizationView.vue'), + component: () => import('@/views/system/identity/resource-authorization/index.vue'), meta: { title: '工具', order: 30, @@ -126,7 +126,7 @@ export const systemRoutes: RouteRecordRaw = { { path: 'models', name: 'system-authorization-models', - component: () => import('@/views/system/identity/resource-authorization/ResourceAuthorizationView.vue'), + component: () => import('@/views/system/identity/resource-authorization/index.vue'), meta: { title: '模型', order: 40, @@ -157,25 +157,25 @@ export const systemRoutes: RouteRecordRaw = { { path: 'applications', name: 'system-resource-applications', - component: () => import('@/views/system/SystemView.vue'), + component: () => import('@/views/system/index.vue'), meta: { title: '智能体', order: 10, permission: perm.application.system.jumpRead, next: 'system-resource-knowledge' }, }, { path: 'knowledge', name: 'system-resource-knowledge', - component: () => import('@/views/system/SystemView.vue'), + component: () => import('@/views/system/index.vue'), meta: { title: '知识库', order: 20, permission: perm.knowledge.system.jumpRead, next: 'system-resource-tools' }, }, { path: 'tools', name: 'system-resource-tools', - component: () => import('@/views/system/resource-management/ToolResourceView.vue'), + component: () => import('@/views/system/resource-management/tool/index.vue'), meta: { title: '工具', order: 30, permission: perm.tool.system.read, next: 'system-resource-models' }, }, { path: 'models', name: 'system-resource-models', - component: () => import('@/views/system/resource-management/ModelResourceView.vue'), + component: () => import('@/views/system/resource-management/model/index.vue'), meta: { title: '模型', order: 40, permission: perm.model.system.read, next: 'system-share' }, }, ], @@ -200,20 +200,20 @@ export const systemRoutes: RouteRecordRaw = { { path: 'knowledge', name: 'system-shared-knowledge', - component: () => import('@/views/system/SystemView.vue'), + component: () => import('@/views/system/index.vue'), meta: { title: '知识库', order: 10, permission: perm.knowledge.share.jumpRead, next: 'system-shared-tools' }, }, { path: 'tools', name: 'system-shared-tools', - component: () => import('@/views/system/shared-resources/ToolSharedView.vue'), + component: () => import('@/views/system/shared-resources/tool/index.vue'), meta: { title: '工具', order: 20, permission: perm.tool.share.read, next: 'system-shared-models' }, }, { path: 'models', name: 'system-shared-models', - component: () => import('@/views/system/shared-resources/ModelSharedview.vue'), + component: () => import('@/views/system/shared-resources/model/index.vue'), meta: { title: '模型', order: 30, permission: perm.model.share.read, next: 'system-chat-management' }, }, ], @@ -235,25 +235,25 @@ export const systemRoutes: RouteRecordRaw = { { path: 'users', name: 'system-chat-users', - component: () => import('@/views/system/chat-management/users/UserListView.vue'), + component: () => import('@/views/system/chat-management/users/index.vue'), meta: { title: '对话用户', order: 10, permission: perm.system.chatUser.read, next: 'system-chat-management-groups' }, }, { path: 'groups', name: 'system-chat-groups', - component: () => import('@/views/system/chat-management/user-groups/GroupsListView.vue'), + component: () => import('@/views/system/chat-management/user-groups/index.vue'), meta: { title: '对话用户组', order: 20, permission: perm.system.chatUserGroup.read, next: 'system-chat-management-authentication' }, }, { path: 'authentication', name: 'system-chat-authentication', - component: () => import('@/views/system/chat-management/authentication/AuthenticationView.vue'), + component: () => import('@/views/system/chat-management/authentication/index.vue'), meta: { title: '对话用户认证', order: 30, permission: perm.system.chatAuth.read, next: 'system-portal-setting' }, }, { path: 'portal-setting', name: 'system-portal-setting', - component: () => import('@/views/system/chat-management/portal-setting/PortalSettingView.vue'), + component: () => import('@/views/system/chat-management/portal-setting/index.vue'), meta: { title: '门户访问设置', order: 40, permission: perm.system.portal.read, next: 'system-settings' }, }, ], @@ -275,19 +275,19 @@ export const systemRoutes: RouteRecordRaw = { { path: 'authentication', name: 'system-login-authentication', - component: () => import('@/views/system/settings/authentication/AuthenticationView.vue'), + component: () => import('@/views/system/settings/authentication/index.vue'), meta: { title: '系统用户认证', order: 10, permission: perm.system.loginAuth.read, next: 'system-theme' }, }, { path: 'theme', name: 'system-theme', - component: () => import('@/views/system/settings/theme/ThemeSettingView.vue'), + component: () => import('@/views/system/settings/theme/index.vue'), meta: { title: '外观设置', order: 20, permission: perm.system.appearance.read, next: 'system-email' }, }, { path: 'email', name: 'system-email', - component: () => import('@/views/system/settings/email/EmailSettingsView.vue'), + component: () => import('@/views/system/settings/email/index.vue'), meta: { title: '邮箱设置', order: 30, permission: perm.system.email.read, next: 'system-logs' }, }, ], @@ -295,7 +295,7 @@ export const systemRoutes: RouteRecordRaw = { { path: 'logs', name: 'system-logs', - component: () => import('@/views/system/operate-logs/OperateLogListView.vue'), + component: () => import('@/views/system/operate-logs/index.vue'), meta: { title: '操作日志', icon: 'icon_logs_outlined', diff --git a/ui/src/router/admin/workflow/index.ts b/ui/src/router/admin/workflow/index.ts index 93feb4b486a..55ededff4eb 100644 --- a/ui/src/router/admin/workflow/index.ts +++ b/ui/src/router/admin/workflow/index.ts @@ -5,33 +5,33 @@ export const workflowRoutes: RouteRecordRaw[] = [ { path: '/workspace/:workspaceId/application/:applicationId/workflow', name: 'workflow-application', - component: () => import('@/views/workflow/application/ApplicationWorkflowView.vue'), + component: () => import('@/views/workflow/application/index.vue'), meta: { title: '智能体工作流', resourceScope: 'workspace' }, }, { path: '/workspace/:workspaceId/tool/:toolId/workflow', name: 'workflow-tool', - component: () => import('@/views/workflow/tool/ToolWorkflowView.vue'), + component: () => import('@/views/workflow/tool/index.vue'), meta: { title: '工具工作流', resourceScope: 'workspace' }, }, { path: '/system/resource/tool/:toolId/workflow', name: 'system-resource-workflow-tool', - component: () => import('@/views/workflow/tool/ToolWorkflowView.vue'), + component: () => import('@/views/workflow/tool/index.vue'), meta: { title: '工具工作流', resourceScope: 'system-resource' }, }, { path: '/system/shared/tool/:toolId/workflow', name: 'system-shared-workflow-tool', - component: () => import('@/views/workflow/tool/ToolWorkflowView.vue'), + component: () => import('@/views/workflow/tool/index.vue'), meta: { title: '工具工作流', resourceScope: 'system-shared' }, }, { path: '/workspace/:workspaceId/knowledge/:knowledgeId/workflow', name: 'workflow-knowledge', - component: () => import('@/views/workflow/knowledge/KnowledgeWorkflowView.vue'), + component: () => import('@/views/workflow/knowledge/index.vue'), meta: { title: '知识库工作流', resourceScope: 'workspace' }, }, ] diff --git a/ui/src/router/admin/workspace/modules/application.ts b/ui/src/router/admin/workspace/modules/application.ts index 60ffcf12369..f545d8cfb5c 100644 --- a/ui/src/router/admin/workspace/modules/application.ts +++ b/ui/src/router/admin/workspace/modules/application.ts @@ -12,19 +12,19 @@ export const applicationRoutes: RouteRecordRaw[] = [ { path: '', name: 'workspace-application-list', - component: () => import('@/views/application/ApplicationView.vue'), + component: () => import('@/views/application/index.vue'), meta: { title: '智能体列表', hidden: true }, }, { path: ':applicationId/:type', name: 'workspace-application-detail-layout', - component: () => import('@/views/application-detail/WorkspaceApplicationDetail.vue'), + component: () => import('@/views/application-detail/index.vue'), meta: { title: '智能体详情', hidden: true, resourceDetailRoot: true }, children: [ { path: 'overview', name: 'workspace-application-overview', - component: () => import('@/views/application-detail/overview/OverviewView.vue'), + component: () => import('@/views/application-detail/overview/index.vue'), meta: { title: '概览', icon: 'icon_screen_outlined', @@ -36,7 +36,7 @@ export const applicationRoutes: RouteRecordRaw[] = [ { path: 'setting', name: 'workspace-application-simple-setting', - component: () => import('@/views/application-detail/setting/SimpleSettingView.vue'), + component: () => import('@/views/application-detail/setting/index.vue'), meta: { title: '设置', icon: 'icon_setting', @@ -67,19 +67,19 @@ export const applicationRoutes: RouteRecordRaw[] = [ { path: 'integration', name: 'workspace-application-integration', - component: () => import('@/views/application-detail/integration/IntegrationView.vue'), + component: () => import('@/views/application-detail/integration/index.vue'), meta: { title: '接入第三方', icon: 'icon_dataset_outlined', activeIcon: 'icon_dataset_filled', order: 30 }, }, { path: 'chat-user', name: 'workspace-application-chat-user', - component: () => import('@/views/application-detail/chat-user/ChatUserListView.vue'), + component: () => import('@/views/application-detail/chat-user/index.vue'), meta: { title: '对话用户', icon: 'icon_contacts_outlined', activeIcon: 'icon_contacts_outlined', order: 40 }, }, { path: 'operation-log', name: 'workspace-application-operation-log', - component: () => import('@/views/application-detail/operation-log/OperationLogView.vue'), + component: () => import('@/views/application-detail/operation-log/index.vue'), meta: { title: '操作日志', icon: 'icon_logs_outlined', activeIcon: 'icon_logs_filled', order: 50 }, }, ], diff --git a/ui/src/router/admin/workspace/modules/home.ts b/ui/src/router/admin/workspace/modules/home.ts index 0d642010ef8..0fa945790d6 100644 --- a/ui/src/router/admin/workspace/modules/home.ts +++ b/ui/src/router/admin/workspace/modules/home.ts @@ -4,7 +4,7 @@ export const homeRoutes: RouteRecordRaw[] = [ { path: '', name: 'workspace-home', - component: () => import('@/views/home/HomeView.vue'), + component: () => import('@/views/home/index.vue'), meta: { title: '首页', activeIcon: 'icon_home_filled', icon: 'icon_home_outlined', order: 10 }, }, ] diff --git a/ui/src/router/admin/workspace/modules/knowledge.ts b/ui/src/router/admin/workspace/modules/knowledge.ts index 587c645958c..6e9fdbbdf23 100644 --- a/ui/src/router/admin/workspace/modules/knowledge.ts +++ b/ui/src/router/admin/workspace/modules/knowledge.ts @@ -10,13 +10,13 @@ export const knowledgeRoutes: RouteRecordRaw[] = [ { path: '', name: 'workspace-knowledge-list', - component: () => import('@/views/knowledge/KnowledgeView.vue'), + component: () => import('@/views/knowledge/index.vue'), meta: { title: '知识库列表', hidden: true }, }, { path: ':knowledgeId', name: 'workspace-knowledge-detail', - component: () => import('@/views/knowledge-detail/WorkspaceKnowledgeDetailView.vue'), + component: () => import('@/views/knowledge-detail/index.vue'), redirect: { name: 'workspace-knowledge-document-list' }, meta: { title: '知识库详情', hidden: true, resourceDetailRoot: true }, children: [ @@ -29,19 +29,19 @@ export const knowledgeRoutes: RouteRecordRaw[] = [ { path: 'document', name: 'workspace-knowledge-document-list', - component: () => import('@/views/knowledge-detail/document/DocumentListView.vue'), + component: () => import('@/views/knowledge-detail/document/index.vue'), meta: { title: '文档', order: 10 }, }, { path: 'image', name: 'workspace-knowledge-image-list', - component: () => import('@/views/knowledge-detail/image/ImageListView.vue'), + component: () => import('@/views/knowledge-detail/image/index.vue'), meta: { title: '图片', order: 20 }, }, { path: 'tag', name: 'workspace-knowledge-tag', - component: () => import('@/views/knowledge-detail/tag/TagManagementView.vue'), + component: () => import('@/views/knowledge-detail/tag/index.vue'), meta: { title: '标签管理', order: 30 }, }, ], @@ -61,19 +61,19 @@ export const knowledgeRoutes: RouteRecordRaw[] = [ { path: 'recall', name: 'workspace-knowledge-recall-test', - component: () => import('@/views/knowledge-detail/recall-test/RecallTestView.vue'), + component: () => import('@/views/knowledge-detail/recall-test/index.vue'), meta: { title: '召回测试', order: 10 }, }, { path: 'question', name: 'workspace-knowledge-question', - component: () => import('@/views/knowledge-detail/question/QuestionListView.vue'), + component: () => import('@/views/knowledge-detail/question/index.vue'), meta: { title: '问题', order: 20 }, }, { path: 'dictionary', name: 'workspace-knowledge-dictionary', - component: () => import('@/views/knowledge-detail/dictionary/DictionaryView.vue'), + component: () => import('@/views/knowledge-detail/dictionary/index.vue'), meta: { title: '自定义分词', order: 30 }, }, ], @@ -87,13 +87,13 @@ export const knowledgeRoutes: RouteRecordRaw[] = [ { path: 'chat-user', name: 'workspace-knowledge-chat-user', - component: () => import('@/views/knowledge-detail/chat-user/ChatUserListView.vue'), + component: () => import('@/views/knowledge-detail/chat-user/index.vue'), meta: { title: '对话用户', order: 10 }, }, { path: 'external-retrieval', name: 'workspace-knowledge-external-retrieval', - component: () => import('@/views/knowledge-detail/external-retrieval/ExternalRetrievalView.vue'), + component: () => import('@/views/knowledge-detail/external-retrieval/index.vue'), meta: { title: '外部检索服务', order: 20 }, }, ], @@ -101,7 +101,7 @@ export const knowledgeRoutes: RouteRecordRaw[] = [ { path: 'setting', name: 'workspace-knowledge-setting', - component: () => import('@/views/knowledge-detail/setting/KnowledgeSettingView.vue'), + component: () => import('@/views/knowledge-detail/setting/index.vue'), meta: { title: '设置', icon: 'icon_setting', activeIcon: 'icon_setting_filled', order: 50 }, }, // { diff --git a/ui/src/router/admin/workspace/modules/model.ts b/ui/src/router/admin/workspace/modules/model.ts index 82c7e4a300c..bfdb10c6cea 100644 --- a/ui/src/router/admin/workspace/modules/model.ts +++ b/ui/src/router/admin/workspace/modules/model.ts @@ -4,7 +4,7 @@ export const modelRoutes: RouteRecordRaw[] = [ { path: 'model', name: 'workspace-model', - component: () => import('@/views/model/ModelView.vue'), + component: () => import('@/views/model/index.vue'), meta: { title: '模型', icon: 'icon_dataset_outlined', activeIcon: 'icon_dataset_filled', order: 50 }, }, ] diff --git a/ui/src/router/admin/workspace/modules/tool.ts b/ui/src/router/admin/workspace/modules/tool.ts index 6ffe15d7763..7ff5723f4f8 100644 --- a/ui/src/router/admin/workspace/modules/tool.ts +++ b/ui/src/router/admin/workspace/modules/tool.ts @@ -4,7 +4,7 @@ export const toolRoutes: RouteRecordRaw[] = [ { path: 'tools', name: 'workspace-tools', - component: () => import('@/views/tool/ToolView.vue'), + component: () => import('@/views/tool/index.vue'), meta: { title: '工具', icon: 'icon_busy_outlined', activeIcon: 'icon_busy__filled', order: 40 }, }, ] diff --git a/ui/src/router/admin/workspace/modules/trigger.ts b/ui/src/router/admin/workspace/modules/trigger.ts index 4912af375a4..82b5c575874 100644 --- a/ui/src/router/admin/workspace/modules/trigger.ts +++ b/ui/src/router/admin/workspace/modules/trigger.ts @@ -4,7 +4,7 @@ export const triggerRoutes: RouteRecordRaw[] = [ { path: 'trigger', name: 'workspace-trigger', - component: () => import('@/views/trigger/TriggerView.vue'), + component: () => import('@/views/trigger/index.vue'), meta: { title: '触发器', icon: 'icon-laser', activeIcon: 'icon_laser_filled', order: 60 }, }, ] diff --git a/ui/src/router/chat/routes.ts b/ui/src/router/chat/routes.ts index a5d7284f15b..7efe4f37666 100644 --- a/ui/src/router/chat/routes.ts +++ b/ui/src/router/chat/routes.ts @@ -1,4 +1,4 @@ import type { RouteRecordRaw } from 'vue-router' /** Chat 独立路由,后续的登录、对话分享页等统一在这里扩展。 */ -export const chatRoutes: RouteRecordRaw[] = [{ path: '/', name: 'chat-home', component: () => import('@/views/chat/ChatView.vue'), meta: { title: '对话' } }] +export const chatRoutes: RouteRecordRaw[] = [{ path: '/', name: 'chat-home', component: () => import('@/views/chat/index.vue'), meta: { title: '对话' } }] diff --git a/ui/src/views/VIEW_README.md b/ui/src/views/VIEW_README.md index 755773f3b02..91c60981b1a 100644 --- a/ui/src/views/VIEW_README.md +++ b/ui/src/views/VIEW_README.md @@ -9,8 +9,10 @@ 指令后再增加。已有功能的权限逻辑不随新功能开发移除;导入或创建后的用户资料刷新继续保留。 - `views//` 是页面功能边界。每个独立功能页面使用自己的目录,路由页面和该页面专用 代码放在同一目录或其子目录中,不要把多个无关页面平铺在上级目录。 -- 路由级 Vue 组件统一使用 `PascalCase` 并以 `View.vue` 结尾,例如 - `UserListView.vue`。 +- 路由级 Vue 组件统一命名为 `index.vue`。一个功能目录只有一个入口页时直接使用 + `views//index.vue`;同级存在多个入口页时,先按业务职责拆分子目录,再在各自目录中使用 + `index.vue`,例如 `system/resource-management/model/index.vue` 与 + `system/resource-management/tool/index.vue`。 - 页面按钮组件遵循 [COMPONENT_README.md](../components/COMPONENT_README.md) 的 `Button` 前缀命名规则, 文件名、导入名和模板引用保持一致。 - 页面拆分出的普通子组件统一放在当前功能目录的 `components/` 中,不与路由页面或 Drawer @@ -34,7 +36,7 @@ 路由参数、页面头部、保存或发布等页面动作以及后续接口编排;LogicFlow 初始化、节点注册和 画布内部行为遵循 `src/workflow-canvas/WORKFLOW_README.md`,不移入 View。 - 页面目录存在多个层级时,目录名应表达业务层级,例如 - `system/identity/groups/UserGroupListView.vue`,不要创建无业务含义的分组目录。 + `system/identity/groups/index.vue`,不要创建无业务含义的分组目录。 - 页面脚本中的状态、计算属性和处理方法按照同一业务流程集中放置,并使用简短的业务备注划分 列表查询、批量操作等流程。流程较长的函数应在确认、请求、刷新等关键阶段添加说明,重点解释 Promise 返回、执行顺序和业务约束,不为含义明确的单行代码逐句添加注释。 @@ -54,7 +56,7 @@ ```text src/views/// -├── FeatureListView.vue # 路由级页面,统一以 View.vue 结尾 +├── index.vue # 路由级页面 ├── FeatureEditDrawer.vue # 页面抽屉,统一以 Drawer.vue 结尾 ├── components/ # 页面拆分出的普通子组件 │ └── FeatureSetting.vue @@ -92,7 +94,7 @@ System 共享资源的四类特殊资源。它们统一遵循以下页面组织 ```text src/views/application/ -├── ApplicationView.vue +├── index.vue ├── application-card/ │ ├── ApplicationCard.vue # 智能体卡片展示、选择状态和 Action 插槽 │ └── action-dropdown/ @@ -109,12 +111,12 @@ src/views/application/ └── template.ts src/views/application-detail/ -├── WorkspaceApplicationDetail.vue # 提供工作空间智能体详情上下文并组合资源详情布局 +├── index.vue # 提供工作空间智能体详情上下文并组合资源详情布局 ├── context.ts # 智能体详情子路由共享数据与刷新能力 ├── overview/ -│ └── OverviewView.vue # 智能体概览内容 +│ └── index.vue # 智能体概览内容 └── setting/ - └── SimpleSettingView.vue # 简易智能体设置内容 + └── index.vue # 简易智能体设置内容 ``` `ApplicationCard` 只维护展示内容、批量选择状态和 `action-dropdown` 插槽;`ApplicationView` 组合 @@ -172,7 +174,7 @@ src/views/workflow/components/template-store/ ```text src/views/knowledge/ -├── KnowledgeView.vue +├── index.vue ├── knowledge-card/ │ ├── KnowledgeCard.vue │ └── action-dropdown/ @@ -238,7 +240,7 @@ MCP 配置沿用工具的只读文本与悬浮复制交互,专属弹窗按需 ```text src/views/tool/ -├── ToolView.vue +├── index.vue ├── components/ │ ├── ButtonCreateTool.vue # 工具创建入口 │ └── ButtonToolStore.vue # 工具商店入口 @@ -326,8 +328,10 @@ Action 放入 `views/system/shared-resources//action-dropdown/`。Act ```text src/views/system/shared-resources/ -├── ModelSharedview.vue -└── ToolSharedView.vue +├── model/ +│ └── index.vue +└── tool/ + └── index.vue ``` `ToolSharedView` 使用 System 共享工具 API,复用 `ToolCard` 和编辑、启动参数、MCP 配置、 @@ -342,7 +346,7 @@ System 用户页面按业务流程归拢操作入口和专属 Dialog。入口组 ```text src/views/system/identity/users/ -├── UserListView.vue +├── index.vue ├── UserFromDrawer.vue ├── components/ │ └── UserGroupSetting.vue @@ -366,7 +370,7 @@ src/views/system/identity/users/ 操作日志页面的清除策略入口与弹窗统一放在 `system/operate-logs/clean-strategy/`: `ButtonCleanStrategy.vue` 管理打开动作和弹窗 Ref,`CleanStrategyDialog.vue` 负责策略查询与保存, -`OperateLogListView.vue` 只组合入口组件。 +`index.vue` 只组合入口组件。 资源授权页面的 `UserGroupAuthorizationList` 通过人数链接打开共享业务组件 `components/business/resource-authorization-drawer/user-group/UserGroupMembersDrawer.vue`,按用户组所属工作空间查询成员,提供用户名、姓名搜索和分页, @@ -376,7 +380,7 @@ src/views/system/identity/users/ | 文件职责 | 命名格式 | 示例 | | ------------ | ----------------------------------- | ----------------------------------- | -| 路由页面 | `XxxView.vue` | `WorkspaceListView.vue` | +| 路由页面 | `index.vue` | `system/identity/users/index.vue` | | 抽屉 | `XxxDrawer.vue` | `AddMemberDrawer.vue` | | 弹窗 | `XxxDialog.vue` | `CreateOrUpdateWorkspaceDialog.vue` | | 页面普通组件 | 按具体业务职责使用 `PascalCase.vue` | `UserGroupSetting.vue` | @@ -388,41 +392,40 @@ Dialog。新增或重命名文件时,应同步更新所有导入和页面功 | 页面 | 功能说明 | | ---------------------------------------------------------------------- | -------------------------------------------------------------------- | -| `application/ApplicationView.vue` | 工作空间智能体目录与智能体卡片页面 | -| `application-detail/WorkspaceApplicationDetail.vue` | 工作空间智能体详情上下文与资源详情布局 | -| `application-detail/overview/OverviewView.vue` | 智能体概览内容 | -| `application-detail/setting/SimpleSettingView.vue` | 简易智能体设置内容 | -| `workflow/application/ApplicationWorkflowView.vue` | 智能体工作流页面头部与全屏画布 | -| `workflow/knowledge/KnowledgeWorkflowView.vue` | 知识库工作流加载、自动保存、发布历史、模板覆盖、导出、调试与全屏画布 | -| `workflow/tool/ToolWorkflowView.vue` | 工具工作流页面头部与全屏画布 | -| `chat/ChatView.vue` | Chat 入口的对话页面 | -| `error/NotFoundView.vue` | Admin 未匹配路由和全局 404 页面 | -| `home/HomeView.vue` | Workspace 首页 | -| `knowledge/KnowledgeView.vue` | 工作空间知识库目录与知识库卡片页面 | -| `knowledge-detail/setting/KnowledgeSettingView.vue` | 知识库基本信息、来源配置与上传限制设置 | -| `knowledge/KnowledgeDetailView.vue` | 知识库详情页面 | -| `knowledge/DocumentDetailView.vue` | 知识库文档详情页面 | -| `login/LoginView.vue` | Admin 登录页面 | -| `login/ForgotPasswordView.vue` | 忘记密码页面 | -| `model/ModelView.vue` | 工作空间模型目录与模型卡片页面 | -| `system/identity/groups/GroupsListView.vue` | 用户组列表页面 | -| `system/identity/resource-authorization/ResourceAuthorizationView.vue` | 工作空间用户组与用户的分类资源授权页面 | -| `system/identity/roles/RoleListView.vue` | 角色列表页面 | -| `system/identity/users/UserListView.vue` | 用户列表页面 | -| `system/identity/workspaces/WorkspaceListView.vue` | 工作空间列表页面 | -| `system/chat/user-groups/GroupsListView.vue` | 对话用户组及组成员管理页面 | -| `system/chat/users/UserListView.vue` | 对话用户列表、配额及用户导入管理页面 | -| `system/chat-management/portal-setting/PortalSettingView.vue` | 门户基本信息、访问开关、认证配置、跨域地址编辑与门户预览 | -| `system/settings/theme/ThemeSettingView.vue` | 系统外观设置和登录外观预览页面 | -| `system/settings/authentication/AuthenticationView.vue` | 系统登录及认证源配置页面 | -| `system/settings/email/EmailSettingsView.vue` | 系统邮件 SMTP 服务配置页面 | -| `system/operate-logs/OperateLogListView.vue` | 系统操作日志查询与清理页面 | -| `system/resource-management/ModelResourceView.vue` | System 模型分页、筛选、编辑、授权与删除 | -| `system/resource-management/ToolResourceView.vue` | System 工具分页、筛选、维护与工作流入口 | -| `system/shared-resources/ModelSharedview.vue` | System 共享模型查询与模型卡片页面 | -| `system/shared-resources/ToolSharedView.vue` | System 共享工具查询与工具维护页面 | -| `trigger/TriggerView.vue` | 工作空间触发器查询、新建、编辑及单项和批量启停、删除 | -| `tool/ToolView.vue` | 工作空间工具目录与工具卡片页面 | +| `application/index.vue` | 工作空间智能体目录与智能体卡片页面 | +| `application-detail/index.vue` | 工作空间智能体详情上下文与资源详情布局 | +| `application-detail/overview/index.vue` | 智能体概览内容 | +| `application-detail/setting/index.vue` | 简易智能体设置内容 | +| `workflow/application/index.vue` | 智能体工作流页面头部与全屏画布 | +| `workflow/knowledge/index.vue` | 知识库工作流加载、自动保存、发布历史、模板覆盖、导出、调试与全屏画布 | +| `workflow/tool/index.vue` | 工具工作流页面头部与全屏画布 | +| `chat/index.vue` | Chat 入口的对话页面 | +| `error/index.vue` | Admin 未匹配路由和全局 404 页面 | +| `home/index.vue` | Workspace 首页 | +| `knowledge/index.vue` | 工作空间知识库目录与知识库卡片页面 | +| `knowledge-detail/index.vue` | 知识库详情页面 | +| `knowledge-detail/setting/index.vue` | 知识库基本信息、来源配置与上传限制设置 | +| `login/index.vue` | Admin 登录页面 | +| `login/forgot-password/index.vue` | 忘记密码页面 | +| `model/index.vue` | 工作空间模型目录与模型卡片页面 | +| `system/identity/groups/index.vue` | 用户组列表页面 | +| `system/identity/resource-authorization/index.vue` | 工作空间用户组与用户的分类资源授权页面 | +| `system/identity/roles/index.vue` | 角色列表页面 | +| `system/identity/users/index.vue` | 用户列表页面 | +| `system/identity/workspaces/index.vue` | 工作空间列表页面 | +| `system/chat-management/user-groups/index.vue` | 对话用户组及组成员管理页面 | +| `system/chat-management/users/index.vue` | 对话用户列表、配额及用户导入管理页面 | +| `system/chat-management/portal-setting/index.vue` | 门户基本信息、访问开关、认证配置、跨域地址编辑与门户预览 | +| `system/settings/theme/index.vue` | 系统外观设置和登录外观预览页面 | +| `system/settings/authentication/index.vue` | 系统登录及认证源配置页面 | +| `system/settings/email/index.vue` | 系统邮件 SMTP 服务配置页面 | +| `system/operate-logs/index.vue` | 系统操作日志查询与清理页面 | +| `system/resource-management/model/index.vue` | System 模型分页、筛选、编辑、授权与删除 | +| `system/resource-management/tool/index.vue` | System 工具分页、筛选、维护与工作流入口 | +| `system/shared-resources/model/index.vue` | System 共享模型查询与模型卡片页面 | +| `system/shared-resources/tool/index.vue` | System 共享工具查询与工具维护页面 | +| `trigger/index.vue` | 工作空间触发器查询、新建、编辑及单项和批量启停、删除 | +| `tool/index.vue` | 工作空间工具目录与工具卡片页面 | ## 备注要求 @@ -578,7 +581,7 @@ Workspace 与 System 授权均使用该工作空间 ID,不读取路由工作 ## 触发器维护 -`trigger/TriggerView.vue` 负责列表查询、跨页选择、单项启停/删除及批量操作,通过 +`trigger/index.vue` 负责列表查询、跨页选择、单项启停/删除及批量操作,通过 `trigger/trigger-form/TriggerFormDrawer.vue` 共用新建和编辑流程,编辑时查询详情并保留任务 ID、参数、 启用状态及 meta。定时支持每日、每周、每月、间隔和五段 Cron;事件支持 URL、Token 和请求参数。 任务选择复用 `SelectApplicationDialog` 与 `SelectToolDialog`,工具限定自定义和工作流类型。 @@ -638,7 +641,7 @@ Workspace API 内部通过 `getWorkspaceId()` 读取当前路由工作空间。 页面只通过 `getKnowledgeDetail` 返回的 `work_flow` 加载画布数据,发布前先校验并保存;返回知识库详情时检查未保存改动。 `KnowledgeCard` 在非批量选择模式下通过 `click` 通知列表进入知识库详情。 -`knowledge-detail/WorkspaceKnowledgeDetailView.vue` 查询并展示知识库名称,复用 +`knowledge-detail/index.vue` 查询并展示知识库名称,复用 `ResourceDetailLayout` 生成资料库、工作流、检索优化、授权与集成、设置目录,返回列表时恢复所属文件夹。 资料库包含文档、图片、标签管理;检索优化包含召回测试、问题、自定义分词;授权与集成包含 对话用户、外部检索服务。新增页面分别放在 `knowledge-detail/` 下的 `image/`、`tag/`、 @@ -648,7 +651,7 @@ Workspace API 内部通过 `getWorkspaceId()` 读取当前路由工作空间。 设置页中。当前设置页仅接入 Workspace 路由和 API,暂不增加前端权限判断。 更换向量模型需确认,先保存再重新向量化,整条流程禁止重复提交;向量化失败时保留原模型比较基准, 允许再次保存重试。Web、飞书设置保留未编辑的 `meta` 字段,上传限制使用详情顶层值。 -`knowledge-detail/document/DocumentListView.vue` 为文档列表子页面,目前保留占位内容; +`knowledge-detail/document/index.vue` 为文档列表子页面,目前保留占位内容; 文档详情路由暂未启用,System 知识库详情路由暂未注册。 `KnowledgeWorkflowView` 复用 `ButtonDefaultModelSetting`,从知识库详情读取默认模型配置, @@ -662,7 +665,7 @@ Workspace API 内部通过 `getWorkspaceId()` 读取当前路由工作空间。 “副本”,确认后创建到打开时的当前文件夹。复制成功刷新列表及用户权限,简易应用进入设置页, 工作流应用进入画布;请求失败保留表单。弹窗按需挂载,在 `closed` 后卸载。 -`workflow/application/ApplicationWorkflowView.vue` 在默认模型设置之前引用 `ButtonTemplateStore`, +`workflow/application/index.vue` 在默认模型设置之前引用 `ButtonTemplateStore`, 通过 `open` 关闭调试面板,通过 `use(template)` 执行覆盖确认和请求;加载、保存或发布期间禁止打开。 页面确认覆盖后提交 `work_flow_template`,重新加载详情、画布和已保存基准;完成后通过按钮组件的 `close()` 关闭模板中心并提示成功。取消或失败保留模板中心。 @@ -688,7 +691,7 @@ Workspace API 内部通过 `getWorkspaceId()` 读取当前路由工作空间。 ## 工具工作流调试 -`workflow/tool/ToolWorkflowView.vue` 在默认模型设置后提供调试按钮,先校验画布,有未保存改动时 +`workflow/tool/index.vue` 在默认模型设置后提供调试按钮,先校验画布,有未保存改动时 保存成功后再打开调试。打开默认模型设置或发布历史时关闭调试抽屉。 `tool/debug/DebugDrawer.vue` 接收 `toolId`,通过 `open(graph)` 从已保存图的工具基础节点读取输入字段, 管理字符串、整数、浮点数、布尔值及 JSON 数组/对象参数,校验后交给 `ResultDrawer` 运行。 @@ -737,7 +740,7 @@ application、tool、knowledge 的 WorkflowView 统一使用一个 `loading` 控 ## 工作空间首页 -`home/HomeView.vue` 组合快捷创建、资源概况、使用统计和 Top 5 排行榜。首页按当前路由 +`home/index.vue` 组合快捷创建、资源概况、使用统计和 Top 5 排行榜。首页按当前路由 `workspaceId` 重新挂载各业务区,切换工作空间时清理旧筛选、数据和抽屉。 首页普通组件放在 `home/components/`;排行榜流程集中在 `home/ranking/`,包含 `HomeRankings.vue` 和 `RankingDrawer.vue`。 @@ -795,14 +798,14 @@ application、tool、knowledge 的 WorkflowView 统一使用一个 `loading` 控 ## 智能体详情占位页面 -`application-detail/integration/IntegrationView.vue`、`chat-user/ChatUserListView.vue`、 -`operation-log/OperationLogView.vue` 分别承接接入第三方、对话用户、操作日志,目前仅展示占位内容, +`application-detail/integration/index.vue`、`chat-user/index.vue`、 +`operation-log/index.vue` 分别承接接入第三方、对话用户、操作日志,目前仅展示占位内容, 标题及详情框架继续由 `ResourceDetailLayout` 提供。设置菜单按资源类型选择现有简易设置页面 或高级智能体全屏工作流,不另建高级设置 View。 ## System 资源管理模型与工具 -`system/resource-management/ModelResourceView.vue` 与 `ToolResourceView.vue` 使用 +`system/resource-management/model/index.vue` 与 `tool/index.vue` 使用 `MkViewLayout`、`MkComplexSearch` 和 `MkTable` 展示跨工作空间资源。 模型操作列使用 `EditModelAction display="button"` 展示编辑按钮,其余操作放入 `MkTableMoreDropdown`; `EditModelAction` 透传 `display` 给 `MkAction`,默认保持菜单模式,内部管理编辑抽屉,保存后发出 `refresh`。 diff --git a/ui/src/views/application-detail/chat-user/ChatUserListView.vue b/ui/src/views/application-detail/chat-user/index.vue similarity index 100% rename from ui/src/views/application-detail/chat-user/ChatUserListView.vue rename to ui/src/views/application-detail/chat-user/index.vue diff --git a/ui/src/views/application-detail/WorkspaceApplicationDetail.vue b/ui/src/views/application-detail/index.vue similarity index 100% rename from ui/src/views/application-detail/WorkspaceApplicationDetail.vue rename to ui/src/views/application-detail/index.vue diff --git a/ui/src/views/application-detail/integration/IntegrationView.vue b/ui/src/views/application-detail/integration/index.vue similarity index 100% rename from ui/src/views/application-detail/integration/IntegrationView.vue rename to ui/src/views/application-detail/integration/index.vue diff --git a/ui/src/views/application-detail/operation-log/OperationLogView.vue b/ui/src/views/application-detail/operation-log/index.vue similarity index 100% rename from ui/src/views/application-detail/operation-log/OperationLogView.vue rename to ui/src/views/application-detail/operation-log/index.vue diff --git a/ui/src/views/application-detail/overview/OverviewView.vue b/ui/src/views/application-detail/overview/index.vue similarity index 100% rename from ui/src/views/application-detail/overview/OverviewView.vue rename to ui/src/views/application-detail/overview/index.vue diff --git a/ui/src/views/application-detail/setting/SimpleSettingView.vue b/ui/src/views/application-detail/setting/index.vue similarity index 100% rename from ui/src/views/application-detail/setting/SimpleSettingView.vue rename to ui/src/views/application-detail/setting/index.vue diff --git a/ui/src/views/application/ApplicationView.vue b/ui/src/views/application/index.vue similarity index 100% rename from ui/src/views/application/ApplicationView.vue rename to ui/src/views/application/index.vue diff --git a/ui/src/views/chat/ChatView.vue b/ui/src/views/chat/index.vue similarity index 100% rename from ui/src/views/chat/ChatView.vue rename to ui/src/views/chat/index.vue diff --git a/ui/src/views/error/NotFoundView.vue b/ui/src/views/error/index.vue similarity index 100% rename from ui/src/views/error/NotFoundView.vue rename to ui/src/views/error/index.vue diff --git a/ui/src/views/home/HomeView.vue b/ui/src/views/home/index.vue similarity index 100% rename from ui/src/views/home/HomeView.vue rename to ui/src/views/home/index.vue diff --git a/ui/src/views/knowledge-detail/chat-user/ChatUserListView.vue b/ui/src/views/knowledge-detail/chat-user/index.vue similarity index 100% rename from ui/src/views/knowledge-detail/chat-user/ChatUserListView.vue rename to ui/src/views/knowledge-detail/chat-user/index.vue diff --git a/ui/src/views/knowledge-detail/dictionary/DictionaryView.vue b/ui/src/views/knowledge-detail/dictionary/index.vue similarity index 100% rename from ui/src/views/knowledge-detail/dictionary/DictionaryView.vue rename to ui/src/views/knowledge-detail/dictionary/index.vue diff --git a/ui/src/views/knowledge-detail/document/DocumentListView.vue b/ui/src/views/knowledge-detail/document/index.vue similarity index 100% rename from ui/src/views/knowledge-detail/document/DocumentListView.vue rename to ui/src/views/knowledge-detail/document/index.vue diff --git a/ui/src/views/knowledge-detail/external-retrieval/ExternalRetrievalView.vue b/ui/src/views/knowledge-detail/external-retrieval/index.vue similarity index 100% rename from ui/src/views/knowledge-detail/external-retrieval/ExternalRetrievalView.vue rename to ui/src/views/knowledge-detail/external-retrieval/index.vue diff --git a/ui/src/views/knowledge-detail/image/ImageListView.vue b/ui/src/views/knowledge-detail/image/index.vue similarity index 100% rename from ui/src/views/knowledge-detail/image/ImageListView.vue rename to ui/src/views/knowledge-detail/image/index.vue diff --git a/ui/src/views/knowledge-detail/WorkspaceKnowledgeDetailView.vue b/ui/src/views/knowledge-detail/index.vue similarity index 100% rename from ui/src/views/knowledge-detail/WorkspaceKnowledgeDetailView.vue rename to ui/src/views/knowledge-detail/index.vue diff --git a/ui/src/views/knowledge-detail/question/QuestionListView.vue b/ui/src/views/knowledge-detail/question/index.vue similarity index 100% rename from ui/src/views/knowledge-detail/question/QuestionListView.vue rename to ui/src/views/knowledge-detail/question/index.vue diff --git a/ui/src/views/knowledge-detail/recall-test/RecallTestView.vue b/ui/src/views/knowledge-detail/recall-test/index.vue similarity index 100% rename from ui/src/views/knowledge-detail/recall-test/RecallTestView.vue rename to ui/src/views/knowledge-detail/recall-test/index.vue diff --git a/ui/src/views/knowledge-detail/setting/KnowledgeSettingView.vue b/ui/src/views/knowledge-detail/setting/index.vue similarity index 100% rename from ui/src/views/knowledge-detail/setting/KnowledgeSettingView.vue rename to ui/src/views/knowledge-detail/setting/index.vue diff --git a/ui/src/views/knowledge-detail/tag/TagManagementView.vue b/ui/src/views/knowledge-detail/tag/index.vue similarity index 100% rename from ui/src/views/knowledge-detail/tag/TagManagementView.vue rename to ui/src/views/knowledge-detail/tag/index.vue diff --git a/ui/src/views/knowledge/KnowledgeView.vue b/ui/src/views/knowledge/index.vue similarity index 100% rename from ui/src/views/knowledge/KnowledgeView.vue rename to ui/src/views/knowledge/index.vue diff --git a/ui/src/views/login/ForgotPasswordView.vue b/ui/src/views/login/forgot-password/index.vue similarity index 99% rename from ui/src/views/login/ForgotPasswordView.vue rename to ui/src/views/login/forgot-password/index.vue index 72409641fce..f706eed7022 100644 --- a/ui/src/views/login/ForgotPasswordView.vue +++ b/ui/src/views/login/forgot-password/index.vue @@ -6,7 +6,7 @@ import type { FormInstance, FormRules } from 'element-plus' import ForgotPasswordApi from '@/api/admin/auth/forgot-password' import { useStore } from '@/stores' import { MsgSuccess } from '@/utils/message' -import LoginLayout from './components/LoginLayout.vue' +import LoginLayout from '../components/LoginLayout.vue' interface ForgotPasswordForm { confirmPassword: string diff --git a/ui/src/views/login/LoginView.vue b/ui/src/views/login/index.vue similarity index 100% rename from ui/src/views/login/LoginView.vue rename to ui/src/views/login/index.vue diff --git a/ui/src/views/model/ModelView.vue b/ui/src/views/model/index.vue similarity index 100% rename from ui/src/views/model/ModelView.vue rename to ui/src/views/model/index.vue diff --git a/ui/src/views/system/chat-management/authentication/AuthenticationView.vue b/ui/src/views/system/chat-management/authentication/index.vue similarity index 100% rename from ui/src/views/system/chat-management/authentication/AuthenticationView.vue rename to ui/src/views/system/chat-management/authentication/index.vue diff --git a/ui/src/views/system/chat-management/portal-setting/PortalSettingView.vue b/ui/src/views/system/chat-management/portal-setting/index.vue similarity index 100% rename from ui/src/views/system/chat-management/portal-setting/PortalSettingView.vue rename to ui/src/views/system/chat-management/portal-setting/index.vue diff --git a/ui/src/views/system/chat-management/user-groups/GroupsListView.vue b/ui/src/views/system/chat-management/user-groups/index.vue similarity index 100% rename from ui/src/views/system/chat-management/user-groups/GroupsListView.vue rename to ui/src/views/system/chat-management/user-groups/index.vue diff --git a/ui/src/views/system/chat-management/users/UserListView.vue b/ui/src/views/system/chat-management/users/index.vue similarity index 100% rename from ui/src/views/system/chat-management/users/UserListView.vue rename to ui/src/views/system/chat-management/users/index.vue diff --git a/ui/src/views/system/identity/groups/GroupsListView.vue b/ui/src/views/system/identity/groups/index.vue similarity index 100% rename from ui/src/views/system/identity/groups/GroupsListView.vue rename to ui/src/views/system/identity/groups/index.vue diff --git a/ui/src/views/system/identity/resource-authorization/ResourceAuthorizationView.vue b/ui/src/views/system/identity/resource-authorization/index.vue similarity index 100% rename from ui/src/views/system/identity/resource-authorization/ResourceAuthorizationView.vue rename to ui/src/views/system/identity/resource-authorization/index.vue diff --git a/ui/src/views/system/identity/roles/RoleListView.vue b/ui/src/views/system/identity/roles/index.vue similarity index 100% rename from ui/src/views/system/identity/roles/RoleListView.vue rename to ui/src/views/system/identity/roles/index.vue diff --git a/ui/src/views/system/identity/users/UserListView.vue b/ui/src/views/system/identity/users/index.vue similarity index 100% rename from ui/src/views/system/identity/users/UserListView.vue rename to ui/src/views/system/identity/users/index.vue diff --git a/ui/src/views/system/identity/workspaces/WorkspaceListView.vue b/ui/src/views/system/identity/workspaces/index.vue similarity index 100% rename from ui/src/views/system/identity/workspaces/WorkspaceListView.vue rename to ui/src/views/system/identity/workspaces/index.vue diff --git a/ui/src/views/system/SystemView.vue b/ui/src/views/system/index.vue similarity index 100% rename from ui/src/views/system/SystemView.vue rename to ui/src/views/system/index.vue diff --git a/ui/src/views/system/operate-logs/OperateLogListView.vue b/ui/src/views/system/operate-logs/index.vue similarity index 100% rename from ui/src/views/system/operate-logs/OperateLogListView.vue rename to ui/src/views/system/operate-logs/index.vue diff --git a/ui/src/views/system/resource-management/ModelResourceView.vue b/ui/src/views/system/resource-management/model/index.vue similarity index 100% rename from ui/src/views/system/resource-management/ModelResourceView.vue rename to ui/src/views/system/resource-management/model/index.vue diff --git a/ui/src/views/system/resource-management/ToolResourceView.vue b/ui/src/views/system/resource-management/tool/index.vue similarity index 100% rename from ui/src/views/system/resource-management/ToolResourceView.vue rename to ui/src/views/system/resource-management/tool/index.vue diff --git a/ui/src/views/system/settings/authentication/AuthenticationView.vue b/ui/src/views/system/settings/authentication/index.vue similarity index 100% rename from ui/src/views/system/settings/authentication/AuthenticationView.vue rename to ui/src/views/system/settings/authentication/index.vue diff --git a/ui/src/views/system/settings/email/EmailSettingsView.vue b/ui/src/views/system/settings/email/index.vue similarity index 100% rename from ui/src/views/system/settings/email/EmailSettingsView.vue rename to ui/src/views/system/settings/email/index.vue diff --git a/ui/src/views/system/settings/theme/ThemeSettingView.vue b/ui/src/views/system/settings/theme/index.vue similarity index 100% rename from ui/src/views/system/settings/theme/ThemeSettingView.vue rename to ui/src/views/system/settings/theme/index.vue diff --git a/ui/src/views/system/shared-resources/ModelSharedview.vue b/ui/src/views/system/shared-resources/model/index.vue similarity index 100% rename from ui/src/views/system/shared-resources/ModelSharedview.vue rename to ui/src/views/system/shared-resources/model/index.vue diff --git a/ui/src/views/system/shared-resources/ToolSharedView.vue b/ui/src/views/system/shared-resources/tool/index.vue similarity index 100% rename from ui/src/views/system/shared-resources/ToolSharedView.vue rename to ui/src/views/system/shared-resources/tool/index.vue diff --git a/ui/src/views/tool/ToolView.vue b/ui/src/views/tool/index.vue similarity index 100% rename from ui/src/views/tool/ToolView.vue rename to ui/src/views/tool/index.vue diff --git a/ui/src/views/trigger/TriggerView.vue b/ui/src/views/trigger/index.vue similarity index 100% rename from ui/src/views/trigger/TriggerView.vue rename to ui/src/views/trigger/index.vue diff --git a/ui/src/views/workflow/application/ApplicationWorkflowView.vue b/ui/src/views/workflow/application/index.vue similarity index 100% rename from ui/src/views/workflow/application/ApplicationWorkflowView.vue rename to ui/src/views/workflow/application/index.vue diff --git a/ui/src/views/workflow/knowledge/KnowledgeWorkflowView.vue b/ui/src/views/workflow/knowledge/index.vue similarity index 100% rename from ui/src/views/workflow/knowledge/KnowledgeWorkflowView.vue rename to ui/src/views/workflow/knowledge/index.vue diff --git a/ui/src/views/workflow/tool/ToolWorkflowView.vue b/ui/src/views/workflow/tool/index.vue similarity index 100% rename from ui/src/views/workflow/tool/ToolWorkflowView.vue rename to ui/src/views/workflow/tool/index.vue