--- phase: 59-order-status-automation-event plan: 01 subsystem: automation tags: [automation, events, order-status, conditions] requires: - phase: 57-payment-automation-event provides: payment.status_changed event pattern, condition evaluation pattern provides: - order.status_changed automation event - order_status condition type with checkbox UI - chain emission from update_order_status action affects: [future automation events, order workflow] tech-stack: added: [] patterns: [order status condition evaluation analogous to payment_status] key-files: created: [] modified: - src/Modules/Automation/AutomationController.php - src/Modules/Automation/AutomationService.php - src/Modules/Orders/OrdersController.php - resources/views/automation/form.php - resources/views/automation/index.php - public/assets/js/modules/automation-form.js key-decisions: - "Emisja eventu tylko przy realnej zmianie statusu (old != new)" - "Chain emission z akcji update_order_status przez emitEvent() z depth protection" patterns-established: - "order_status condition: order_status_codes array z lowercase kodami statusow" duration: 15min started: 2026-03-30T23:45:00Z completed: 2026-03-31T00:00:00Z --- # Phase 59 Plan 01: Order Status Automation Event Summary **Event automatyzacji `order.status_changed` z warunkiem `order_status` — emisja z recznej zmiany statusu i chain z akcji automatyzacji** ## Performance | Metric | Value | |--------|-------| | Duration | ~15min | | Tasks | 2 completed | | Files modified | 6 | ## Acceptance Criteria Results | Criterion | Status | Notes | |-----------|--------|-------| | AC-1: Event order.status_changed dostepny w formularzu | Pass | Opcja "Zmiana statusu zamowienia" w dropdown zdarzenia | | AC-2: Warunek order_status z checkboxami statusow | Pass | Checkboxy z aktywnymi statusami zamowien (PHP + JS) | | AC-3: Emisja eventu przy recznej zmianie statusu | Pass | OrdersController emituje po udanym updateOrderStatus() | | AC-4: Chain emission z akcji update_order_status | Pass | AutomationService emituje przez emitEvent() z depth protection | | AC-5: Etykieta w widoku listy regul i historii | Pass | index.php zawiera etykiety payment.status_changed + order.status_changed | ## Accomplishments - Event `order.status_changed` dostepny w silniku automatyzacji z pelnym UI (dropdown zdarzenia, checkboxy warunku) - Emisja z dwoch zrodel: reczna zmiana statusu (OrdersController) i chain z akcji automatyzacji (AutomationService) - Naprawiono brakujaca etykiete `payment.status_changed` w index.php (bug z Phase 57) ## Files Created/Modified | File | Change | Purpose | |------|--------|---------| | `src/Modules/Automation/AutomationController.php` | Modified | ALLOWED_EVENTS + order.status_changed, ALLOWED_CONDITION_TYPES + order_status, parseConditionValue + order_status, buildRuleFromRequest + order_status | | `src/Modules/Automation/AutomationService.php` | Modified | evaluateOrderStatusCondition(), chain emit z handleUpdateOrderStatus(), dodano $context param | | `src/Modules/Orders/OrdersController.php` | Modified | Pobranie oldStatus przed zmiana, emisja order.status_changed po sukcesie | | `resources/views/automation/form.php` | Modified | Etykieta zdarzenia, opcja warunku order_status, checkboxy statusow zamowien | | `resources/views/automation/index.php` | Modified | Etykiety payment.status_changed + order.status_changed | | `public/assets/js/modules/automation-form.js` | Modified | buildOrderStatusCheckboxes(), opcja order_status w addCondition, onConditionTypeChange | ## Decisions Made | Decision | Rationale | Impact | |----------|-----------|--------| | Emisja tylko przy old_status != new_status | Brak falszywych triggerow przy ustawieniu tego samego statusu | Spojnosc z wzorcem shipment.status_changed | | handleUpdateOrderStatus otrzymuje $context dla chain | Potrzebny do emitEvent() z depth/dedup protection | Zapobiega petlom automatyzacji | ## Deviations from Plan ### Auto-fixed Issues **1. Bugfix: brakujaca etykieta payment.status_changed w index.php** - **Found during:** Poczatek sesji (zgloszenie uzytkownika) - **Issue:** Phase 57 nie dodala etykiety do index.php — wyswietlala sie surowa nazwa - **Fix:** Dodano wpis do $eventLabels w index.php - **Files:** resources/views/automation/index.php **Total impact:** Jeden bugfix z Phase 57 naprawiony przy okazji ## Issues Encountered None ## Next Phase Readiness **Ready:** - Pelny zestaw eventow automatyzacji: receipt.created, shipment.created, shipment.status_changed, payment.status_changed, order.status_changed - Wszystkie warianty warunkow: integration, shipment_status, payment_status, order_status **Concerns:** - None **Blockers:** - None --- *Phase: 59-order-status-automation-event, Plan: 01* *Completed: 2026-03-31*