| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- """标注平台 API 路由。"""
- from fastapi import APIRouter, Query, HTTPException
- from app.schemas.annotation_platform import (
- AnnotationProjectListResponse,
- AnnotationProjectDetailResponse,
- ProjectImportResponse,
- )
- from app.services import annotation_platform_service
- router = APIRouter()
- @router.get("/projects", response_model=AnnotationProjectListResponse)
- async def get_projects(
- page: int = Query(default=1, ge=1),
- page_size: int = Query(default=20, ge=1, le=100),
- name: str | None = Query(default=None),
- type: str | None = Query(default=None),
- status: str | None = Query(default=None),
- ):
- """获取标注平台项目列表。"""
- try:
- data = await annotation_platform_service.list_projects(
- page, page_size, name=name, project_type=type, status=status,
- )
- return AnnotationProjectListResponse(**data)
- except ValueError as e:
- raise HTTPException(status_code=503, detail=str(e))
- except Exception as e:
- raise HTTPException(status_code=502, detail=f"标注平台请求失败: {str(e)}")
- @router.get("/projects/{project_id}", response_model=AnnotationProjectDetailResponse)
- async def get_project_detail(project_id: str):
- """获取项目详情。"""
- try:
- data = await annotation_platform_service.get_project_detail(project_id)
- return AnnotationProjectDetailResponse(**data)
- except ValueError as e:
- raise HTTPException(status_code=503, detail=str(e))
- except Exception as e:
- raise HTTPException(status_code=502, detail=f"标注平台请求失败: {str(e)}")
- @router.post("/projects/{project_id}/import", response_model=ProjectImportResponse)
- async def import_project(
- project_id: str,
- project_name: str = Query(default=""),
- format: str = Query(default="alpaca"),
- ):
- """从标注平台导出项目数据并导入为训练数据集。"""
- try:
- data = await annotation_platform_service.import_project_dataset(
- project_id, project_name=project_name, format=format,
- )
- return ProjectImportResponse(**data)
- except ValueError as e:
- raise HTTPException(status_code=503, detail=str(e))
- except Exception as e:
- raise HTTPException(status_code=502, detail=f"标注平台导入失败: {str(e)}")
|