| 123456789101112131415161718192021222324252627282930 |
- 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="统一社会信用代码")
- @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:
- # 统一社会信用代码:18位,由数字与大写字母组成(不含 I/O/S/V/Z),e签宝按此核验企业主体
- normalized = (value or "").strip().upper()
- if not re.fullmatch(r"[0-9A-HJ-NP-RT-UW-Y]{18}", normalized):
- raise ValueError("ord_id 格式错误,应为18位统一社会信用代码")
- return normalized
|