Phase 130 complete (1 plan): - POLKURIER_MAP + POLKURIER_DESCRIPTIONS w DeliveryStatus.php (7 wpisow O/P/A/WP/D/Z/W z dokumentacji v1.11) - 'polkurier' w PROVIDERS w DeliveryStatusesController + DeliveryStatusMappingController - countAllUnmappedForBadge() zlicza polkurier - Defaulty hardcoded w kodzie (spojnie z InPost/Apaczka/Allegro); migracja Phase 128 staje sie no-op - Zero zmian w widoku (_delivery-status-mappings-content.php auto-iteruje po providerach) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
7.8 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 | ||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 130-polkurier-delivery-status-mappings | 01 | ui |
|
|
|
|
|
|
|
|
~15min | 2026-05-14T18:00:00Z | 2026-05-14T18:15:00Z |
Phase 130 Plan 01: polkurier delivery status mappings UI Summary
polkurier widoczny w dropdownie /settings/delivery-statuses?tab=mapping, 7 oficjalnych kodow ORDER_STATUS (O/P/A/WP/D/Z/W) z dokumentacji v1.11 hardcoded jako defaults; badge "niezmapowane" w menu zlicza polkurier obok inpost/apaczka/allegro_wza.
Performance
| Metric | Value |
|---|---|
| Duration | ~15 min |
| Started | 2026-05-14T18:00:00Z |
| Completed | 2026-05-14T18:15:00Z |
| Tasks | 2/2 completed |
| Files modified | 4 source files |
Acceptance Criteria Results
| Criterion | Status | Notes |
|---|---|---|
| AC-1: polkurier widoczny w dropdownie providerów | Pass | PROVIDERS w DeliveryStatusesController + DeliveryStatusMappingController zawiera 4 wpisy; widok _delivery-status-mappings-content.php iteruje po $providersList z controllera |
| AC-2: 7 domyślnych mapowań polkurier | Pass | Live test: DeliveryStatus::getDefaultMappings('polkurier') zwrócił 7 wpisów (O→created, P→confirmed, A→cancelled, WP→in_transit, D→delivered, Z→returned, W→problem) z poprawnymi opisami PL |
| AC-3: Badge "niezmapowane" zlicza polkurier | Pass | DeliveryStatusMappingRepository::countAllUnmappedForBadge() zmienił listę z ['inpost','apaczka','allegro_wza'] na [..., 'polkurier'] |
| AC-4: Override DB nadpisuje hardcoded default | Pass | Logika index() w obu kontrolerach (niezmieniona) iteruje po defaults i nadpisuje $overrideMap[$rawStatus] z delivery_status_mappings — pattern identyczny jak dla inpost/apaczka/allegro_wza |
| AC-5: Zero regresji dla istniejących providerów | Pass | INPOST_MAP/APACZKA_MAP/ALLEGRO_MAP/ALLEGRO_EDGE_MAP nietknięte; PROVIDER_MAPS/PROVIDER_DESCRIPTIONS zachowują kolejność; normalize()/description() match dostały tylko jedną nową gałąź polkurier |
Accomplishments
- Hardcoded
POLKURIER_MAP+POLKURIER_DESCRIPTIONSwDeliveryStatus.php— 7 wpisów z oficjalnej dokumentacji polkurier API v1.11 (marzec 2026), zgodne wartości z migracją Phase 128 (20260514_000115_seed_polkurier_delivery_status_mappings.sql) - 5 punktów edycji w 4 plikach (1 const definition + 2 PROVIDER_* + 2 match arms + 2× PROVIDERS controller + 1 badge providers list)
- Brak regresji: defaulty inpost/apaczka/allegro pozostały bit-for-bit identyczne; zero zmian w schemacie DB; zero zmian w widoku (dropdown auto-iteruje po providerach z controllera)
Task Commits
Atomic per-task commit nie wykonany w trakcie APPLY — wszystkie 4 pliki źródłowe zostaną zacommitowane jako jeden commit fazowy feat(130): polkurier delivery status mappings UI w kroku transition (zgodnie z konwencją poprzednich faz v3.7).
Files Created/Modified
| File | Change | Purpose |
|---|---|---|
src/Modules/Shipments/DeliveryStatus.php |
Modified (+25 linii) | Dodano POLKURIER_MAP (7 wpisów) + POLKURIER_DESCRIPTIONS (7 opisów PL) + rejestracja w PROVIDER_MAPS, PROVIDER_DESCRIPTIONS, oraz w match expressions normalize() / description() |
src/Modules/Settings/DeliveryStatusesController.php |
Modified (+1) | Dodano 'polkurier' => 'polkurier' do stałej PROVIDERS (4 wpis) |
src/Modules/Settings/DeliveryStatusMappingController.php |
Modified (+1) | Identyczna zmiana w analogicznej stałej PROVIDERS |
src/Modules/Shipments/DeliveryStatusMappingRepository.php |
Modified (1 ↔) | countAllUnmappedForBadge(): lista providerów rozszerzona o polkurier |
Decisions Made
| Decision | Rationale | Impact |
|---|---|---|
| POLKURIER_MAP/DESCRIPTIONS hardcoded w DeliveryStatus.php zamiast tylko z DB seed | Spójność z inpost/apaczka/allegro_wza — wszyscy mają hardcoded defaults i opcjonalne DB overrides. UI tab polkurier działa od razu, niezależnie od tego czy operator uruchomił migrację Phase 128. |
Migracja 20260514_000115_seed_polkurier_delivery_status_mappings.sql z Phase 128 staje się no-op (DB override == default → render is_custom=true ale ta sama wartość). Można ją uruchomić lub nie. |
Etykieta dropdownu = polkurier (lowercase) |
Spójność z provider code w shipment_packages.provider, z hubem integracji Phase 127, z PROJECT.md decisions. |
Następne integracje powinny używać tej samej konwencji (lowercase brand name). |
Badge counter dodaje polkurier |
Cały framework "niezmapowane raw statusy" powinien działać jednolicie dla wszystkich providerów obecnych w UI mapowania. | Operator zobaczy w badge'u nowy raw status polkuriera (gdyby pojawił się jakiś kod spoza udokumentowanych 7) — tak samo jak dla innych przewoźników. |
Deviations from Plan
Summary
| Type | Count | Impact |
|---|---|---|
| Auto-fixed | 0 | — |
| Scope additions | 0 | — |
| Deferred | 0 | — |
Total impact: Brak deviacji — plan wykonany 1:1.
Deferred Items
Brak — plan wykonany dokładnie jak napisany.
Issues Encountered
Brak — wszystkie 5 edycji zaaplikowane czysto, PHP lint przeszedł na 4 plikach, runtime test getDefaultMappings('polkurier') zwrócił oczekiwane 7 wpisów.
Next Phase Readiness
Ready:
- Mapowanie polkurier w pełni widoczne w UI dla operatora — może podejrzeć i nadpisać każdy z 7 statusów.
- Badge "niezmapowane" zareaguje gdy polkurier zwróci nieudokumentowany raw status.
- Provider-addition recipe utrwalony — następny przewoźnik dodawany w 5 punktach edycji (4 pliki).
Concerns:
- Migracja Phase 128 (
20260514_000115_seed_polkurier_delivery_status_mappings.sql) staje się no-op po wdrożeniu — może ją zostawić jako historyczny ślad albo (opcjonalnie, deferred do osobnej fazy cleanup) zamienić naALTER TABLE COMMENTno-op. Nie blokuje niczego. - Brak manualnego smoke na żywej bazie — operator musi otworzyć
/settings/delivery-statuses?tab=mapping&provider=polkurierpo deploy.
Blockers:
- None.
Phase: 130-polkurier-delivery-status-mappings, Plan: 01 Completed: 2026-05-14