Files
ai-contract-platform/backend/app/api/quality_evals.py
T

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))