github-actions[bot]
deploy: backend from f3c9d94
cfdd165
|
Raw History Blame Contribute Delete
2.03 kB

backend/services/

Responsibility

Reusable backend domain and infrastructure services for Firestore persistence, model inference, analytics, risk, memory, and communications.

Design

  • Service modules expose focused functions/classes rather than HTTP routers; route modules call them for domain work.
  • inference_client and ai_client centralize model configuration and DeepSeek access; wri_service and intervention_engine own risk/intervention logic.
  • Firestore-backed modules obtain clients at the service boundary; examples include curriculum_service, memory_service, and class_analytics_engine.
  • Other key symbols include ClassAnalyticsEngine, DeterministicResponseCache, EmailService, QuestionBankService functions, and UserProvisioningService.

Flow

  • /api/curriculum/... โ†’ curriculum_routes โ†’ curriculum_service.get_subjects/get_topics โ†’ Firestore.
  • /api/analytics/class/{class_id} โ†’ class_analytics_routes โ†’ get_class_analytics_engine() / ClassAnalyticsEngine โ†’ Firestore and WRI classifications.
  • /api/risk/compute โ†’ risk_router.compute_risk_endpoint โ†’ WRI service โ†’ risk response; batch route delegates per-student calculation.
  • Chat and generation routes โ†’ inference_client / ai_client.get_deepseek_client โ†’ DeepSeek; memory_service persists chat turns and summaries in Firestore.
  • Quiz Battle routes โ†’ question_bank_service.get_questions_for_battle/cache_session_questions โ†’ Firestore question bank and session cache.
  • Class-record upload/report routes โ†’ wri_service and inference client โ†’ Firestore records and computed insights.

Integration

  • Called primarily by backend/routes/; selected services are also used by backend/main.py and RAG ingestion.
  • Firebase Admin/Google Firestore are the persistence boundary; model calls pass through the shared inference/AI clients.
  • RAG retrieval/chunk storage lives in backend/rag/; services consume RAG results where needed rather than owning Chroma indexing.