39 lines
1.1 KiB
Python
39 lines
1.1 KiB
Python
"""
|
|
LangGraph state definition for the detection pipeline.
|
|
|
|
This TypedDict flows through all graph nodes. Each node reads what
|
|
it needs and writes its outputs. LangGraph manages the state transitions.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import TypedDict
|
|
|
|
from detect.models import BoundingBox, BrandDetection, DetectionReport, Frame, PipelineStats, TextCandidate
|
|
|
|
|
|
class DetectState(TypedDict, total=False):
|
|
# Input
|
|
video_path: str
|
|
job_id: str
|
|
profile_name: str
|
|
source_asset_id: str # UUID of the source MediaAsset
|
|
|
|
# Stage outputs
|
|
frames: list[Frame]
|
|
filtered_frames: list[Frame]
|
|
boxes_by_frame: dict[int, list[BoundingBox]]
|
|
text_candidates: list[TextCandidate]
|
|
unresolved_candidates: list[TextCandidate]
|
|
detections: list[BrandDetection]
|
|
report: DetectionReport
|
|
|
|
# Session brands (accumulated during the run, persisted to DB)
|
|
session_brands: dict # {normalized_name: canonical_name}
|
|
|
|
# Running stats (updated by each stage)
|
|
stats: PipelineStats
|
|
|
|
# Config overrides for replay (applied via OverrideProfile)
|
|
config_overrides: dict
|