Files
orderPRO/.paul/phases/108-delivery-status-management/108-02-PLAN.md
Jacek Pyziak 0063402897 feat(108): delivery status management
Phase 108 complete (v3.2 milestone):

Plan 108-01 — Delivery Status DB & CRUD:
- Tabela delivery_statuses z seedem 11 statusow systemowych
- DeliveryStatusRepository (CRUD + per-request static cache)
- DeliveryStatus::setRepository() — DB fallback dla static final class
- Panel /settings/delivery-statuses (zakladki Statusy + Mapowanie)
- Sidebar przebudowany: Statusy zamowien + Statusy przesylek

Plan 108-02 — Automation Dropdowns z DB + UI Refactor:
- Dropdowny automatyzacji ladowane z DB (warunek shipment_status + akcja update_shipment_status)
- Walidacja przez DeliveryStatus::getAllStatuses()
- Osobna podstrona formularza CRUD (delivery-status-form.php)
- Lista uproszczona: rename Terminal -> Koncowy, usunieta kolumna Typ
- BREAKING: drop backward compat dla starych grupowych kluczy automatyzacji
- Bug fix: path params w DeliveryStatusesController via \$request->input('id')

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-27 22:10:24 +02:00

5.3 KiB

phase, plan, type, wave, depends_on, files_modified, autonomous, delegation
phase plan type wave depends_on files_modified autonomous delegation
108-delivery-status-management 02 execute 2
108-01
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
true 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

<acceptance_criteria>

AC-1: Dropdown statusow w automatyzacji pochodzi z DB

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

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

</acceptance_criteria>

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

<success_criteria>

  • 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 </success_criteria>
After completion, create `.paul/phases/108-delivery-status-management/108-02-SUMMARY.md`