Files
orderPRO/.paul/changelog/2026-05-07.md
Jacek Pyziak 782a291210 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>
2026-05-07 23:22:37 +02:00

1.4 KiB

2026-05-07

Co zrobiono

  • [Phase 112, Plan 01] Re-import Data Protection — re-import istniejacego zamowienia jest delta-only
  • Task 1: replaceAddresses/replaceItems/replaceNotes/replaceShipments/replaceStatusHistory przeniesione pod galaz if ($created) w OrderImportRepository::upsertOrderAggregateorder_items.id i flagi lokalne (project_generated z Phase 97) sa stabilne miedzy re-importami
  • Task 2: nowa metoda updateOrderDelta() aktualizuje wylacznie status_code (warunkowo), payment_status, total_paid, is_canceled_by_buyer, source_updated_at, payload_json, fetched_at, updated_at. Dodana propagacja anulowania ze zrodla (is_canceled_by_buyer=1 LUB pull status_code='anulowane') i identical-payload no-op guard via normalizePayloadJson()
  • Task 3: .paul/codebase/architecture.md (sekcja Re-import) i .paul/codebase/tech_changelog.md (wpis 2026-05-07) zaktualizowane
  • Bug case #882 (znikajaca flaga "Projekt" po re-imporcie wymuszanym przez payment.status_changed) przyczynowo naprawiony
  • php -l src/Modules/Orders/OrderImportRepository.php -> No syntax errors
  • Manualne AC-1..AC-7 odlozone — XAMPP/MySQL nieosiagalne w sesji

Zmienione pliki

  • src/Modules/Orders/OrderImportRepository.php
  • .paul/codebase/architecture.md
  • .paul/codebase/tech_changelog.md
  • .paul/phases/112-reimport-data-protection/112-01-PLAN.md
  • .paul/phases/112-reimport-data-protection/112-01-SUMMARY.md
  • .paul/STATE.md