diff --git a/.planning/phases/05-cable-test-integration/05-CONTEXT.md b/.planning/phases/05-cable-test-integration/05-CONTEXT.md new file mode 100644 index 0000000..ddecc29 --- /dev/null +++ b/.planning/phases/05-cable-test-integration/05-CONTEXT.md @@ -0,0 +1,82 @@ +# Phase 5: Cable Test Integration - Context + +**Gathered:** 2026-04-10 +**Status:** Ready for planning +**Mode:** Auto-generated (autonomous mode) + + +## Phase Boundary + +Any cable can be tested, its results written to NetBox, and a label printed in a rapid test-verify-print workflow without leaving the Cable Test Station view. This phase delivers Treedix USB/DP/HDMI tester drivers, FNIRSI FNB58 power meter integration, cable test workflow UI, and auto-NetBox-record creation from test data. + + + + +## Implementation Decisions + +### Hardware Status +- Treedix USB/DP/HDMI testers + FNIRSI FNB58 arrive 2026-04-13 +- Build code-complete with mock testers +- Real protocol reverse-engineering deferred to operator +- FNIRSI FNB58 has working community library: github.com/baryluk/fnirsi-usb-power-data-logger + +### Tester Driver Architecture +- TesterDriver interface: Connect(), Read() (TestResult), Disconnect() +- Per-tester implementations: TreedixUSBDriver, TreedixDPDriver, TreedixHDMIDriver, FNB58Driver +- Auto-detect by VID/PID using existing USB Manager +- TestResult struct holds all common fields (continuity, version, speed, etc.) + +### Cable Test Station UI +- New /test route with three panels: tester readout, label preview, recent tests +- Live SSE updates from tester +- "Print & Next" button: creates NetBox cable record + prints label + clears for next +- Mobile-friendly for bench use + +### NetBox Integration +- Cable record created via netbox client (CreateCable method needed if absent) +- test_data custom field stores structured JSON +- catalog_status auto-set to "complete" after test + +### Backend Endpoints +- POST /api/test/cable — receives test result, creates cable record in NetBox +- GET /api/test/events — SSE for live tester data +- GET /api/test/recent — last N test results + + + + +## Existing Code Insights + +### Reusable Assets +- internal/usb/manager.go — for tester USB device management +- internal/printer/ — auto-print labels +- internal/labels/cable.go — cable label renderer (Phase 4) +- internal/netbox/client.go — needs CreateCable method +- internal/netbox/types.go — Device type (cables are netbox cables, slightly different) + +### Integration Points +- Add internal/tester/ package +- Add internal/api/handlers/test.go +- Add web/src/pages/CableTestPage.tsx +- Wire route /test in router.tsx + + + + +## Specific Ideas + +- TreedixUSBDriver mock returns deterministic test data for unit tests +- FNB58Driver uses raw HID protocol (per baryluk reference) +- Test result includes: cable_type, version, speed_gbps, max_power_w, pin_continuity, eMarker, resistance_ohm +- Auto-print uses cable label template from Phase 4 + + + + +## Deferred Ideas + +- Real Treedix protocol implementation (hardware required) +- Real FNIRSI FNB58 protocol (community lib reference, hardware required) +- Network discovery / DUT identification + +