"""ساختار پاسخ استاندارد API بین همه سرویس‌ها.

هدف: یکپارچگی قالب پاسخ‌ها (موفق و خطا) در کل پلتفرم.
"""
from __future__ import annotations

from typing import Any, Generic, TypeVar

from pydantic import BaseModel, Field

T = TypeVar("T")


class ErrorDetail(BaseModel):
    code: str = Field(..., description="کد ماشین‌خوان خطا")
    message: str = Field(..., description="پیام قابل نمایش خطا")
    details: Any | None = Field(default=None, description="جزئیات تکمیلی")


class ErrorResponse(BaseModel):
    """قالب استاندارد پاسخ خطا."""

    success: bool = False
    error: ErrorDetail


class SuccessResponse(BaseModel, Generic[T]):
    """قالب استاندارد پاسخ موفق (اختیاری برای wrap کردن داده)."""

    success: bool = True
    data: T | None = None


class MessageResponse(BaseModel):
    """پاسخ ساده مبتنی بر پیام."""

    success: bool = True
    message: str
