from __future__ import annotations
from typing import Optional
from decimal import Decimal
from datetime import datetime
from pydantic import BaseModel, EmailStr


class CustomerAddressBrief(BaseModel):
    """客户列表中内嵌的收货地址简要信息"""
    id: int
    name: str = ""
    phone: str = ""
    province: str = ""
    city: str = ""
    district: str = ""
    street: str = ""
    is_default: bool = False

    model_config = {"from_attributes": True}


class CustomerOut(BaseModel):
    id: int
    name: Optional[str] = None
    email: Optional[str] = None
    phone: Optional[str] = None
    orders_count: int = 0
    total_spent: Decimal = Decimal("0")
    membership_tier: str = "regular"
    points_balance: int = 0
    member_level_id: Optional[int] = None
    member_level_name: Optional[str] = None
    default_address: Optional[CustomerAddressBrief] = None
    created_at: Optional[datetime] = None
    is_active: int = 1
    profile_data: Optional[dict] = None

    model_config = {"from_attributes": True}
