from dataclasses import dataclass, field from typing import Optional @dataclass class Asset: immich_id: str taken_at: str = "" gps_lat: Optional[float] = None gps_lon: Optional[float] = None place_city: Optional[str] = None place_country: Optional[str] = None type: str = "" has_gps: bool = False thumb_path: Optional[str] = None processed: bool = False ingested_at: str = "" updated_at: str = "" @dataclass class Tag: name: str immich_tag_id: Optional[str] = None count: int = 0 @dataclass class AssetTag: immich_id: str tag_name: str @dataclass class Cluster: id: Optional[int] = None start_at: str = "" end_at: str = "" count: int = 0 suggested_name: str = "" confidence: float = 0.0 kind_guess: str = "trip" # trip | everyday status: str = "pending" # pending|approved|non_trip|merged|split|skipped decided_name: Optional[str] = None reviewed_at: Optional[str] = None notes: Optional[str] = None @dataclass class ClusterMember: cluster_id: int immich_id: str member_confidence: float = 1.0 is_outlier: bool = False included: bool = True flagged_coverage: bool = False @dataclass class WritebackLog: id: Optional[int] immich_id: str action: str # trip | non-trip | processed tag: Optional[str] result: str # ok | error: applied_at: str