from pydantic import BaseModel from typing import List, Optional, Dict, Any from datetime import datetime class ChatMessage(BaseModel): role: str # "user" or "assistant" content: str timestamp: datetime = datetime.now() class ChatSession(BaseModel): session_id: str messages: List[ChatMessage] = [] pdf_content: Optional[str] = None lecture_content: Optional[str] = None created_at: datetime = datetime.now() class LectureRequest(BaseModel): pdf_content: str style: str = "academic" # academic, casual, detailed include_examples: bool = True class LectureResponse(BaseModel): title: str content: str sections: List[Dict[str, Any]] word_count: int estimated_duration: int # in minutes class ProcessingStatus(BaseModel): status: str # "processing", "completed", "error" progress: int # 0-100 message: str result: Optional[Dict[str, Any]] = None