"""
产品更新相关的Schema定义
"""

from pydantic import BaseModel, Field
from typing import Optional


class ProductUpdateRequest(BaseModel):
    """产品更新请求模型"""
    品牌: Optional[str] = Field(None, description="品牌名称")
    货号: Optional[str] = Field(None, description="产品货号")
    procurement_method: Optional[str] = Field(None, description="采购方式(GN/LA/NY/MC/AT/AP/SS等)")
    颜色: Optional[str] = Field(None, description="颜色")
    尺寸: Optional[str] = Field(None, description="尺寸")
    
    class Config:
        schema_extra = {
            "example": {
                "品牌": "Burberry",
                "货号": "80721821",
                "procurement_method": "MC",
                "颜色": "红色",
                "尺寸": "168*30"
            }
        }


class ProductUpdateResponse(BaseModel):
    """产品更新响应模型"""
    success: bool
    message: str
    updated_fields: dict = Field(default_factory=dict)
    
    class Config:
        schema_extra = {
            "example": {
                "success": True,
                "message": "产品更新成功",
                "updated_fields": {
                    "品牌": "Burberry",
                    "货号": "80721821"
                }
            }
        }


class ProductOptionsResponse(BaseModel):
    """产品选项响应模型，用于前端下拉框"""
    brands: list[str] = Field(default_factory=list, description="可用品牌列表")
    procurement_methods: list[dict] = Field(default_factory=list, description="采购方式选项")
    colors: list[str] = Field(default_factory=list, description="常用颜色列表")
    sizes: list[str] = Field(default_factory=list, description="常用尺寸列表")
    shops: list[str] = Field(default_factory=list, description="网店名称列表")
    
    class Config:
        schema_extra = {
            "example": {
                "brands": ["Burberry", "Tods", "MaxMara"],
                "procurement_methods": [
                    {"value": "GN", "label": "国内现货"},
                    {"value": "LA", "label": "洛杉矶"},
                    {"value": "MC", "label": "库存"}
                ],
                "colors": ["黑色", "白色", "红色", "蓝色"],
                "sizes": ["S", "M", "L", "XL", "38", "39", "40"],
                "shops": ["店铺A", "店铺B", "店铺C"]
            }
        }