fix(anpr): sliding poll window so a car arriving mid-loop isn't lost
A loop started by a far/early car would (a) give up before the REAL car settled at the barrier, and (b) swallow the real car's pushes (the #polling guard dropped them). So a confident-but-wrong far-car plate could win, or the intended car get debounced out after the loop ended — wrong car acted on, right car blocked. Fix: a push that JOINS a running loop now EXTENDS the deadline (lastPush + ANPR_POLL_WINDOW_MS) instead of being dropped, capped at start + ANPR_POLL_MAX_MS (30s) so a continuously-busy lane can't slide forever. Each tick still pulls a FRESH frame, so the loop tracks whoever is at the barrier NOW, not the car that started it. Per-camera sliding deadline in #pollDeadline (cleared with #polling in finally). +1 test (push mid-poll keeps the loop alive past the initial deadline); 171 server tests green. New knob ANPR_POLL_MAX_MS documented in the komodo env reference + the two concurrency guards written up in lane-presence-and-anpr-entry. Claude-Session: https://claude.ai/code/session_01Xcm6ikLgGoCxxHrxtjkk5V
This commit is contained in:
@@ -73,9 +73,11 @@ WS_ALLOWED_ORIGINS=
|
||||
# # read below this is ignored (falls back to card/QR).
|
||||
# ANPR_DEBOUNCE_MS=12000 # same plate/camera within this = one presentation
|
||||
# ANPR_POLL_MS=1000 # poll-until-confident: re-pull a fresh frame every N ms
|
||||
# ANPR_POLL_WINDOW_MS=8000 # ...for up to this long while the car sits at the
|
||||
# # barrier. RAISE if a slow barrier means the car
|
||||
# # waits >8s before the plate reads clean.
|
||||
# ANPR_POLL_WINDOW_MS=8000 # ...for this long AFTER THE LAST vehicle push (sliding:
|
||||
# # a car arriving mid-loop extends it). RAISE if a slow
|
||||
# # barrier means the car waits >8s before reading clean.
|
||||
# ANPR_POLL_MAX_MS=30000 # hard ceiling on one loop from start (so a continuously
|
||||
# # busy lane can't slide the window forever)
|
||||
|
||||
# ════════════════════════════════════════════════════════════════════════════
|
||||
# VISION CONTAINER env (the Python ANPR service — its OWN process, prefix VISION_)
|
||||
|
||||
Reference in New Issue
Block a user