feat(27-shipment-tracking-backend): infrastruktura sledzenia przesylek — statusy, tracking services, cron handler

Dwupoziomowy system statusow dostawy (normalized + raw z API), implementacje
trackingu dla InPost ShipX, Apaczka i Allegro WZA, cron handler odpytujacy
aktywne przesylki co 15 minut.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-23 20:33:44 +01:00
parent c59d431083
commit 228c0e96cf
17 changed files with 1365 additions and 27 deletions

View File

@@ -5,15 +5,15 @@
See: .paul/PROJECT.md (updated 2026-03-12)
**Core value:** Sprzedawca może obsługiwać zamówienia ze wszystkich kanałów sprzedaży i nadawać przesyłki bez przełączania się między platformami.
**Current focus:** v1.1 Ręczny numer przesyłkiMILESTONE COMPLETE ✓
**Current focus:** v1.2 Śledzenie przesyłek — Phase 27 COMPLETE, Phase 28 next
## Current Position
Milestone: v1.1 Ręczny numer przesyłki — COMPLETE ✓
Phase: [1] of [1] (Manual Tracking Number) — COMPLETE ✓
Plan: 26-01 — loop closed
Status: Milestone v1.1 complete
Last activity: 2026-03-23 — UNIFY complete, milestone v1.1 done
Milestone: v1.2 Śledzenie przesyłek
Phase: [1] of [2] (Shipment Tracking Backend) — COMPLETE ✓
Plan: 27-01 — loop closed
Status: Phase 27 complete, ready for Phase 28 PLAN
Last activity: 2026-03-23 — UNIFY 27-01 complete
Progress:
- v0.1 Initial Release: [██████████] 100% ✓
@@ -27,14 +27,16 @@ Progress:
- v0.9 Poprawki ustawień firmy: [██████████] 100% ✓
- v1.0 Presety przesyłek: [██████████] 100% ✓
- v1.1 Ręczny numer przesyłki: [██████████] 100% ✓
- Phase 26: [██████████] 100% ✓ (1/1 plans)
- v1.2 Śledzenie przesyłek: [█████░░░░░] 50%
- Phase 27: [██████████] 100% ✓ (1/1 plans)
- Phase 28: [░░░░░░░░░░] 0% (0/1 plans)
## Loop Position
Current loop state:
```
PLAN ──▶ APPLY ──▶ UNIFY
✓ ✓ ✓ [Milestone v1.1 complete]
✓ ✓ ✓ [Phase 27 complete — ready for Phase 28 PLAN]
```
## Accumulated Context
@@ -42,6 +44,9 @@ PLAN ──▶ APPLY ──▶ UNIFY
### Decisions
| Data | Decyzja | Faza | Wpływ |
|------|---------|------|-------|
| 2026-03-23 | Dwupoziomowy system statusów: normalized + raw z API | Faza 27 | Max szczegółowość dla usera + spójna logika filtrowania |
| 2026-03-23 | Osobny ShipmentTrackingInterface (nie rozszerzenie ShipmentProviderInterface) | Faza 27 | Czysta separacja tracking vs creation; łatwe dodawanie providerów |
| 2026-03-23 | Idempotentne migracje (IF NOT EXISTS + INSERT IGNORE) | Faza 27 | Bezpieczne re-run migracji |
| 2026-03-12 | AllegroTokenManager wydzielony z 4 klas OAuth | Faza 01 | Centralizacja logiki tokenów, brak duplikacji |
| 2026-03-12 | StringHelper jako final static class w Core/Support | Faza 01 | 19 duplikatów helperów usunięte z 15 klas |
| 2026-03-13 | CronHandlerFactory jako jedyne miejsce kompozycji crona | Faza 02 | Application.php i bin/cron.php zsynchronizowane; 2 bugi naprawione |
@@ -68,6 +73,11 @@ PLAN ──▶ APPLY ──▶ UNIFY
| 2026-03-17 | Email history jako wpisy w order_activity_log (nie osobna sekcja) | Faza 15 | Spójność z istniejącym UX — jeden timeline zamiast fragmentacji |
| 2026-03-17 | VariableResolver wydzielony z EmailTemplateController | Faza 15 | Reuse logiki zmiennych; resolwer niezależny od kontrolera szablonów |
### Skill Audit (Faza 27, Plan 01)
| Oczekiwany | Wywołany | Uwagi |
|------------|---------|-------|
| sonar-scanner | ✓ | 0 nowych unikalnych issues; 3 pre-existing patterns (2x S1192 DeliveryStatus, 1x S1172 handler) |
### Skill Audit (Faza 26, Plan 01)
| Oczekiwany | Wywołany | Uwagi |
|------------|---------|-------|
@@ -217,7 +227,7 @@ PLAN ──▶ APPLY ──▶ UNIFY
- **Delivery mapping "Szukaj..." layout** — JS `attachSelectFilter()` w allegro.php tworzy input search dla InPost/Apaczka selectów, wizualnie wygląda jakby należał do wiersza powyżej. Pre-existing bug, do naprawy osobno.
### Git State
Last commit: 91963d5 — feat(25-shipment-presets-management): edycja, usuwanie, zarządzanie presetami
Last commit: c59d431 — feat(26-manual-tracking-number): reczne dodawanie numeru przesylki do zamowienia
Branch: main
Feature branches merged: none
@@ -227,21 +237,12 @@ Brak.
## Session Continuity
Last session: 2026-03-23
Stopped at: Milestone v1.1 complete
Next action: /paul:discuss-milestone lub /paul:milestone
Resume file: .paul/phases/26-manual-tracking-number/26-01-SUMMARY.md
Stopped at: Phase 27 complete
Next action: /paul:plan (Phase 28 — Shipment Tracking UI + Settings)
Resume file: .paul/phases/27-shipment-tracking-backend/27-01-SUMMARY.md
Resume context:
- v0.1: COMPLETE ✓ (6 phases, 15 plans)
- v0.2: COMPLETE ✓ (1 phase, 5 plans)
- v0.3: COMPLETE ✓ (5 phases, 5 plans) — Moduł Paragonów
- v0.4: COMPLETE ✓ (3 phases, 4 plans) — Moduł E-mail
- v0.5: COMPLETE ✓ (1 phase, 2 plans) — Moduł Automatyzacji
- v0.6: COMPLETE ✓ (1 phase, 1 plan) — Poprawki UX
- v0.7: COMPLETE ✓ (3 phases, 3 plans) — Zdalne drukowanie etykiet
- v0.8: COMPLETE ✓ (1 phase, 1 plan) — Poprawki źródła zamówień
- v0.9: COMPLETE ✓ (1 phase, 1 plan) — Poprawki ustawień firmy
- v1.0: COMPLETE ✓ (3 phases, 3 plans) — Presety przesyłek
- v1.1: IN PROGRESS (1 phase, 1 plan) — Ręczny numer przesyłki
- v0.1v1.1: COMPLETE ✓ (26 phases, 38 plans)
- v1.2: IN PROGRESS — Phase 27 done, Phase 28 (UI + Settings) next
---
*STATE.md — Updated after every significant action*