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)