refactor(module): 重构模块结构,将示例模块和AI模块迁移至应用模块

- 删除原有的示例模块(module_example)和AI模块(module_ai)
- 在应用模块(module_application)下新增AI子模块和示例子模块
- 更新相关路由配置,移除不再使用的模块路由
- 调整定时任务模块从监控模块迁移至应用模块
- 更新前端API路径和组件文件结构
- 修正数据库表名前缀,统一使用'app_'作为应用模块表前缀
This commit is contained in:
zhangtao
2025-10-05 12:24:40 +08:00
parent 055e054173
commit d943d295d0
62 changed files with 1566 additions and 1571 deletions
-8
View File
@@ -11,15 +11,9 @@ from .module_monitor import MonitorRouter
# 通用模块
from .module_common import CommonRouter
# 示例模块
from .module_example import ExampleRouter
# 应用模块
from .module_application import ApplicationRouter
# AI模块
from .module_ai import AIRouter
# 代码生成模块
from .module_generator import GeneratorRouter
@@ -31,7 +25,5 @@ router = APIRouter()
router.include_router(SystemRouter)
router.include_router(MonitorRouter)
router.include_router(CommonRouter)
router.include_router(ExampleRouter)
router.include_router(ApplicationRouter)
router.include_router(AIRouter)
router.include_router(GeneratorRouter)
-14
View File
@@ -1,14 +0,0 @@
# -*- coding: utf-8 -*-
"""
AI模块初始化文件
"""
from fastapi import APIRouter
from .mcp.controller import MCPRouter
AIRouter = APIRouter(prefix="/ai")
# 包含所有子路由
AIRouter.include_router(MCPRouter)
@@ -1,6 +0,0 @@
# -*- coding: utf-8 -*-
"""
AI模块初始化文件
"""
from .controller import MCPRouter
@@ -3,9 +3,13 @@
from fastapi import APIRouter
from .myapp.controller import MyAppRouter
from .ai.controller import AIRouter
from .job.controller import JobRouter
ApplicationRouter = APIRouter(prefix="/application")
# 包含所有子路由
ApplicationRouter.include_router(MyAppRouter)
ApplicationRouter.include_router(MyAppRouter)
ApplicationRouter.include_router(AIRouter)
ApplicationRouter.include_router(JobRouter)
@@ -0,0 +1 @@
# -*- coding: utf-8 -*-
@@ -15,13 +15,13 @@ from .service import McpService
from .schema import McpCreateSchema, McpUpdateSchema, ChatQuerySchema
MCPRouter = APIRouter(route_class=OperationLogRoute, prefix="/mcp", tags=["MCP智能助手"])
AIRouter = APIRouter(route_class=OperationLogRoute, prefix="/ai", tags=["MCP智能助手"])
@MCPRouter.post("/chat", summary="智能对话", description="与MCP智能助手进行对话")
@AIRouter.post("/chat", summary="智能对话", description="与MCP智能助手进行对话")
async def chat_controller(
query: ChatQuerySchema,
auth: AuthSchema = Depends(AuthPermission(["ai:mcp:chat"]))
auth: AuthSchema = Depends(AuthPermission(["app:ai:chat"]))
) -> StreamingResponse:
"""智能对话接口"""
user_name = auth.user.name if auth.user else "未知用户"
@@ -40,21 +40,21 @@ async def chat_controller(
return StreamResponse(generate_response(), media_type="text/plain; charset=utf-8")
@MCPRouter.get("/detail/{id}", summary="获取 MCP 服务器详情", description="获取 MCP 服务器详情")
@AIRouter.get("/detail/{id}", summary="获取 MCP 服务器详情", description="获取 MCP 服务器详情")
async def detail_controller(
id: int = Path(..., description="MCP ID"),
auth: AuthSchema = Depends(AuthPermission(["ai:mcp:query"]))
auth: AuthSchema = Depends(AuthPermission(["app:ai:query"]))
) -> JSONResponse:
result_dict = await McpService.detail_service(auth=auth, id=id)
logger.info(f"获取 MCP 服务器详情成功 {id}")
return SuccessResponse(data=result_dict, msg="获取 MCP 服务器详情成功")
@MCPRouter.get("/list", summary="查询 MCP 服务器列表", description="查询 MCP 服务器列表")
@AIRouter.get("/list", summary="查询 MCP 服务器列表", description="查询 MCP 服务器列表")
async def list_controller(
page: PaginationQueryParam = Depends(),
search: McpQueryParam = Depends(),
auth: AuthSchema = Depends(AuthPermission(["ai:mcp:query"]))
auth: AuthSchema = Depends(AuthPermission(["app:ai:query"]))
) -> JSONResponse:
result_dict_list = await McpService.list_service(auth=auth, search=search, order_by=page.order_by)
result_dict = await PaginationService.paginate(data_list=result_dict_list, page_no=page.page_no, page_size=page.page_size)
@@ -62,38 +62,38 @@ async def list_controller(
return SuccessResponse(data=result_dict, msg="查询 MCP 服务器列表成功")
@MCPRouter.post("/create", summary="创建 MCP 服务器", description="创建 MCP 服务器")
@AIRouter.post("/create", summary="创建 MCP 服务器", description="创建 MCP 服务器")
async def create_controller(
data: McpCreateSchema,
auth: AuthSchema = Depends(AuthPermission(["ai:mcp:create"]))
auth: AuthSchema = Depends(AuthPermission(["app:ai:create"]))
) -> JSONResponse:
result_dict = await McpService.create_service(auth=auth, data=data)
logger.info(f"创建 MCP 服务器成功: {result_dict}")
return SuccessResponse(data=result_dict, msg="创建 MCP 服务器成功")
@MCPRouter.put("/update/{id}", summary="修改 MCP 服务器", description="修改 MCP 服务器")
@AIRouter.put("/update/{id}", summary="修改 MCP 服务器", description="修改 MCP 服务器")
async def update_controller(
data: McpUpdateSchema,
id: int = Path(..., description="MCP ID"),
auth: AuthSchema = Depends(AuthPermission(["ai:mcp:update"]))
auth: AuthSchema = Depends(AuthPermission(["app:ai:update"]))
) -> JSONResponse:
result_dict = await McpService.update_service(auth=auth, id=id, data=data)
logger.info(f"修改 MCP 服务器成功: {result_dict}")
return SuccessResponse(data=result_dict, msg="修改 MCP 服务器成功")
@MCPRouter.delete("/delete", summary="删除 MCP 服务器", description="删除 MCP 服务器")
@AIRouter.delete("/delete", summary="删除 MCP 服务器", description="删除 MCP 服务器")
async def delete_controller(
ids: list[int] = Body(..., description="ID列表"),
auth: AuthSchema = Depends(AuthPermission(["ai:mcp:delete"]))
auth: AuthSchema = Depends(AuthPermission(["app:ai:delete"]))
) -> JSONResponse:
await McpService.delete_service(auth=auth, ids=ids)
logger.info(f"删除 MCP 服务器成功: {ids}")
return SuccessResponse(msg="删除 MCP 服务器成功")
@MCPRouter.websocket("/ws/chat", name="WebSocket聊天")
@AIRouter.websocket("/ws/chat", name="WebSocket聊天")
async def websocket_chat_controller(
websocket: WebSocket,
):
@@ -12,7 +12,7 @@ class McpModel(CreatorMixin):
MCP 服务器表
"""
__tablename__ = 'ai_mcp'
__tablename__ = 'app_ai_mcp'
__table_args__ = ({'comment': 'MCP 服务器表'})
name: Mapped[str] = mapped_column(String(50), unique=True, comment='MCP 名称')
@@ -25,7 +25,7 @@ JobRouter = APIRouter(route_class=OperationLogRoute, prefix="/job", tags=["定
@JobRouter.get("/detail/{id}", summary="获取定时任务详情", description="获取定时任务详情")
async def get_obj_detail_controller(
id: int = Path(..., description="定时任务ID"),
auth: AuthSchema = Depends(AuthPermission(["monitor:job:query"]))
auth: AuthSchema = Depends(AuthPermission(["app:job:query"]))
) -> JSONResponse:
result_dict = await JobService.get_job_detail_service(id=id, auth=auth)
logger.info(f"获取定时任务详情成功 {id}")
@@ -35,7 +35,7 @@ async def get_obj_detail_controller(
async def get_obj_list_controller(
page: PaginationQueryParam = Depends(),
search: JobQueryParam = Depends(),
auth: AuthSchema = Depends(AuthPermission(["monitor:job:query"]))
auth: AuthSchema = Depends(AuthPermission(["app:job:query"]))
) -> JSONResponse:
result_dict_list = await JobService.get_job_list_service(auth=auth, search=search, order_by=page.order_by)
result_dict = await PaginationService.paginate(data_list= result_dict_list, page_no= page.page_no, page_size = page.page_size)
@@ -45,7 +45,7 @@ async def get_obj_list_controller(
@JobRouter.post("/create", summary="创建定时任务", description="创建定时任务")
async def create_obj_controller(
data: JobCreateSchema,
auth: AuthSchema = Depends(AuthPermission(["monitor:job:create"]))
auth: AuthSchema = Depends(AuthPermission(["app:job:create"]))
) -> JSONResponse:
result_dict = await JobService.create_job_service(auth=auth, data=data)
logger.info(f"创建定时任务成功: {result_dict}")
@@ -55,7 +55,7 @@ async def create_obj_controller(
async def update_obj_controller(
data: JobUpdateSchema,
id: int = Path(..., description="定时任务ID"),
auth: AuthSchema = Depends(AuthPermission(["monitor:job:update"]))
auth: AuthSchema = Depends(AuthPermission(["app:job:update"]))
) -> JSONResponse:
result_dict = await JobService.update_job_service(auth=auth, id=id, data=data)
logger.info(f"修改定时任务成功: {result_dict}")
@@ -64,7 +64,7 @@ async def update_obj_controller(
@JobRouter.delete("/delete", summary="删除定时任务", description="删除定时任务")
async def delete_obj_controller(
ids: list[int] = Body(..., description="ID列表"),
auth: AuthSchema = Depends(AuthPermission(["monitor:job:delete"]))
auth: AuthSchema = Depends(AuthPermission(["app:job:delete"]))
) -> JSONResponse:
await JobService.delete_job_service(auth=auth, ids=ids)
logger.info(f"删除定时任务成功: {ids}")
@@ -73,7 +73,7 @@ async def delete_obj_controller(
@JobRouter.post('/export', summary="导出定时任务", description="导出定时任务")
async def export_obj_list_controller(
search: JobQueryParam = Depends(),
auth: AuthSchema = Depends(AuthPermission(["monitor:job:export"]))
auth: AuthSchema = Depends(AuthPermission(["app:job:export"]))
) -> StreamingResponse:
# 获取全量数据
result_dict_list = await JobService.get_job_list_service(search=search, auth=auth)
@@ -90,7 +90,7 @@ async def export_obj_list_controller(
@JobRouter.delete("/clear", summary="清空定时任务日志", description="清空定时任务日志")
async def clear_obj_log_controller(
auth: AuthSchema = Depends(AuthPermission(["monitor:job:delete"]))
auth: AuthSchema = Depends(AuthPermission(["app:job:delete"]))
) -> JSONResponse:
await JobService.clear_job_service(auth=auth)
logger.info(f"清空定时任务成功")
@@ -100,13 +100,13 @@ async def clear_obj_log_controller(
async def option_obj_controller(
id: int = Body(..., description="定时任务ID"),
option: int = Body(..., description="操作类型 1: 暂停 2: 恢复 3: 重启"),
auth: AuthSchema = Depends(AuthPermission(["monitor:job:update"]))
auth: AuthSchema = Depends(AuthPermission(["app:job:update"]))
) -> JSONResponse:
await JobService.option_job_service(auth=auth, id=id, option=option)
logger.info(f"操作定时任务成功: {id}")
return SuccessResponse(msg="操作定时任务成功")
@JobRouter.get("/log", summary="获取定时任务日志", description="获取定时任务日志", dependencies=[Depends(AuthPermission(["monitor:job:query"]))])
@JobRouter.get("/log", summary="获取定时任务日志", description="获取定时任务日志", dependencies=[Depends(AuthPermission(["app:job:query"]))])
async def get_job_log_controller():
data = [
{
@@ -134,7 +134,7 @@ async def get_job_log_controller():
@JobRouter.get("/log/detail/{id}", summary="获取定时任务日志详情", description="获取定时任务日志详情")
async def get_job_log_detail_controller(
id: int = Path(..., description="定时任务日志ID"),
auth: AuthSchema = Depends(AuthPermission(["monitor:job:query"]))
auth: AuthSchema = Depends(AuthPermission(["app:job:query"]))
) -> JSONResponse:
result_dict = await JobLogService.get_job_log_detail_service(id=id, auth=auth)
logger.info(f"获取定时任务日志详情成功 {id}")
@@ -145,7 +145,7 @@ async def get_job_log_detail_controller(
async def get_job_log_list_controller(
page: PaginationQueryParam = Depends(),
search: JobLogQueryParam = Depends(),
auth: AuthSchema = Depends(AuthPermission(["monitor:job:query"]))
auth: AuthSchema = Depends(AuthPermission(["app:job:query"]))
) -> JSONResponse:
order_by = [{"create_time": "desc"}]
result_dict_list = await JobLogService.get_job_log_list_service(auth=auth, search=search, order_by=order_by)
@@ -157,7 +157,7 @@ async def get_job_log_list_controller(
@JobRouter.delete("/log/delete", summary="删除定时任务日志", description="删除定时任务日志")
async def delete_job_log_controller(
ids: list[int] = Body(..., description="ID列表"),
auth: AuthSchema = Depends(AuthPermission(["monitor:job:delete"]))
auth: AuthSchema = Depends(AuthPermission(["app:job:delete"]))
) -> JSONResponse:
await JobLogService.delete_job_log_service(auth=auth, ids=ids)
logger.info(f"删除定时任务日志成功: {ids}")
@@ -166,7 +166,7 @@ async def delete_job_log_controller(
@JobRouter.delete("/log/clear", summary="清空定时任务日志", description="清空定时任务日志")
async def clear_job_log_controller(
auth: AuthSchema = Depends(AuthPermission(["monitor:job:delete"]))
auth: AuthSchema = Depends(AuthPermission(["app:job:delete"]))
) -> JSONResponse:
await JobLogService.clear_job_log_service(auth=auth)
logger.info(f"清空定时任务日志成功")
@@ -176,7 +176,7 @@ async def clear_job_log_controller(
@JobRouter.post('/log/export', summary="导出定时任务日志", description="导出定时任务日志")
async def export_job_log_list_controller(
search: JobLogQueryParam = Depends(),
auth: AuthSchema = Depends(AuthPermission(["monitor:job:export"]))
auth: AuthSchema = Depends(AuthPermission(["app:job:export"]))
) -> StreamingResponse:
# 获取全量数据
result_dict_list = await JobLogService.get_job_log_list_service(search=search, auth=auth)
@@ -12,7 +12,7 @@ class JobModel(CreatorMixin):
"""
定时任务调度表
"""
__tablename__ = 'monitor_job'
__tablename__ = 'app_job'
__table_args__ = ({'comment': '定时任务调度表'})
name: Mapped[Optional[str]] = mapped_column(String(64), nullable=True, default='', comment='任务名称')
@@ -35,7 +35,7 @@ class JobLogModel(MappedBase):
"""
定时任务调度日志表
"""
__tablename__ = 'monitor_job_log'
__tablename__ = 'app_job_log'
__table_args__ = ({'comment': '定时任务调度日志表'})
id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True, comment='主键ID')
@@ -48,7 +48,7 @@ class JobLogModel(MappedBase):
job_trigger: Mapped[Optional[str]] = mapped_column(String(255),nullable=True,default='',comment='任务触发器')
job_message: Mapped[Optional[str]] = mapped_column(String(500),nullable=True,default='',comment='日志信息')
exception_info: Mapped[Optional[str]] = mapped_column(String(2000),nullable=True,default='',comment='异常信息')
job_id: Mapped[Optional[int]] = mapped_column(ForeignKey('monitor_job.id'), comment='任务ID')
job_id: Mapped[Optional[int]] = mapped_column(ForeignKey('app_job.id'), comment='任务ID')
status: Mapped[bool] = mapped_column(Boolean(), default=True, nullable=False, comment="是否启用(True:启用 False:禁用)")
create_time: Mapped[Optional[datetime]] = mapped_column(DateTime, nullable=True, default=datetime.now, comment='创建时间')
# 任务关联关系
@@ -24,7 +24,7 @@ MyAppRouter = APIRouter(route_class=OperationLogRoute, prefix="/myapp", tags=["
@MyAppRouter.get("/detail/{id}", summary="获取应用详情", description="获取应用详情")
async def get_obj_detail_controller(
id: int = Path(..., description="应用ID"),
auth: AuthSchema = Depends(AuthPermission(["application:myapp:query"]))
auth: AuthSchema = Depends(AuthPermission(["app:myapp:query"]))
) -> JSONResponse:
result_dict = await ApplicationService.detail_service(id=id, auth=auth)
logger.info(f"获取应用详情成功 {id}")
@@ -34,7 +34,7 @@ async def get_obj_detail_controller(
async def get_obj_list_controller(
page: PaginationQueryParam = Depends(),
search: ApplicationQueryParam = Depends(),
auth: AuthSchema = Depends(AuthPermission(["application:myapp:query"]))
auth: AuthSchema = Depends(AuthPermission(["app:myapp:query"]))
) -> JSONResponse:
result_dict_list = await ApplicationService.list_service(auth=auth, search=search, order_by=page.order_by)
result_dict = await PaginationService.paginate(data_list=result_dict_list, page_no=page.page_no, page_size=page.page_size)
@@ -44,7 +44,7 @@ async def get_obj_list_controller(
@MyAppRouter.post("/create", summary="创建应用", description="创建应用")
async def create_obj_controller(
data: ApplicationCreateSchema,
auth: AuthSchema = Depends(AuthPermission(["application:myapp:create"]))
auth: AuthSchema = Depends(AuthPermission(["app:myapp:create"]))
) -> JSONResponse:
result_dict = await ApplicationService.create_service(auth=auth, data=data)
logger.info(f"创建应用成功: {result_dict}")
@@ -54,7 +54,7 @@ async def create_obj_controller(
async def update_obj_controller(
data: ApplicationUpdateSchema,
id: int = Path(..., description="应用ID"),
auth: AuthSchema = Depends(AuthPermission(["application:myapp:update"]))
auth: AuthSchema = Depends(AuthPermission(["app:myapp:update"]))
) -> JSONResponse:
result_dict = await ApplicationService.update_service(auth=auth, id=id, data=data)
logger.info(f"修改应用成功: {result_dict}")
@@ -63,7 +63,7 @@ async def update_obj_controller(
@MyAppRouter.delete("/delete", summary="删除应用", description="删除应用")
async def delete_obj_controller(
ids: list[int] = Body(..., description="ID列表"),
auth: AuthSchema = Depends(AuthPermission(["application:myapp:delete"]))
auth: AuthSchema = Depends(AuthPermission(["app:myapp:delete"]))
) -> JSONResponse:
await ApplicationService.delete_service(auth=auth, ids=ids)
logger.info(f"删除应用成功: {ids}")
@@ -72,7 +72,7 @@ async def delete_obj_controller(
@MyAppRouter.patch("/available/setting", summary="批量修改应用状态", description="批量修改应用状态")
async def batch_set_available_obj_controller(
data: BatchSetAvailable,
auth: AuthSchema = Depends(AuthPermission(["application:myapp:patch"]))
auth: AuthSchema = Depends(AuthPermission(["app:myapp:patch"]))
) -> JSONResponse:
await ApplicationService.set_available_service(auth=auth, data=data)
logger.info(f"批量修改应用状态成功: {data.ids}")
@@ -11,7 +11,7 @@ class ApplicationModel(CreatorMixin):
应用系统表 - 用于管理分系统和外部应用
"""
__tablename__ = 'application_myapp'
__tablename__ = 'app_myapp'
__table_args__ = ({'comment': '应用系统表'})
# 基本信息(必备字段)
@@ -0,0 +1,3 @@
# -*- coding: utf-8 -*-
# 工作流接口-开发中...
@@ -1,11 +0,0 @@
# -*- coding: utf-8 -*-
from fastapi import APIRouter
from .demo.controller import DemoRouter
ExampleRouter = APIRouter(prefix="/example")
# 包含所有子路由
ExampleRouter.include_router(DemoRouter)
@@ -2,9 +2,11 @@
from fastapi import APIRouter
from .gencode.controller import GenRouter
from .demo.controller import DemoRouter
# 创建代码生成模块路由
GeneratorRouter = APIRouter(prefix="/generator")
# 包含代码生成路由
GeneratorRouter.include_router(GenRouter)
GeneratorRouter.include_router(GenRouter)
GeneratorRouter.include_router(DemoRouter)
@@ -0,0 +1,2 @@
# -*- coding: utf-8 -*-
@@ -26,7 +26,7 @@ DemoRouter = APIRouter(route_class=OperationLogRoute, prefix="/demo", tags=["示
@DemoRouter.get("/detail/{id}", summary="获取示例详情", description="获取示例详情")
async def get_obj_detail_controller(
id: int = Path(..., description="示例ID"),
auth: AuthSchema = Depends(AuthPermission(["demo:example:query"]))
auth: AuthSchema = Depends(AuthPermission(["generator:demo:query"]))
) -> JSONResponse:
result_dict = await DemoService.detail_service(id=id, auth=auth)
logger.info(f"获取示例详情成功 {id}")
@@ -36,7 +36,7 @@ async def get_obj_detail_controller(
async def get_obj_list_controller(
page: PaginationQueryParam = Depends(),
search: DemoQueryParam = Depends(),
auth: AuthSchema = Depends(AuthPermission(["demo:example:query"]))
auth: AuthSchema = Depends(AuthPermission(["generator:demo:query"]))
) -> JSONResponse:
result_dict_list = await DemoService.list_service(auth=auth, search=search, order_by=page.order_by)
result_dict = await PaginationService.paginate(data_list=result_dict_list, page_no=page.page_no, page_size=page.page_size)
@@ -46,7 +46,7 @@ async def get_obj_list_controller(
@DemoRouter.post("/create", summary="创建示例", description="创建示例")
async def create_obj_controller(
data: DemoCreateSchema,
auth: AuthSchema = Depends(AuthPermission(["demo:example:create"]))
auth: AuthSchema = Depends(AuthPermission(["generator:demo:create"]))
) -> JSONResponse:
result_dict = await DemoService.create_service(auth=auth, data=data)
logger.info(f"创建示例成功: {result_dict.get('name')}")
@@ -56,7 +56,7 @@ async def create_obj_controller(
async def update_obj_controller(
data: DemoUpdateSchema,
id: int = Path(..., description="示例ID"),
auth: AuthSchema = Depends(AuthPermission(["demo:example:update"]))
auth: AuthSchema = Depends(AuthPermission(["generator:demo:update"]))
) -> JSONResponse:
result_dict = await DemoService.update_service(auth=auth, id=id, data=data)
logger.info(f"修改示例成功: {result_dict.get('name')}")
@@ -65,7 +65,7 @@ async def update_obj_controller(
@DemoRouter.delete("/delete", summary="删除示例", description="删除示例")
async def delete_obj_controller(
ids: list[int] = Body(..., description="ID列表"),
auth: AuthSchema = Depends(AuthPermission(["demo:example:delete"]))
auth: AuthSchema = Depends(AuthPermission(["generator:demo:delete"]))
) -> JSONResponse:
await DemoService.delete_service(auth=auth, ids=ids)
logger.info(f"删除示例成功: {ids}")
@@ -74,7 +74,7 @@ async def delete_obj_controller(
@DemoRouter.patch("/available/setting", summary="批量修改示例状态", description="批量修改示例状态")
async def batch_set_available_obj_controller(
data: BatchSetAvailable,
auth: AuthSchema = Depends(AuthPermission(["demo:example:patch"]))
auth: AuthSchema = Depends(AuthPermission(["generator:demo:patch"]))
) -> JSONResponse:
await DemoService.set_available_service(auth=auth, data=data)
logger.info(f"批量修改示例状态成功: {data.ids}")
@@ -83,7 +83,7 @@ async def batch_set_available_obj_controller(
@DemoRouter.post('/export', summary="导出示例", description="导出示例")
async def export_obj_list_controller(
search: DemoQueryParam = Depends(),
auth: AuthSchema = Depends(AuthPermission(["demo:example:export"]))
auth: AuthSchema = Depends(AuthPermission(["generator:demo:export"]))
) -> StreamingResponse:
# 获取全量数据
result_dict_list = await DemoService.list_service(search=search, auth=auth)
@@ -101,13 +101,13 @@ async def export_obj_list_controller(
@DemoRouter.post('/import', summary="导入示例", description="导入示例")
async def import_obj_list_controller(
file: UploadFile,
auth: AuthSchema = Depends(AuthPermission(["demo:example:import"]))
auth: AuthSchema = Depends(AuthPermission(["generator:demo:import"]))
) -> JSONResponse:
batch_import_result = await DemoService.batch_import_service(file=file, auth=auth, update_support=True)
logger.info(f"导入示例成功: {batch_import_result}")
return SuccessResponse(data=batch_import_result, msg="导入示例成功")
@DemoRouter.post('/download/template', summary="获取示例导入模板", description="获取示例导入模板", dependencies=[Depends(AuthPermission(["demo:example:download"]))])
@DemoRouter.post('/download/template', summary="获取示例导入模板", description="获取示例导入模板", dependencies=[Depends(AuthPermission(["generator:demo:download"]))])
async def export_obj_template_controller() -> StreamingResponse:
example_import_template_result = await DemoService.import_template_download_service()
logger.info('获取示例导入模板成功')
@@ -11,7 +11,7 @@ class DemoModel(CreatorMixin):
"""
示例表
"""
__tablename__ = 'example_demo'
__tablename__ = 'gen_demo'
__table_args__ = ({'comment': '示例表'})
name: Mapped[Optional[str]] = mapped_column(String(64), nullable=True, default='', comment='名称')
@@ -3,7 +3,6 @@
from fastapi import APIRouter
from .cache.controller import CacheRouter
from .job.controller import JobRouter
from .online.controller import OnlineRouter
from .server.controller import ServerRouter
from .resource.controller import ResourceRouter
@@ -13,7 +12,6 @@ MonitorRouter = APIRouter(prefix="/monitor")
# 包含所有子路由
MonitorRouter.include_router(CacheRouter)
MonitorRouter.include_router(JobRouter)
MonitorRouter.include_router(OnlineRouter)
MonitorRouter.include_router(ServerRouter)
MonitorRouter.include_router(ResourceRouter)