Initial commit
This commit is contained in:
65
backend/app/models.py
Normal file
65
backend/app/models.py
Normal file
@@ -0,0 +1,65 @@
|
||||
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]
|
||||
Reference in New Issue
Block a user