77 lines
2.9 KiB
Python
77 lines
2.9 KiB
Python
from fastapi import APIRouter, Depends, Query
|
|
|
|
from app.core.exception import SuccessResponse
|
|
from app.module.shared.schema import StandardResponse, PaginatedData
|
|
from app.module.system.schema.models import (
|
|
CreateModelRequest,
|
|
QueryModelRequest,
|
|
ModelsResponse,
|
|
ProviderItem,
|
|
ModelType,
|
|
)
|
|
from app.module.system.service.models_service import ModelsService
|
|
|
|
router = APIRouter(prefix="/models", tags=["models"])
|
|
|
|
|
|
@router.get("/providers", response_model=StandardResponse[list[ProviderItem]])
|
|
async def get_providers(svc: ModelsService = Depends()):
|
|
"""获取厂商列表,与 Java GET /models/providers 一致。"""
|
|
data = await svc.get_providers()
|
|
return SuccessResponse(data=data)
|
|
|
|
|
|
@router.get("/list", response_model=StandardResponse[PaginatedData[ModelsResponse]])
|
|
async def get_models(
|
|
page: int = Query(0, ge=0, description="页码,从 0 开始"),
|
|
size: int = Query(20, gt=0, le=2000, description="每页大小"),
|
|
provider: str | None = Query(None, description="模型提供商"),
|
|
type: ModelType | None = Query(None, description="模型类型"),
|
|
isEnabled: bool | None = Query(None, description="是否启用"),
|
|
isDefault: bool | None = Query(None, description="是否默认"),
|
|
svc: ModelsService = Depends(),
|
|
):
|
|
"""分页查询模型列表,与 Java GET /models/list 一致。"""
|
|
q = QueryModelRequest(
|
|
page=page,
|
|
size=size,
|
|
provider=provider,
|
|
type=type,
|
|
isEnabled=isEnabled,
|
|
isDefault=isDefault,
|
|
)
|
|
data = await svc.get_models(q)
|
|
return SuccessResponse(data=data)
|
|
|
|
|
|
@router.post("/create", response_model=StandardResponse[ModelsResponse])
|
|
async def create_model(req: CreateModelRequest, svc: ModelsService = Depends()):
|
|
"""创建模型配置,与 Java POST /models/create 一致。"""
|
|
data = await svc.create_model(req)
|
|
return SuccessResponse(data=data)
|
|
|
|
|
|
@router.get("/{model_id}", response_model=StandardResponse[ModelsResponse])
|
|
async def get_model_detail(model_id: str, svc: ModelsService = Depends()):
|
|
"""获取模型详情,与 Java GET /models/{modelId} 一致。"""
|
|
data = await svc.get_model_detail(model_id)
|
|
return SuccessResponse(data=data)
|
|
|
|
|
|
@router.put("/{model_id}", response_model=StandardResponse[ModelsResponse])
|
|
async def update_model(
|
|
model_id: str,
|
|
req: CreateModelRequest,
|
|
svc: ModelsService = Depends(),
|
|
):
|
|
"""更新模型配置,与 Java PUT /models/{modelId} 一致。"""
|
|
data = await svc.update_model(model_id, req)
|
|
return SuccessResponse(data=data)
|
|
|
|
|
|
@router.delete("/{model_id}", response_model=StandardResponse[None])
|
|
async def delete_model(model_id: str, svc: ModelsService = Depends()):
|
|
"""删除模型配置,与 Java DELETE /models/{modelId} 一致。"""
|
|
await svc.delete_model(model_id)
|
|
return SuccessResponse(data=None)
|