Files

67 lines
3.7 KiB
Python

"""提示词模板控制器。"""
from fastapi import Depends, Query
from fastapi.responses import JSONResponse
from fastapi_common.fastapi_common_security.security import verify_access_token
from fastapi_common.fastapi_common_web.controller import BaseController
from fastapi_modules.fastapi_leaudit.domian.Dto.promptTemplateDto import PromptTemplateCreateDTO, PromptTemplateUpdateDTO
from fastapi_modules.fastapi_leaudit.services.promptTemplateService import IPromptTemplateService
from fastapi_modules.fastapi_leaudit.services.impl.promptTemplateServiceImpl import PromptTemplateServiceImpl
class PromptTemplateController(BaseController):
def __init__(self):
super().__init__(prefix='/v3/prompt-templates', tags=['提示词模板'])
self.Service: IPromptTemplateService = PromptTemplateServiceImpl()
@self.router.get('')
async def ListPromptTemplates(
search: str | None = Query(None, description='名称/编码搜索'),
template_type: str | None = Query(None, description='模板类型,逗号分隔'),
status: int | None = Query(None, description='状态'),
page: int = Query(1, ge=1),
page_size: int = Query(20, ge=1, le=500),
payload: dict = Depends(verify_access_token),
):
_ = payload
template_types = [item.strip() for item in str(template_type or '').split(',') if item.strip()]
data = await self.Service.ListTemplates(search, template_types or None, status, page, page_size)
return JSONResponse(status_code=200, content={'code': 200, 'message': 'ok', 'data': data.model_dump()})
@self.router.get('/types')
async def GetPromptTemplateTypes(payload: dict = Depends(verify_access_token)):
_ = payload
data = await self.Service.GetTemplateTypes()
return JSONResponse(status_code=200, content={'code': 200, 'message': 'ok', 'data': data.model_dump()})
@self.router.get('/{TemplateId}')
async def GetPromptTemplate(TemplateId: int, payload: dict = Depends(verify_access_token)):
_ = payload
data = await self.Service.GetTemplate(TemplateId)
return JSONResponse(status_code=200, content={'code': 200, 'message': 'ok', 'data': data.model_dump()})
@self.router.post('')
async def CreatePromptTemplate(body: PromptTemplateCreateDTO, payload: dict = Depends(verify_access_token)):
_ = payload
data = await self.Service.CreateTemplate(body)
return JSONResponse(status_code=200, content={'code': 200, 'message': 'ok', 'data': data.model_dump()})
@self.router.put('/{TemplateId}')
async def UpdatePromptTemplate(TemplateId: int, body: PromptTemplateUpdateDTO, payload: dict = Depends(verify_access_token)):
_ = payload
data = await self.Service.UpdateTemplate(TemplateId, body)
return JSONResponse(status_code=200, content={'code': 200, 'message': 'ok', 'data': data.model_dump()})
@self.router.delete('/{TemplateId}')
async def DeletePromptTemplate(TemplateId: int, payload: dict = Depends(verify_access_token)):
_ = payload
await self.Service.DeleteTemplate(TemplateId)
return JSONResponse(status_code=200, content={'code': 200, 'message': 'ok', 'data': True})
@self.router.post('/{TemplateId}/duplicate')
async def DuplicatePromptTemplate(TemplateId: int, new_code: str | None = Query(None), payload: dict = Depends(verify_access_token)):
_ = payload
data = await self.Service.DuplicateTemplate(TemplateId, new_code)
return JSONResponse(status_code=200, content={'code': 200, 'message': 'ok', 'data': data.model_dump()})