Files
orderPRO/.paul/phases/74-reverse-status-mapping/74-01-SUMMARY.md
2026-04-07 10:44:03 +02:00

6.7 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
74-reverse-status-mapping 01 settings
status-mapping
integrations
shoppro
allegro
ui
phase provides
none none
Reversed status mapping UI (orderPRO statuses as rows, external as dropdown)
DB unique key on orderpro_status_code instead of external code
New repository methods for external status listing and reverse maps
status-sync
order-import
added patterns
mapping-index pattern for reversed UI
external status options builder
created modified
database/migrations/20260407_000078_reverse_status_mapping_keys.sql
src/Modules/Settings/ShopproStatusMappingRepository.php
src/Modules/Settings/AllegroStatusMappingRepository.php
src/Modules/Settings/ShopproIntegrationsController.php
src/Modules/Settings/AllegroStatusMappingController.php
src/Modules/Settings/AllegroIntegrationController.php
src/Modules/Settings/ShopproOrdersSyncService.php
resources/views/settings/shoppro.php
resources/views/settings/allegro.php
resources/lang/pl.php
Kolumny DB bez zmian nazw — zmiana tylko unique key direction
Discovered statuses z Flash + existing mappings jako dropdown options
Allegro: replaceAllMappings() zamiast per-row upsert dla bulk save
upsertDiscoveredStatus() zachowany jako check-then-insert (bez ON DUPLICATE KEY po zmianie unique)
buildMappingIndex(): orderpro_code => external_info map for pre-filling UI
buildExternalStatusOptions(): merge DB + Flash discovered for dropdown
~30min 2026-04-07T00:00:00Z 2026-04-07T00:30:00Z

Phase 74 Plan 01: Reverse Status Mapping Summary

Odwrocenie mapowania statusow w shopPRO i Allegro — UI pokazuje statusy orderPRO po lewej, dropdown z zewnetrznymi po prawej. Migracja DB zmienia unique key na orderpro_status_code.

Performance

Metric Value
Duration ~30min
Tasks 2 completed
Files modified 11

Acceptance Criteria Results

Criterion Status Notes
AC-1: UI shopPRO — orderPRO po lewej, shopPRO po prawej Pass Tabela iteruje orderproStatuses, dropdown z shopproStatuses
AC-2: UI Allegro — orderPRO po lewej, Allegro po prawej Pass Analogicznie, usuniety single-add form
AC-3: Sync dziala w obu kierunkach Pass buildStatusMap() i buildReverseStatusMap() nadal zwracaja poprawne mapy
AC-4: Sync pobiera statusy do dropdown Pass Flash + listExternalStatuses() merge
AC-5: Migracja DB zmienia unique constraint Pass SQL przygotowany, deduplikacja przed zmiana

Accomplishments

  • Odwrocony UI mapowania w obu integracjach (shopPRO i Allegro) — orderPRO statusy jako wiersze
  • Migracja DB: unique key z external_code na orderpro_status_code w obu tabelach
  • Nowe metody: listExternalStatuses(), buildAllegroToOrderproMap(), replaceAllMappings()
  • JS synchronizacja hidden input shoppro_status_name/allegro_status_name przy zmianie dropdown

Files Created/Modified

File Change Purpose
database/migrations/20260407_000078_reverse_status_mapping_keys.sql Created Migracja unique key + deduplikacja
src/Modules/Settings/ShopproStatusMappingRepository.php Modified replaceForIntegration() key na orderpro, +listExternalStatuses()
src/Modules/Settings/AllegroStatusMappingRepository.php Modified upsertMapping() key na orderpro, +listExternalStatuses(), +buildAllegroToOrderproMap(), +replaceAllMappings(), upsertDiscoveredStatus() check-then-insert
src/Modules/Settings/ShopproOrdersSyncService.php Modified buildStatusMap() komentarz + guard na duplikaty
src/Modules/Settings/ShopproIntegrationsController.php Modified buildMappingIndex() + buildExternalStatusOptions() zamiast buildStatusRows(), saveStatusMappings() odwrocony
src/Modules/Settings/AllegroStatusMappingController.php Modified saveStatusMappingsBulk() odwrocony, saveStatusMapping() stub redirect
src/Modules/Settings/AllegroIntegrationController.php Modified +allegroStatuses w danych widoku
resources/views/settings/shoppro.php Modified Odwrocona tabela + JS name sync
resources/views/settings/allegro.php Modified Odwrocona tabela, usuniety single-add form, +JS name sync
resources/lang/pl.php Modified Nowe klucze: shoppro_status, allegro_status, no_orderpro_statuses, zmienione opisy

Decisions Made

Decision Rationale Impact
Zachowanie nazw kolumn DB Minimalizacja ryzyka — zmiana tylko unique key, nie schemat Zero zmian w logice sync pull/push
Discovered statuses z Flash + DB merge Brak nowej tabeli, proste rozwiazanie Dropdown opcje znikaja po sesji jesli nie zapisane w mapowaniu
upsertDiscoveredStatus() jako check-then-insert Po zmianie unique na orderpro_status_code, ON DUPLICATE KEY nie dziala na allegro_status_code Allegro discovery nadal dziala poprawnie
Usuniety single-add form w Allegro Zbedny — wiersze to orderPRO statusy, nie trzeba dodawac recznie Czystszy UI

Deviations from Plan

Summary

Type Count Impact
Auto-fixed 2 Konieczne dostosowania
Deferred 1 Migracja do uruchomienia na serwerze

Auto-fixed Issues

1. Nazwa pliku migracji

  • Found during: Task 1
  • Issue: Plan mial nazwe 20260407_000074_... ale kolejny numer to 078
  • Fix: Plik nazwany 20260407_000078_reverse_status_mapping_keys.sql

2. upsertDiscoveredStatus() w AllegroStatusMappingRepository

  • Found during: Task 1
  • Issue: Po zmianie unique key na orderpro_status_code, ON DUPLICATE KEY UPDATE nie moze kluczowac na allegro_status_code
  • Fix: Zamieniono na check-then-insert (SELECT + INSERT/UPDATE)

Deferred Items

  • Migracja SQL wymaga uruchomienia na serwerze (lokalna baza niedostepna — XAMPP wylaczony)

Issues Encountered

Issue Resolution
Lokalna baza danych niedostepna Migracja przygotowana do uruchomienia na serwerze
saveStatusMapping() route nadal istnieje Dodany stub redirect w kontrolerze

Next Phase Readiness

Ready:

  • Kod w pelni przygotowany i zweryfikowany syntaktycznie
  • Migracja SQL gotowa do uruchomienia
  • Dokumentacja zaktualizowana (DB_SCHEMA, ARCHITECTURE, TECH_CHANGELOG)

Concerns:

  • Migracja musi byc uruchomiona na serwerze przed deploy
  • Istniejace mapowania z duplikatami orderpro_status_code zostana zdeduplikowane (zachowany najnowszy)

Blockers:

  • None (po uruchomieniu migracji)

Phase: 74-reverse-status-mapping, Plan: 01 Completed: 2026-04-07