Etap 12 — DynaBox: drzwi fizyczne vs skrytki wirtualne¶
Architektura DynaBoxa: obrotowy bęben (drzwi/wiersze) zmapowany na siatkę skrytek wirtualnych; realny układ na webie i kiosku.
Co weszło¶
Backend¶
- Rozdział drzwi fizycznych (
MachineDoor, wiersze bębna) od skrytek wirtualnych (Locker.physicalDoorNumber). - Alokacja po logicznym N → mapuje na drzwi fizyczne; awaria drzwi → cały wiersz wyłączony (auto + ręcznie,
outOfServiceBy). - Rozmiary komórek z SmartConf (
GET /v1/compartments); mapper ułamków per maszyna (drumSizeMap).
Web¶
- Pasek drzwi fizycznych + macierz K×wiersze + wyłączanie wiersza; realny układ 18-kolumnowy jak w SmartConf; kafelek komórki kolorowany stanem + kłódka/awaria/funkcja; Ctrl+drag zaznaczanie bez przełączania trybu.
Kiosk (1.5.17–1.5.18)¶
- Forward geometrii bębna (
drumColumns + doorsPerColumn); diagnostyka jako realny układ.
Pliki / endpointy¶
backend/prisma/schema.prisma(MachineDoor, physicalDoorNumber),machines.service.ts,machine-sync.service.ts.- Web:
components/dispensing/occupancy-manager.tsx,locker-grid.tsx, modal konfiguracji. - Kiosk:
hardware/smartconf_hardware.dart(_compartments),machine_info.dart.
Status¶
Wdrożone (kiosk 1.5.18, web). Bez SmartConf skrytki są nieosiągalne (baner + blok alokacji).