Files
orderPRO/.paul/phases/29-delivery-status-mapping-ui/29-01-SUMMARY.md
Jacek Pyziak 325a941c42 feat(29-delivery-status-mapping-ui): konfiguracja mapowania statusów dostawy per provider
Phase 29 complete (v1.3):
- Tabela delivery_status_mappings z DB overrides
- DeliveryStatus: normalizeWithOverrides(), descriptionWithOverrides(), getDefaultMappings()
- UI ustawień: tabela mapowań per provider (InPost/Apaczka/Allegro), bulk save, reset, resetAll
- 5 endpointów w routes/web.php, link w menu bocznym

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 23:55:42 +01:00

5.0 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
29-delivery-status-mapping-ui 01 ui, settings
delivery-status
mapping
override
shipment-tracking
phase provides
28-shipment-tracking-ui DeliveryStatus class with hardcoded provider mappings
UI for configuring delivery status mappings per provider
DB-backed overrides for normalized status and description
DeliveryStatus override methods (normalizeWithOverrides, descriptionWithOverrides)
shipment-tracking-handler integration
added patterns
DB override with hardcoded fallback
created modified
database/migrations/20260323_000070_create_delivery_status_mappings_table.sql
src/Modules/Shipments/DeliveryStatusMappingRepository.php
src/Modules/Settings/DeliveryStatusMappingController.php
resources/views/settings/delivery-status-mappings.php
resources/scss/modules/_delivery-status-mappings.scss
src/Modules/Shipments/DeliveryStatus.php
routes/web.php
resources/views/layouts/app.php
resources/scss/app.scss
Bulk save form + separate hidden reset form to avoid nested forms
saveBulk auto-detects default vs custom: if values match defaults, deletes override
resetAll added per user request (deviation from plan)
DB override with hardcoded fallback: check overrides map first, then fall back to const arrays
~45min 2026-03-23T22:00:00Z 2026-03-23T22:45:00Z

Phase 29 Plan 01: Delivery Status Mapping UI Summary

UI konfiguracji mapowania surowych statusów dostawy na znormalizowane — per provider, z edycją, resetem i bulk save.

Performance

Metric Value
Duration ~45min
Tasks 3 completed
Files created 5
Files modified 4

Acceptance Criteria Results

Criterion Status Notes
AC-1: Lista mapowań per provider Pass Tabela z InPost/Apaczka/Allegro, kolumny raw/description/normalized
AC-2: Edycja mapowania statusu Pass Select z LABEL_PL, bulk save
AC-3: Edycja opisu statusu Pass Input text per wiersz
AC-4: Reset do domyślnych Pass Przycisk per wiersz + resetuj wszystkie
AC-5: DeliveryStatus używa custom overrides Pass normalizeWithOverrides() i descriptionWithOverrides()

Accomplishments

  • Tabela delivery_status_mappings z UNIQUE KEY na provider+raw_status
  • Pełne CRUD repozytorium z upsert i deleteAllByProvider
  • DeliveryStatus rozszerzony o getDefaultMappings(), normalizeWithOverrides(), descriptionWithOverrides(), ALL_STATUSES
  • Kontroler z index/save/saveBulk/reset/resetAll
  • Widok z tabelą per provider, bulk save, reset per wiersz i reset all

Files Created/Modified

File Change Purpose
database/migrations/20260323_000070_...sql Created Tabela delivery_status_mappings
src/Modules/Shipments/DeliveryStatusMappingRepository.php Created CRUD repozytorium
src/Modules/Settings/DeliveryStatusMappingController.php Created Kontroler ustawień mapowań
resources/views/settings/delivery-status-mappings.php Created Widok tabeli mapowań
resources/scss/modules/_delivery-status-mappings.scss Created Style CSS dla custom rows
src/Modules/Shipments/DeliveryStatus.php Modified ALL_STATUSES, getDefaultMappings, *WithOverrides methods
routes/web.php Modified 5 nowych endpointów + controller instantiation
resources/views/layouts/app.php Modified Link w menu bocznym
resources/scss/app.scss Modified Import nowego modułu SCSS

Decisions Made

Decision Rationale Impact
Bulk save z auto-detekcją defaults Unikamy zbędnych wpisów w DB gdy wartości == domyślne Czysta tabela overrides
Osobny hidden form na reset (nie nested) HTML nie pozwala na nested forms Fix buga z resetem
resetAll dodany User request Dodatkowy endpoint + przycisk

Deviations from Plan

Summary

Type Count Impact
Scope additions 2 Minimalne — bug fix + feature request
  1. Bug fix: nested forms — Reset forms były zagnieżdżone w bulk save form. Przebudowano na hidden form + JS.
  2. Scope addition: resetAll — Dodano przycisk "Resetuj wszystkie" + endpoint + repo method na życzenie usera.

Skill Audit

Expected Invoked Notes
sonar-scanner 0 nowych unikalnych issues; 3x S1192 pre-existing (duplikaty stringów w DeliveryStatus), 1x S1142 pre-existing (matchCarrierByName), 2x accessibility minor w widoku (pre-existing pattern)

Next Phase Readiness

Ready:

  • UI mapowania gotowe do użytku
  • DeliveryStatus override methods gotowe do integracji w ShipmentTrackingHandler

Concerns:

  • ShipmentTrackingHandler jeszcze nie przekazuje overrides do DeliveryStatus — wymaga osobnego planu integracji

Blockers: None


Phase: 29-delivery-status-mapping-ui, Plan: 01 Completed: 2026-03-23