from __future__ import annotations

from enum import Enum
from typing import Optional

from pydantic import BaseModel


class MessageType(str, Enum):
    MESSAGE = "message"
    PHOTO = "photo"
    EMOTICON = "emoticon"
    VIDEO = "video"
    JOIN = "join"
    LEAVE = "leave"
    KICK = "kick"  # "님을 내보냈습니다"
    BOT = "bot"  # 오픈채팅봇 메시지 (필터링 대상)
    SYSTEM = "system"  # 기타 시스템 메시지


class UserMeta(BaseModel):
    name: str
    company: Optional[str] = None
    region: Optional[str] = None


class ChatMessage(BaseModel):
    date: str  # "2025-12-03"
    time: str  # "17:46"
    user: str  # raw 닉네임 "이해철/프라임/부산"
    user_meta: Optional[UserMeta] = None
    content: str
    type: MessageType


class ChatHeader(BaseModel):
    chat_name: str
    save_date: str
