Files
adsPRO/.paul/phases/02-supplemental-feed-cl1/02-01-SUMMARY.md
2026-04-22 10:17:26 +02:00

4.0 KiB

phase, plan, subsystem, tags, requires, provides, affects, tech-stack, key-files, key-decisions, patterns-established, duration, started, completed
phase plan subsystem tags requires provides affects tech-stack key-files key-decisions patterns-established duration started completed
02-supplemental-feed-cl1 01 feeds
merchant-center
supplemental-feed
tsv
custom-label
google-ads
phase provides
01-products-cl1-column kolumna `products.custom_label_1` w DB (migracja 028), UI edycji w /products
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
merchant-center
google-ads-labels
added patterns
created modified
autoload/services/class.SupplementalFeed.php
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
~5min 2026-04-22T00:00:00Z 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