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

@@ -0,0 +1,127 @@
---
phase: 63-order-item-personalization
plan: 01
subsystem: orders
tags: [personalization, shopPRO, import, custom_fields]
requires:
- phase: none
provides: n/a
provides:
- Kolumna personalization w order_items
- Ekstrakcja custom_fields z shopPRO API przy imporcie
- Wyswietlanie personalizacji w widoku zamowienia
affects: []
tech-stack:
added: []
patterns: [extractPersonalization HTML-to-text w mapperze]
key-files:
created:
- database/migrations/20260401_000075_add_personalization_to_order_items.sql
modified:
- src/Modules/Settings/ShopproOrderMapper.php
- src/Modules/Orders/OrderImportRepository.php
- resources/views/orders/show.php
- resources/scss/app.scss
- public/assets/css/app.css
key-decisions:
- "Personalizacja jako plain text (nie JSON) — prostosc, wystarczajaca dla wyswietlania"
- "date_order dodane do readPath mapper — naprawa brakujacej daty zamowienia"
patterns-established:
- "extractPersonalization: HTML strip + br-to-newline dla danych z shopPRO"
duration: ~45min
started: 2026-04-01T19:00:00Z
completed: 2026-04-01T19:45:00Z
---
# Phase 63 Plan 01: Order Item Personalization Summary
**Import i wyswietlanie danych personalizacji produktow z shopPRO (custom_fields) w szczegolach zamowienia orderPRO.**
## Performance
| Metric | Value |
|--------|-------|
| Duration | ~45min |
| Started | 2026-04-01 |
| Completed | 2026-04-01 |
| Tasks | 2 completed |
| Files modified | 7 |
## Acceptance Criteria Results
| Criterion | Status | Notes |
|-----------|--------|-------|
| AC-1: Personalizacja zapisana w DB | Pass | custom_fields ekstrakcja z HTML na tekst, zapis w kolumnie personalization |
| AC-2: Personalizacja wyswietlana w UI | Pass | Blok pod nazwa produktu z etykieta i liniami tekstu |
| AC-3: Brak personalizacji nie powoduje bledow | Pass | NULL w kolumnie, brak sekcji w UI |
## Accomplishments
- Kolumna `personalization TEXT NULL` w `order_items` + ekstrakcja `custom_fields` z shopPRO API
- Wyswietlanie personalizacji w widoku zamowienia z escape XSS
- Naprawa brakujacej daty zamowienia (`date_order` dodane do mapper readPath)
- Usuniecie zbednego pola `item_type` z widoku i duplikatu `source_order_id`
- Dodanie `margin-bottom` do section-title dla lepszego odstepy pod kreska
## Files Created/Modified
| File | Change | Purpose |
|------|--------|---------|
| `database/migrations/20260401_000075_add_personalization_to_order_items.sql` | Created | Kolumna personalization w order_items |
| `src/Modules/Settings/ShopproOrderMapper.php` | Modified | extractPersonalization() + date_order w readPath |
| `src/Modules/Orders/OrderImportRepository.php` | Modified | personalization w INSERT query |
| `resources/views/orders/show.php` | Modified | Wyswietlanie personalizacji, usuniecie item_type i source_order_id |
| `resources/scss/app.scss` | Modified | Style .item-personalization + section-title margin-bottom |
| `public/assets/css/app.css` | Modified | Skompilowany CSS |
| `DOCS/DB_SCHEMA.md` | Modified | Dokumentacja kolumny personalization |
| `DOCS/TECH_CHANGELOG.md` | Modified | Wpis Phase 63 |
## Decisions Made
| Decision | Rationale | Impact |
|----------|-----------|--------|
| Plain text zamiast JSON dla personalizacji | Prostosc — dane sa read-only, nie wymagaja struktury klucz-wartosc | Wystarczajace dla wyswietlania |
| date_order w readPath mappera | shopPRO API zwraca date_order, mapper nie mial tego klucza | Naprawia brakujaca date zamowienia |
| Usuniecie item_type z widoku | Zawsze "product", zero informacji | Czystszy UI |
| Usuniecie source_order_id z widoku | Duplikat external_order_id | Czystszy UI |
## Deviations from Plan
### Summary
| Type | Count | Impact |
|------|-------|--------|
| Scope additions | 3 | Drobne poprawki UI wykryte przy testowaniu |
| Deferred | 0 | - |
**Total impact:** Drobne poprawki UI (date_order mapping, item_type/source_order_id cleanup, section-title spacing) — naturalne odkrycia przy testowaniu na zywo.
## Issues Encountered
| Issue | Resolution |
|-------|------------|
| Lokalna DB offline | Migracja uruchomiona na zdalnej DB przez mysql CLI |
| Cron nie pobral zamowienia (stary updated_at) | Touch updated_at w shopPRO DB + reset kursora sync |
| marianek.pl to osobna instancja shopPRO | Znaleziony config.php z danymi DB |
## Next Phase Readiness
**Ready:**
- Personalizacja importowana i wyswietlana
- Mapper rozszerzalny o kolejne pola shopPRO API
**Concerns:**
- Brak
**Blockers:**
- None
---
*Phase: 63-order-item-personalization, Plan: 01*
*Completed: 2026-04-01*