Ricetta DXF compare creata in TMF da camera, con calibrazione a scacchiera per stazione (TieVision-Core) #83
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
ESITO: richiesta (analisi passo 1, Opus 5.5 claude-opus-5-5)
RIF: gitea:Adriano/TieMeasureFlow#72 (fiera A&T Vicenza 27-29/10/2026)
COSA: in TMF si crea una ricetta DXF compare da camera, senza TieVision Studio, con calibrazione a scacchiera per stazione. Tutta la visione passa da TieVision-Core (vendor/visionsuite). Pochi parametri (Adriano 23/10/2026: «semplice da gestire e con pochi parametri», «creiamo una ricetta direttamente da tmf», «non tievision studio»).
BASE: origin/V3.0.0
ae2353f, vendor/visionsuite 2e73691.FATTI (VERIFICATO leggendo il codice):
aligndal localizzatore. Scala damm_per_pxo da context["calibration"] (ScaleCalibration o dict px_per_mm).calibrationpassata al runner la sostituisce.DISEGNO:
CONTRATTO HTTP (identico per i tre piani):
W1 worker POST /calibrate/chessboard multipart image, cols:int, rows:int, square_mm:float → 200 {px_per_mm, mm_per_px, rms_px, n_corners, cols, rows, square_mm, image_width, image_height, scale_spread_pct, overlay_png (base64 PNG)}; 422 {detail} se non trovata.
W2 worker POST /recipes/dxf-compare multipart image, dxf (file), px_per_mm:float, band_mm:float=0.1, min_points_pct:float=95, polarity:"dark"|"light"="dark" → 200 {graph (v2), files {"disegno.dxf": b64, "calibrazione.json": b64}, outputs {"dxf.points_in_pct":…, "dxf.distance_avg":…, "dxf.distance_min":…, "dxf.distance_max":…}, overlay [...], outcome}; 422 {detail} se pezzo non trovato o DXF illeggibile.
B1 backend POST /api/stations/{id}/calibration multipart image, cols, rows, square_mm, save:bool=false → W1 + {"saved": bool}; con save: stations.calibration = W1 senza overlay_png + calibrated_at (ISO) + calibrated_by.
B2 backend DELETE /api/stations/{id}/calibration → 204.
B3 backend POST /api/vision/tasks/{task_id}/recipe/dxf-compare (require_maker) multipart image, dxf, station_id:int|null, px_per_mm:float|null (se null: station.calibration.px_per_mm; nessuno dei due → 422 «stazione non calibrata»), band_mm, min_points_pct, polarity, save:bool=false → {result: W2 senza files, saved, recipe_dir|null, outputs (lista di /validate)|null}.
B4 StationResponse espone calibration (dict|null).
PIANI (file disgiunti, rami da
ae2353f):A worker: src/vision/costruttori.py (nuovo), src/vision_worker/main.py, test in src/vision/tests e src/vision_worker/tests. Ramo lavoro/daitarn-tmf-dxfcal-worker.
B backend: migrazione 021_station_calibration, models/orm/station.py, models/api/station.py, routers/stations.py, routers/vision.py, services/vision_service.py, test in src/backend/tests. Ramo lavoro/daitarn-tmf-dxfcal-backend.
C frontend: templates/admin/stations.html, templates/maker/task_editor.html, static/js nuovo, blueprints (maker/admin), services/api_client.py, translations, test flask. Ramo lavoro/daitarn-tmf-dxfcal-frontend.
TEST:
NON TOCCARE: vendor/visionsuite (submodule), upload_recipe e il suo comportamento, flusso misura esistente e il suo proxy camera, packaging Windows.
LIMITI NOTI: solo controluce (LocateBlob); pezzi simmetrici a 180° ma non nel disegno possono essere girati; DXF da ripulire a mano (cartiglio, assi).
🔵 daitarn — preso in carico 2026-10-23T20:34:41Z
ramo:
lavoro/daitarn· capacità: build-windows, gpuESITO: richiesta (cambio contratto)
RIF: gitea:Adriano/TieMeasureFlow#83
COSA: Adriano 23/10/2026: «l'acquisizione potrebbe essere gestita con un modulo esterno configurabile e su tmf ci sarebbe solo link all'api dell'acquisitore», «acquisitore che ha modulo di calibrazione».
NUOVO CONTRATTO:
PROSSIMO: i tre agenti (worker/acquisitore, backend, frontend) hanno ricevuto il cambio; revisione Opus a fine piani.
🤖 goldrake — liberata nessun segno di daitarn da 6.2 h — 2026-10-24T02:44:25Z
Soluzione
ESITO: fatto (chiusa su richiesta di Adriano del 06/11/2026)
RIF: gitea:Adriano/TieMeasureFlow#83; contratto finale = commento del 23/10 20:37 (cambio contratto), non la prima analisi
COSA: ricetta DXF compare creata in TMF da camera, con la calibrazione presa dall'acquisitore esterno della stazione.
CONTRATTO FINALE IN CODICE (VERIFICATO su origin/V3.0.0
8c361c1):5897a9e), portato su V3.0.0 con #126.PROVA: in fiera, 28/10, ricetta FIERA-DXF-COPIA-2 con /api/vision/check → 100 % dei punti in banda sull'immagine di riferimento (scheda AI-OS TieMeasureFlow, voce 28/10).
LIMITI NOTI (invariati): solo controluce (LocateBlob), simmetrie a 180°, DXF da ripulire a mano.