first commit
This commit is contained in:
55
backend/app/api/v1/assessments.py
Normal file
55
backend/app/api/v1/assessments.py
Normal file
@@ -0,0 +1,55 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user