Add ops task overview, chart ahead window, and WebCRT lifecycle status.

Unify live runners in /audit/tasks (including UME sync and connect tests), extend port-traffic compare past now via ahead_hours, and distinguish WebCRT connecting/ready/detached.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
oliver 2026-08-02 14:05:59 +08:00
parent 3f0787da11
commit 3908b78dbb
28 changed files with 1083 additions and 54 deletions

View file

@ -160,21 +160,22 @@ class PortTrafficSamplePoint(BaseModel):
ts_raw: datetime | None = None
class PortTrafficSamplesOut(BaseModel):
target: PortTrafficTargetOut
points: list[PortTrafficSamplePoint] = Field(default_factory=list)
class PortTrafficCompareMeta(BaseModel):
target_id: str
baseline: str = "off"
offset_hours: float = 0
range_hours: float = 24
ahead_hours: float = 0
current_target: PortTrafficTargetOut | None = None
baseline_target: PortTrafficTargetOut | None = None
baseline_target_id: str = ""
class PortTrafficSamplesOut(BaseModel):
target: PortTrafficTargetOut
points: list[PortTrafficSamplePoint] = Field(default_factory=list)
class PortTrafficCompareOut(BaseModel):
meta: PortTrafficCompareMeta
current: list[PortTrafficSamplePoint] = Field(default_factory=list)
@ -214,6 +215,7 @@ class PortTrafficPanelIn(BaseModel):
range_hours: int = Field(default=24, ge=1, le=24 * 90)
baseline: Literal["off", "day", "week", "shift", "custom"] = "off"
offset_hours: int = Field(default=0, ge=0, le=24 * 90)
ahead_hours: int = Field(default=1, ge=0, le=24)
baseline_target_id: str = ""
y_mode: Literal["auto", "current", "util"] = "auto"
ord: int = 0
@ -229,6 +231,7 @@ class PortTrafficPanelOut(BaseModel):
range_hours: int = 24
baseline: str = "off"
offset_hours: int = 0
ahead_hours: int = 1
baseline_target_id: str = ""
y_mode: str = "auto"
ord: int = 0