feat: Implement QR code generation and ops interface scaffold

Phase 1: QR Code Generation
- Create GenerateQrCodeOnOrderCreated listener
- Generate secure random token on order creation
- Create SVG QR codes pointing to /ops/orders/{token}
- Store QR token and generation timestamp on order record
- Register listener in EventServiceProvider

Phase 2: Ops Controller & Routes
- Create OpsController with showOrder() landing page
- Implement confirmPacking() to capture dimensions via form
- Add markInspectionPassed() and flagInspectionIssue() methods
- Implement getAvailableActions() state machine for UI
- Add routes: GET /ops/orders/{token}, POST /ops/orders/{id}/pack, etc.
- Token-gated access, requires auth middleware

Next: Create Blade templates for state-driven UI
This commit is contained in:
twotalesanimation
2026-01-02 18:55:53 +02:00
parent db0454d102
commit 74525e8955
4 changed files with 272 additions and 1 deletions
+2
View File
@@ -17,6 +17,7 @@ use App\Events\ReadyToShipIntent;
use App\Events\ShipmentCreated;
use App\Events\ShipmentCreationFailed;
use App\Listeners\CreateShipmentOnReadyToShip;
use App\Listeners\GenerateQrCodeOnOrderCreated;
use App\Listeners\NotifySlackOnOrderCreated;
use App\Listeners\NotifySlackOnOrderPacked;
use App\Listeners\NotifySlackOnParcelCollected;
@@ -39,6 +40,7 @@ class EventServiceProvider extends ServiceProvider
// Order events
OrderCreated::class => [
NotifySlackOnOrderCreated::class,
GenerateQrCodeOnOrderCreated::class,
],
// Packing events