| 1234567891011121314151617181920212223242526272829 |
- 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
|