1.9 KiB
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_urlw edycji klienta (templates/clients/main_view.php) z walidacja URL po stronie serwera - Migracja 029: rename
products.name->title,products.title->title_gmc, dodaniedescription_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_universalwywoluje XmlFeedImporter po sync produktow GA dla klientow z ustawionym feedem; raportxml_feedw response - Refaktor wszystkich odwolan do kolumn
products.name/products.titlew factory, controls, services, templates, api.php; aliasyAS namezachowane 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_fieldzaktualizowane dotitle_gmc/description_gmc(edytowalne)SupplementalFeed::generate_for_clientczytatitle_gmc AS title, description_gmc AS descriptionprzy 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.sqlautoload/services/class.XmlFeedImporter.phpautoload/factory/class.Products.phpautoload/controls/class.Products.phpautoload/controls/class.Cron.phpautoload/controls/class.Clients.phpautoload/services/class.SupplementalFeed.phptemplates/clients/main_view.phpapi.php.paul/phases/06-xml-feed-import/06-01-PLAN.md.paul/phases/06-xml-feed-import/06-01-SUMMARY.md.paul/STATE.md