61 lines
1.8 KiB
Python
61 lines
1.8 KiB
Python
from typing import Optional
|
|
|
|
from fastapi import APIRouter, Depends, Header
|
|
from sqlalchemy.orm import Session
|
|
|
|
from app.core.response import success_response
|
|
from app.db import get_db_session
|
|
from app.services.auth_service import AuthService
|
|
from app.services.quality_eval_service import QualityEvalService
|
|
|
|
router = APIRouter(prefix="/quality-evals", tags=["quality-evals"])
|
|
ROUTE_PERMISSION_SCOPE = "quality_evals"
|
|
ROUTE_PERMISSION_ACTIONS = {
|
|
"list": "quality_evals:list",
|
|
"detail": "quality_evals:detail",
|
|
}
|
|
|
|
|
|
def get_quality_eval_service(db: Session = Depends(get_db_session)) -> QualityEvalService:
|
|
return QualityEvalService(db)
|
|
|
|
|
|
def require_current_user(
|
|
authorization: Optional[str] = Header(default=None),
|
|
db: Session = Depends(get_db_session),
|
|
):
|
|
return AuthService(db).require_current_user(authorization)
|
|
|
|
|
|
@router.get("/runs")
|
|
def list_quality_eval_runs(
|
|
page: int = 1,
|
|
page_size: int = 20,
|
|
source_kind: Optional[str] = None,
|
|
eval_domain: Optional[str] = None,
|
|
subject_type: Optional[str] = None,
|
|
status_filter: Optional[str] = None,
|
|
quality_eval_service: QualityEvalService = Depends(get_quality_eval_service),
|
|
current_user: dict = Depends(require_current_user),
|
|
):
|
|
return success_response(
|
|
quality_eval_service.list_quality_eval_runs(
|
|
current_user,
|
|
page,
|
|
page_size,
|
|
source_kind=source_kind,
|
|
eval_domain=eval_domain,
|
|
subject_type=subject_type,
|
|
status_filter=status_filter,
|
|
)
|
|
)
|
|
|
|
|
|
@router.get("/runs/{run_id}")
|
|
def get_quality_eval_run_detail(
|
|
run_id: str,
|
|
quality_eval_service: QualityEvalService = Depends(get_quality_eval_service),
|
|
current_user: dict = Depends(require_current_user),
|
|
):
|
|
return success_response(quality_eval_service.get_quality_eval_run_detail(current_user, run_id))
|