Przejdź do treści

Etap 17 — Job API: pojedyncza skrytka + flaga BROKEN

Wydawanie, nadawanie i odbiór przeszły z event-driven LockerOpenScreen na JobOpenScreen (Job API), plus flaga awarii skrytki.

Co weszło

Kiosk (1.5.42–1.5.43)

  • Nowy JobOpenScreen (mock/dev nadal na LockerOpenScreen). Agent prowadzi cykl open→unlock→open→close, re-rygiel, timeouty; kiosk pollu je co 700 ms — czyta diody per skrytka + globalny master status (DrumStatusBanner).
  • Na zamknięciu: sukces → dalej; błąd (F07/timeout/awaria) → karta „Czy ponowić?": Ponów = nowy job, Nie = KioskFault + flaga BROKEN.

Backend

  • LockerStatus.BROKEN — wyklucza skrytkę z wydania/nadania/odbioru (pre-check blokuje), ale dostępna do inwentaryzacji/uzupełnienia (backend zdejmuje BROKEN z tych list). Pickup verify() zwraca lockerStatus → kiosk pokazuje „Skrytka w awarii" i blokuje otwarcie.

Pliki / endpointy

  • Kiosk: lib/screens/job_open_screen.dart (nowy), dispense_screen.dart, deposit_lookup_screen.dart, deposit_size_screen.dart, pickup_screen.dart.
  • Backend: dispensing/kiosk-dispense.service.ts, shipments/shipments.service.ts (markLockerBroken), shipments/pickup.controller.ts.

Status

Wdrożone (kiosk 1.5.42–1.5.43). Pre-check otwarcia ujednolicony w etap-19 (lockerOpenPreCheck).

Powiązane