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>
8.2 KiB
8.2 KiB
phase, plan, subsystem, tags, requires, provides, affects, tech-stack, key-files, key-decisions, patterns-established, duration, started, completed
| phase | plan | subsystem | tags | requires | provides | affects | tech-stack | key-files | key-decisions | patterns-established | duration | started | completed | ||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 108-delivery-status-management | 02 | automation, settings |
|
|
|
|
|
|
|
|
~50min | 2026-04-27T01:00:00Z | 2026-04-27T02:00:00Z |
Phase 108 Plan 02: Automation Dropdowns z DB Summary
Domknięcie integracji DB-driven statusów: dropdowny automatyzacji ładują się z delivery_statuses, plus refaktor UI listy statusów (osobna podstrona dla CRUD).
Performance
| Metric | Value |
|---|---|
| Duration | ~50 min |
| Tasks | 1 planowane + 2 user-requested ad-hoc |
| Files created | 1 |
| Files modified | 7 |
Acceptance Criteria Results
| Criterion | Status | Notes |
|---|---|---|
| AC-1: Dropdown statusów z DB | Pass | AutomationController::buildShipmentStatusOptions() z DeliveryStatus::getAllOptions() |
| AC-2: Istniejące reguły działają bez błędów | Pass* | *BREAKING: stare grupowe klucze nie matchują (decyzja użytkownika "poprawię ręcznie"); brak wyjątków, ciche no-match |
Accomplishments
AutomationController— usunięto stałąSHIPMENT_STATUS_OPTIONS(8 grupowych kluczy); dropdown buduje się z DB przezDeliveryStatus::getAllOptions()AutomationService— usunięto stałąSHIPMENT_STATUS_OPTION_MAP; ewaluacjaevaluateShipmentStatusConditionporównuje klucze bezpośrednio;resolveStatusFromActionKeyużywa kluczy DB jako target- Walidacja w
parseConditionValue('shipment_status')iparseActionConfig('update_shipment_status')przezDeliveryStatus::getAllStatuses() - Ad-hoc UI refactor (user request): osobna podstrona formularza CRUD (
delivery-status-form.php) zamiast inline edit row na liście; przycisk "+ Dodaj status" zamiast formy na dole strony - Ad-hoc UI changes: rename column "Terminal" → "Końcowy", usunięta kolumna "Typ" (badge "systemowy" — informacja zbędna gdy brak akcji edycji)
- Bug fix (pre-existing): sygnatury
update/destroy/editwDeliveryStatusesControllerużywały path param jako 2. argument metody — router projektu przekazuje params przez$request->input('id'). Naprawione wszystkie trzy.
Files Created/Modified
| File | Change | Purpose |
|---|---|---|
src/Modules/Automation/AutomationController.php |
Modified | Usunięta stała SHIPMENT_STATUS_OPTIONS; nowa metoda buildShipmentStatusOptions(); walidacja przez DeliveryStatus |
src/Modules/Automation/AutomationService.php |
Modified | Usunięta stała SHIPMENT_STATUS_OPTION_MAP; bezpośrednie porównanie kluczy w ewaluacji |
src/Modules/Settings/DeliveryStatusesController.php |
Modified | +create(), edit(), renderForm(); fix path params w update/destroy |
resources/views/settings/delivery-status-form.php |
Created | Osobna podstrona formularza CRUD statusów |
resources/views/settings/delivery-statuses.php |
Modified | Lista uproszczona: rename Terminal→Końcowy, usunięte Typ + inline edit + bottom add form, przycisk "+ Dodaj status" |
routes/web.php |
Modified | +2 GET routes: /new, /{id}/edit |
.paul/docs/ARCHITECTURE.md |
Modified | Sekcja Phase 108 Plan 02 |
.paul/docs/TECH_CHANGELOG.md |
Modified | Wpis Phase 108 Plan 02 (BREAKING) |
Decisions Made
| Decyzja | Uzasadnienie | Wpływ |
|---|---|---|
| Drop backward compat (option A) | Kolizja semantyczna picked_up: stary grupowy klucz mapował na delivered, nowy klucz DB to "Odebrana przez kuriera" — odwrotne końce cyklu |
BREAKING dla istniejących reguł; user: "poprawię ręcznie jak coś" |
| Form jako osobna podstrona zamiast inline | Inline edit row na liście "źle wygląda" (user feedback) | Lepszy UX, czytelniejszy formularz z grid 2-col |
| Usunięcie kolumny "Typ" | Badge "systemowy" zbędny — brak przycisku Edytuj/Usuń przy systemowych już to komunikuje | Lista 6 kolumn zamiast 7 |
Path params via $request->input('id') |
Konwencja projektu (router nie injectuje argumentów do handlerów) | Naprawiono pre-existing bug w update/destroy z Plan 01 |
Deviations from Plan
Summary
| Type | Count | Impact |
|---|---|---|
| Files w plan, ale bez zmian | 3 | AutomationRepository.php, form.php, automation-form.js — analiza wykazała brak potrzeby modyfikacji |
| Scope additions (user request) | 3 | Rename column, hide column, separate form page |
| Bug fix poza scope | 1 | Path params w update/destroy (pre-existing z Plan 01) |
| Deferred | 1 | sonar-scanner dla Phase 105/106/107/108 — punkt deferred z Plan 01, niezmieniony |
Total impact: Plan zakończony plus dodatkowe ulepszenia UX zgłoszone przez użytkownika podczas weryfikacji Plan 01. Bug fix path params eliminuje crash przy edycji.
Auto-fixed Issues
1. [Routing] Path params jako argumenty metody zamiast $request->input()
- Found during: Test ścieżki
/settings/delivery-statuses/{id}/edit(user runtime error) - Issue: "Too few arguments to function ... edit(), 1 passed ... and exactly 2 expected"
- Fix: Zmieniono sygnatury
edit(),update(),destroy()na singleRequest $request;$idczytany przez$request->input('id', 0) - Files:
src/Modules/Settings/DeliveryStatusesController.php - Verification:
php -lOK; konwencja zgodna zReceiptController
Deferred Items
- sonar-scanner skill (required) — Phase 105, 106, 107, 108 (już deferred z poprzednich planów)
Issues Encountered
| Issue | Resolution |
|---|---|
Kolizja semantyczna klucza picked_up (stary group → delivered vs nowy DB → "Odebrana przez kuriera") |
Advisor consult przed kodowaniem; user wybrał opcję A (drop backward compat) |
| Pre-existing bug z path params w update/destroy | Zauważony dopiero przy nowym edit() — naprawiony razem |
Next Phase Readiness
Ready:
- Pełna integracja DB-driven statusów: dropdowny + walidacja + ewaluacja
- CRUD UI ergonomiczny: lista + osobna podstrona formularza
- Phase 108 — wszystkie 2 plans zamknięte
Concerns:
- Migracja
20260427_000103_create_delivery_statuses_table.sql— wymagaphp bin/migrate.phpna środowisku produkcyjnym (XAMPP offline podczas APPLY 108-01) - Stare reguły automatyzacji z grupowymi kluczami (jeśli istnieją) — wymagają ręcznego odtworzenia z nowymi kluczami DB
- sonar-scanner gap dla Phase 105/106/107/108 — odłożony
Blockers: None
Phase: 108-delivery-status-management, Plan: 02 Completed: 2026-04-27