Files
Magent/backend/app/models.py
2026-01-22 22:49:57 +13:00

66 lines
1.5 KiB
Python

from enum import Enum
from typing import Any, Dict, List, Optional
from pydantic import BaseModel, Field
class RequestType(str, Enum):
movie = "movie"
tv = "tv"
unknown = "unknown"
class NormalizedState(str, Enum):
requested = "REQUESTED"
approved = "APPROVED"
needs_add = "NEEDS_ADD"
added_to_arr = "ADDED_TO_ARR"
searching = "SEARCHING"
grabbed = "GRABBED"
downloading = "DOWNLOADING"
importing = "IMPORTING"
completed = "COMPLETED"
failed = "FAILED"
available = "AVAILABLE"
unknown = "UNKNOWN"
class TimelineHop(BaseModel):
service: str
status: str
details: Dict[str, Any] = Field(default_factory=dict)
timestamp: Optional[str] = None
class ActionOption(BaseModel):
id: str
label: str
risk: str
requires_confirmation: bool = True
class Snapshot(BaseModel):
request_id: str
title: str
year: Optional[int] = None
request_type: RequestType = RequestType.unknown
state: NormalizedState = NormalizedState.unknown
state_reason: Optional[str] = None
timeline: List[TimelineHop] = Field(default_factory=list)
actions: List[ActionOption] = Field(default_factory=list)
artwork: Dict[str, Any] = Field(default_factory=dict)
raw: Dict[str, Any] = Field(default_factory=dict)
class TriageRecommendation(BaseModel):
action_id: str
title: str
reason: str
risk: str
class TriageResult(BaseModel):
summary: str
confidence: float
root_cause: str
recommendations: List[TriageRecommendation]