feat(manual-batch): canonical plate + manual mode as default
ci / smoke (push) Canceled after 0s

- canonical_plate (uppercase alnum, strips space/dot/hyphen) at all plate
  write sites; pretty_plate for render (history, XLSX, operator tile) so
  B 1234 XYZ and B1234XYZ are one plate everywhere
- group_dos_by_plate compares canonical plates -> no false mixed_plates
- warn-only (never blocking) plate format hint in operator + monitoring modals
- batch.default_mode: manual (auto merged truck loads when a sack sat in the
  counting ROI); operator banner explains plate -> start -> stop
- docs + AGENTS known-limitation note; 85 tests pass
This commit is contained in:
andrew committed 2026-10-05 09:36:32 +07:00
1 parent 7ad995d8d1
commit 6c5b1c8b30
11 files changed
+128 -32

No files matched your search

+1 -1
View File
@@ -123,7 +123,7 @@ batch:
truck_gone_tolerance_seconds: 30.0 # truck-gone: in WAITING_FOR_ACTIVITY, N s with no sack crossing + no visible sack + no valid truck signal -> finalize the batch (auto-mode end condition)
merge_threshold_seconds: 300 # deprecated by timeout_seconds and detecting sacks within the ROI
daily_cutoff_time: "06:00"
default_mode: "auto" # auto | do_manual | manual (seed when batch_mode.json missing)
default_mode: "manual" # auto | do_manual | manual (seed when batch_mode.json missing). manual = operator start/stop + plate per truck (auto merges batches when a sack sits in the counting ROI)
# do = Delivery Order (surat jalan). Gated manual-batch scan flow.
# Used when batch mode == do_manual (mode itself lives in batch_mode.json).