Structured storage locations let you manage physical shelves, drawers, and dryboxes as a catalog instead of free-text only.
locations table — catalog of named storage spots (name + case-insensitive name_key).spool.location_id — source of truth for structured assignment.spool.storage_location — denormalized display string and Spoolman wire format; always derived on write via location_service.resolve_spool_location_fields().location_id; backend fills storage_location.| UI label | Meaning |
|---|---|
| Location (inventory table column) | AMS slot or printer assignment (e.g. H2D-1 B4) |
| Storage Location | Physical shelf/drawer where the spool lives when not in AMS |
| Locations page | Catalog of named storage spots with spool counts |
Regal Etage 2)Bambuddy keeps a local location catalog. When Spoolman integration is enabled:
location fieldPATCH /location/{old}Existing free-text storage_location values are automatically imported into the location catalog and linked on upgrade (case-insensitive dedup via name_key).
./test_frontend.sh — i18n parity, lint, Vitest./test_backend.sh — Ruff, pytest (includes test_locations_api.py, test_location_service.py)