Initial commit
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
from fastapi import APIRouter, UploadFile, File, HTTPException, Form
|
||||
from typing import Dict
|
||||
import json
|
||||
from pathlib import Path
|
||||
import shutil
|
||||
import tempfile
|
||||
from modules.test_analyzer import TestAnalyzer, TestAnalysis
|
||||
from modules.pdf_utils import PDFUtils
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@router.post("/analyze", response_model=TestAnalysis)
|
||||
async def analyze_test(
|
||||
test_file: UploadFile = File(...),
|
||||
marks_data: str = Form(...),
|
||||
api_key: str = Form(...),
|
||||
mode: str = Form('detailed')
|
||||
):
|
||||
"""
|
||||
Analyze a test PDF and generate feedback based on marks data
|
||||
"""
|
||||
try:
|
||||
print(f"Received request - Mode: {mode}")
|
||||
marks_data_dict = json.loads(marks_data)
|
||||
|
||||
with tempfile.TemporaryDirectory() as temp_dir:
|
||||
temp_file = Path(temp_dir) / test_file.filename
|
||||
with temp_file.open("wb") as buffer:
|
||||
shutil.copyfileobj(test_file.file, buffer)
|
||||
|
||||
print("File saved, initializing analyzer...")
|
||||
analyzer = TestAnalyzer(api_key=api_key)
|
||||
|
||||
print("Extracting PDF content...")
|
||||
pdf_utils = PDFUtils()
|
||||
pdf_content = pdf_utils.extract_text_from_pdf(temp_file)
|
||||
|
||||
print("Analyzing content...")
|
||||
analysis = analyzer.analyze_test(pdf_content, marks_data_dict, mode)
|
||||
|
||||
print("Analysis complete")
|
||||
return analysis
|
||||
|
||||
except json.JSONDecodeError as e:
|
||||
print(f"JSON decode error: {str(e)}")
|
||||
raise HTTPException(status_code=422, detail=f"Invalid marks_data JSON format: {str(e)}")
|
||||
except Exception as e:
|
||||
print(f"Error in analyze_test: {str(e)}")
|
||||
raise HTTPException(status_code=500, detail=str(e))
|
||||
Reference in New Issue
Block a user