"""Transcript Models"""
from pydantic import BaseModel, Field
from typing import List, Optional, Dict
from datetime import datetime


class ParticipantMinutes(BaseModel):
    """참석자별 회의록"""
    user_id: str = Field(..., description="사용자 ID")
    user_name: str = Field(..., description="사용자 이름")
    content: str = Field(..., description="회의록 전체 내용 (MEMO 섹션)")


class ConsolidateRequest(BaseModel):
    """회의록 통합 요약 요청"""
    meeting_id: str = Field(..., description="회의 ID")
    participant_minutes: List[ParticipantMinutes] = Field(..., description="참석자별 회의록 목록")
    agendas: Optional[List[str]] = Field(None, description="안건 목록")
    duration_minutes: Optional[int] = Field(None, description="회의 시간(분)")


class ExtractedTodo(BaseModel):
    """추출된 Todo (제목만)"""
    title: str = Field(..., description="Todo 제목")


class AgendaSummary(BaseModel):
    """안건별 요약"""
    agenda_number: int = Field(..., description="안건 번호")
    agenda_title: str = Field(..., description="안건 제목")
    summary_short: str = Field(..., description="AI 생성 짧은 요약 (1줄, 20자 이내)")
    summary: str = Field(..., description="안건별 회의록 요약 (논의사항+결정사항, 사용자 수정 가능)")
    pending: List[str] = Field(default_factory=list, description="보류 사항")
    todos: List[ExtractedTodo] = Field(default_factory=list, description="Todo 목록 (제목만)")


class ConsolidateResponse(BaseModel):
    """회의록 통합 요약 응답"""
    meeting_id: str = Field(..., description="회의 ID")
    keywords: List[str] = Field(..., description="주요 키워드")
    statistics: Dict[str, int] = Field(..., description="통계 정보")
    decisions: str = Field(..., description="회의 전체 결정사항 (TEXT 형식)")
    agenda_summaries: List[AgendaSummary] = Field(..., description="안건별 요약")
    generated_at: datetime = Field(default_factory=datetime.utcnow, description="생성 시각")
