Files
orderPRO/.paul/phases/83-allegro-pull-status-mapping/83-01-SUMMARY.md
2026-04-07 22:39:16 +02:00

6.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
83-allegro-pull-status-mapping 01 settings, orders
status-mapping
allegro
pull
import
phase provides
74-reverse-status-mapping push mapping with UNIQUE on orderpro_status_code
phase provides
75-pull-status-mapping pull mapping pattern for shopPRO (replicated for Allegro)
dedicated pull status mapping table for Allegro (allegro_order_status_pull_mappings)
pull mapping UI section in Allegro integration settings
auto-discovery of new Allegro statuses during import
allegro-import
status-sync
automation
added patterns
separate push/pull mapping tables for Allegro
auto-discovery in pull table
created modified
database/migrations/20260407_000083_allegro_pull_status_mappings.sql
src/Modules/Settings/AllegroPullStatusMappingRepository.php
src/Modules/Settings/AllegroOrderImportService.php
src/Modules/Settings/AllegroStatusMappingController.php
src/Modules/Settings/AllegroIntegrationController.php
src/Modules/Settings/AllegroStatusDiscoveryService.php
src/Modules/Cron/CronHandlerFactory.php
routes/web.php
resources/views/settings/allegro.php
resources/lang/pl.php
No integration_id in Allegro pull table — Allegro is single-tenant unlike shopPRO
Nullable orderpro_status_code in pull table — allows auto-discovered unmapped statuses
Discovery service writes to both push and pull tables
Fallback to push table lookup when pull repo not injected (backward compat)
Pull mapping for Allegro: UNIQUE on allegro_status_code — one orderPRO status per Allegro code
Auto-discovery: upsertDiscoveredStatus() on import AND on manual sync
~30min 2026-04-07T18:00:00Z 2026-04-07T18:30:00Z

Phase 83 Plan 01: Allegro Pull Status Mapping — Summary

Dedykowana tabela pull mappings dla Allegro z auto-discovery statusow i UI push/pull w ustawieniach

Performance

Metric Value
Duration ~30min
Tasks 3 planned, 3 completed
Files created 2
Files modified 8
DB migration Executed on remote

Acceptance Criteria Results

Criterion Status Notes
AC-1: Nowa tabela pull mappings Pass Tabela utworzona z UNIQUE na allegro_status_code, 4 rows pre-populated z push table
AC-2: Import uzywa pull mappings Pass AllegroOrderImportService uzywa pullStatusMappings->findMappedStatusCode()
AC-3: Fallback dla niezmapowanych statusow Pass Auto-discovery via upsertDiscoveredStatus(), fallback na surowy status
AC-4: Sekcja pull mapping w UI Pass Dwie sekcje: push (orderPRO->Allegro) i pull (Allegro->orderPRO)

Accomplishments

  • Nowa tabela allegro_order_status_pull_mappings z UNIQUE na allegro_status_code — eliminuje bug importu z niezmapowanym statusem
  • UI w Ustawienia > Allegro > Statusy ma dwie sekcje: push ("Wysylka statusow") i pull ("Mapowanie przy imporcie")
  • Auto-discovery statusow Allegro zarowno przy imporcie zamowien jak i przy recznym "Pobierz statusy z Allegro"
  • Naprawiono 3 zamowienia (#223, #225, #233) z niezmapowanym statusem newnieoplacone
  • Dodano 6 brakujacych statusow Allegro do pull table (new, ready_for_processing, ready_for_shipment, delivered, returned, bought)

Files Created/Modified

File Change Purpose
database/migrations/20260407_000083_allegro_pull_status_mappings.sql Created Nowa tabela + pre-populate z push mappings
src/Modules/Settings/AllegroPullStatusMappingRepository.php Created Repository CRUD+lookup dla pull mappings
src/Modules/Settings/AllegroOrderImportService.php Modified Pull mapping lookup zamiast push reverse-lookup
src/Modules/Settings/AllegroStatusMappingController.php Modified Nowa metoda savePullStatusMappings()
src/Modules/Settings/AllegroIntegrationController.php Modified Pull repo dependency + dane pull do widoku
src/Modules/Settings/AllegroStatusDiscoveryService.php Modified Discovery zapisuje do obu tabel (push+pull)
src/Modules/Cron/CronHandlerFactory.php Modified Wstrzykniecie AllegroPullStatusMappingRepository
routes/web.php Modified Nowa route POST .../statuses/save-pull + DI
resources/views/settings/allegro.php Modified Sekcja pull mapping w tabce Statusy
resources/lang/pl.php Modified Klucze pull_title, pull_description, saved_pull

Decisions Made

Decision Rationale Impact
Brak integration_id w tabeli Allegro Allegro jest single-tenant (jeden zestaw credentials) Prostsza tabela niz shopPRO
orderpro_status_code nullable w pull Auto-discovered statusy nie maja jeszcze mapowania User mapuje w UI po discovery
Discovery service pisze do obu tabel "Pobierz statusy z Allegro" musi zasilac pull table Spojne zachowanie push+pull
Dodanie 6 statusow Allegro recznie do pull Discovery nie lapie krotkotrwalych statusow (np. new) Pelna paleta statusow od razu

Deviations from Plan

Summary

Type Count Impact
Scope additions 2 Istotne usprawnienia
Auto-fixed 1 Naprawa danych zamowien

Total impact: Rozszerzenie o discovery service + naprawa danych — kluczowe dla kompletnosci

Scope Addition: AllegroStatusDiscoveryService

  • Requested by: User during testing ("nie ma statusu new po Pobierz statusy")
  • Issue: Discovery service zapisywal tylko do push table, nie do pull
  • Fix: Dodanie pullStatusMappings dependency + upsertDiscoveredStatus w petli discovery
  • Files: AllegroStatusDiscoveryService.php, routes/web.php

Scope Addition: Reczne dodanie statusow Allegro

  • Requested by: User
  • Issue: Discovery nie lapie krotkotrwalych statusow (new, bought, ready_for_processing)
  • Fix: INSERT 6 brakujacych statusow do pull table
  • Impact: User od razu moze zmapowac wszystkie statusy

Auto-fixed: Zamowienia z niezmapowanym statusem

  • Found during: Investigation
  • Issue: 3 zamowienia (#223, #225, #233) mialy surowy status new zamiast zmapowanego
  • Fix: UPDATE orders SET external_status_id = 'nieoplacone' WHERE external_status_id = 'new' AND source = 'allegro'

Next Phase Readiness

Ready:

  • Pull mapping w pelni funkcjonalne i konfigurowalne
  • Nowe importy z Allegro beda automatycznie mapowac statusy
  • Discovery zasilaja obie tabele (push+pull)

Concerns:

  • Brak ochrony statusu przy re-imporcie Allegro (analogicznie do Phase 75 dla shopPRO) — jesli potrzebne, osobna faza
  • Niektore statusy Allegro moga nie miec mapowania — user musi je ustawic w UI

Blockers:

  • None — kod wymaga deploy na serwer (FTP)

Phase: 83-allegro-pull-status-mapping, Plan: 01 Completed: 2026-04-07