From c0ca0c731d6091a51ee80104673e2523df0f7718 Mon Sep 17 00:00:00 2001 From: Nikita Kiselev Date: Mon, 9 Feb 2026 19:51:16 +0300 Subject: [PATCH] feat(cron): add scheduled jobs configuration in admin (#59) * feat(cron): add database schedule jobs instead of file * feat(cron): add scheduled jobs configuration in admin (#59) * reformat: fix codestyle (#59) * reformat: fix codestyle (#59) * feat: disable cron debug (#59) --- .../src/components/CronExpressionSelect.vue | 48 ++++++ .../src/components/CronJobOrgUrlField.vue | 104 +++++++++++ .../src/components/ScheduledJobsList.vue | 108 ++++++++++++ .../admin/src/components/SettingsItem.vue | 47 ++++- frontend/admin/src/stores/settings.js | 12 ++ frontend/admin/src/views/CronView.vue | 131 +++++++++----- .../controller/extension/module/tgshop.php | 1 + module/oc_telegram_shop/upload/cli.php | 9 +- .../bastion/Handlers/SettingsHandler.php | 68 +++++++- .../Services/CronApiKeyRegenerator.php | 37 ++++ .../oc_telegram_shop/bastion/routes.php | 1 + .../upload/oc_telegram_shop/configs/app.php | 1 + .../oc_telegram_shop/configs/schedule.php | 21 --- .../console/Commands/ScheduleListCommand.php | 72 -------- .../console/Commands/ScheduleRunCommand.php | 26 ++- ...1_create_telecart_scheduled_jobs_table.php | 28 +++ ...0208000002_add_telecart_scheduled_jobs.php | 21 +++ .../20260208000003_init_cron_api_key.php | 23 +++ .../framework/Application.php | 3 + .../framework/Scheduler/Job.php | 22 ++- .../Scheduler/Models/ScheduledJob.php | 93 ++++++++++ .../Scheduler/ScheduleJobRegistry.php | 19 +- .../framework/Scheduler/SchedulerService.php | 162 +++++++----------- .../Scheduler/SchedulerServiceProvider.php | 13 +- .../TelegramValidateInitDataMiddleware.php | 1 + .../src/ApplicationFactory.php | 2 + .../src/Handlers/CronHandler.php | 58 +++++++ .../upload/oc_telegram_shop/src/routes.php | 2 + .../Unit/Framework/Scheduler/JobTest.php | 28 +-- .../Scheduler/ScheduleJobRegistryTest.php | 33 ++-- .../Scheduler/SchedulerServiceTest.php | 98 ++++++----- 31 files changed, 947 insertions(+), 345 deletions(-) create mode 100644 frontend/admin/src/components/CronExpressionSelect.vue create mode 100644 frontend/admin/src/components/CronJobOrgUrlField.vue create mode 100644 frontend/admin/src/components/ScheduledJobsList.vue create mode 100644 module/oc_telegram_shop/upload/oc_telegram_shop/bastion/Services/CronApiKeyRegenerator.php delete mode 100755 module/oc_telegram_shop/upload/oc_telegram_shop/configs/schedule.php delete mode 100755 module/oc_telegram_shop/upload/oc_telegram_shop/console/Commands/ScheduleListCommand.php create mode 100755 module/oc_telegram_shop/upload/oc_telegram_shop/database/migrations/20260208000001_create_telecart_scheduled_jobs_table.php create mode 100755 module/oc_telegram_shop/upload/oc_telegram_shop/database/migrations/20260208000002_add_telecart_scheduled_jobs.php create mode 100644 module/oc_telegram_shop/upload/oc_telegram_shop/database/migrations/20260208000003_init_cron_api_key.php create mode 100644 module/oc_telegram_shop/upload/oc_telegram_shop/framework/Scheduler/Models/ScheduledJob.php create mode 100644 module/oc_telegram_shop/upload/oc_telegram_shop/src/Handlers/CronHandler.php diff --git a/frontend/admin/src/components/CronExpressionSelect.vue b/frontend/admin/src/components/CronExpressionSelect.vue new file mode 100644 index 0000000..22cbef3 --- /dev/null +++ b/frontend/admin/src/components/CronExpressionSelect.vue @@ -0,0 +1,48 @@ + + + diff --git a/frontend/admin/src/components/CronJobOrgUrlField.vue b/frontend/admin/src/components/CronJobOrgUrlField.vue new file mode 100644 index 0000000..5653c74 --- /dev/null +++ b/frontend/admin/src/components/CronJobOrgUrlField.vue @@ -0,0 +1,104 @@ + + + diff --git a/frontend/admin/src/components/ScheduledJobsList.vue b/frontend/admin/src/components/ScheduledJobsList.vue new file mode 100644 index 0000000..96d5fc6 --- /dev/null +++ b/frontend/admin/src/components/ScheduledJobsList.vue @@ -0,0 +1,108 @@ + + + diff --git a/frontend/admin/src/components/SettingsItem.vue b/frontend/admin/src/components/SettingsItem.vue index e02ad59..52625cb 100644 --- a/frontend/admin/src/components/SettingsItem.vue +++ b/frontend/admin/src/components/SettingsItem.vue @@ -1,24 +1,65 @@