"""用户资料(昵称/头像)相关请求 schemas。响应复用 [auth.UserOut]。""" from __future__ import annotations from pydantic import BaseModel, Field, field_validator class ProfileUpdateRequest(BaseModel): nickname: str = Field(..., min_length=1, max_length=20, description="昵称,1-20 字") @field_validator("nickname") @classmethod def _strip_non_blank(cls, v: str) -> str: v = v.strip() if not v: raise ValueError("昵称不能为空") return v class OnboardingCompleteRequest(BaseModel): device_id: str = Field( ..., min_length=1, max_length=64, description="硬件级设备标识(Android ANDROID_ID),与登录时一致,用于按 设备+账号 标记引导完成", ) class OnboardingStatusResponse(BaseModel): completed: bool = Field(..., description="该 设备+账号 是否已走过新手引导(false → 客户端应重走)") class OkResponse(BaseModel): ok: bool = True