6.3 KiB
6.3 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 | ||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 75-pull-status-mapping | 01 | settings, orders |
|
|
|
|
|
|
|
|
~45min | 2026-04-07T12:00:00Z | 2026-04-07T12:45:00Z |
Phase 75 Plan 01: Pull Status Mapping — Summary
Rozdzielenie mapowania statusow shopPRO na push/pull + ochrona statusu przy re-imporcie (tylko nieoplacone→w_realizacji przy potwierdzeniu platnosci)
Performance
| Metric | Value |
|---|---|
| Duration | ~45min |
| Tasks | 3 planned + 1 extension (status protection) |
| Files modified | 12 |
| DB migration | Executed on remote |
Acceptance Criteria Results
| Criterion | Status | Notes |
|---|---|---|
| AC-1: Nowa tabela pull mappings | Pass | Tabela utworzona z UNIQUE, 18 rows pre-populated |
| AC-2: Sekcja pull mapping w UI | Pass | Dwie sekcje: push ("Wysylka statusow") + pull ("Mapowanie przy imporcie") |
| AC-3: Import uzywa pull mappings | Pass | buildStatusMap() czyta z pull tabeli, fallback na push |
| AC-4: Naprawa zamowien 211-214 | Pass | Statusy juz poprawione (w_realizacji) |
Accomplishments
- Nowa tabela
order_status_pull_mappingsz UNIQUE na(integration_id, shoppro_status_code)— eliminuje bug "first wins" z Phase 74 - UI w Ustawienia > shopPRO > Statusy ma dwie sekcje: push (orderPRO→shopPRO) i pull (shopPRO→orderPRO) z jasnymi etykietami kierunku
- Ochrona statusu przy re-imporcie:
updateOrder()nie nadpisujeexternal_status_idCHYBA ZE obecny status =nieoplaconeipayment_status = 2(platnosc potwierdzona) - Przy payment transition: importowane sa rowniez dane platnosci (
replacePayments) - Activity log rozroznia payment transition: "Platnosc potwierdzona z shopPRO — zmiana statusu na w realizacji"
Files Created/Modified
| File | Change | Purpose |
|---|---|---|
database/migrations/20260407_000079_pull_status_mappings.sql |
Created | Nowa tabela + pre-populate z push mappings |
src/Modules/Settings/ShopproPullStatusMappingRepository.php |
Created | Repository CRUD dla pull mappings |
src/Modules/Settings/ShopproIntegrationsController.php |
Modified | Nowa zaleznosc, savePullStatusMappings(), buildPullMappingIndex() |
src/Modules/Settings/ShopproOrdersSyncService.php |
Modified | buildStatusMap() z pull tabeli, payment transition log |
src/Modules/Orders/OrderImportRepository.php |
Modified | Status protection + payment transition logic + getCurrentStatus() |
src/Modules/Cron/CronHandlerFactory.php |
Modified | Wstrzykniecie ShopproPullStatusMappingRepository |
resources/views/settings/shoppro.php |
Modified | Sekcja pull mapping, zmieniony tytul push |
resources/lang/pl.php |
Modified | Klucze pull.*, zmieniony tytul/opis push |
routes/web.php |
Modified | Nowa route POST .../statuses/save-pull |
DOCS/DB_SCHEMA.md |
Modified | Dokumentacja nowej tabeli |
DOCS/ARCHITECTURE.md |
Modified | Nowy endpoint save-pull |
DOCS/TECH_CHANGELOG.md |
Modified | Wpis Phase 75 |
Decisions Made
| Decision | Rationale | Impact |
|---|---|---|
| Osobna tabela pull zamiast flagi is_pull_target | Czysta separacja push/pull, brak ryzyka kolizji | Dodatkowa tabela ale prosta logika |
| Status protection: tylko nieoplacone+paid=2 | User chce push-only z jednym wyjatkiem: platnosc | Re-import nie nadpisuje recznych zmian statusu |
| Fallback na push table jesli pull repo null | Backward compatibility dla kodu ktory nie wstrzykuje pull repo | Bezpieczna migracja |
Deviations from Plan
Summary
| Type | Count | Impact |
|---|---|---|
| Scope additions | 1 | Ochrona statusu przy re-imporcie (na zadanie usera) |
| Auto-fixed | 1 | Naprawa order 180 ze statusem "7" |
Total impact: Rozszerzenie scope o kluczowa logike biznesowa — status protection
Scope Addition: Status Protection on Re-import
- Requested by: User during APPLY
- Issue: Re-import z shopPRO nadpisywal recznie zmienione statusy (np. order 180: "wyslane" → "7")
- Fix:
upsertOrderAggregate()zachowuje current status chyba ze nieoplacone + payment confirmed - Files:
src/Modules/Orders/OrderImportRepository.php
Auto-fixed: Order 180 status "7"
- Found during: Investigation
- Issue: Surowy kod shopPRO "7" (nieznany status) nadpisal "wyslane"
- Fix: Status juz poprawiony (wyslane). Nowa logika zapobiega powtorzeniu.
Next Phase Readiness
Ready:
- Pull mapping w pelni funkcjonalne i konfigurowalne
- Status protection chroni reczne zmiany w orderPRO
- Push sync (ShopproStatusSyncService) niezmodyfikowany — dziala jak dotychczas
Concerns:
- shopPRO status "7" nie ma mapowania — user powinien zsynchronizowac statusy (przycisk w UI) lub dodac recznie
- Allegro mappings nie maja analogicznego pull — jesli potrzebne, osobna faza
Blockers:
- None — kod wymaga deploy na serwer (FTP)
Phase: 75-pull-status-mapping, Plan: 01 Completed: 2026-04-07