128 lines
4.5 KiB
Markdown
128 lines
4.5 KiB
Markdown
---
|
|
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*
|