update
This commit is contained in:
19
.paul/changelog/2026-04-29.md
Normal file
19
.paul/changelog/2026-04-29.md
Normal file
@@ -0,0 +1,19 @@
|
||||
# 2026-04-29
|
||||
|
||||
## Co zrobiono
|
||||
|
||||
- [Phase 5, Plan 05-01] Usuwanie wpisow historii produktu per kampania+grupa z UI breakdown w /products
|
||||
- Factory: nowa metoda `\factory\Products::delete_product_scope_history($pid,$cid,$agid)` z transakcja PDO; atomowy DELETE z `products_aggregate`, `products_history`, `products_history_30`
|
||||
- Controller: nowa akcja AJAX `/products/delete_product_scope_history/` z walidacja `product_id > 0`
|
||||
- Controller: rozszerzono `breakdown_for_view` o `product_id`, `campaign_id`, `ad_group_id` (auto-fix - bez tego UI handler dostawal undefined)
|
||||
- UI: nowa kolumna "Akcje" w tabeli rozbicia, ikona kosza z dialogiem `$.confirm`, optymistyczne usuwanie wiersza + `ajax.reload(null,false)`
|
||||
- Bonus: przebudowany styl ikony rozwijania breakdown (CSS rotate, hover, fioletowy stan open) - usunieto JS swap klas FA
|
||||
|
||||
## Zmienione pliki
|
||||
|
||||
- `autoload/factory/class.Products.php`
|
||||
- `autoload/controls/class.Products.php`
|
||||
- `templates/products/main_view.php`
|
||||
- `.paul/phases/05-products-scope-history-delete/05-01-PLAN.md`
|
||||
- `.paul/phases/05-products-scope-history-delete/05-01-SUMMARY.md`
|
||||
- `.paul/STATE.md`
|
||||
29
.paul/changelog/2026-04-30.md
Normal file
29
.paul/changelog/2026-04-30.md
Normal file
@@ -0,0 +1,29 @@
|
||||
# 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`
|
||||
Reference in New Issue
Block a user