import re from typing import Literal from pydantic import BaseModel, Field, field_validator class BundleCreateRequest(BaseModel): subject_type: Literal["store", "lawyer"] = Field(description="主体类型") subject_id: int = Field(gt=0, description="主体ID") subject_name: str = Field(description="主体名称") business_segment: str = Field(description="业务板块") contact_name: str = Field(description="联系人姓名") contact_phone: str = Field(description="联系电话") ord_id: str = Field(description="统一社会信用代码") bundle_type: str | None = Field(default=None, description="合同包类型") # LAWYER_STANDARD/STORE_STANDARD @field_validator("contact_phone") @classmethod def validate_contact_phone(cls, value: str) -> str: if not re.fullmatch(r"^1\d{10}$", value): raise ValueError("contact_phone 格式错误,应为11位手机号") return value @field_validator("ord_id") @classmethod def validate_ord_id(cls, value: str) -> str: if not re.fullmatch(r"^[0-9A-Z]{18}$", value): raise ValueError("ord_id 格式错误,应为18位大写字母或数字") return value