from enum import Enum from pydantic import BaseModel, Field class SmsScene(str, Enum): register = "register" login = "login" set_password = "set_password" class SmsSendRequest(BaseModel): phone: str = Field(..., pattern=r"^1[3-9]\d{9}$", description="手机号") scene: SmsScene = Field(..., description="短信场景:register=注册,login=短信登录,set_password=设置密码") captcha_token: str | None = Field(None, description="图形验证码令牌,正式环境按配置要求传入") class SmsVerifyRequest(BaseModel): phone: str = Field(..., pattern=r"^1[3-9]\d{9}$", description="手机号") scene: SmsScene = Field(..., description="短信场景") code: str = Field(..., min_length=4, max_length=8, description="验证码") class SmsResponse(BaseModel): message: str success: bool