feat(112): re-import data protection — delta-only re-import + project_generated preservation

Phase 112 / Plan 112-01 complete (v3.6):
- OrderImportRepository::upsertOrderAggregate split into create vs re-import paths
- replaceAddresses/Items/Notes/Shipments/StatusHistory invoked only on first import
- new updateOrderDelta() narrows UPDATE to status_code (cond.), payment_status,
  total_paid, is_canceled_by_buyer, source_updated_at, payload_json, fetched_at
- source-side cancellation override (is_canceled_by_buyer=1 OR pull status_code='anulowane')
- identical-payload no-op guard via normalizePayloadJson()
- fixes case #882: order_items.id stable, project_generated (Phase 97) preserved
- Phase 111 payment.status_changed emit retained without regression

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-07 23:22:37 +02:00
parent 0e457aed38
commit 782a291210
10 changed files with 638 additions and 73 deletions

View File

@@ -6,7 +6,7 @@ orderPRO to narzedzie do wielokanalowego zarzadzania sprzedaza. Projekt przechod
## Current Milestone
Brak aktywnego milestone - v3.5 zamkniety. Nastepny milestone do zaplanowania.
Brak aktywnego milestone - v3.6 zamkniety. Nastepny milestone do zaplanowania.
## Next Milestone
@@ -19,6 +19,19 @@ Kandydaci w kolejce:
## Completed Milestones
<details>
<summary>v3.6 Re-import Data Protection - 2026-05-07 (1 phase, 1 plan)</summary>
Re-import istniejacego zamowienia (Allegro + shopPRO) jest delta-only: `replaceAddresses/Items/Notes` wywolywane wylacznie przy pierwszym imporcie, nowy `updateOrderDelta()` aktualizuje tylko pola realnie zmieniajace sie ze zrodla. Stabilne `order_items.id` chronia `project_generated` (Phase 97) i flow generowania PSD. Dodatkowo: propagacja anulowania ze zrodla (override niezalezny od statusOverwriteAllowed) i identical-payload no-op guard. Naprawa case #882 (znikajaca flaga "Projekt" po re-imporcie wymuszanym przez `payment.status_changed` z Phase 111).
| Phase | Name | Plans | Status |
|-------|------|-------|--------|
| 112 | Re-import Data Protection | 1/1 | Complete |
Archive: `.paul/phases/112-reimport-data-protection/`
</details>
<details>
<summary>v3.5 Payment Transition Event - 2026-05-05 (1 phase, 1 plan)</summary>
@@ -467,4 +480,4 @@ Archive: `.paul/milestones/v0.1-ROADMAP.md`
---
*Roadmap created: 2026-03-12*
*Last updated: 2026-04-28 - v3.4 Statistics Summary milestone closed (Phase 110)*
*Last updated: 2026-05-07 - v3.6 Re-import Data Protection milestone closed (Phase 112)*