"""Admin schemas for VoIdea API.""" from datetime import datetime from typing import Any, Optional from pydantic import BaseModel, EmailStr, Field class UserRoleUpdate(BaseModel): is_superuser: bool class UserAdminUpdate(BaseModel): display_name: Optional[str] = None email: Optional[EmailStr] = None role: Optional[str] = Field(None, description="user | moderator | admin") is_active: Optional[bool] = None permissions: Optional[dict[str, bool]] = None class SystemHealth(BaseModel): status: str database: str redis: str uptime: Optional[float] = None version: str class LogEntryResponse(BaseModel): id: str level: str source: str message: str details: Optional[dict[str, Any]] = None user_id: Optional[str] = None created_at: datetime class AgentInfoResponse(BaseModel): agent_name: str description: str = "" is_enabled: bool = True version: str = "1.0.0" config: Optional[str] = None last_run_at: Optional[datetime] = None class AgentUpdateRequest(BaseModel): description: Optional[str] = None is_enabled: Optional[bool] = None config: Optional[str] = None class ServiceActionRequest(BaseModel): service: str = Field(description="api | worker | beat | all") action: str = Field(default="restart", description="restart | start | stop | status") class ServiceActionResult(BaseModel): service: str action: str success: bool message: str class ServiceStatusResponse(BaseModel): service: str description: str status: str is_running: bool class FeatureCreate(BaseModel): title: str = Field(min_length=1, max_length=255) description: Optional[str] = None priority: str = "medium" category: str = "feature" class FeatureUpdate(BaseModel): title: Optional[str] = None description: Optional[str] = None priority: Optional[str] = None status: Optional[str] = None category: Optional[str] = None class FeatureResponse(BaseModel): id: str title: str description: Optional[str] = None priority: str status: str category: str source_agent: Optional[str] = None created_at: datetime updated_at: datetime class SystemInfoResponse(BaseModel): version: str environment: str database_status: str redis_status: str python_version: str uptime_seconds: Optional[float] = None