from abc import ABC, abstractmethod from typing import Dict, List class IGradeService(ABC): @abstractmethod async def calculate_grading_summary(self, extracted_sections: List): pass @abstractmethod async def _calculate_section_grade_summary(self, section): pass @staticmethod @abstractmethod def _parse_openai_response(response): pass @staticmethod @abstractmethod def _parse_bullet_points(bullet_points_str, grade): pass