---
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
---

<objective>
## 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
</objective>

<context>
## 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
</context>

<skills>
## Required Skills

| Skill | Priority | When to Invoke | Loaded? |
|-------|----------|----------------|---------|
| sonar-scanner (CLI) | required | Po APPLY, przed UNIFY | o |
</skills>

<acceptance_criteria>

## 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
```

</acceptance_criteria>

<tasks>

<task type="auto">
  <name>Task 1: Zaktualizowac dropdown statusow w automatyzacji</name>
  <files>src/Modules/Automation/AutomationService.php, src/Modules/Automation/AutomationRepository.php, resources/views/automation/form.php, public/assets/js/modules/automation-form.js</files>
  <action>
    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`.
  </action>
  <verify>
    - 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
  </verify>
  <done>AC-1 i AC-2 spelnione.</done>
</task>

</tasks>

<boundaries>

## 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

</boundaries>

<verification>
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
</verification>

<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>

<output>
After completion, create `.paul/phases/108-delivery-status-management/108-02-SUMMARY.md`
</output>
