sample_center.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. """样本中心 API 路由。"""
  2. from fastapi import APIRouter, Query, HTTPException
  3. from app.schemas.sample_center import (
  4. KnowledgeBaseListResponse,
  5. KnowledgeBaseDetailResponse,
  6. KbImportResponse,
  7. )
  8. from app.services import sample_center_service
  9. router = APIRouter()
  10. @router.get("/knowledge-bases", response_model=KnowledgeBaseListResponse)
  11. async def get_knowledge_bases(
  12. page: int = Query(default=1, ge=1),
  13. page_size: int = Query(default=20, ge=1, le=100),
  14. ):
  15. """获取样本中心知识库列表。"""
  16. try:
  17. data = await sample_center_service.list_knowledge_bases(page, page_size)
  18. return KnowledgeBaseListResponse(**data)
  19. except ValueError as e:
  20. raise HTTPException(status_code=503, detail=str(e))
  21. except Exception as e:
  22. raise HTTPException(status_code=502, detail=f"样本中心请求失败: {str(e)}")
  23. @router.get("/knowledge-bases/{kb_id}", response_model=KnowledgeBaseDetailResponse)
  24. async def get_knowledge_base_detail(kb_id: str):
  25. """获取知识库详情。"""
  26. try:
  27. data = await sample_center_service.get_knowledge_base_detail(kb_id)
  28. return KnowledgeBaseDetailResponse(**data)
  29. except ValueError as e:
  30. raise HTTPException(status_code=503, detail=str(e))
  31. except Exception as e:
  32. raise HTTPException(status_code=502, detail=f"样本中心请求失败: {str(e)}")
  33. @router.post("/knowledge-bases/{kb_id}/import", response_model=KbImportResponse)
  34. async def import_from_knowledge_base(kb_id: str, kb_name: str = ""):
  35. """从知识库导入数据到训练数据集。"""
  36. try:
  37. data = await sample_center_service.import_kb_to_dataset(kb_id, kb_name)
  38. return KbImportResponse(**data)
  39. except ValueError as e:
  40. raise HTTPException(status_code=503, detail=str(e))
  41. except Exception as e:
  42. raise HTTPException(status_code=502, detail=f"样本中心请求失败: {str(e)}")