56 lines
1.8 KiB
Python
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)
|