refactor: keep tag state in streamed track only
This commit is contained in:
parent
e9279c58b3
commit
19af7ce545
2 changed files with 1 additions and 65 deletions
|
|
@ -191,10 +191,6 @@ class LiveSession:
|
|||
self._shift_map = None
|
||||
self._compliance_tracker = None
|
||||
self._last_compliance: Dict[str, Any] = {"violations": 0, "by_rule": {}, "rows": []}
|
||||
# Settled tag + reconciliation from the last result, keyed by track.
|
||||
# Inspect copies these; it does not re-run OCR.
|
||||
self._settled_tags: Dict[int, Dict[str, Any]] = {}
|
||||
self._settled_tag_seq = 0
|
||||
self._label_memory: "collections.deque[Dict[str, Any]]" = collections.deque(
|
||||
maxlen=LABEL_MEMORY_MAX
|
||||
)
|
||||
|
|
@ -297,8 +293,6 @@ class LiveSession:
|
|||
self._latest_frame_id = None
|
||||
self._frame_origin = [0.0, 0.0]
|
||||
self._shift_map = None
|
||||
self._settled_tags = {}
|
||||
self._settled_tag_seq = 0
|
||||
|
||||
# ------------------------------------------------------------------ frame path
|
||||
def process_frame(self, frame_id: int, payload: bytes) -> Dict[str, Any]:
|
||||
|
|
@ -445,17 +439,6 @@ class LiveSession:
|
|||
if tag_summary is not None:
|
||||
summary["price_tags"] = tag_summary["tags"]
|
||||
summary["compliance"] = tag_summary["compliance"]
|
||||
settled: Dict[int, Dict[str, Any]] = {}
|
||||
for payload in track_payload:
|
||||
snapshot: Dict[str, Any] = {}
|
||||
if "price_tag" in payload:
|
||||
snapshot["price_tag"] = payload["price_tag"]
|
||||
if "reconciliation" in payload:
|
||||
snapshot["reconciliation"] = payload["reconciliation"]
|
||||
if snapshot:
|
||||
settled[int(payload["track_id"])] = snapshot
|
||||
self._settled_tags = settled
|
||||
self._settled_tag_seq = seq
|
||||
|
||||
self._submit_classification(submissions, method, generation)
|
||||
self._run_tag_passes(image, tag_bands)
|
||||
|
|
@ -929,16 +912,7 @@ class LiveSession:
|
|||
if track is None or image is None:
|
||||
raise KeyError("TRACK_NOT_IN_VIEW")
|
||||
box = list(track.raw_box)
|
||||
# Snapshot is the frame current at tap time. engine.inspect runs
|
||||
# outside the lock, so a newer frame may land first; the reply still
|
||||
# carries the tag from the frame the tap matched, not that later one.
|
||||
settled = None
|
||||
if self._settled_tag_seq == self._latest_seq:
|
||||
settled = self._settled_tags.get(track_id)
|
||||
result = self.engine.inspect(image, box, method=chosen_method)
|
||||
if settled:
|
||||
result.update(settled)
|
||||
return result
|
||||
return self.engine.inspect(image, box, method=chosen_method)
|
||||
|
||||
# ------------------------------------------------------------------ catalog cache
|
||||
def refresh_catalog(self) -> None:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue