🎨 移除多余模块

This commit is contained in:
2026-04-08 12:19:24 +08:00
parent 22bb5fdc94
commit 7599146f24
192 changed files with 623 additions and 13983 deletions

View File

@@ -26,28 +26,17 @@
- `sysVersion` 版本管理
- `sysError` 错误日志
### 示例模块
- `breakpoint` 断点续传
- `customer` 客户列表示例
### 公共模块
- `upload` 媒体库
- `breakpoint` 断点续传
### 编程辅助
- `autoPkg` 模板配置
- `autoCode` 代码生成器
- `autoCodeAdmin` 自动化代码管理
- `formCreate` 表单生成器
- `aiWorkflow` AI 需求工作流
- `exportTemplate` 导出模板
- `mcpTest` Mcp Tools 管理
- `mcpTool` Mcp Tools 模板
- `skills` Skills 管理
- `picture` AI 页面绘制
- `autoCodeEdit/:id` 隐藏编辑路由
- `mcpTest` MCP Tools 管理
- `mcpTool` MCP Tools 模板
## 主要接口分组
@@ -168,19 +157,12 @@
- 版本管理
- 媒体库
- 断点续传
- 客户列表示例
- 模板配置
- 代码生成器
- 自动化代码管理
- 表单生成器
- AI 需求工作流
- 导出模板
- Mcp Tools 管理
- Mcp Tools 模板
- Skills 管理
- AI 页面绘制
- MCP Tools 管理
- MCP Tools 模板
## 说明
- 新后台没有修改后端协议,仍然复用原有 token、菜单、权限和接口格式。
- 当前仍有部分研发辅助类重模块保留为入口页,原因不是无法实现,而是这些模块交互面大,适合单独拆阶段继续重构。
- 当前仍有部分研发辅助模块保留为入口页,原因不是无法实现,而是这些模块交互面大,适合单独拆阶段继续重构。

View File

@@ -21,6 +21,10 @@ import { OperationLogPage } from '@/features/logs/OperationLogPage'
import { SystemConfigPage } from '@/features/system/SystemConfigPage'
import { ApiTokenPage } from '@/features/tokens/ApiTokenPage'
import { ErrorLogPage } from '@/features/errors/ErrorLogPage'
import { MediaLibraryPage } from '@/features/media/MediaLibraryPage'
import { BreakpointPage } from '@/features/breakpoint/BreakpointPage'
import { McpTestPage } from '@/features/mcp/McpTestPage'
import { McpToolPage } from '@/features/mcp/McpToolPage'
type AppRoute = {
path: string
@@ -45,22 +49,13 @@ const appRoutes: AppRoute[] = [
{ path: 'admin/sysVersion', menuName: 'sysVersion', element: <ModuleLandingPage moduleName="sysVersion" /> },
{ path: 'admin/sysError', menuName: 'sysError', element: <ErrorLogPage /> },
{ path: 'common', menuName: 'common', element: <ModuleLandingPage moduleName="common" /> },
{ path: 'common/upload', menuName: 'upload', element: <ModuleLandingPage moduleName="upload" /> },
{ path: 'example', menuName: 'example', element: <ModuleLandingPage moduleName="example" /> },
{ path: 'example/breakpoint', menuName: 'breakpoint', element: <ModuleLandingPage moduleName="breakpoint" /> },
{ path: 'example/customer', menuName: 'customer', element: <ModuleLandingPage moduleName="customer" /> },
{ path: 'common/upload', menuName: 'upload', element: <MediaLibraryPage /> },
{ path: 'common/breakpoint', menuName: 'breakpoint', element: <BreakpointPage /> },
{ path: 'systemTools', menuName: 'systemTools', element: <ModuleLandingPage moduleName="systemTools" /> },
{ path: 'systemTools/autoPkg', menuName: 'autoPkg', element: <ModuleLandingPage moduleName="autoPkg" /> },
{ path: 'systemTools/autoCode', menuName: 'autoCode', element: <ModuleLandingPage moduleName="autoCode" /> },
{ path: 'systemTools/autoCodeAdmin', menuName: 'autoCodeAdmin', element: <ModuleLandingPage moduleName="autoCodeAdmin" /> },
{ path: 'systemTools/formCreate', menuName: 'formCreate', element: <ModuleLandingPage moduleName="formCreate" /> },
{ path: 'systemTools/aiWorkflow', menuName: 'aiWorkflow', element: <ModuleLandingPage moduleName="aiWorkflow" /> },
{ path: 'systemTools/exportTemplate', menuName: 'exportTemplate', element: <ModuleLandingPage moduleName="exportTemplate" /> },
{ path: 'systemTools/mcpTest', menuName: 'mcpTest', element: <ModuleLandingPage moduleName="mcpTest" /> },
{ path: 'systemTools/mcpTool', menuName: 'mcpTool', element: <ModuleLandingPage moduleName="mcpTool" /> },
{ path: 'systemTools/skills', menuName: 'skills', element: <ModuleLandingPage moduleName="skills" /> },
{ path: 'systemTools/picture', menuName: 'picture', element: <ModuleLandingPage moduleName="picture" /> },
{ path: 'systemTools/autoCodeEdit/:id', menuName: 'autoCodeEdit', element: <ModuleLandingPage moduleName="autoCodeEdit" /> },
{ path: 'systemTools/mcpTest', menuName: 'mcpTest', element: <McpTestPage /> },
{ path: 'systemTools/mcpTool', menuName: 'mcpTool', element: <McpToolPage /> },
{ path: 'person', menuName: 'person', element: <ProfilePage /> },
{ path: 'state', menuName: 'state', element: <ServerStatePage /> },
]

View File

@@ -142,18 +142,9 @@ export const moduleCatalog: Record<string, ModuleDescriptor> = {
group: '公共模块',
status: 'partial',
summary: '承载多端复用的公共功能,不再挂在示例目录下。',
features: ['公共上传能力', '后续 app 复用入口'],
features: ['媒体库', '断点续传', '后续 app 复用入口'],
endpoints: ['/fileUploadAndDownload/getFileList', '/attachmentCategory/getCategoryList'],
},
example: {
name: 'example',
title: '示例文件',
group: '业务示例',
status: 'partial',
summary: '保留和业务演示直接相关的示例页面。',
features: ['断点续传', '客户资源示例'],
endpoints: ['/customer/customerList'],
},
upload: {
name: 'upload',
title: '媒体库',
@@ -166,56 +157,20 @@ export const moduleCatalog: Record<string, ModuleDescriptor> = {
breakpoint: {
name: 'breakpoint',
title: '断点续传',
group: '业务示例',
group: '公共模块',
status: 'partial',
summary: '展示大文件切片上传流程。',
features: ['文件校验', '分片上传', '合并完成'],
endpoints: ['/fileUploadAndDownload/findFile', '/fileUploadAndDownload/breakpointContinue'],
},
customer: {
name: 'customer',
title: '客户列表',
group: '业务示例',
status: 'partial',
summary: '示例业务资源表,用于展示普通 CRUD 模式。',
features: ['客户列表', '增删改查'],
endpoints: ['/customer/customerList', '/customer/customer'],
},
systemTools: {
name: 'systemTools',
title: '编程辅助',
group: '研发辅助',
status: 'partial',
summary: '聚合代码生成、模板配置、技能管理和 AI 工作流。',
features: ['代码生成器', '模板配置', 'Skills 管理', 'AI 页面绘制'],
endpoints: ['/autoCode/getDB', '/skills/getSkillList'],
},
autoPkg: {
name: 'autoPkg',
title: '模板配置',
group: '研发辅助',
status: 'partial',
summary: '维护自动代码生成模板。',
features: ['模板列表', '模板文件'],
endpoints: ['/autoCode/createPackage', '/autoCode/getPackage', '/autoCode/getTemplates'],
},
autoCode: {
name: 'autoCode',
title: '代码生成器',
group: '研发辅助',
status: 'partial',
summary: '自动生成表单、接口、服务和路由代码。',
features: ['库表发现', '代码预览', '代码生成'],
endpoints: ['/autoCode/getDB', '/autoCode/getTables', '/autoCode/preview', '/autoCode/createTemp'],
},
autoCodeAdmin: {
name: 'autoCodeAdmin',
title: '自动化代码管理',
group: '研发辅助',
status: 'partial',
summary: '管理自动化代码任务和函数模板。',
features: ['任务管理', '模板方法'],
endpoints: ['/autoCode/getMeta', '/autoCode/addFunc'],
summary: '聚合表单设计、导出模板和 MCP 管理等研发辅助能力。',
features: ['表单设计', '导出模板', 'MCP 管理'],
endpoints: ['/sysExportTemplate/getSysExportTemplateList', '/mcp/status'],
},
formCreate: {
name: 'formCreate',
@@ -226,15 +181,6 @@ export const moduleCatalog: Record<string, ModuleDescriptor> = {
features: ['表单设计'],
endpoints: [],
},
aiWorkflow: {
name: 'aiWorkflow',
title: 'AI 需求工作流',
group: '研发辅助',
status: 'partial',
summary: '管理 AI 会话和需求工作流结果。',
features: ['会话列表', '会话详情', 'Markdown 落盘'],
endpoints: ['/autoCode/getAIWorkflowSessionList', '/autoCode/getAIWorkflowSessionDetail'],
},
exportTemplate: {
name: 'exportTemplate',
title: '导出模板',
@@ -246,39 +192,21 @@ export const moduleCatalog: Record<string, ModuleDescriptor> = {
},
mcpTest: {
name: 'mcpTest',
title: 'Mcp Tools 管理',
title: 'MCP Tools 管理',
group: '研发辅助',
status: 'partial',
summary: '围绕 MCP Tool 的状态、测试和服务控制。',
features: ['服务状态', '测试调用'],
endpoints: ['/autoCode/mcpStatus', '/autoCode/mcpTest', '/autoCode/mcpList'],
summary: '围绕 MCP Tool 的状态、测试和独立服务控制。',
features: ['服务状态', '工具列表', '测试调用'],
endpoints: ['/mcp/status', '/mcp/tools', '/mcp/test'],
},
mcpTool: {
name: 'mcpTool',
title: 'Mcp Tools 模板',
title: 'MCP Tools 模板',
group: '研发辅助',
status: 'partial',
summary: '生成 MCP Tool 模板代码。',
features: ['模板生成'],
endpoints: ['/autoCode/mcp'],
},
skills: {
name: 'skills',
title: 'Skills 管理',
group: '研发辅助',
status: 'partial',
summary: '管理技能定义、脚本、资源、模板和全局约束。',
features: ['技能列表', '脚本资源管理', '技能打包'],
endpoints: ['/skills/getSkillList', '/skills/saveSkill', '/skills/packageSkill'],
},
picture: {
name: 'picture',
title: 'AI 页面绘制',
group: '研发辅助',
status: 'partial',
summary: '基于 AI 描述生成页面草图。',
features: ['图像工作台'],
endpoints: ['/autoCode/llmAuto'],
endpoints: ['/mcp/createTool'],
},
person: {
name: 'person',

View File

@@ -29,8 +29,6 @@ const componentOptions: ComponentOption[] = [
{ value: 'features/errors/ErrorLogPage', label: 'ErrorLogPage · 错误日志', routeName: 'sysError' },
{ value: 'features/person/ProfilePage', label: 'ProfilePage · 个人中心', routeName: 'person' },
{ value: 'features/server/ServerStatePage', label: 'ServerStatePage · 服务器状态', routeName: 'state' },
{ value: 'features/mcp/McpTestPage', label: 'McpTestPage · MCP Tools 管理', routeName: 'mcpTest' },
{ value: 'features/mcp/McpToolPage', label: 'McpToolPage · MCP Tools 模板', routeName: 'mcpTool' },
{
value: 'features/discovery/ModuleLandingPage:superAdmin',
label: 'ModuleLandingPage · 超级管理员',
@@ -47,8 +45,8 @@ const componentOptions: ComponentOption[] = [
routeName: 'upload',
},
{
value: 'features/discovery/ModuleLandingPage:breakpoint',
label: 'ModuleLandingPage · 断点续传',
value: 'features/breakpoint/BreakpointPage',
label: 'BreakpointPage · 断点续传',
routeName: 'breakpoint',
},
{
@@ -56,51 +54,14 @@ const componentOptions: ComponentOption[] = [
label: 'ModuleLandingPage · 编程辅助',
routeName: 'systemTools',
},
{
value: 'features/discovery/ModuleLandingPage:aiWorkflow',
label: 'ModuleLandingPage · AI 需求工作流',
routeName: 'aiWorkflow',
},
{
value: 'features/discovery/ModuleLandingPage:exportTemplate',
label: 'ModuleLandingPage · 导出模板',
routeName: 'exportTemplate',
},
{
value: 'features/discovery/ModuleLandingPage:example',
label: 'ModuleLandingPage · 示例文件',
routeName: 'example',
},
{
value: 'features/discovery/ModuleLandingPage:customer',
label: 'ModuleLandingPage · 客户列表示例',
routeName: 'customer',
},
{
value: 'features/discovery/ModuleLandingPage:plugin',
label: 'ModuleLandingPage · 插件系统',
routeName: 'plugin',
},
{
value: 'features/discovery/ModuleLandingPage:installPlugin',
label: 'ModuleLandingPage · 插件安装',
routeName: 'installPlugin',
},
{
value: 'features/discovery/ModuleLandingPage:pubPlug',
label: 'ModuleLandingPage · 打包插件',
routeName: 'pubPlug',
},
{
value: 'features/discovery/ModuleLandingPage:plugin-email',
label: 'ModuleLandingPage · 邮件插件',
routeName: 'plugin-email',
},
{
value: 'features/discovery/ModuleLandingPage:anInfo',
label: 'ModuleLandingPage · 公告管理示例',
routeName: 'anInfo',
},
{ value: 'features/mcp/McpTestPage', label: 'McpTestPage · MCP Tools 管理', routeName: 'mcpTest' },
{ value: 'features/mcp/McpToolPage', label: 'McpToolPage · MCP Tools 模板', routeName: 'mcpTool' },
{ value: 'features/media/MediaLibraryPage', label: 'MediaLibraryPage · 媒体库', routeName: 'upload' },
]
const componentRouteNameMap = new Map(componentOptions.map((item) => [item.value, item.routeName]))

View File

@@ -2,12 +2,19 @@ import { http } from './http'
import type {
ApiRecord,
ApiTokenRecord,
AttachmentCategory,
Authority,
CaptchaInfo,
Dictionary,
DictionaryDetail,
LoginLog,
LoginResult,
McpContent,
McpManagedStatus,
McpServerConfig,
McpToolDescriptor,
McpToolTemplateRequest,
MediaFileRecord,
MenuNode,
OperationRecord,
PagePayload,
@@ -273,3 +280,61 @@ export const inventoryApi = {
return http.post<{ server: Record<string, unknown> }>('/system/getServerInfo')
},
}
export const mediaLibraryApi = {
getCategoryList() {
return http.get<AttachmentCategory[]>('/attachmentCategory/getCategoryList')
},
saveCategory(payload: Partial<AttachmentCategory>) {
return http.post<Record<string, never>>('/attachmentCategory/addCategory', payload)
},
deleteCategory(id: number) {
return http.post<Record<string, never>>('/attachmentCategory/deleteCategory', { id })
},
getFileList(payload: Record<string, unknown>) {
return http.post<PagePayload<MediaFileRecord>>('/fileUploadAndDownload/getFileList', payload)
},
editFile(payload: Partial<MediaFileRecord>) {
return http.post<Record<string, never>>('/fileUploadAndDownload/editFileName', payload)
},
deleteFile(id: number) {
return http.post<Record<string, never>>('/fileUploadAndDownload/deleteFile', { ID: id })
},
}
export const breakpointApi = {
findFile(params: { fileMd5: string; fileName: string; chunkTotal: number }) {
return http.get<{ file: Record<string, unknown> }>('/fileUploadAndDownload/findFile', { params })
},
finish(params: { fileMd5: string; fileName: string }) {
return http.post<{ filePath: string }>('/fileUploadAndDownload/breakpointContinueFinish', undefined, { params })
},
removeChunk(payload: { fileMd5: string; filePath: string }) {
return http.post<Record<string, never>>('/fileUploadAndDownload/removeChunk', payload)
},
}
export const mcpApi = {
getStatus() {
return http.get<{ status: McpManagedStatus; mcpServerConfig: McpServerConfig }>('/mcp/status')
},
start() {
return http.post<{ status: McpManagedStatus; mcpServerConfig: McpServerConfig }>('/mcp/start')
},
stop() {
return http.post<{ status: McpManagedStatus; mcpServerConfig: McpServerConfig }>('/mcp/stop')
},
getList() {
return http.get<{
status: McpManagedStatus
mcpServerConfig: McpServerConfig
list: { tools: McpToolDescriptor[] }
}>('/mcp/tools')
},
test(payload: { name: string; arguments: Record<string, unknown> }) {
return http.post<McpContent[]>('/mcp/test', payload)
},
createTool(payload: McpToolTemplateRequest) {
return http.post<Record<string, never>>('/mcp/createTool', payload)
},
}

View File

@@ -1,7 +0,0 @@
import { createModulePage } from '@/router/createModulePage'
export const routeMeta = {
menuName: 'customer',
}
export default createModulePage('customer')

View File

@@ -1,7 +0,0 @@
import { createModulePage } from '@/router/createModulePage'
export const routeMeta = {
menuName: 'example',
}
export default createModulePage('example')

View File

@@ -1,7 +0,0 @@
import { createModulePage } from '@/router/createModulePage'
export const routeMeta = {
menuName: 'anInfo',
}
export default createModulePage('anInfo')

View File

@@ -1,7 +0,0 @@
import { createModulePage } from '@/router/createModulePage'
export const routeMeta = {
menuName: 'installPlugin',
}
export default createModulePage('installPlugin')

View File

@@ -1,7 +0,0 @@
import { createModulePage } from '@/router/createModulePage'
export const routeMeta = {
menuName: 'plugin',
}
export default createModulePage('plugin')

View File

@@ -1,7 +0,0 @@
import { createModulePage } from '@/router/createModulePage'
export const routeMeta = {
menuName: 'plugin-email',
}
export default createModulePage('plugin-email')

View File

@@ -1,7 +0,0 @@
import { createModulePage } from '@/router/createModulePage'
export const routeMeta = {
menuName: 'pubPlug',
}
export default createModulePage('pubPlug')

View File

@@ -1,7 +0,0 @@
import { createModulePage } from '@/router/createModulePage'
export const routeMeta = {
menuName: 'aiWorkflow',
}
export default createModulePage('aiWorkflow')

View File

@@ -158,6 +158,79 @@ export type SysErrorRecord = BaseEntity & {
status?: string
}
export type AttachmentCategory = BaseEntity & {
name: string
pid: number
children?: AttachmentCategory[]
}
export type MediaFileRecord = BaseEntity & {
name: string
classId: number
url: string
tag: string
key: string
}
export type JsonSchema = {
type?: string
properties?: Record<string, JsonSchema>
items?: JsonSchema
enum?: unknown[]
default?: unknown
}
export type McpContent = {
type: string
text?: string
data?: string
mimeType?: string
}
export type McpManagedStatus = {
state: string
managed: boolean
reachable: boolean
starting: boolean
baseURL: string
healthURL: string
listenAddr: string
path: string
authHeader: string
pid?: number
logPath?: string
startedAt?: string
lastError?: string
message?: string
}
export type McpServerConfig = {
mcpServers?: Record<string, { url: string; headers?: Record<string, string> }>
}
export type McpToolDescriptor = {
name: string
description?: string
inputSchema?: JsonSchema | Record<string, unknown>
}
export type McpToolTemplateRequest = {
name: string
description: string
params: Array<{
name: string
description: string
type: string
required: boolean
default?: string
}>
response: Array<{
type: string
}>
}
export type AutoMcpToolRequest = McpToolTemplateRequest
export type ModuleStatus = 'ready' | 'partial' | 'planned'
export type ModuleDescriptor = {