docs(plan): per-sale expiry tracking design — batch registry + candidate matching
Grilled 2026-07-16 with the user; full decision record in docs/expiry-tracking-plan.md. Core reframe: expiry is captured once per batch at DO intake (staff-typed on the stock-entry confirmation page, from the physical packs), so the cashier scan only MATCHES OCR fragments against the 1-3 known in-stock batch dates instead of free-reading damaged dot-matrix prints (proven model-capability ceiling, 2026-07-15). Fallback: auto-FEFO + 'inferred' flag, zero cashier interaction. No cloud, ever. - docs/expiry-tracking-plan.md: architecture, matching algorithm spec (resolveExpiryFromEvidence), schema/API deltas, phases 1-3, testing plan - backend plans §13 (13.1-13.4): matcher util + offline tuning, route wiring + expiry_source provenance, multi-frame union, dot-matrix recognizer fine-tune - root plans §10 (10.1-10.3): cashier fast path, inferred badge + end-of-day review, burst capture for mounted camera - stock-feature-plan.md: extension note (batch dropdown becomes the manual-override path) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q8TumxFDnyVnfsR3mxPXfX
This commit is contained in:
1 parent
721dea41dc
commit
e6daa9b053
7 files changed
+350
-333
No files matched your search
@@ -1,20 +0,0 @@
|
||||
from PIL import Image
|
||||
import numpy as np
|
||||
from paddleocr import PaddleOCR
|
||||
|
||||
ocr = PaddleOCR(use_textline_orientation=True, lang='en')
|
||||
image = Image.open('/app/config/test_img.jpeg').convert('RGB')
|
||||
img_arr = np.array(image)
|
||||
res_list = list(ocr.predict(img_arr))
|
||||
|
||||
texts = res_list[0].get('rec_texts', [])
|
||||
dt_polys = res_list[0].get('dt_polys', [])
|
||||
|
||||
for idx, (text, poly) in enumerate(zip(texts, dt_polys)):
|
||||
if 'BB05032027' in text or 'BB' in text:
|
||||
print(f"Match: {text}")
|
||||
print("Raw poly:")
|
||||
print(poly)
|
||||
print("Pts computed:")
|
||||
pts = [(float(p[0]), float(p[1])) for p in poly]
|
||||
print(pts)
|
||||
Reference in new issue
Block a user