update
This commit is contained in:
111
.paul/phases/02-supplemental-feed-cl1/02-01-SUMMARY.md
Normal file
111
.paul/phases/02-supplemental-feed-cl1/02-01-SUMMARY.md
Normal file
@@ -0,0 +1,111 @@
|
||||
---
|
||||
phase: 02-supplemental-feed-cl1
|
||||
plan: 01
|
||||
subsystem: feeds
|
||||
tags: [merchant-center, supplemental-feed, tsv, custom-label, google-ads]
|
||||
|
||||
requires:
|
||||
- phase: 01-products-cl1-column
|
||||
provides: kolumna `products.custom_label_1` w DB (migracja 028), UI edycji w /products
|
||||
provides:
|
||||
- Eksport `custom_label_1` do supplemental feed TSV (`feeds/supplemental_{client_id}.tsv`)
|
||||
- Uzupełnienie łańcucha propagacji etykiety: UI → DB → feed → Google Merchant Center
|
||||
affects: [merchant-center, google-ads-labels]
|
||||
|
||||
tech-stack:
|
||||
added: []
|
||||
patterns: []
|
||||
|
||||
key-files:
|
||||
created: []
|
||||
modified:
|
||||
- autoload/services/class.SupplementalFeed.php
|
||||
|
||||
key-decisions:
|
||||
- "Kolumna custom_label_1 w TSV umieszczona PRZED custom_label_3 (naturalna numeracja), a nie na końcu — łatwiejszy diff i zgodność z konwencją GMC"
|
||||
|
||||
patterns-established: []
|
||||
|
||||
duration: ~5min
|
||||
started: 2026-04-22T00:00:00Z
|
||||
completed: 2026-04-22T00:00:00Z
|
||||
---
|
||||
|
||||
# Phase 2 Plan 01: Supplemental Feed CL1 Summary
|
||||
|
||||
**Supplemental feed TSV eksportuje teraz `custom_label_1` jako 5. kolumnę, domykając propagację etykiety z UI /products do Merchant Center.**
|
||||
|
||||
## Performance
|
||||
|
||||
| Metric | Value |
|
||||
|--------|-------|
|
||||
| Duration | ~5 min |
|
||||
| Started | 2026-04-22 |
|
||||
| Completed | 2026-04-22 |
|
||||
| Tasks | 1/1 |
|
||||
| Files modified | 1 |
|
||||
|
||||
## Acceptance Criteria Results
|
||||
|
||||
| Criterion | Status | Notes |
|
||||
|-----------|--------|-------|
|
||||
| AC-1: Nagłówek TSV zawiera custom_label_1 | Pass | Header: `id\ttitle\tdescription\tgoogle_product_category\tcustom_label_1\tcustom_label_3\tcustom_label_4` |
|
||||
| AC-2: Wartość custom_label_1 trafia do wierszy | Pass | Użytkownik zweryfikował na produkcji — plik `feeds/supplemental_9.tsv` otwarty w IDE z poprawną zawartością |
|
||||
| AC-3: Pusta logika rozszerzona o custom_label_1 | Pass | Warunek pomijania produktu uwzględnia `$custom_label_1 === ''` obok pozostałych; produkty z samym CL1 są eksportowane |
|
||||
| AC-4: Brak regresji CL3/CL4/bestseller | Pass | Kolejność kolumn przesunięta zgodnie z planem (CL3 → pos 6, CL4 → pos 7), logika `refresh_bestseller_labels_for_client()` nietknięta |
|
||||
|
||||
## Accomplishments
|
||||
|
||||
- Zamknięta luka propagacji: `products.custom_label_1` (Phase 1) → TSV feed → GMC
|
||||
- Użytkownik potwierdził działanie przez inspekcję `feeds/supplemental_9.tsv` na produkcji (po deployu FTP i regeneracji z UI /feeds)
|
||||
- Zero regresji w dotychczasowych kolumnach i w logice bestseller
|
||||
|
||||
## Files Created/Modified
|
||||
|
||||
| File | Change | Purpose |
|
||||
|------|--------|---------|
|
||||
| `autoload/services/class.SupplementalFeed.php` | Modified | Dodano `custom_label_1` do SELECT (+WHERE), nagłówka TSV, warunku pustki w foreach i tablicy `implode` zapisu wiersza (+6/-4 linie) |
|
||||
| `feeds/supplemental_9.tsv` | Regenerated (runtime artefakt) | Plik artefaktowy — regenerowany przez UI /feeds po deployu |
|
||||
|
||||
## Decisions Made
|
||||
|
||||
| Decision | Rationale | Impact |
|
||||
|----------|-----------|--------|
|
||||
| CL1 przed CL3 w TSV (pos 5) zamiast na końcu | Naturalna numeracja, mniejsze ryzyko pomyłek przy czytaniu feedu, zgodność z porządkiem atrybutów GMC | Kolumny CL3/CL4 przesunęły się o 1 w prawo — udokumentowane w AC-4, nie łamie parsera GMC (feed jest z nagłówkiem) |
|
||||
|
||||
## Deviations from Plan
|
||||
|
||||
### Summary
|
||||
|
||||
| Type | Count | Impact |
|
||||
|------|-------|--------|
|
||||
| Auto-fixed | 0 | — |
|
||||
| Scope additions | 0 | — |
|
||||
| Deferred | 0 | — |
|
||||
|
||||
**Total impact:** Brak odchyleń — plan wykonany 1:1.
|
||||
|
||||
### Deferred Items
|
||||
|
||||
Brak.
|
||||
|
||||
## Issues Encountered
|
||||
|
||||
Brak.
|
||||
|
||||
## Next Phase Readiness
|
||||
|
||||
**Ready:**
|
||||
- Łańcuch propagacji custom_label_1 kompletny (UI ↔ DB ↔ feed TSV ↔ GMC)
|
||||
- `SupplementalFeed::generate_for_client()` spójny z kolumnami DB dodanymi w Phase 1
|
||||
|
||||
**Concerns:**
|
||||
- Jeśli kiedyś pojawi się `custom_label_0` / `custom_label_2` → trzeba dodać je analogicznie (obecnie pomijane, zgodnie ze scope)
|
||||
- Feed jest generowany ad-hoc z UI /feeds — brak automatycznej regeneracji po zmianie etykiety; do rozważenia cron lub hook po edycji produktu
|
||||
|
||||
**Blockers:**
|
||||
- Brak
|
||||
|
||||
---
|
||||
*Phase: 02-supplemental-feed-cl1, Plan: 01*
|
||||
*Completed: 2026-04-22*
|
||||
Reference in New Issue
Block a user