from datetime import datetime, time from pydantic import BaseModel, ConfigDict, Field from app.modules.feishu_users.constants import FeishuUserRole, FeishuUserStatus class FeishuUserRead(BaseModel): model_config = ConfigDict(from_attributes=True) code: str tenant_key: str open_id: str union_id: str | None user_id: str | None role: str status: str timezone: str quiet_hours_start: time | None quiet_hours_end: time | None last_active_at: datetime created_at: datetime updated_at: datetime class FeishuUserListRead(BaseModel): items: list[FeishuUserRead] total: int limit: int offset: int class FeishuUserUpdate(BaseModel): model_config = ConfigDict(extra="ignore") role: FeishuUserRole | None = None status: FeishuUserStatus | None = None timezone: str | None = Field(default=None, min_length=1, max_length=64) quiet_hours_start: time | None = None quiet_hours_end: time | None = None