vision: anteprima DXF nel worker e nel backend (Refs #101)
Worker: POST /dxf/preview legge il DXF con read_xld_dxf (lo stesso lettore di CompareDxf) e ritorna contorni in mm con y verso il basso, bbox, dimensioni, entita e punti (tetto 20000, decimazione uniforme). Backend: POST /api/vision/dxf-preview (Maker) che inoltra al worker; 422 inoltrato. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -224,6 +224,25 @@ async def dxf_compare_recipe(
|
||||
return body
|
||||
|
||||
|
||||
async def dxf_preview(dxf_bytes: bytes, worker_url: str | None = None) -> dict:
|
||||
"""#101: anteprima del DXF (contorni in mm + dimensioni) dal worker. Sostituita dai test."""
|
||||
body = await call_worker_multipart(
|
||||
"/dxf/preview",
|
||||
files={"dxf": ("disegno.dxf", dxf_bytes, "application/octet-stream")},
|
||||
data={},
|
||||
worker_url=worker_url,
|
||||
)
|
||||
# forma minima del contratto: senza contorni e dimensioni non c'e' nulla da mostrare
|
||||
required = {"contorni", "bbox", "larghezza_mm", "altezza_mm", "entita", "punti"}
|
||||
if not required <= body.keys():
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_502_BAD_GATEWAY,
|
||||
detail="the vision worker's answer was malformed: missing "
|
||||
+ ", ".join(sorted(required - body.keys())),
|
||||
)
|
||||
return body
|
||||
|
||||
|
||||
# Stati di fetch_station_calibration (#83)
|
||||
CAL_OK = "ok"
|
||||
CAL_NO_CAMERA = "no_camera" # la stazione non ha camera_url/camera_source
|
||||
|
||||
Reference in New Issue
Block a user