from datetime import datetime from typing import Optional from pydantic import BaseModel, ConfigDict, Field class CompanyBase(BaseModel): """Company 基础 Schema""" name: str = Field(..., min_length=1, max_length=200, description="企业名称") plan: str = Field(default="免费版", description="套餐类型") data_retention_months: int = Field(default=12, ge=1, le=120, description="数据保留月数") max_users: int = Field(default=5, ge=1, description="最大用户数") class CompanyCreate(CompanyBase): """创建 Company 的 Schema""" pass class CompanyUpdate(BaseModel): """更新 Company 的 Schema""" name: Optional[str] = Field(None, min_length=1, max_length=200) plan: Optional[str] = None data_retention_months: Optional[int] = Field(None, ge=1, le=120) status: Optional[str] = None max_users: Optional[int] = Field(None, ge=1) is_trial: Optional[bool] = None class CompanyResponse(CompanyBase): """Company 响应 Schema""" model_config = ConfigDict(from_attributes=True) id: int status: str is_trial: bool created_at: datetime updated_at: datetime