This commit is contained in:
2026-04-02 00:17:46 +02:00
parent 34b0a2b4f5
commit 39c318382a
14 changed files with 417 additions and 16 deletions

View File

@@ -158,6 +158,7 @@ Migracje z prefiksem `ensure_` to migracje kompensujące — zostały dodane
- schema neutralna wzgledem dostawcy API (pola `source_*`, `external_*`),
- kolekcje zamowienia rozdzielone na osobne tabele 1:N,
- `payload_json` dostepne dla diagnostyki/replay,
- `personalization` (TEXT, nullable) w `order_items` — dane personalizacji produktu z shopPRO (custom_fields), przechowywane jako czysty tekst,
- historia zmian statusow utrzymywana w `order_status_history`.
### `integration_order_sync_state`

View File

@@ -1,5 +1,13 @@
# Tech Changelog
## 2026-04-01 (Phase 63 - Order Item Personalization, Plan 01)
- Migracja `20260401_000075_add_personalization_to_order_items.sql`: kolumna `personalization TEXT NULL` w `order_items`.
- `ShopproOrderMapper::extractPersonalization()`: ekstrakcja `custom_fields` z odpowiedzi shopPRO API, konwersja HTML na czysty tekst (strip_tags, html_entity_decode, br->newline).
- `ShopproOrderMapper::mapItems()`: dodanie klucza `personalization` do mapowanego itemu.
- `OrderImportRepository::replaceItems()`: zapis `personalization` do INSERT query.
- `resources/views/orders/show.php`: warunkowe wyswietlanie personalizacji pod nazwa produktu (div.item-personalization z etykieta i liniami tekstu, escape via `e()`).
- `resources/scss/app.scss`: style `.item-personalization` (kompaktowy blok, border-left, muted colors).
## 2026-03-31 (Phase 60 - Order Status Aged Event, Plan 01)
- Migracja `20260331_000074_seed_order_status_aged_cron.sql`: seed cron schedule `order_status_aged` co 3600s.
- `OrderStatusAgedService`: skanuje zamowienia w danym statusie od X dni (query HAVING MAX(changed_at) na `order_status_history`), limit 100/regule, trigger `order.status_aged`.