"""Authentication and current-user API contracts.""" from pydantic import Field from app.schemas.common import ApiSchema class LoginRequest(ApiSchema): username: str = Field(min_length=1, max_length=128) password: str = Field(min_length=8, max_length=128) class DingTalkLoginRequest(ApiSchema): auth_code: str = Field(min_length=1, max_length=256) class UserData(ApiSchema): id: int emp_no: str email: str | None = None name: str dept: str | None = None position: str | None = None role: str status: str dingtalk_id: str | None = None dingtalk_job_number: str | None = None dingtalk_title: str | None = None dingtalk_dept_id: int | None = None dingtalk_is_dept_manager: bool = False permissions: list[str] = Field(default_factory=list) class TokenData(ApiSchema): access_token: str token_type: str = "bearer" expires_in: int user: UserData class DingTalkConfigData(ApiSchema): corp_id: str app_key: str agent_id: str