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>
This commit is contained in:
129
.paul/phases/29-delivery-status-mapping-ui/29-01-SUMMARY.md
Normal file
129
.paul/phases/29-delivery-status-mapping-ui/29-01-SUMMARY.md
Normal file
@@ -0,0 +1,129 @@
|
||||
---
|
||||
phase: 29-delivery-status-mapping-ui
|
||||
plan: 01
|
||||
subsystem: ui, settings
|
||||
tags: [delivery-status, mapping, override, shipment-tracking]
|
||||
|
||||
requires:
|
||||
- phase: 28-shipment-tracking-ui
|
||||
provides: DeliveryStatus class with hardcoded provider mappings
|
||||
provides:
|
||||
- UI for configuring delivery status mappings per provider
|
||||
- DB-backed overrides for normalized status and description
|
||||
- DeliveryStatus override methods (normalizeWithOverrides, descriptionWithOverrides)
|
||||
affects: [shipment-tracking-handler integration]
|
||||
|
||||
tech-stack:
|
||||
added: []
|
||||
patterns: [DB override with hardcoded fallback]
|
||||
|
||||
key-files:
|
||||
created:
|
||||
- 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
|
||||
modified:
|
||||
- src/Modules/Shipments/DeliveryStatus.php
|
||||
- routes/web.php
|
||||
- resources/views/layouts/app.php
|
||||
- resources/scss/app.scss
|
||||
|
||||
key-decisions:
|
||||
- "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)"
|
||||
|
||||
patterns-established:
|
||||
- "DB override with hardcoded fallback: check overrides map first, then fall back to const arrays"
|
||||
|
||||
duration: ~45min
|
||||
started: 2026-03-23T22:00:00Z
|
||||
completed: 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*
|
||||
Reference in New Issue
Block a user