--- phase: 108-delivery-status-management plan: 02 type: execute wave: 2 depends_on: [108-01] files_modified: - src/Modules/Automation/AutomationService.php - src/Modules/Automation/AutomationRepository.php - resources/views/automation/form.php - public/assets/js/modules/automation-form.js - .paul/docs/ARCHITECTURE.md - .paul/docs/TECH_CHANGELOG.md autonomous: true delegation: on --- ## Goal Zaktualizowac wszystkie miejsca w module Automatyzacji, ktore uzywaaly hardcoded listy statusow znormalizowanych, zeby korzystaly z DB przez `DeliveryStatus::getAllOptions()`. ## Purpose Po Plan 01 operator moze dodac nowy status w DB. Jednak dopoki formularze automatyzacji i walidacje beda uzywaly hardcoded stalych, nowy status nie pojawi sie w dropdownach regul. Plan 02 domyka integracje dla warstwy automatyzacji. ## Output - Dropdown warunków/akcji automatyzacji laduje statusy z DB - Brak regresji dla istniejacych regul automatyzacji ## Project Context @.paul/STATE.md ## Prior Work @.paul/phases/108-delivery-status-management/108-01-SUMMARY.md ## Source Files @src/Modules/Automation/AutomationService.php @src/Modules/Automation/AutomationRepository.php @resources/views/automation/form.php @public/assets/js/modules/automation-form.js ## Required Skills | Skill | Priority | When to Invoke | Loaded? | |-------|----------|----------------|---------| | sonar-scanner (CLI) | required | Po APPLY, przed UNIFY | o | ## AC-1: Dropdown statusow w automatyzacji pochodzi z DB ```gherkin Given operator tworzy lub edytuje regule automatyzacji When wybierze warunek "status przesylki" lub akcje zalezna od statusu Then lista dostepnych statusow zawiera wszystkie statusy z tabeli delivery_statuses And nowy status dodany przez /settings/delivery-statuses pojawia sie w dropdownie bez deploymentu ``` ## AC-2: Istniejace reguly automatyzacji dzialaja bez zmian ```gherkin Given regula automatyzacji z warunkiem na status "in_transit" When cron wywola ewaluacje tej reguly Then warunek jest oceniany tak samo jak przed zmiana And brak wyjatkow zwiazanych z nieistniejacymi stalymi statusow ``` Task 1: Zaktualizowac dropdown statusow w automatyzacji src/Modules/Automation/AutomationService.php, src/Modules/Automation/AutomationRepository.php, resources/views/automation/form.php, public/assets/js/modules/automation-form.js 1. Zidentyfikowac wszystkie miejsca w module Automation gdzie uzywa sie: - `DeliveryStatus::ALL_STATUSES` lub `DeliveryStatus::LABEL_PL` do budowania opcji selecta - Hardcoded tablicy statusow w walidacji warunkow/akcji 2. Podpiac `DeliveryStatusRepository` do `AutomationRepository` lub serwisu ktory buduje opcje dla widoku formularza (sprawdzic jak repo jest dostarczone w tym module). 3. W widoku `resources/views/automation/form.php` — zamiana hardcoded opcji statusow na przekazana z kontrolera tablice `$deliveryStatusOptions` (z getAllOptions()). 4. W `automation-form.js` — opcje do dynamicznie dodawanych wierszy warunkow/akcji: - Jesli opcje sa generowane statycznie w JS (hardcoded), zastapic je danymi z `window.automationDeliveryStatusOptions` ktore beda inicjalizowane inline w widoku PHP - Jesli opcje sa generowane przez PHP przy renderowaniu — brak zmian w JS, tylko upewnic sie ze dynamicznie dodawane wiersze tez dostaja prawidlowa liste 5. Walidacja: sprawdzic czy AutomationService lub AutomationRepository waliduje wartosc statusu przy zapisie — jesli tak, zaktualizowac by uzywala `DeliveryStatusRepository::getByKey()`. 6. Zaktualizowac `.paul/docs/ARCHITECTURE.md` i `.paul/docs/TECH_CHANGELOG.md`. - Formularz automatyzacji laduje sie poprawnie, dropdown statusow zawiera wszystkie DB-rekordy - Dodanie nowego statusu przez /settings/delivery-statuses sprawia ze pojawia sie w dropdownie automatyzacji bez odswiezania cache serwera - Istniejace reguly z hardcoded kluczami statusow (np. in_transit) dzialaja bez bledow - `php vendor/bin/phpunit` bez nowych failurow AC-1 i AC-2 spelnione. ## DO NOT CHANGE - Logika ewaluacji warunkow automatyzacji poza podpieciem dynamicznej listy statusow - Schemat danych regul i akcji automatyzacji - Mechanizm crona ani harmonogram - Provider mapy w DeliveryStatus.php ## SCOPE LIMITS - Tylko dropdown statusow — nie zmieniamy innych typow warunkow/akcji automatyzacji Before declaring plan complete: - [ ] Dropdown statusow w formularzu automatyzacji pokazuje statusy z DB - [ ] Nowy status z CRUD pojawia sie w dropdownie automatyzacji - [ ] Istniejace reguly automatyzacji dzialaja bez bledow - [ ] `php vendor/bin/phpunit` przechodzi bez regresji - [ ] Dokumentacja .paul/docs/* zaktualizowana - Pelna integracja listy statusow z DB w calej aplikacji - Operator nie musi robic deploymentu zeby nowy status pojawil sie we wszystkich miejscach - Brak regresji w istniejacych automatyzacjach After completion, create `.paul/phases/108-delivery-status-management/108-02-SUMMARY.md`