119 lines
4.7 KiB
Markdown
119 lines
4.7 KiB
Markdown
---
|
|
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*
|