from abc import abstractmethod, ABC from typing import Union, List, Dict from fastapi import BackgroundTasks from app.dtos.evaluation import EvaluationType class IEvaluationService(ABC): @abstractmethod async def create_evaluation( self, user_id: str, session_id: str, exercise_id: str, eval_type: EvaluationType, task: int ): pass @abstractmethod async def begin_evaluation( self, user_id: str, session_id: str, task: int, exercise_id: str, exercise_type: str, solution: any, background_tasks: BackgroundTasks ): pass @abstractmethod async def get_evaluations(self, session_id: str, status: str) -> List[Dict]: pass