import uuid
from datetime import datetime
from typing import Any, Dict, Optional

from pydantic import BaseModel, Field


class DocChunk(BaseModel):
    id: Optional[str] = None
    chunk_id: str = Field(default_factory=lambda: str(uuid.uuid4()))
    repo_id: str
    snapshot_id: Optional[str] = None
    doc_path: str
    section_title: str
    chunk_text: str
    chunk_hash: str
    source_type: str = "repo_doc"
    metadata: Dict[str, Any] = Field(default_factory=dict)
    created_at: datetime = Field(default_factory=datetime.utcnow)
