Files
fund-tracer/backend/app/api/v1/assessments.py
2026-03-11 16:28:04 +08:00

56 lines
1.8 KiB
Python

from uuid import UUID
from datetime import datetime, timezone
from fastapi import APIRouter, Depends, Query, HTTPException
from sqlalchemy.ext.asyncio import AsyncSession
from app.core.database import get_db
from app.models.assessment import ConfidenceLevel
from app.repositories.assessment_repo import AssessmentRepository
from app.schemas.assessment import (
AssessmentOut,
AssessmentListOut,
ReviewSubmit,
InquirySuggestionOut,
)
from app.services.assessment_service import generate_inquiry_suggestions
router = APIRouter()
@router.get("/cases/{case_id}/assessments", response_model=AssessmentListOut)
async def list_assessments(
case_id: UUID,
confidence_level: ConfidenceLevel | None = None,
db: AsyncSession = Depends(get_db),
):
repo = AssessmentRepository(db)
items, total = await repo.list_by_case(case_id, confidence_level=confidence_level)
return AssessmentListOut(items=items, total=total)
@router.post("/assessments/{assessment_id}/review", response_model=AssessmentOut)
async def review_assessment(
assessment_id: UUID,
body: ReviewSubmit,
db: AsyncSession = Depends(get_db),
):
repo = AssessmentRepository(db)
assessment = await repo.get(assessment_id)
if not assessment:
raise HTTPException(404, "认定记录不存在")
assessment = await repo.update(assessment, {
"review_status": body.review_status,
"review_note": body.review_note,
"reviewed_by": body.reviewed_by,
"reviewed_at": datetime.now(timezone.utc),
})
return assessment
@router.get("/cases/{case_id}/inquiry-suggestions", response_model=InquirySuggestionOut)
async def get_inquiry_suggestions(case_id: UUID, db: AsyncSession = Depends(get_db)):
suggestions = await generate_inquiry_suggestions(case_id, db)
return InquirySuggestionOut(suggestions=suggestions)