"""
Project Document Domain Entity.

موجودیت‌ ارتباط اسناد با پروژه — پیوند سند از سرویس مدیریت اسناد به پروژه.
"""
from dataclasses import dataclass, field
from datetime import datetime
from typing import Optional
from uuid import UUID, uuid4

from shared.base_classes.entity import TenantEntity


@dataclass
class ProjectDocument(TenantEntity):
    """ارتباط سند با پروژه/فعالیت — لینک سند به entity پروژه."""

    project_id: UUID = field(default_factory=uuid4)
    document_id: UUID = field(default_factory=uuid4)  # UUID from document_control service
    entity_type: str = ""  # 'project', 'task', 'change_request', etc.
    entity_id: Optional[UUID] = None  # specific entity within project
    title: str = ""  # cached document title
    document_code: str = ""  # cached document code
    linked_by: Optional[UUID] = None  # user who linked
    notes: str = ""
