Przejdź do treści

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).

Powiązane