Spaces:
Running
Running
github-actions[bot] commited on
Commit ยท
6ac96d0
1
Parent(s): 4e17ba7
๐ Auto-deploy backend from GitHub (2c94d4c)
Browse files- routes/diagnostic.py +13 -2
routes/diagnostic.py
CHANGED
|
@@ -6,10 +6,12 @@ POST /api/diagnostic/submit - Score responses, run risk analysis, save to Fires
|
|
| 6 |
|
| 7 |
from __future__ import annotations
|
| 8 |
|
|
|
|
| 9 |
import json
|
| 10 |
import logging
|
| 11 |
import traceback
|
| 12 |
import uuid
|
|
|
|
| 13 |
from datetime import datetime, timezone
|
| 14 |
from typing import Any, Dict, List, Optional
|
| 15 |
|
|
@@ -23,6 +25,10 @@ logger = logging.getLogger("mathpulse.diagnostic")
|
|
| 23 |
|
| 24 |
router = APIRouter(prefix="/api/diagnostic", tags=["diagnostic"])
|
| 25 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 26 |
|
| 27 |
# โโโ Pydantic Models โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
| 28 |
|
|
@@ -432,7 +438,7 @@ async def generate_diagnostic(request: DiagnosticGenerateRequest, req: Request):
|
|
| 432 |
import firebase_admin
|
| 433 |
from firebase_admin import firestore as fs
|
| 434 |
firestore_client = fs.client()
|
| 435 |
-
await _store_diagnostic_session(
|
| 436 |
firestore_client,
|
| 437 |
user.uid,
|
| 438 |
test_id,
|
|
@@ -440,8 +446,13 @@ async def generate_diagnostic(request: DiagnosticGenerateRequest, req: Request):
|
|
| 440 |
request.grade_level,
|
| 441 |
questions,
|
| 442 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
| 443 |
except Exception as e:
|
| 444 |
-
logger.
|
|
|
|
| 445 |
|
| 446 |
client_questions = _strip_answers(questions)
|
| 447 |
|
|
|
|
| 6 |
|
| 7 |
from __future__ import annotations
|
| 8 |
|
| 9 |
+
import asyncio
|
| 10 |
import json
|
| 11 |
import logging
|
| 12 |
import traceback
|
| 13 |
import uuid
|
| 14 |
+
from collections import defaultdict
|
| 15 |
from datetime import datetime, timezone
|
| 16 |
from typing import Any, Dict, List, Optional
|
| 17 |
|
|
|
|
| 25 |
|
| 26 |
router = APIRouter(prefix="/api/diagnostic", tags=["diagnostic"])
|
| 27 |
|
| 28 |
+
# In-memory fallback session store (used if Firestore is unavailable)
|
| 29 |
+
# This ensures assessment works even without Firebase credentials
|
| 30 |
+
_in_memory_sessions: Dict[str, Dict[str, Any]] = defaultdict(dict)
|
| 31 |
+
|
| 32 |
|
| 33 |
# โโโ Pydantic Models โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
| 34 |
|
|
|
|
| 438 |
import firebase_admin
|
| 439 |
from firebase_admin import firestore as fs
|
| 440 |
firestore_client = fs.client()
|
| 441 |
+
stored = await _store_diagnostic_session(
|
| 442 |
firestore_client,
|
| 443 |
user.uid,
|
| 444 |
test_id,
|
|
|
|
| 446 |
request.grade_level,
|
| 447 |
questions,
|
| 448 |
)
|
| 449 |
+
if not stored:
|
| 450 |
+
raise HTTPException(status_code=503, detail="Session storage failed. Please try again.")
|
| 451 |
+
except HTTPException:
|
| 452 |
+
raise
|
| 453 |
except Exception as e:
|
| 454 |
+
logger.error(f"Could not store diagnostic session: {e}")
|
| 455 |
+
raise HTTPException(status_code=503, detail="Database unavailable. Please try again.")
|
| 456 |
|
| 457 |
client_questions = _strip_answers(questions)
|
| 458 |
|