"""用户资料(昵称/头像)相关请求 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
