8.5 KiB
phase, plan, type, wave, depends_on, files_modified, autonomous
| phase | plan | type | wave | depends_on | files_modified | autonomous | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 42-automation-shipment-status-event | 01 | execute | 1 |
|
false |
Purpose
Uzytkownik ma miec mozliwosc budowania automatycznych regu³ opartych o realny status dostawy, a nie tylko zdarzenie paragonu. To domyka workflow post-shipping i pozwala reagowac na sytuacje kurierskie.
Output
Nowe zdarzenie shipment.status_changed, nowe warunki reguly dla statusow przesylki, trigger uruchamiany po zmianie statusu w trackerze, oraz dokumentacja mapowania statusow dostepnych vs oczekiwanych biznesowo.
Prior Work (only if genuinely needed)
@.paul/phases/16-automated-tasks/16-02-SUMMARY.md @.paul/phases/27-shipment-tracking-backend/27-01-SUMMARY.md @.paul/phases/29-delivery-status-mapping-ui/29-01-SUMMARY.md
Source Files
@src/Modules/Automation/AutomationController.php @src/Modules/Automation/AutomationService.php @src/Modules/Cron/ShipmentTrackingHandler.php @src/Modules/Cron/CronHandlerFactory.php @src/Modules/Automation/AutomationRepository.php @resources/views/automation/form.php @resources/views/automation/index.php @public/assets/js/modules/automation-form.js @src/Modules/Shipments/DeliveryStatus.php
## Required Skills (from SPECIAL-FLOWS.md)| Skill | Priority | When to Invoke | Loaded? |
|---|---|---|---|
sonar-scanner |
required | Po APPLY, przed UNIFY | o |
| /code-review | optional | Po implementacji, przed UNIFY | o |
BLOCKING: Required skills MUST be loaded before APPLY proceeds.
Skill Invocation Checklist
sonar-scanneruruchomiony po APPLY- /code-review (opcjonalnie)
<acceptance_criteria>
AC-1: Dostepne jest nowe zdarzenie automatyzacji statusu przesylki
Given uzytkownik tworzy/edytuje zadanie automatyczne
When wybiera zdarzenie
Then moze wybrac `shipment.status_changed`
And reguly dla tego zdarzenia sa zapisywane i odczytywane poprawnie
AC-2: Dostepne sa warunki filtrowania po statusie przesylki
Given uzytkownik konfiguruje warunki reguly dla `shipment.status_changed`
When wybiera statusy przesylek
Then moze wskazac statusy biznesowe odpowiadajace wymaganiom z punktu 42
And system waliduje i stosuje te warunki podczas uruchamiania automatyzacji
AC-3: Trigger dziala po realnej zmianie statusu trackingu
Given cron tracking aktualizuje status paczki
When `delivery_status` zmienia wartosc
Then uruchamiane jest `automationService->trigger('shipment.status_changed', orderId, context)`
And reguly uruchamiaja akcje tylko gdy warunki statusu sa spelnione
AC-4: Statusy z punktu 42 sa zweryfikowane i udokumentowane
Given wdrozenie punktu 42
When sprawdzane sa dokumenty techniczne
Then ARCHITECTURE/TECH_CHANGELOG opisuja mapowanie statusow "biznesowych" do statusow technicznie obslugiwanych
And punkt 42 w DOCS/todo.md jest oznaczony jako wykonany
</acceptance_criteria>
Task 1: Rozszerz model automatyzacji o event i condition statusu przesylki src/Modules/Automation/AutomationController.php, src/Modules/Automation/AutomationService.php, src/Modules/Automation/AutomationRepository.php, resources/views/automation/form.php, public/assets/js/modules/automation-form.js, resources/views/automation/index.php Dodaj event `shipment.status_changed` do listy dozwolonych zdarzen i etykiet formularza/listy. Dodaj nowy typ warunku (np. `shipment_status`) z konfiguracja wielokrotnego wyboru statusow. W `AutomationService` rozszerz ewaluacje warunkow o porownanie statusu z kontekstu triggera (dla eventu shipment). Zachowaj kompatybilnosc istniejacych regul `receipt.created`. rg -n "shipment\.status_changed|shipment_status|ALLOWED_EVENTS|ALLOWED_CONDITION_TYPES" src/Modules/Automation resources/views/automation public/assets/js/modules/automation-form.js AC-1 satisfied i AC-2 satisfied: event + warunki sa dostepne i walidowane. Task 2: Podlacz trigger automatyzacji do zmian statusu trackingu src/Modules/Cron/ShipmentTrackingHandler.php, src/Modules/Cron/CronHandlerFactory.php, src/Modules/Automation/AutomationService.php W `ShipmentTrackingHandler` porownuj status przed/po aktualizacji i uruchamiaj automatyzacje tylko przy realnej zmianie. Przekaz do triggera kontekst: package_id, provider, delivery_status, delivery_status_raw, previous_status. Zaktualizuj fabryke crona (`CronHandlerFactory`) tak, aby `ShipmentTrackingHandler` mial dostep do `AutomationService`. Unikaj podwojnych triggerow dla tej samej paczki i tej samej wartosci statusu. rg -n "shipment\.status_changed|trigger\(|previous_status|delivery_status_raw|CronHandlerFactory" src/Modules/Cron src/Modules/Automation AC-3 satisfied: reguly odpalaja sie po zmianie statusu przesylki. Task 3: Udokumentuj mapowanie statusow biznesowych i zamknij TODO 42 DOCS/ARCHITECTURE.md, DOCS/TECH_CHANGELOG.md, DOCS/todo.md Opisz mapowanie statusow wymaganych biznesowo z punktu 42 do statusow obslugiwanych technicznie (normalized/raw). Jesli ktorys status nie ma 1:1 mapowania, zapisz jawnie przyjety odpowiednik i ograniczenie. Oznacz punkt 42 jako wykonany. rg -n "shipment\.status_changed|status przesylki|42\." DOCS/ARCHITECTURE.md DOCS/TECH_CHANGELOG.md DOCS/todo.md AC-4 satisfied: statusy i ograniczenia sa transparentnie opisane. Nowe zdarzenie automatyzacji dla zmiany statusu przesylki i warunki filtrowania po statusach. 1. Otworz `Ustawienia > Zadania automatyczne > Dodaj zadanie`. 2. Sprawdz, ze na liscie zdarzen jest `shipment.status_changed` (z czytelna etykieta). 3. Dodaj warunek statusu przesylki i zapisz regule. 4. Wymus trigger statusu (np. uruchom cron tracking dla testowej paczki). 5. Zweryfikuj, ze akcja reguly uruchomila sie tylko dla wybranych statusow. Type "approved" to continue, or describe issues to fixDO NOT CHANGE
database/migrations/*(zakladamy wykorzystanie istniejacego modelu JSON condition_value)- Istniejace akcje automatyzacji poza koniecznym rozszerzeniem
- UI innych modulow niz
settings/automation
SCOPE LIMITS
- Zakres dotyczy eventu i warunkow dla statusu przesylki.
- Bez dodawania nowych typow akcji automatyzacji.
- Bez przebudowy calego tracking engine.
<success_criteria>
- Uzytkownik moze tworzyc reguly reagujace na zmiane statusu przesylki
- Warunki statusowe dzialaja przewidywalnie i bez falszywych triggerow
- Punkt 42 jest zamkniety z pelna dokumentacja mapowania statusow </success_criteria>