grading-agent / routes.py
Hammad712's picture
Update routes.py
3eb99d7 verified
from fastapi import APIRouter, FastAPI, UploadFile, File, HTTPException
import tempfile
from services import init_genai, grade_all_students
router = APIRouter()
@router.post('/grade')
async def grade(
answer_key: UploadFile = File(...),
student_pdf: UploadFile = File(...)
):
"""
Single endpoint: initializes GenAI, grades students against the answer key,
and returns the result cards.
"""
try:
# Initialize GenAI client with provided API key
init_genai()
# Save uploaded PDFs to temp files
with tempfile.NamedTemporaryFile(suffix=answer_key.filename, delete=False) as akf:
akf.write(await answer_key.read())
ak_path = akf.name
with tempfile.NamedTemporaryFile(suffix=student_pdf.filename, delete=False) as spf:
spf.write(await student_pdf.read())
sp_path = spf.name
# Grade all students and return results
results = grade_all_students(ak_path, sp_path)
return results
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))