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>
This commit is contained in:
136
.paul/phases/108-delivery-status-management/108-02-PLAN.md
Normal file
136
.paul/phases/108-delivery-status-management/108-02-PLAN.md
Normal file
@@ -0,0 +1,136 @@
|
||||
---
|
||||
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>
|
||||
Reference in New Issue
Block a user