Lager-Spots (WarehouseSpots)
Zweck
Lager-Spots (WarehouseSpot) bilden konkrete Lagerorte innerhalb eines Lagers ab — z. B. „Regal A1", „Fach 03B". Pro Spot wird ein QR-Code generiert, der per Smartphone-Scan vor Ort die Spot-Identitaet aufloesst. Die Verwaltung erfolgt ausschliesslich über die Sub-Routen am Lager: /warehouses/:id/locations (Liste) und /warehouses/:id/locations/:warehouseSpotId (Detail).
Voraussetzungen
Berechtigungen (CASL)
| Action | Subject | Wirkung | Keycloak-Rolle |
|---|---|---|---|
view | FE_Warehouse, WarehouseSpot | Spots in Lager-Detail sichtbar | — |
create/update/delete | WarehouseSpot | Pflegen | APP_SPEAMCORE_CREATE/UPDATE/DELETE_WAREHOUSE_SPOT |
Schritt-für-Schritt-Anleitung
Spot anlegen
- Lager (
/warehouses/:id) öffnen. - Tab Lagerorte (
/warehouses/:id/locations). - + Neu klicken — leerer Spot wird angelegt, Detail-Seite öffnet sich.
- Name pflegen (z. B. „Regal A1").
- Änderungen werden automatisch gespeichert. Der QR-Code wird im
afterUpdate-Hook bei Namens-Änderungen invalidiert.
Spot löschen
DELETE /api/warehouse-spots/:id — Soft-Delete. Verknuepfungen zu Bestand bleiben technisch bestehen, sind aber nach dem Delete leere Referenzen.

Toolbar (Detail-Seite)
Schlanke Toolbar oben rechts:
| Icon | Aktion (aria-label) | CASL | Wirkung |
|---|---|---|---|
| ← | Zurückgehen | — | Zurück zur Liste. |
| 🏠 | Zur Startseite gehen | — | Springt auf das Dashboard / /. |
| ⏮/◀/▶/⏭ | Pagination | — | Navigation durch die gefilterte Liste — Massen-Bearbeitung ohne Liste-Sprung. |
Globale Floating-Drawer (links)
Wie auf jeder Detail-Seite verfuegbar — siehe Floating-Quickbar:
- KAL. (Mini-Kalender)
- ZEIT (Persoenliche Wochen-Arbeitszeit)
- ARBEIT (Eigene bevorstehende Aufträge)
UI-Elemente
Komponente: QR-Code-Anzeige
Wird automatisch bei Namensaenderung neu erzeugt. Kann gedruckt und am Lagerort angebracht werden.
Felder und Eingaben
| Feldname | Pflicht | Datentyp | Wirkung beim Ausfuellen | Voraussetzung |
|---|---|---|---|---|
name | ja | String | Anzeige im Lager-Tab und auf dem QR-Code-Aufkleber. Änderung triggert QR-Code-Invalidation. | — |
warehouseId | ja (disabled nach Anlage) | UUID | Zuordnung zum Lager. Wird beim Anlegen aus dem Routing-Kontext gesetzt. | view:Warehouse. |
Wiederverwendbare Konzepte
Verknuepfungen zu anderen Modulen
- Lager (
/warehouses) — Pflicht-Parent. - Betriebsmittel (
/operating-equipments) —OperatingEquipment.warehouseSpotIdreferenziert einen Spot. - WarehouseProduct — Bestand kann pro Spot gefuehrt werden.
Häufige Fehler und Lösungen
| Fehler | Lösung |
|---|---|
| QR-Code aktualisiert nicht | Nur Namensaenderung triggert Invalidation. Bei anderen Änderungen QR-Code manuell neu erzeugen. |
| Spot lasst sich nicht in anderes Lager verschieben | Per Design — neuen Spot anlegen, Bestaende manuell übernehmen. |
| Spot fehlt im Auswahl-Select | Lager nicht zugeordnet, Soft-Delete oder Berechtigung fehlt. |
API/Schnittstellen
| Methode | Endpoint | Zweck | CASL |
|---|---|---|---|
GET | /api/warehouse-spots | Liste | view WarehouseSpot |
POST | /api/warehouse-spots | Anlegen | create WarehouseSpot |
PATCH | /api/warehouse-spots/:id | Ändern (QR-Invalidation bei Name) | update WarehouseSpot |
DELETE | /api/warehouse-spots/:id | Soft-Delete | delete WarehouseSpot |
Versionshinweise
- 2026-04-29: Initiale Veroeffentlichung.