AI-powered hardware inventory management for homelab environments
- CatalogStatus type with forward-only state machine (draft→indexed→…→complete) - Transition() enforces valid transitions, returns error with 'invalid transition' message - ParseCatalogStatus() validates known status strings - HardwareRecord domain type composing netbox.Device with quality gate state - CatalogUpdater.UpdateCatalogStatus() validates transition then PatchCustomFields - SyncTags() normalizes tags (slug form) and ensures they exist in NetBox - normalizeTags deduplicates across case/whitespace/space-vs-hyphen variants - ensureTag uses go-netbox v4 NewTagRequest(name, slug) / ExtrasTagsCreate - All 12 state machine table-driven tests pass |
||
|---|---|---|
| .planning | ||
| cmd/hwlab | ||
| internal | ||
| web/dist | ||
| .env.example | ||
| .gitignore | ||
| assets.go | ||
| CLAUDE.md | ||
| config.json | ||
| go.mod | ||
| go.sum | ||
| Makefile | ||