Operational how-tos: Print rider badge ·
Print warehouse QR ·
Run kiosk.
| QR type | Payload pattern | Printed from | Scanned when |
|---|
| Rider badge | ailaaj:rider:<identify_hash> | Admin → Operations → Shipping Methods (Riders tab) → Rider QR | Kiosk identity + re-entry |
| Warehouse return | ailaaj:wh:<store_warehouse.uuid> | Admin → Operations → Shipping Methods (Riders tab) → Warehouse Return QR | End trip at dock |
| Picklist bag | PL-… barcode (pick list number) | Picklist label | Claim step only |
Rider hash rules
- 32-character hex
identify_hash on tenant_riders.
- Regenerating invalidates previous badges.
- Manual kiosk entry accepts bare hash without
ailaaj:rider: prefix.
Warehouse ID rules
- UUID must match a
store_warehouse row assigned to the tenant.
- End-trip scan must align with trip picklist warehouses.
Kiosk API steps (public /api/dispatch/*)
| Step | Endpoint | Success outcome |
|---|
| Identify | POST /identify | Rider + nextStep (select_picklists or active_trip_guard) |
| Rack load | GET /packed-picklists?scan=… | Available + taken tiles for assigned warehouses |
| Start trip | POST /start-trip | Trip active, picklists dispatched |
| End trip | POST /end-trip | Trip completed, picklists delivered |
Trip states (board + kiosk)
| State | Meaning | Visible on board |
|---|
| Packed on rack | Awaiting claim | On the rack KPI / tab |
| Active trip | Started, not ended | Out for delivery |
| Completed | Warehouse scan closed | Returned / history (date-filtered) |
Picklist statuses: packed → dispatched (start) → delivered (end).
Delivery fields written on end trip
| Field | Typical value |
|---|
delivered_to_name | Handed to Ward 3 · Bed 12 |
actual_delivery_date | Full timestamp at warehouse scan |
Ward text is derived from order metadata.hospital_qr or shipping_address.