aaa / app /api /v2 /dependencies.py
work-sejal
Deploy AI service with FastAPI
70ea7be
Raw
History Blame Contribute Delete
3.05 kB
"""FastAPI dependency providers for service instances.
Each provider retrieves the service from request.app.state.services (the
ServiceContainer attached during application lifespan startup).
"""
from __future__ import annotations
from dataclasses import dataclass
from typing import Any
from fastapi import Request
from app.data.loader import DatasetLoader
from app.models.registry import ModelRegistry
from app.monitoring.prediction_logger import PredictionLogger
from app.services.explanation_service import ExplanationService
@dataclass
class ServiceContainer:
"""Holds all service instances initialized at startup.
Services that have not yet been implemented are typed as Any and
set to None until their implementation tasks are completed.
"""
registry: ModelRegistry
loader: DatasetLoader
explainer: ExplanationService
pred_logger: PredictionLogger
# Inference services — set to None until implemented (tasks 4.x, 5.x, 6.x)
lo_tagging: Any = None
bloom: Any = None
mastery: Any = None
risk: Any = None
recommendation: Any = None
answer_evaluation: Any = None
student_profile: Any = None
class_insights: Any = None
teacher_feedback: Any = None
monitoring: Any = None
def get_service_container(request: Request) -> ServiceContainer:
"""Retrieve the full ServiceContainer from app state."""
return request.app.state.services
def get_lo_tagging_service(request: Request) -> Any:
"""Provide the LO tagging service instance."""
return request.app.state.services.lo_tagging
def get_bloom_service(request: Request) -> Any:
"""Provide the Bloom classification service instance."""
return request.app.state.services.bloom
def get_mastery_service(request: Request) -> Any:
"""Provide the mastery prediction service instance."""
return request.app.state.services.mastery
def get_risk_service(request: Request) -> Any:
"""Provide the risk prediction service instance."""
return request.app.state.services.risk
def get_recommendation_service(request: Request) -> Any:
"""Provide the recommendation service instance."""
return request.app.state.services.recommendation
def get_answer_evaluation_service(request: Request) -> Any:
"""Provide the answer evaluation service instance."""
return request.app.state.services.answer_evaluation
def get_student_profile_service(request: Request) -> Any:
"""Provide the student profile service instance."""
return request.app.state.services.student_profile
def get_class_insights_service(request: Request) -> Any:
"""Provide the class insights service instance."""
return request.app.state.services.class_insights
def get_teacher_feedback_service(request: Request) -> Any:
"""Provide the teacher feedback service instance."""
return request.app.state.services.teacher_feedback
def get_monitoring_service(request: Request) -> Any:
"""Provide the monitoring service instance."""
return request.app.state.services.monitoring