diff --git a/updates/0.30/ver_0.324.zip b/updates/0.30/ver_0.324.zip new file mode 100644 index 0000000..5029e77 Binary files /dev/null and b/updates/0.30/ver_0.324.zip differ diff --git a/updates/0.30/ver_0.324_files.txt b/updates/0.30/ver_0.324_files.txt new file mode 100644 index 0000000..55ac504 --- /dev/null +++ b/updates/0.30/ver_0.324_files.txt @@ -0,0 +1,7 @@ +F: ../autoload/.DS_Store +F: ../autoload/front/.DS_Store +F: ../logs/2024-01-05-order-set-as-paid.txt +F: ../logs/2024-08-20-order-set-as-paid.txt +F: ../logs/apilo.txt +F: ../logs/logs-db-2024-08-31.log +F: ../templates/.DS_Store \ No newline at end of file diff --git a/updates/0.30/ver_0.324_manifest.json b/updates/0.30/ver_0.324_manifest.json new file mode 100644 index 0000000..95d1f38 --- /dev/null +++ b/updates/0.30/ver_0.324_manifest.json @@ -0,0 +1,79 @@ +{ + "changelog": "NEW - system kolejki zadań cron (DB), priorytetowe przetwarzanie, retry/backoff, ochrona endpointu cron", + "version": "0.324", + "files": { + "added": [ + "autoload/Domain/CronJob/CronJobProcessor.php", + "autoload/Domain/CronJob/CronJobRepository.php", + "autoload/Domain/CronJob/CronJobType.php" + ], + "deleted": [ + "autoload/.DS_Store", + "autoload/front/.DS_Store", + "logs/2024-01-05-order-set-as-paid.txt", + "logs/2024-08-20-order-set-as-paid.txt", + "logs/apilo.txt", + "logs/logs-db-2024-08-31.log", + "templates/.DS_Store" + ], + "modified": [ + "autoload/Domain/Order/OrderAdminService.php", + "autoload/admin/App.php", + "autoload/api/ApiRouter.php", + "autoload/front/App.php", + "cron.php" + ] + }, + "checksum_zip": "sha256:63237e6bdb2ed2c2632cebb45431b26ecd5717b129aa2180540ebce0c3bff77f", + "sql": [ + "-- System kolejki zadaĹ„ cron", + "-- Wersja: 0.324", + "CREATE TABLE IF NOT EXISTS pp_cron_jobs (", + " id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,", + " job_type VARCHAR(50) NOT NULL,", + " status ENUM(\u0027pending\u0027,\u0027processing\u0027,\u0027completed\u0027,\u0027failed\u0027,\u0027cancelled\u0027) NOT NULL DEFAULT \u0027pending\u0027,", + " priority TINYINT UNSIGNED NOT NULL DEFAULT 100,", + " payload TEXT NULL,", + " result TEXT NULL,", + " attempts SMALLINT UNSIGNED NOT NULL DEFAULT 0,", + " max_attempts SMALLINT UNSIGNED NOT NULL DEFAULT 10,", + " last_error VARCHAR(500) NULL,", + " scheduled_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,", + " started_at DATETIME NULL,", + " completed_at DATETIME NULL,", + " created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,", + " updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,", + " INDEX idx_status_priority_scheduled (status, priority, scheduled_at),", + " INDEX idx_job_type (job_type),", + " INDEX idx_status (status)", + ") ENGINE=InnoDB DEFAULT CHARSET=utf8;", + "CREATE TABLE IF NOT EXISTS pp_cron_schedules (", + " id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,", + " job_type VARCHAR(50) NOT NULL UNIQUE,", + " interval_seconds INT UNSIGNED NOT NULL,", + " priority TINYINT UNSIGNED NOT NULL DEFAULT 100,", + " max_attempts SMALLINT UNSIGNED NOT NULL DEFAULT 3,", + " payload TEXT NULL,", + " enabled TINYINT(1) NOT NULL DEFAULT 1,", + " last_run_at DATETIME NULL,", + " next_run_at DATETIME NULL,", + " created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,", + " INDEX idx_enabled_next_run (enabled, next_run_at)", + ") ENGINE=InnoDB DEFAULT CHARSET=utf8;", + "-- Harmonogramy zadaĹ„", + "INSERT INTO pp_cron_schedules (job_type, interval_seconds, priority, max_attempts) VALUES", + "(\u0027apilo_token_keepalive\u0027, 240, 10, 3),", + "(\u0027apilo_send_order\u0027, 60, 40, 10),", + "(\u0027apilo_product_sync\u0027, 600, 100, 3),", + "(\u0027apilo_pricelist_sync\u0027, 3600, 100, 3),", + "(\u0027apilo_status_poll\u0027, 600, 100, 3),", + "(\u0027price_history\u0027, 86400, 100, 3),", + "(\u0027order_analysis\u0027, 600, 100, 3),", + "(\u0027trustmate_invitation\u0027, 600, 200, 3),", + "(\u0027google_xml_feed\u0027, 3600, 200, 3);" + ], + "date": "2026-02-27", + "directories_deleted": [ + + ] +} \ No newline at end of file diff --git a/updates/0.30/ver_0.324_sql.txt b/updates/0.30/ver_0.324_sql.txt new file mode 100644 index 0000000..73765e3 --- /dev/null +++ b/updates/0.30/ver_0.324_sql.txt @@ -0,0 +1,45 @@ +-- System kolejki zadaĹ„ cron +-- Wersja: 0.324 +CREATE TABLE IF NOT EXISTS pp_cron_jobs ( + id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, + job_type VARCHAR(50) NOT NULL, + status ENUM('pending','processing','completed','failed','cancelled') NOT NULL DEFAULT 'pending', + priority TINYINT UNSIGNED NOT NULL DEFAULT 100, + payload TEXT NULL, + result TEXT NULL, + attempts SMALLINT UNSIGNED NOT NULL DEFAULT 0, + max_attempts SMALLINT UNSIGNED NOT NULL DEFAULT 10, + last_error VARCHAR(500) NULL, + scheduled_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + started_at DATETIME NULL, + completed_at DATETIME NULL, + created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + INDEX idx_status_priority_scheduled (status, priority, scheduled_at), + INDEX idx_job_type (job_type), + INDEX idx_status (status) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS pp_cron_schedules ( + id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, + job_type VARCHAR(50) NOT NULL UNIQUE, + interval_seconds INT UNSIGNED NOT NULL, + priority TINYINT UNSIGNED NOT NULL DEFAULT 100, + max_attempts SMALLINT UNSIGNED NOT NULL DEFAULT 3, + payload TEXT NULL, + enabled TINYINT(1) NOT NULL DEFAULT 1, + last_run_at DATETIME NULL, + next_run_at DATETIME NULL, + created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + INDEX idx_enabled_next_run (enabled, next_run_at) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +-- Harmonogramy zadaĹ„ +INSERT INTO pp_cron_schedules (job_type, interval_seconds, priority, max_attempts) VALUES +('apilo_token_keepalive', 240, 10, 3), +('apilo_send_order', 60, 40, 10), +('apilo_product_sync', 600, 100, 3), +('apilo_pricelist_sync', 3600, 100, 3), +('apilo_status_poll', 600, 100, 3), +('price_history', 86400, 100, 3), +('order_analysis', 600, 100, 3), +('trustmate_invitation', 600, 200, 3), +('google_xml_feed', 3600, 200, 3); \ No newline at end of file diff --git a/updates/changelog.php b/updates/changelog.php index fddb32a..192c206 100644 --- a/updates/changelog.php +++ b/updates/changelog.php @@ -1,23 +1,29 @@ +ver. 0.324 - 27.02.2026
+NEW - system kolejki zadań cron (DB), priorytetowe przetwarzanie, retry/backoff, ochrona endpointu cron +
+ver. 0.324 - 27.02.2026
+NEW - system kolejki zadań cron (DB), priorytetowe przetwarzanie, retry/backoff, ochrona endpointu cron +
ver. 0.323 - 24.02.2026
FIX - refactor importu zdjec w shopPRO import (walidacja HTTP, curl timeouty, logi), FIX - saveCustomFields tylko przy jawnym podaniu, FIX - delete() czysci custom_fields, FIX - sciezka upload w API, NEW - trwale usuwanie produktow z archiwum
ver. 0.322 - 24.02.2026
-FIX - custom_fields: jawne mapowanie kluczy w ProductRepository, spójne !empty w ProductsApiController +FIX - custom_fields: jawne mapowanie kluczy w ProductRepository, spĂłjne !empty w ProductsApiController
ver. 0.321 - 24.02.2026
-NEW - API: obsługa custom_fields w create/update produktu +NEW - API: obsĹ‚uga custom_fields w create/update produktu
ver. 0.320 - 24.02.2026
-NEW - API: endpoint ensure_producer (znajdź lub utwórz producenta); GET product zwraca producer_name +NEW - API: endpoint ensure_producer (znajdĹş lub utwĂłrz producenta); GET product zwraca producer_name
ver. 0.319 - 24.02.2026
-FIX - usunięcie shopPRO eksportu produktów; API produktu: dodano custom_fields i security_information +FIX - usuniÄ™cie shopPRO eksportu produktĂłw; API produktu: dodano custom_fields i security_information
ver. 0.318 - 24.02.2026
-NEW - shopPRO export produktów + API endpoints (ensure_attribute, ensure_attribute_value, upload_image) +NEW - shopPRO export produktĂłw + API endpoints (ensure_attribute, ensure_attribute_value, upload_image)
ver. 0.317 - 23.02.2026
-FIX - klucz API: fix zapisu (brakowalo w whiteliście), przycisk Generuj losowy klucz, ulepszony routing API +FIX - klucz API: fix zapisu (brakowalo w whiteliĹ›cie), przycisk Generuj losowy klucz, ulepszony routing API
ver. 0.316 - 23.02.2026
FIX - migracja brakujacej kolumny type w pp_shop_products_custom_fields @@ -26,16 +32,16 @@ FIX - migracja brakujacej kolumny type w pp_shop_products_custom_fields FIX - PDOException w listowaniu atrybutow admin (SQLSTATE HY093)
ver. 0.314 - 23.02.2026
-FIX - naprawa globalnej wyszukiwarki admin (Content-Type, Cache-Control, POST, try/catch), NEW - title strony z numerem zamówienia +FIX - naprawa globalnej wyszukiwarki admin (Content-Type, Cache-Control, POST, try/catch), NEW - title strony z numerem zamĂłwienia
ver. 0.313 - 23.02.2026
-FIX - sync płatności Apilo (int cast na apilo_order_id PPxxxxxx dawał 0) + logowanie decyzji sync do pp_log +FIX - sync pĹ‚atnoĹ›ci Apilo (int cast na apilo_order_id PPxxxxxx dawaĹ‚ 0) + logowanie decyzji sync do pp_log
ver. 0.312 - 23.02.2026
-FIX - krytyczne bugi integracji Apilo: curl_getinfo po curl_close, nieskończona pętla wysyłki, ceny 0.00 PLN, walidacja cen +FIX - krytyczne bugi integracji Apilo: curl_getinfo po curl_close, nieskoĹ„czona pÄ™tla wysyĹ‚ki, ceny 0.00 PLN, walidacja cen
ver. 0.311 - 23.02.2026
-FIX - race condition callback płatności Apilo, persistence filtrów tabel admin, poprawki cen zamówień +FIX - race condition callback pĹ‚atnoĹ›ci Apilo, persistence filtrĂłw tabel admin, poprawki cen zamĂłwieĹ„
ver. 0.310 - 23.02.2026
NEW - Zakladka Logi w sekcji Integracje (podglad pp_log z paginacja, sortowaniem, filtrami) diff --git a/updates/versions.php b/updates/versions.php index 177ec24..145b27d 100644 --- a/updates/versions.php +++ b/updates/versions.php @@ -1,5 +1,5 @@