107 lines
3.9 KiB
Markdown
107 lines
3.9 KiB
Markdown
---
|
|
phase: 62-import-reimport-safety
|
|
plan: 01
|
|
subsystem: api
|
|
tags: [import, activity-log, deduplication, data-protection]
|
|
|
|
requires:
|
|
- phase: 56-order-payments
|
|
provides: ręczne płatności w orderPRO które mogą być nadpisane
|
|
provides:
|
|
- rozróżnienie import vs aktualizacja w activity log shopPRO
|
|
- deduplikacja wpisów activity log shopPRO (shouldSkipDuplicateImportActivity)
|
|
- ochrona lokalnych płatności, przesyłek i historii statusów przed nadpisaniem przy re-imporcie
|
|
affects: []
|
|
|
|
tech-stack:
|
|
added: []
|
|
patterns:
|
|
- "replacePayments/Shipments/StatusHistory tylko przy INSERT (nie UPDATE) w upsertOrderAggregate"
|
|
|
|
key-files:
|
|
created: []
|
|
modified:
|
|
- src/Modules/Settings/ShopproOrdersSyncService.php
|
|
- src/Modules/Orders/OrderImportRepository.php
|
|
|
|
key-decisions:
|
|
- "Adresy, pozycje i notatki nadpisywane zawsze (dane ze źródła); płatności, przesyłki i historia statusów tylko przy pierwszym imporcie"
|
|
- "Reuse shouldSkipDuplicateImportActivity z Allegro zamiast nowej logiki"
|
|
|
|
patterns-established:
|
|
- "Przy re-imporcie chronić dane które mogą pochodzić z lokalnych akcji użytkownika"
|
|
|
|
duration: 3min
|
|
started: 2026-03-31
|
|
completed: 2026-03-31
|
|
---
|
|
|
|
# Phase 62 Plan 01: Import Re-import Safety Summary
|
|
|
|
**Rozróżnienie import/aktualizacja w activity log shopPRO + ochrona lokalnych danych (płatności, przesyłki, historia statusów) przed nadpisaniem przy re-imporcie dla obu źródeł.**
|
|
|
|
## Performance
|
|
|
|
| Metric | Value |
|
|
|--------|-------|
|
|
| Duration | ~3min |
|
|
| Started | 2026-03-31 |
|
|
| Completed | 2026-03-31 |
|
|
| Tasks | 2 completed |
|
|
| Files modified | 2 |
|
|
|
|
## Acceptance Criteria Results
|
|
|
|
| Criterion | Status | Notes |
|
|
|-----------|--------|-------|
|
|
| AC-1: shopPRO rozróżnia import od aktualizacji | Pass | "Import zamowienia z shopPRO" vs "Zaktualizowano zamowienie z shopPRO (re-import)" |
|
|
| AC-2: shopPRO deduplikuje identyczne wpisy | Pass | shouldSkipDuplicateImportActivity reuse z Allegro |
|
|
| AC-3: Re-import nie kasuje lokalnych płatności | Pass | replacePayments tylko przy $created |
|
|
| AC-4: Re-import nie kasuje lokalnej historii statusów | Pass | replaceStatusHistory tylko przy $created |
|
|
| AC-5: Re-import nie kasuje lokalnych przesyłek | Pass | replaceShipments tylko przy $created |
|
|
|
|
## Accomplishments
|
|
|
|
- shopPRO activity log rozróżnia pierwszy import od re-importu (analogicznie do Allegro)
|
|
- Deduplikacja wpisów activity log eliminuje powtórzenia przy tym samym source_updated_at
|
|
- Re-import (UPDATE) nie kasuje już płatności, przesyłek ani historii statusów — chroni dane dodane lokalnie w orderPRO
|
|
- Zmiana w OrderImportRepository dotyczy obu źródeł (shopPRO i Allegro)
|
|
|
|
## Files Created/Modified
|
|
|
|
| File | Change | Purpose |
|
|
|------|--------|---------|
|
|
| `src/Modules/Settings/ShopproOrdersSyncService.php` | Modified | Rozróżnienie summary import/aktualizacja, dodanie pól deduplikacji, warunek shouldSkipDuplicate |
|
|
| `src/Modules/Orders/OrderImportRepository.php` | Modified | replacePayments/Shipments/StatusHistory przeniesione do bloku if ($created) |
|
|
|
|
## Decisions Made
|
|
|
|
| Decision | Rationale | Impact |
|
|
|----------|-----------|--------|
|
|
| Adresy/pozycje/notatki nadpisywane zawsze | Dane pochodzą wyłącznie ze źródła, nie są edytowane lokalnie | Źródło pozostaje autorytatywne dla tych danych |
|
|
| Płatności/przesyłki/historia tylko przy INSERT | Mogą być dodawane lokalnie w orderPRO (ręczna płatność, zmiana statusu) | Lokalne dane chronione przed kaskadowym DELETE |
|
|
|
|
## Deviations from Plan
|
|
|
|
None - plan executed exactly as written
|
|
|
|
## Issues Encountered
|
|
|
|
None
|
|
|
|
## Next Phase Readiness
|
|
|
|
**Ready:**
|
|
- Import bezpieczny dla danych lokalnych
|
|
- Activity log spójny między Allegro i shopPRO
|
|
|
|
**Concerns:**
|
|
- Brak kolumny `origin` (source/local) na tabelach relacyjnych — przy przyszłej potrzebie merge/diff danych z obu źródeł trzeba będzie dodać
|
|
|
|
**Blockers:**
|
|
- None
|
|
|
|
---
|
|
*Phase: 62-import-reimport-safety, Plan: 01*
|
|
*Completed: 2026-03-31*
|