from __future__ import annotations

from enum import Enum
from typing import Any, TypedDict


class StrEnum(str, Enum):
    def __str__(self) -> str:
        return self.value


class SourceType(StrEnum):
    CONSULTANT = "consultant_document"


class MessageRole(StrEnum):
    USER = "user"
    ASSISTANT = "assistant"
    SYSTEM = "system"


class ParserChunkMetadata(TypedDict, total=False):
    source_title: str
    source_short_name: str
    consultant_category: str
    chapter_title: str | None
    section_title: str | None
    article_number: str | None
    article_title: str | None
    document_url: str
    breadcrumb: list[str]
    version_hash: str


JSONDict = dict[str, Any]
