{ "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": [ ] }