"""Base AI Service Interface for summarization.""" from abc import ABC, abstractmethod from typing import Dict, List, Optional, Union from dataclasses import dataclass from enum import Enum class SummaryLength(Enum): """Summary length options.""" BRIEF = "brief" # ~100-200 words STANDARD = "standard" # ~300-500 words DETAILED = "detailed" # ~500-800 words @dataclass class SummaryRequest: """Request model for summary generation.""" transcript: str length: SummaryLength = SummaryLength.STANDARD focus_areas: Optional[List[str]] = None # e.g., ["technical", "business", "educational"] language: str = "en" include_timestamps: bool = False @dataclass class ModelUsage: """Model usage tracking.""" input_tokens: int output_tokens: int total_tokens: int estimated_cost: float @dataclass class SummaryResult: """Result model for generated summary.""" summary: str key_points: List[str] main_themes: List[str] actionable_insights: List[str] confidence_score: float processing_metadata: Dict[str, Union[str, int, float]] cost_data: Dict[str, Union[float, int]] class AIService(ABC): """Base class for AI summarization services.""" @abstractmethod async def generate_summary(self, request: SummaryRequest) -> SummaryResult: """Generate summary from transcript.""" pass @abstractmethod def estimate_cost(self, transcript: str, length: SummaryLength) -> float: """Estimate processing cost in USD.""" pass @abstractmethod def get_token_count(self, text: str) -> int: """Get token count for text.""" pass