67 lines
3.7 KiB
Python
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()})
|