Files
adsPRO/docs/memory.md
Jacek Pyziak efbdcce08a feat: Add XML file management functionality
- Created XmlFiles control class for handling XML file views and regeneration.
- Implemented method to retrieve clients with XML feeds in the factory class.
- Added database migration to include google_merchant_account_id in clients table.
- Created migrations for products_keyword_planner_terms and products_merchant_sync_log tables.
- Added campaign_keywords table migration for managing campaign keyword data.
- Developed main view template for displaying XML files and their statuses.
- Introduced a debug script for analyzing product URLs and their statuses.
2026-02-18 21:23:53 +01:00

51 lines
2.6 KiB
Markdown

# adsPRO - Pamiec projektu
Ten plik sluzy jako trwala pamiec dla Claude Code. Zapisuj tu wzorce, decyzje i ustalenia potwierdzone w trakcie pracy nad projektem.
## Architektura
- Custom MVC: Controllers (`\controls`) -> Factories (`\factory`) -> Medoo ORM (`$mdb`)
- Autoload PSR-0: `\controls\Foo` -> `autoload/controls/class.Foo.php`
- Routing w `index.php`: URL `/module/action/` -> `\controls\Module::action()`
- Szablony w `templates/`, zmienne przez `$this->varName`
- Serwisy API: `\services\GoogleAdsApi`, `\services\ClaudeApi`, `\services\OpenAiApi`
## Styl kodu
- Spacje w nawiasach: `if ( $x )`, `function( $a, $b )`
- Klamry w nowej linii
- Wszystkie metody kontrolerow i fabryk: `static public function`
- Endpointy JSON: `echo json_encode([...]); exit;`
- Commity po polsku z prefixem: `feat:`, `fix:`, `update:`
## Frontend
- jQuery 3.6, DataTables 2.1, Bootstrap 4, Select2 4.1, Highcharts
- jquery-confirm do modali/dialogow
- Font Awesome 6.5 do ikon
- SASS: `layout/style.scss` -> auto-kompilacja przez Live Sass Compiler
## Deployment
- FTP auto-upload przez VS Code FTP-Kr
- Brak kroku budowania - pliki laduja bezposrednio na serwer
- Migracje: `php install.php` (idempotentne, sledzenie w `schema_migrations`)
## Decyzje projektowe
- Frazy wyszukiwane dodane do wykluczonych oznaczane czerwonym kolorem (klasa CSS `term-is-negative`)
- Negatywne slowa kluczowe dodawane przez Google Ads API i zapisywane lokalnie w `campaign_negative_keywords`
- Klucze API przechowywane w tabeli `settings` (key-value)
- Frazy z Google Ads Keyword Planner dla URL produktu sa cachowane w `products_keyword_planner_terms` i ponownie uzywane przy generowaniu tytulu AI
- Zmiany produktowe (`title`, `description`, `google_product_category`, `custom_label_4`) sa synchronizowane bezposrednio do Merchant API i logowane per pole w `products_merchant_sync_log`
- `cron_products` dziala batchowo po klientach (`clients_per_run`), domyslnie `10` (max `100`), aby ograniczyc liczbe wywolan; odpowiedz zawiera `estimated_calls_remaining_in_phase`
- `cron_campaigns` dziala batchowo po klientach (`clients_per_run`), domyslnie `2` (max `20`), a odpowiedz zawiera `estimated_calls_remaining_today`
- Zmiana listy klientow (np. reaktywacja klienta) nie powinna resetowac postepu `cron_products`; pipeline zachowuje przetworzonych i dopina nowych klientow
- W `cron_campaigns` stan `processed_ids` jest normalizowany do aktualnej listy aktywnych klientow, aby uniknac rozjazdow postepu po zmianach aktywnosci
## Preferencje uzytkownika
- Komunikacja po polsku
- Zwiezle commity po polsku
- Git push tylko na wyrazna prosbe