github-actions[bot] commited on
Commit
6ac96d0
ยท
1 Parent(s): 4e17ba7

๐Ÿš€ Auto-deploy backend from GitHub (2c94d4c)

Browse files
Files changed (1) hide show
  1. 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.warning(f"Could not store diagnostic session: {e}")
 
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