docs(04): phase 4 verification + human UAT (hardware blocked)

This commit is contained in:
Mikkel Georgsen 2026-04-10 06:59:45 +00:00
parent 36f7e92cf2
commit 93d26ebf55
3 changed files with 88 additions and 5 deletions

View file

@ -91,11 +91,11 @@ Plans:
**Plans**: 5 plans
Plans:
- [ ] 04-01-PLAN.md — USB Manager package: VID/PID enumeration, goroutine-per-device, reconnect, leak-safe teardown
- [ ] 04-02-PLAN.md — Labels package: QR code generation, standard + cable label renderers (image.Image output)
- [ ] 04-03-PLAN.md — Printer driver interface, MockDriver, PrtQutie stub, POST /api/labels/:id/print, GET /api/usb/events SSE
- [ ] 04-04-PLAN.md — Intake auto-print integration: IntakePrinter interface, non-fatal printer step, print_skipped response flag
- [ ] 04-05-PLAN.md — Frontend: useUSBEvents hook, USBStatusBar component, Print Label button on dashboard
- [x] 04-01-PLAN.md — USB Manager package: VID/PID enumeration, goroutine-per-device, reconnect, leak-safe teardown
- [x] 04-02-PLAN.md — Labels package: QR code generation, standard + cable label renderers (image.Image output)
- [x] 04-03-PLAN.md — Printer driver interface, MockDriver, PrtQutie stub, POST /api/labels/:id/print, GET /api/usb/events SSE
- [x] 04-04-PLAN.md — Intake auto-print integration: IntakePrinter interface, non-fatal printer step, print_skipped response flag
- [x] 04-05-PLAN.md — Frontend: useUSBEvents hook, USBStatusBar component, Print Label button on dashboard
### Phase 5: Cable Test Integration
**Goal**: 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

View file

@ -0,0 +1,42 @@
---
status: partial
phase: 04-usb-manager-label-printing
source: [04-VERIFICATION.md]
started: 2026-04-10
updated: 2026-04-10
---
## Tests
### 1. PRT Qutie protocol (LBL-04)
expected: Real PRT Qutie driver replaces stub. Hardware arrives 2026-04-13. Reverse-engineer protocol via Sorticker app sniff or HPRT SDK docs.
result: [pending — hardware not yet arrived]
### 2. PRT Qutie VID/PID registration (USB-01)
expected: Update `KnownDevices` in internal/usb/device.go with real PRT Qutie VID/PID. Currently uses placeholder 0525:a4a7.
result: [pending — hardware not yet arrived]
### 3. Live label print
expected: POST /api/labels/{id}/print actually prints a label on the PRT Qutie. QR code scans with phone camera.
result: [pending — hardware not yet arrived]
### 4. USB hot-plug detection
expected: Plugging/unplugging real device triggers SSE event within 5s of poll cycle.
result: [pending — hardware not yet arrived]
### 5. Auto-print after intake (LBL-05)
expected: Successful intake POST /api/intake produces both NetBox record AND printed label.
result: [pending — hardware not yet arrived]
## Summary
total: 5
passed: 0
issues: 0
pending: 0
skipped: 0
blocked: 5
## Gaps
All items blocked on PRT Qutie hardware arrival 2026-04-13.

View file

@ -0,0 +1,41 @@
---
phase: 04-usb-manager-label-printing
verified: 2026-04-10
status: human_needed
score: 5/5 (code) — hardware validation pending
overrides_applied: 0
---
# Phase 4 Verification
## Goal
USB peripherals are managed by a goroutine-per-device subsystem and any cataloged item can have a QR-coded label printed by the PRT Qutie without operator intervention after intake.
## Code-Level Verification (Complete)
| # | Success Criterion | Status | Evidence |
|---|------|--------|----------|
| 1 | USB Manager discovers PRT Qutie by VID/PID and reconnects | ✓ | `internal/usb/manager.go` — VID/PID enumeration via `system_profiler`, goroutine-per-device, reconnect on poll |
| 2 | USB connect/disconnect events appear in frontend via SSE in real time | ✓ | `internal/api/handlers/usb_events.go` SSE handler + `web/src/hooks/useUSBEvents.ts` EventSource hook |
| 3 | QR label with HW ID, item name, key spec line, and QR code prints | ✓ | `internal/labels/renderer.go` + `internal/printer/driver.go` + POST /api/labels/:id/print |
| 4 | Cable-specific label template shows USB version, speed, wattage, test date | ✓ | `internal/labels/cable.go` |
| 5 | Label printing completes as final step of AI intake workflow | ✓ | `internal/api/handlers/intake.go` IntakePrinter integration, non-fatal |
## All 9 Requirements Covered
USB-01, USB-02, USB-03, USB-04, LBL-01, LBL-02, LBL-03, LBL-04, LBL-05 — implemented and tested with mock devices.
## Test Results
- `go test ./...` — all packages pass
- `go test ./internal/usb/... -race` — pass (goroutine leak verification)
- `cd web && npm run build` — clean
## Human Verification Required
**Hardware arrives 2026-04-13.** All hardware-dependent verification deferred to HUMAN-UAT.md:
1. PRT Qutie protocol implementation (currently stub)
2. Real VID/PID for PRT Qutie (placeholder `0525:a4a7` in registry)
3. Live label print test
4. USB hot-plug detection on real hardware
## Status
`human_needed` — code complete, hardware validation deferred to operator after 2026-04-13.