Files
orderPRO/.paul/phases/28-shipment-tracking-ui/28-01-SUMMARY.md
Jacek Pyziak 98a0077204 feat(28-shipment-tracking-ui): badge'e statusow dostawy, linki sledzenia, ustawienia interwalu trackingu
- Kolorowe badge'e statusow dostawy w tabelach paczek (show.php + prepare.php)
- Link sledzenia z carrier detection (InPost, Apaczka, Orlen, Allegro, Google fallback)
- Sekcja Status dostawy w boksie Platnosc i wysylka
- Ustawienie interwalu trackingu crona (5-120 min) w zakladce Ustawienia
- Tekstowe mapowania statusow Apaczka API (NEW, CONFIRMED, etc.)
- Fix: use-statements ApaczkaShipmentService (pre-existing bug)
- Fix: pickup date normalization (next day po 16:00)
- Fix: przycisk Pobierz etykiete (POST zamiast link do prepare)

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

7.8 KiB
Raw Blame History

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
28-shipment-tracking-ui 01 ui
delivery-status
tracking
badges
cron-settings
scss
phase provides
27-shipment-tracking-backend delivery_status columns, DeliveryStatus class, ShipmentTrackingHandler cron
Kolorowe badge'e statusów dostawy w UI (show.php + prepare.php)
Link śledzenia przesyłki z carrier detection + Google fallback
Sekcja "Status dostawy" w boksie Płatność i wysyłka
Ustawienie interwału trackingu w UI crona (zakładka Ustawienia)
Tekstowe mapowania statusów Apaczka API (NEW, CONFIRMED, etc.)
added patterns
content-tabs-nav pattern reused w cron.php (z allegro.php)
Dual text+numeric status mapping w APACZKA_MAP
created modified
resources/scss/modules/_delivery-status.scss
src/Modules/Shipments/DeliveryStatus.php
src/Modules/Shipments/ApaczkaShipmentService.php
src/Modules/Shipments/ShipmentPackageRepository.php
src/Modules/Settings/CronSettingsController.php
src/Modules/Cron/CronRepository.php
resources/views/orders/show.php
resources/views/shipments/prepare.php
resources/views/settings/cron.php
resources/scss/app.scss
public/assets/css/app.css
Google search jako fallback tracking URL gdy carrier nieznany
carrier_delivery_method_mappings jako źródło carrier_id (nie pattern matching)
Tekstowe mapowania Apaczka (API zwraca NEW/CONFIRMED, nie 0/1)
Przesunięcie pickup na next day gdy po 16:00 (Apaczka API limit)
Cron settings jako osobna zakładka (content-tabs-nav pattern)
Dual status mapping: numeryczne + tekstowe klucze w tej samej mapie
~3h (z bugfixami) 2026-03-23T19:00:00Z 2026-03-23T23:30:00Z

Phase 28 Plan 01: Shipment Tracking UI + Settings Summary

Badge'e statusów dostawy w UI, linki śledzenia z carrier detection, ustawienie interwału trackingu w cronie z zakładkowym layoutem.

Performance

Metric Value
Duration ~3h (z bugfixami)
Started 2026-03-23 19:00
Completed 2026-03-23 23:30
Tasks 3 completed + checkpoint
Files modified 12

Acceptance Criteria Results

Criterion Status Notes
AC-1: Status dostawy w tabeli paczek (show.php) Pass Kolumna z badge + tooltip surowego statusu
AC-2: Status dostawy w tabeli paczek (prepare.php) Pass Analogicznie jak show.php
AC-3: Link śledzenia przesyłki Pass InPost, Apaczka, Orlen, Allegro + Google fallback
AC-4: Ustawienie interwału trackingu w cronie Pass Input 5120 min w zakładce Ustawienia
AC-5: Info o śledzeniu w boksie Płatność i wysyłka Pass Badge + data ostatniej aktualizacji

Accomplishments

  • Badge'e statusów dostawy z 10 kolorami, tooltip z surowym statusem API, link śledzenia z auto-detection przewoźnika
  • Ustawienia crona przeorganizowane na zakładki (Ustawienia / Harmonogram), interwał trackingu konfigurowalny 5120 min
  • Naprawiono 7 bugów wykrytych podczas implementacji i testów

Files Created/Modified

File Change Purpose
resources/scss/modules/_delivery-status.scss Created Style badge'ów statusów dostawy (10 wariantów kolorystycznych)
src/Modules/Shipments/DeliveryStatus.php Modified trackingUrl() z carrier detection + Google fallback; tekstowe mapowania Apaczka
src/Modules/Shipments/ApaczkaShipmentService.php Modified Fix use-statements; pickup date normalization (next day po 16:00)
src/Modules/Shipments/ShipmentPackageRepository.php Modified resolveCarrierName() lookup z carrier_delivery_method_mappings
src/Modules/Settings/CronSettingsController.php Modified Przekazuje/zapisuje trackingIntervalMinutes
src/Modules/Cron/CronRepository.php Modified updateScheduleInterval() + getScheduleInterval()
resources/views/orders/show.php Modified Kolumna Status dostawy, badge, link, fix Pobierz etykietę
resources/views/shipments/prepare.php Modified Kolumna Status dostawy, badge, link
resources/views/settings/cron.php Modified Zakładki Ustawienia/Harmonogram; sekcja śledzenia przesyłek
resources/scss/app.scss Modified @use delivery-status
public/assets/css/app.css Modified Rebuilt z nowym SCSS
database/migrations/20260323_000060_* Modified Fix initial status values

Decisions Made

Decision Rationale Impact
Google search jako fallback tracking URL Gdy carrier_id nieznany — uniwersalne, zawsze działa Każda przesyłka ma jakiś link śledzenia
carrier_delivery_method_mappings jako źródło carrier_id API Apaczki nie zwraca usług; tabela mapowań konfigurowana przez usera Poprawne URL-e dla Orlen, DPD etc.
Tekstowe mapowania Apaczka API API zwraca "NEW"/"CONFIRMED" nie "0"/"1" jak w docs Statusy mapują się poprawnie
Pickup przesunięcie na next day po 16:00 Apaczka API odrzuca gdy MaxPickupDate < ReadyDate (teraz) Tworzenie przesyłek działa o każdej porze
Cron settings jako osobna zakładka User request — lepsze oddzielenie ustawień od harmonogramu Czytelniejszy UI

Deviations from Plan

Summary

Type Count Impact
Auto-fixed 7 Niezbędne poprawki wykryte podczas testów
Scope additions 1 Zakładki w cron (user request)
Deferred 0

Total impact: Niezbędne poprawki + 1 usprawnienie UX na życzenie użytkownika.

Auto-fixed Issues

1. Fix: use-statements ApaczkaShipmentService

  • Found during: Task 2 (testing)
  • Issue: use AppCorexceptionsShipmentException — brak backslashy (pre-existing bug z fazy 07)
  • Fix: Poprawiono na use App\Core\Exceptions\ShipmentException i IntegrationConfigException

2. Fix: Przycisk Pobierz etykietę w show.php

  • Found during: Task 2
  • Issue: Link do prepare zamiast bezpośredniego downloadu PDF
  • Fix: Zmieniony na formularz POST z bezpośrednim downloadem

3. Fix: delivery_status "delivered" → "confirmed"

  • Found during: Task 2
  • Issue: Migracja błędnie ustawiała label_ready jako doręczona
  • Fix: Naprawiono w DB (3 rows) i w pliku migracji

4. Fix: carrier_id dla Apaczka

  • Found during: Task 2
  • Issue: Puste carrier_id w shipment_packages
  • Fix: Uzupełniono z carrier_delivery_method_mappings (13 rows); fallback w ApaczkaShipmentService

5. Fix: Orlen Paczka URL

  • Found during: Task 2
  • Issue: Niepoprawny URL śledzenia
  • Fix: Poprawiono na www.orlenpaczka.pl/sledz-paczke/?numer=

6. Fix: Tekstowe mapowania Apaczka API

  • Found during: Checkpoint Task 2
  • Issue: API zwraca "NEW" ale mapa ma klucze "0","1" — status zawsze "unknown"
  • Fix: Dodano 12 tekstowych kluczy do APACZKA_MAP i APACZKA_DESCRIPTIONS

7. Fix: Apaczka pickup date/hours

  • Found during: Checkpoint Task 2
  • Issue: Tworzenie przesyłki po 16:00 — Apaczka API error MaxPickupDate < ReadyDate
  • Fix: Automatyczne przesunięcie na next business day gdy po 16:00

Sonar Results

  • 0 nowych unikalnych issues z kodu fazy 28
  • 1x S1448 CronRepository (22 metod > 20) — dodane 2 metody, pre-existing pattern
  • Pre-existing: S3776, S1142, S1192 na ApaczkaShipmentService, DeliveryStatus, cron.php
  • Skill audit: sonar-scanner ✓

Next Phase Readiness

Ready:

  • System śledzenia przesyłek kompletny (backend + UI)
  • Badge'e, linki, ustawienia crona działają
  • Milestone v1.2 gotowy do zamknięcia

Concerns:

  • CronRepository zbliża się do limitu metod (22/20) — rozważyć split w przyszłości
  • Apaczka API docs vs rzeczywistość (tekst vs numeric) — monitorować

Blockers:

  • Brak

Phase: 28-shipment-tracking-ui, Plan: 01 Completed: 2026-03-23