feat(m2): DWG/JPG floorplan underlay tabs + CAD extraction pipeline
Owner directives 2026-07-14~15: run the DWG pipeline; split floorplan into DWG and JPG tabs.
- tools/cad/dwg_extract.py: DWG(LibreDWG dwg2dxf) -> DXF -> layer inventory /
keyword extraction / grid-label anchor detection (ezdxf, recover fallback)
- tools/cad/render_hall_png.py: render hall-band crops from the K1 combined
plan+trench drawing (x0=293.5m, width 171m, Y bands 80.1m + 63m pitch,
single load -> multi-crop). Real trench layout confirmed: 7 horizontal runs
at ~9m pitch + central feeder (differs from assumed 6m grid seed - V61 later)
- public/media/floorplans/dwg/hall1..5.png: K1 hall underlays (3m margin crop,
deterministic calibration from render params)
- Editor left panel new tool group with JPG/DWG tabs; DWG disabled for
halls without CAD render yet (K2 pending). Canvas switches url+region.
- docs/analysis/cad-extraction.md: pipeline findings, limits (A3002 LibreDWG
crash, band-to-hall numbering direction to confirm), next steps
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>