Files
adsPRO/.paul/changelog/2026-04-30.md
2026-04-30 01:04:06 +02:00

1.9 KiB

2026-04-30

Co zrobiono

  • [Phase 6, Plan 06-01] XML feed import per klient + refaktor schematu products (source/edit split) + integracja z cron_universal
  • Dodano pole xml_feed_url w edycji klienta (templates/clients/main_view.php) z walidacja URL po stronie serwera
  • Migracja 029: rename products.name -> title, products.title -> title_gmc, dodanie description_gmc, price, clients.xml_feed_url, clients.xml_feed_last_sync_at, INDEX (client_id, offer_id) (non-unique - legacy duplikaty)
  • Nowy serwis \services\XmlFeedImporter - XMLReader streaming + batche 200 w transakcjach + manual upsert (SELECT IN + UPDATE/INSERT); odporny na feedy 5000+ pozycji
  • Hook w cron_universal wywoluje XmlFeedImporter po sync produktow GA dla klientow z ustawionym feedem; raport xml_feed w response
  • Refaktor wszystkich odwolan do kolumn products.name/products.title w factory, controls, services, templates, api.php; aliasy AS name zachowane jako kontrakt JS/API
  • Korekta semantyki: title/description = ZRODLO (z feedu lub pierwszy fetch GA), title_gmc/description_gmc = EDYTOWALNE (wysylane do GMC supplemental feed)
  • is_product_core_field zaktualizowane do title_gmc/description_gmc (edytowalne)
  • SupplementalFeed::generate_for_client czyta title_gmc AS title, description_gmc AS description przy generowaniu TSV
  • api.php (cztery endpointy products): SQL zaktualizowane, set_product_data zapisuje do title_gmc

Zmienione pliki

  • migrations/029_products_rename_columns_and_xml_feed.sql
  • autoload/services/class.XmlFeedImporter.php
  • autoload/factory/class.Products.php
  • autoload/controls/class.Products.php
  • autoload/controls/class.Cron.php
  • autoload/controls/class.Clients.php
  • autoload/services/class.SupplementalFeed.php
  • templates/clients/main_view.php
  • api.php
  • .paul/phases/06-xml-feed-import/06-01-PLAN.md
  • .paul/phases/06-xml-feed-import/06-01-SUMMARY.md
  • .paul/STATE.md