diff --git a/frontend/admin/src/stores/settings.js b/frontend/admin/src/stores/settings.js index a5afb680..a3f038f4 100644 --- a/frontend/admin/src/stores/settings.js +++ b/frontend/admin/src/stores/settings.js @@ -88,6 +88,7 @@ export const useSettingsStore = defineStore('settings', { pulse: { api_key: '', + heartbeat_enabled: false, batch_size: 50, }, diff --git a/frontend/admin/src/views/TeleCartPulseView.vue b/frontend/admin/src/views/TeleCartPulseView.vue index 22af403a..2600bd5a 100644 --- a/frontend/admin/src/views/TeleCartPulseView.vue +++ b/frontend/admin/src/views/TeleCartPulseView.vue @@ -96,6 +96,16 @@ При малом значении нагрузка ниже, но обработка занимает больше времени. Рекомендуемое значение: 50. + + + Чтобы улучшать продукт и быстрее помогать в поддержке, модуль отправляет разработчику + минимальный набор технических данных: домен магазина, имя бота и версии PHP, модуля и + OpenCart. Персональные данные покупателей и информация о заказах не + передаются. По умолчанию отправка отключена; включить или отключить её можно + в любой момент — на работу магазина это не влияет. + @@ -103,6 +113,7 @@ import {onMounted, ref} from "vue"; import {useSettingsStore} from "@/stores/settings.js"; import ItemInput from "@/components/Settings/ItemInput.vue"; +import ItemBool from "@/components/Settings/ItemBool.vue"; import {apiGet} from "@/utils/http.js"; import SettingsItem from "@/components/SettingsItem.vue"; diff --git a/module/oc_telegram_shop/upload/oc_telegram_shop/configs/app.php b/module/oc_telegram_shop/upload/oc_telegram_shop/configs/app.php index cdf5b3dd..dd32cbd9 100755 --- a/module/oc_telegram_shop/upload/oc_telegram_shop/configs/app.php +++ b/module/oc_telegram_shop/upload/oc_telegram_shop/configs/app.php @@ -85,6 +85,7 @@ HTML, 'pulse' => [ 'api_key' => '', + 'heartbeat_enabled' => false, 'batch_size' => 50, 'max_attempts' => 3, ], diff --git a/module/oc_telegram_shop/upload/oc_telegram_shop/framework/TeleCartPulse/TeleCartPulseService.php b/module/oc_telegram_shop/upload/oc_telegram_shop/framework/TeleCartPulse/TeleCartPulseService.php index c392662a..9142154b 100755 --- a/module/oc_telegram_shop/upload/oc_telegram_shop/framework/TeleCartPulse/TeleCartPulseService.php +++ b/module/oc_telegram_shop/upload/oc_telegram_shop/framework/TeleCartPulse/TeleCartPulseService.php @@ -22,6 +22,7 @@ class TeleCartPulseService private TeleCartEvent $eventModel; private ?string $apiKey; private ?PayloadSigner $heartbeatPayloadSigner; + private bool $heartbeatEnabled; public function __construct( TelegramInitDataDecoder $initDataDecoder, @@ -30,7 +31,8 @@ class TeleCartPulseService LoggerInterface $logger, TeleCartEvent $eventModel, ?string $apiKey = null, - ?PayloadSigner $heartbeatPayloadSigner = null + ?PayloadSigner $heartbeatPayloadSigner = null, + bool $heartbeatEnabled = false ) { $this->initDataDecoder = $initDataDecoder; $this->telegramService = $telegramService; @@ -39,6 +41,7 @@ class TeleCartPulseService $this->eventModel = $eventModel; $this->apiKey = $apiKey; $this->heartbeatPayloadSigner = $heartbeatPayloadSigner; + $this->heartbeatEnabled = $heartbeatEnabled; } /** @@ -132,6 +135,10 @@ class TeleCartPulseService */ public function handleHeartbeat(): void { + if (! $this->heartbeatEnabled) { + return; + } + if ($this->cache->get('telecart_pulse_heartbeat')) { return; } @@ -193,6 +200,10 @@ class TeleCartPulseService */ private function pushHeartbeat(array $json): void { + $this->logger->debug('Pushing heartbeat', [ + 'data' => $json, + ]); + $baseUri = rtrim(env('PULSE_API_HOST', 'http://localhost'), '/') . '/'; $client = new Client([ diff --git a/module/oc_telegram_shop/upload/oc_telegram_shop/framework/TeleCartPulse/TeleCartPulseServiceProvider.php b/module/oc_telegram_shop/upload/oc_telegram_shop/framework/TeleCartPulse/TeleCartPulseServiceProvider.php index 557e4983..b703ee0f 100755 --- a/module/oc_telegram_shop/upload/oc_telegram_shop/framework/TeleCartPulse/TeleCartPulseServiceProvider.php +++ b/module/oc_telegram_shop/upload/oc_telegram_shop/framework/TeleCartPulse/TeleCartPulseServiceProvider.php @@ -22,6 +22,7 @@ class TeleCartPulseServiceProvider extends ServiceProvider $this->container->singleton(TeleCartPulseService::class, function (Container $app) { $heartbeatSecret = $app->getConfigValue('pulse.heartbeat_secret') ?? env('PULSE_HEARTBEAT_SECRET'); $heartbeatSigner = $heartbeatSecret ? new PayloadSigner($heartbeatSecret) : null; + $heartbeatEnabled = (bool) $app->getConfigValue('pulse.heartbeat_enabled'); return new TeleCartPulseService( $app->get(TelegramInitDataDecoder::class), @@ -31,6 +32,7 @@ class TeleCartPulseServiceProvider extends ServiceProvider $app->get(TeleCartEvent::class), $app->getConfigValue('pulse.api_key'), $heartbeatSigner, + $heartbeatEnabled, ); });