from pydantic import BaseModel, Field from typing import Optional class LoginRequest(BaseModel): email: str = Field(..., max_length=255) password: str = Field(..., min_length=1, max_length=128) class LoginResponse(BaseModel): access_token: str token_type: str = "bearer" user: "UserInfo" class UserInfo(BaseModel): id: str email: str name: str role: Optional[str] = None department_id: Optional[str] = None is_system_admin: bool = False class TokenPayload(BaseModel): sub: str email: str role: Optional[str] = None department_id: Optional[str] = None is_system_admin: bool = False exp: int iat: int # Update forward reference LoginResponse.model_rebuild()