from datetime import datetime from typing import Optional from pydantic import BaseModel, ConfigDict class SnapshotPolicyCreate(BaseModel): category: str action_type: str params: dict = {} label: str is_active: bool = True class SnapshotPolicyUpdate(BaseModel): category: Optional[str] = None action_type: Optional[str] = None params: Optional[dict] = None label: Optional[str] = None is_active: Optional[bool] = None class SnapshotPolicyRead(BaseModel): model_config = ConfigDict(from_attributes=True) id: int object_id: int category: str action_type: str params: dict label: str is_active: bool created_at: datetime updated_at: datetime class PolicySnapshotStatus(BaseModel): policy_id: int policy_label: str category: str action_type: str params: dict last_collected_at: Optional[datetime] = None success_count: int total_devices: int class ObjectSnapshotSummary(BaseModel): object_id: int object_name: str city: Optional[str] = None client: Optional[str] = None policies: list[PolicySnapshotStatus]