from fastapi import APIRouter, Depends, HTTPException, Request from sqlalchemy.orm import Session from typing import List from ..database import get_db from ..models import LLMConfig from ..schemas import LLMConfigBase, LLMConfigResponse from .auth import get_current_admin router = APIRouter(prefix="/api/admin/llmconfigs", tags=["admin"]) @router.get("", response_model=List[LLMConfigResponse]) def list_llm_configs( request: Request, db: Session = Depends(get_db), admin_user = Depends(get_current_admin) ): """获取 LLM 配置列表""" configs = db.query(LLMConfig).all() return [LLMConfigResponse.model_validate(c) for c in configs] @router.get("/{config_id}", response_model=LLMConfigResponse) def get_llm_config( config_id: int, request: Request, db: Session = Depends(get_db), admin_user = Depends(get_current_admin) ): """获取单个 LLM 配置详情""" config = db.query(LLMConfig).filter(LLMConfig.id == config_id).first() if not config: raise HTTPException(status_code=404, detail="配置不存在") return config @router.post("", response_model=LLMConfigResponse) def create_llm_config( config_data: LLMConfigBase, request: Request, db: Session = Depends(get_db), admin_user = Depends(get_current_admin) ): """创建 LLM 配置""" config = LLMConfig(**config_data.model_dump()) db.add(config) db.commit() db.refresh(config) return config @router.put("/{config_id}", response_model=LLMConfigResponse) def update_llm_config( config_id: int, config_update: LLMConfigBase, request: Request, db: Session = Depends(get_db), admin_user = Depends(get_current_admin) ): """更新 LLM 配置""" config = db.query(LLMConfig).filter(LLMConfig.id == config_id).first() if not config: raise HTTPException(status_code=404, detail="配置不存在") update_data = config_update.model_dump(exclude_unset=True) for field, value in update_data.items(): setattr(config, field, value) db.commit() db.refresh(config) return config @router.delete("/{config_id}") def delete_llm_config( config_id: int, request: Request, db: Session = Depends(get_db), admin_user = Depends(get_current_admin) ): """删除 LLM 配置""" config = db.query(LLMConfig).filter(LLMConfig.id == config_id).first() if not config: raise HTTPException(status_code=404, detail="配置不存在") db.delete(config) db.commit() return {"message": "删除成功"}