diff --git a/.cursor/agents.md b/.cursor/agents.md index ce5bd81..84015c6 100644 --- a/.cursor/agents.md +++ b/.cursor/agents.md @@ -61,4 +61,4 @@ - Для frontend/admin используй компоненты VuePrime 4. - Для frontend/spa используй Daisy UI. - Чтобы получить название стандартной таблицы OpenCart, используй хелпер `db_table`, либо добавляй константу DB_PREFIX перед названием таблицы. Так ты получишь название таблицы с префиксом. -- Все таблицы моего модуля TeleCart начинаются с префикса `telecart_`. Примеры миграций лежат в `module/oc_telegram_shop/upload/oc_telegram_shop/database/migrations` +- Все таблицы моего модуля MegaPay начинаются с префикса `megapay_`. Примеры миграций лежат в `module/oc_telegram_shop/upload/oc_telegram_shop/database/migrations` diff --git a/.cursor/config.json b/.cursor/config.json index c7970c6..0d48e76 100644 --- a/.cursor/config.json +++ b/.cursor/config.json @@ -6,11 +6,11 @@ "useDependencyInjection": true }, "paths": { - "telecart_module": "module/oc_telegram_shop/upload/oc_telegram_shop", + "megapay_module": "module/oc_telegram_shop/upload/oc_telegram_shop", "frontendAdmin": "frontend/admin", "telegramShopSpa": "frontend/spa", "migrations": "module/oc_telegram_shop/upload/oc_telegram_shop/database/migrations", - "telecartHandlers": "module/oc_telegram_shop/upload/oc_telegram_shop/src/Handlers", + "megapayHandlers": "module/oc_telegram_shop/upload/oc_telegram_shop/src/Handlers", "adminHandlers": "module/oc_telegram_shop/upload/oc_telegram_shop/bastion/Handlers", "models": "module/oc_telegram_shop/upload/oc_telegram_shop/src/Models", "framework": "module/oc_telegram_shop/upload/oc_telegram_shop/framework" @@ -21,7 +21,7 @@ "variables": "camelCase", "constants": "UPPER_SNAKE_CASE", "files": "PascalCase for classes, kebab-case for others", - "tables": "snake_case with telecart_ prefix" + "tables": "snake_case with megapay_ prefix" }, "php": { "version": "7.4+", @@ -37,7 +37,7 @@ "database": { "queryBuilder": true, "migrations": true, - "tablePrefix": "telecart_", + "tablePrefix": "megapay_", "noForeignKeys": true } } diff --git a/.cursor/features/telecart-pulse-heartbeat.md b/.cursor/features/telecart-pulse-heartbeat.md index 0520067..7fc316d 100644 --- a/.cursor/features/telecart-pulse-heartbeat.md +++ b/.cursor/features/telecart-pulse-heartbeat.md @@ -1,15 +1,15 @@ -## TeleCart Pulse Heartbeat Telemetry +## MegaPay Pulse Heartbeat Telemetry ### Цель -Раз в час отправлять телеметрию (heartbeat) на TeleCart Pulse, чтобы фиксировать состояние магазина и версии окружения без участия пользователя. +Раз в час отправлять телеметрию (heartbeat) на MegaPay Pulse, чтобы фиксировать состояние магазина и версии окружения без участия пользователя. ### Backend (`module/oc_telegram_shop/upload/oc_telegram_shop`) -- `framework/TeleCartPulse/TeleCartPulseService.php` +- `framework/MegaPayPulse/MegaPayPulseService.php` - Новый метод `handleHeartbeat()` собирает данные: домен (через `Utils::getCurrentDomain()`), username бота (через `TelegramService::getMe()`), версии PHP, модуля (из `composer.json`), OpenCart (`VERSION` и `VERSION_CORE`), текущий UTC timestamp. - - Последний успешный пинг кешируется (ключ `telecart_pulse_heartbeat`, TTL 1 час) через существующий `CacheInterface`. + - Последний успешный пинг кешируется (ключ `megapay_pulse_heartbeat`, TTL 1 час) через существующий `CacheInterface`. - Подпись heartbeat выполняется через отдельный `PayloadSigner`, который использует секрет `pulse.heartbeat_secret`/`PULSE_HEARTBEAT_SECRET`. Логируются предупреждения при ошибках кеша/бота/подписи. - - Отправка идет на эндпоинт `heartbeat` с таймаутом 2 секунды и заголовком `X-TELECART-VERSION`, взятым из `composer.json`. -- `framework/TeleCartPulse/TeleCartPulseServiceProvider.php` + - Отправка идет на эндпоинт `heartbeat` с таймаутом 2 секунды и заголовком `X-MEGAPAY-VERSION`, взятым из `composer.json`. +- `framework/MegaPayPulse/MegaPayPulseServiceProvider.php` - Регистрирует основной `PayloadSigner` (по `pulse.api_key`) и отдельный heartbeat signer (по `pulse.heartbeat_secret` или `PULSE_HEARTBEAT_SECRET`), инжектит `LoggerInterface`. - `src/Handlers/TelemetryHandler.php` + `src/routes.php` - Добавлен маршрут `heartbeat`, который вызывает `handleHeartbeat()` и возвращает `{ status: "ok" }`. Логгер пишет warning при проблемах. @@ -20,7 +20,7 @@ - `src/main.js`: после `pulse.ingest(...)` вызывается `pulse.heartbeat()` без блокировки цепочки. ### Конфигурация / ENV -- `PULSE_API_HOST` — базовый URL TeleCart Pulse (используется и для events, и для heartbeat). +- `PULSE_API_HOST` — базовый URL MegaPay Pulse (используется и для events, и для heartbeat). - `PULSE_TIMEOUT` — общий таймаут HTTP (для heartbeat принудительно 2 секунды). - `PULSE_HEARTBEAT_SECRET` (или `pulse.heartbeat_secret` в настройках) — общий секрет для подписания heartbeat. Обязателен, иначе heartbeat не будет отправляться. - `pulse.api_key` — прежний API ключ, используется только для event-инджеста. diff --git a/.cursor/prompts/api-generation.md b/.cursor/prompts/api-generation.md index 68b9fab..deb42eb 100644 --- a/.cursor/prompts/api-generation.md +++ b/.cursor/prompts/api-generation.md @@ -28,7 +28,7 @@ 5. Миграция (если нужна новая таблица): - Создай миграцию в database/migrations/ - - Используй фиксированный префикс telecart_ + - Используй фиксированный префикс megapay_ - Добавь индексы где необходимо Следуй архитектуре MVC-L проекта и используй существующие паттерны. @@ -115,7 +115,7 @@ Создай миграцию для таблицы [TABLE_NAME]: 1. Файл: database/migrations/[TIMESTAMP]_[DESCRIPTION].php -2. Используй фиксированный префикс telecart_ для таблицы +2. Используй фиксированный префикс megapay_ для таблицы 3. Добавь все необходимые поля с правильными типами 4. Добавь индексы для часто используемых полей 5. Используй utf8mb4_unicode_ci collation diff --git a/.cursor/rules/architecture.md b/.cursor/rules/architecture.md index 9464a3e..cfce04d 100644 --- a/.cursor/rules/architecture.md +++ b/.cursor/rules/architecture.md @@ -165,7 +165,7 @@ $result = $this->database->query("SELECT * FROM table_name WHERE status = 'activ - **Variables**: camelCase (`$customerData`) - **Constants**: UPPER_SNAKE_CASE (`MAX_RETRIES`) - **Files**: PascalCase для классов, kebab-case для остального -- **Tables**: snake_case с префиксом `telecart_` +- **Tables**: snake_case с префиксом `megapay_` ### Error Handling diff --git a/.cursor/rules/php.md b/.cursor/rules/php.md index 7d8b3e1..6405bda 100644 --- a/.cursor/rules/php.md +++ b/.cursor/rules/php.md @@ -188,13 +188,13 @@ try { // ✅ Правильно $customers = $this->builder->newQuery() ->select(['id', 'name', 'email']) - ->from('telecart_customers') + ->from('megapay_customers') ->where('status', '=', 'active') ->orderBy('created_at', 'DESC') ->get(); // В крайних случаях можно использовать прямые SQL -$result = $this->database->query("SELECT * FROM telecart_customers"); +$result = $this->database->query("SELECT * FROM megapay_customers"); ``` ### Parameter Binding diff --git a/CHANGELOG.md b/CHANGELOG.md index 914cbd5..cbd84b8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,539 +4,539 @@ All notable changes to this project will be documented in this file. -## [2.2.1](https://github.com/telecart-labs/telecart/compare/v2.2.0...v2.2.1) (2026-02-22) +## [2.2.1](https://github.com/megapay-labs/megapay/compare/v2.2.0...v2.2.1) (2026-02-22) --- -## [2.2.0](https://github.com/telecart-labs/telecart/compare/v2.1.0...v2.2.0) (2026-01-09) +## [2.2.0](https://github.com/megapay-labs/megapay/compare/v2.1.0...v2.2.0) (2026-01-09) ### Features -* Add BETA label and UI improvements for TeleCart Pulse tab ([551c4a](https://github.com/telecart-labs/telecart/commit/551c4a3506ddedb1b11851e3d3cbcb4f3ed34e03)) -* Add cache:clear CLI command for module cache clearing (#46) ([3d0a75](https://github.com/telecart-labs/telecart/commit/3d0a7536a64bc88dbb349a9640260757b46009c4)) -* Add changelog ([bf99bf](https://github.com/telecart-labs/telecart/commit/bf99bfe8a442c8eaad64f348792b7ddcbfb4486c)) -* Add config redis cache, categories cache (#44) ([0798f5](https://github.com/telecart-labs/telecart/commit/0798f5c3e98721efbb45e2988350364b606622cd)) -* Add customer account page with profile information and actions ([ad94af](https://github.com/telecart-labs/telecart/commit/ad94afda6826dd1d120599353121bad000b675a7)) -* Add customizable text for manager contact button ([0a7877](https://github.com/telecart-labs/telecart/commit/0a7877ddbe7908d6a17089e1005308a945d3d21f)) -* Add haptic feedback toggle setting ([afade8](https://github.com/telecart-labs/telecart/commit/afade85d004872d10929119db3ac95ee3acd0251)) -* Add product interaction mode selector with three scenarios ([ecf4df](https://github.com/telecart-labs/telecart/commit/ecf4df363d49bf0d8bdc1b9ca3a241f99f26cfb8)) -* Add store_id conditions (#43) ([846418](https://github.com/telecart-labs/telecart/commit/84641868e98786264f517865d48619ac4bc1ef7a)) -* Add system information drawer (#44) ([9da605](https://github.com/telecart-labs/telecart/commit/9da605b9eac82045b46c3edbb998d28a63c22188)) -* Increase dock icons size and add click animation ([ce2ea9](https://github.com/telecart-labs/telecart/commit/ce2ea9dea1fcd24d70ea66345d761a739d25f9d1)) +* Add BETA label and UI improvements for MegaPay Pulse tab ([551c4a](https://github.com/megapay-labs/megapay/commit/551c4a3506ddedb1b11851e3d3cbcb4f3ed34e03)) +* Add cache:clear CLI command for module cache clearing (#46) ([3d0a75](https://github.com/megapay-labs/megapay/commit/3d0a7536a64bc88dbb349a9640260757b46009c4)) +* Add changelog ([bf99bf](https://github.com/megapay-labs/megapay/commit/bf99bfe8a442c8eaad64f348792b7ddcbfb4486c)) +* Add config redis cache, categories cache (#44) ([0798f5](https://github.com/megapay-labs/megapay/commit/0798f5c3e98721efbb45e2988350364b606622cd)) +* Add customer account page with profile information and actions ([ad94af](https://github.com/megapay-labs/megapay/commit/ad94afda6826dd1d120599353121bad000b675a7)) +* Add customizable text for manager contact button ([0a7877](https://github.com/megapay-labs/megapay/commit/0a7877ddbe7908d6a17089e1005308a945d3d21f)) +* Add haptic feedback toggle setting ([afade8](https://github.com/megapay-labs/megapay/commit/afade85d004872d10929119db3ac95ee3acd0251)) +* Add product interaction mode selector with three scenarios ([ecf4df](https://github.com/megapay-labs/megapay/commit/ecf4df363d49bf0d8bdc1b9ca3a241f99f26cfb8)) +* Add store_id conditions (#43) ([846418](https://github.com/megapay-labs/megapay/commit/84641868e98786264f517865d48619ac4bc1ef7a)) +* Add system information drawer (#44) ([9da605](https://github.com/megapay-labs/megapay/commit/9da605b9eac82045b46c3edbb998d28a63c22188)) +* Increase dock icons size and add click animation ([ce2ea9](https://github.com/megapay-labs/megapay/commit/ce2ea9dea1fcd24d70ea66345d761a739d25f9d1)) ##### Admin -* Improve navigation UI and move logs to drawer ([6a635e](https://github.com/telecart-labs/telecart/commit/6a635e189614c50c8d4bdbeb2486eb5b32ba7da0)) +* Improve navigation UI and move logs to drawer ([6a635e](https://github.com/megapay-labs/megapay/commit/6a635e189614c50c8d4bdbeb2486eb5b32ba7da0)) ##### Search -* Improvement search cache (#44) ([8a9bac](https://github.com/telecart-labs/telecart/commit/8a9bac8221146b5db4960cc10de3e29dcd75c9bf)) +* Improvement search cache (#44) ([8a9bac](https://github.com/megapay-labs/megapay/commit/8a9bac8221146b5db4960cc10de3e29dcd75c9bf)) ##### Spa -* Add UTM markers for product view on OpenCart (#47) ([647e20](https://github.com/telecart-labs/telecart/commit/647e20c6b093f3de5e6aafcad474cf1a99189d2e)) +* Add UTM markers for product view on OpenCart (#47) ([647e20](https://github.com/megapay-labs/megapay/commit/647e20c6b093f3de5e6aafcad474cf1a99189d2e)) ### Bug Fixes -* Correct external .env loading ([089b68](https://github.com/telecart-labs/telecart/commit/089b68672262286f4568a6a40627a0c2e0c51b14)) -* Correctly work with telecart customers without usernames ([0312b8](https://github.com/telecart-labs/telecart/commit/0312b882e1ad5596e823943924d1b284d5592b14)) -* Missing store_id for carousel products ([3a1f8d](https://github.com/telecart-labs/telecart/commit/3a1f8dbf948c65c6f2d94392c277317f1ce5da75)) +* Correct external .env loading ([089b68](https://github.com/megapay-labs/megapay/commit/089b68672262286f4568a6a40627a0c2e0c51b14)) +* Correctly work with megapay customers without usernames ([0312b8](https://github.com/megapay-labs/megapay/commit/0312b882e1ad5596e823943924d1b284d5592b14)) +* Missing store_id for carousel products ([3a1f8d](https://github.com/megapay-labs/megapay/commit/3a1f8dbf948c65c6f2d94392c277317f1ce5da75)) ##### Admin -* Correct logs sorting by datetime with milliseconds ([115c13](https://github.com/telecart-labs/telecart/commit/115c13393f045a8f2eb7992be11ce20e94b23b96)) +* Correct logs sorting by datetime with milliseconds ([115c13](https://github.com/megapay-labs/megapay/commit/115c13393f045a8f2eb7992be11ce20e94b23b96)) ##### Spa -* Correct line breaks for long attribute names and values in Product.vue ([ff7263](https://github.com/telecart-labs/telecart/commit/ff7263649c208449f0b0b65df3e6088115ec78f6)) -* Correct privacy policy message margin ([79f234](https://github.com/telecart-labs/telecart/commit/79f23400d20ba3cb43160cf898ea589f30c7aa83)) +* Correct line breaks for long attribute names and values in Product.vue ([ff7263](https://github.com/megapay-labs/megapay/commit/ff7263649c208449f0b0b65df3e6088115ec78f6)) +* Correct privacy policy message margin ([79f234](https://github.com/megapay-labs/megapay/commit/79f23400d20ba3cb43160cf898ea589f30c7aa83)) --- -## [2.1.0](https://github.com/telecart-labs/telecart/compare/v2.0.0...v2.1.0) (2025-12-24) +## [2.1.0](https://github.com/megapay-labs/megapay/compare/v2.0.0...v2.1.0) (2025-12-24) ### Features -* Add setting to control category products button visibility ([c3994b](https://github.com/telecart-labs/telecart/commit/c3994b2291790f21cd219d1c5e820c274cb6e085)) +* Add setting to control category products button visibility ([c3994b](https://github.com/megapay-labs/megapay/commit/c3994b2291790f21cd219d1c5e820c274cb6e085)) --- -## [2.0.0](https://github.com/telecart-labs/telecart/compare/v1.3.2...v2.0.0) (2025-12-23) +## [2.0.0](https://github.com/megapay-labs/megapay/compare/v1.3.2...v2.0.0) (2025-12-23) ### ⚠ BREAKING CHANGES -* None ([9a93cc](https://github.com/telecart-labs/telecart/commit/9a93cc73421c9c85e3cfbe403cd2c8fb41ba3406)) +* None ([9a93cc](https://github.com/megapay-labs/megapay/commit/9a93cc73421c9c85e3cfbe403cd2c8fb41ba3406)) ### Features -* Add aspect ratio selector for products_carousel ([615e8c](https://github.com/telecart-labs/telecart/commit/615e8c54a60d076a65bc04e60d26c5cbb21c264f)) -* Add cron service to run telecart schedule tasks ([16a258](https://github.com/telecart-labs/telecart/commit/16a258ab682947f9856459797bc99b0adbf0d335)) -* Add debug mode for developers. Logs improvements ([fbccd5](https://github.com/telecart-labs/telecart/commit/fbccd506752e8cdada461e92a85b7603335a8f23)) -* Add default configs ([2bc751](https://github.com/telecart-labs/telecart/commit/2bc751119cb5c55c7d29a90d28a24f015ba76692)) -* Added new products_carousel bock type ([f0837e](https://github.com/telecart-labs/telecart/commit/f0837e5c94ef3327f0d249e1994dc73a6da1c42b)) -* Add FormKit framework support and update dependencies ([6a59dc](https://github.com/telecart-labs/telecart/commit/6a59dcc0c9b4f8e6ee003c7e168b632d8199981e)) -* Add hide keyboard button on search page ([17ff88](https://github.com/telecart-labs/telecart/commit/17ff888c053983a7ae334ba695338ccd8b2db3ab)) -* Add html editor for telegram messages ([97df5b](https://github.com/telecart-labs/telecart/commit/97df5b4c0aa1d5fbf19c2132436045af0846b5f1)) -* Add italy dump ([13f63e](https://github.com/telecart-labs/telecart/commit/13f63e09fcc3c33cb4de2e809a981a0bf532bb63)) -* Add migrations, mantenance tasks, database cache, blocks cache ([c0a6cb](https://github.com/telecart-labs/telecart/commit/c0a6cb17b3fa5a75185ad2e42e8979b1c848c285)) -* Add old browser checks ([76c32c](https://github.com/telecart-labs/telecart/commit/76c32c53200f33a5de8fee3587b6aa597ce6d04a)) -* Add options to select aspect ratio and cron algo for product images ([e9c6ed](https://github.com/telecart-labs/telecart/commit/e9c6ed8ddf801d3cfbb91c08733ab118fec3de21)) -* Add reactivity to formkit ([fdcfce](https://github.com/telecart-labs/telecart/commit/fdcfce0a79af94f5f7ff05e19b4edec0fad4d452)) -* Add redis cache driver ([2b0f04](https://github.com/telecart-labs/telecart/commit/2b0f04eb9455e2f1abb5b9374f3348072ffd1d6a)) -* Add scheduler module ([65973d](https://github.com/telecart-labs/telecart/commit/65973d2d79a8c6bfbfc367b56a2b83e465fa2e32)) -* Add TeleCart Pulse heartbeat telemetry ([b60c77](https://github.com/telecart-labs/telecart/commit/b60c77e4539aab9d2cdb1e9916b7e60c9848d686)) -* Add TeleCartPulse telemetry system and ETL endpoints ([e8d0f8](https://github.com/telecart-labs/telecart/commit/e8d0f8a8190c2877ac5aa1e0cc7a5a1663598fe5)) -* Add Telegram customers management system with admin panel ([9a93cc](https://github.com/telecart-labs/telecart/commit/9a93cc73421c9c85e3cfbe403cd2c8fb41ba3406)) -* Add texts configuration ([34dfe9](https://github.com/telecart-labs/telecart/commit/34dfe9028693ad488d40f2015af482d789f012c6)) -* Add UI for CRON Scheduler ([7372b9](https://github.com/telecart-labs/telecart/commit/7372b9c330ba4ba83458ca8d722cc71f57316180)) -* Add warmup images command ([ecd372](https://github.com/telecart-labs/telecart/commit/ecd372dad30e05c5913fa489e561475584b89079)) -* Better algorythm for image resize ([13e5bc](https://github.com/telecart-labs/telecart/commit/13e5bce8a548439da3dcd892b0c5600ffc995be6)) -* Button to show all products from category ([b2d29f](https://github.com/telecart-labs/telecart/commit/b2d29fd3e288991f77ba6c0bee4bc7c5092b6594)) -* Change image crop algorythm for product view page ([262f52](https://github.com/telecart-labs/telecart/commit/262f52929063802404af6f0592741ca836c91bcd)) -* Clear cache after settings update ([6f9855](https://github.com/telecart-labs/telecart/commit/6f9855995dd3603b622a9e601162ac0b6da9a694)) -* Correct stats for telecart dashboard ([05af49](https://github.com/telecart-labs/telecart/commit/05af4949bfcf2a42ece30f1d77816a3c3018eae2)) -* Design update, show avatar in navbar ([6ac6a4](https://github.com/telecart-labs/telecart/commit/6ac6a42e2105bb6f234c108e3a5d21096b87660f)) -* Disable source maps for frontend production builds ([770ec8](https://github.com/telecart-labs/telecart/commit/770ec81fdcd1456ad7787c9d1e31d92383849f8f)) -* Dont migrate tg messages from v1 ([b87797](https://github.com/telecart-labs/telecart/commit/b87797ee6728523d8e17eeab13b85b014c157d95)) -* Expose module version ([f1a39e](https://github.com/telecart-labs/telecart/commit/f1a39eeb0023d9fdf99cfd95b21288d950730b23)) -* Fixed width and preloader for product view page ([5d775e](https://github.com/telecart-labs/telecart/commit/5d775e8eb6710cc1ca3501be1fdfc957582e8663)) -* Fix opecart module status, remove .vite ([e72948](https://github.com/telecart-labs/telecart/commit/e729484fd7a698fcadacdfc99a30beb9d4acbb09)) -* Hide greeting image from frontend ([2ec683](https://github.com/telecart-labs/telecart/commit/2ec683f0163804e7562de14d098b8a0c0f0f28da)) -* Image processing improve ([38668f](https://github.com/telecart-labs/telecart/commit/38668fb4a7f2a3f94a85e06e20ecdff98f5d160d)) -* Images and products loading optimization ([bf6744](https://github.com/telecart-labs/telecart/commit/bf674473e97111aa7a2acad9c835fcea37c3b2ec)) -* Improve mainpage ui/ux ([f5d9d4](https://github.com/telecart-labs/telecart/commit/f5d9d417b3b86c7b710da5751a1d50af10a42b6e)) -* Increase default per_page products ([6ed2fd](https://github.com/telecart-labs/telecart/commit/6ed2fd2062295bc4296d9ef5c4852541e0e4138f)) -* Integrate yandex metrika ecommerce ([2f74ab](https://github.com/telecart-labs/telecart/commit/2f74aba35f548d632beed65d81693483942289d5)) -* Maintenance tasks, logs ([ae9771](https://github.com/telecart-labs/telecart/commit/ae9771dec436bd3ff619b26c9c6ce811b1e876dd)) -* More fluent vuejs app error handler ([955747](https://github.com/telecart-labs/telecart/commit/955747334d7a7f4863e145f52bcc2864beb8818e)) -* Move getImage response to admin ([f539bb](https://github.com/telecart-labs/telecart/commit/f539bbfbbf023995f88b684406ac5eb8f16fff66)) -* New settings and mainpage blocks ([6176c7](https://github.com/telecart-labs/telecart/commit/6176c720b1f4c0ce9f06a3cc4ff50b72a52ab0fb)) -* Provide current opencart timezone to App ([51f462](https://github.com/telecart-labs/telecart/commit/51f462922ec49c8cc5e1b0c7909a69180cbe8e72)) -* Remove unused js libs ([08f0e2](https://github.com/telecart-labs/telecart/commit/08f0e24859c4e201e85075f2186ed741e3180b38)) -* Send xdebug trigger from frontend ([2743b8](https://github.com/telecart-labs/telecart/commit/2743b83a2c624191d2b65a1b13f5b3645e69b71a)) -* Separated coupon and voucher errors ([dd12cb](https://github.com/telecart-labs/telecart/commit/dd12cb8c3434cd3d6f3b8eed4e469db8cd02e3f5)) -* Set environment variables ([3716e8](https://github.com/telecart-labs/telecart/commit/3716e89811f2a4135d644cb5a6bae0bb57c367ee)) -* Show module version in admin ([116821](https://github.com/telecart-labs/telecart/commit/116821a20946bf3f341e1589af2b24ace1e904da)) -* Store customer_id in with order ([8260d2](https://github.com/telecart-labs/telecart/commit/8260d2bc96bfb256e73673e13740b242756eede2)) -* Tg bot start message customization ([152e6d](https://github.com/telecart-labs/telecart/commit/152e6d715bfff1cfd05bdab72c4d4b54f7878e4a)) -* Track and push TeleCart Pulse events ([ef7856](https://github.com/telecart-labs/telecart/commit/ef785654b969e7abc955ed452d8367d6cf3aa55e)) -* UI/UX, add reset cache to admin ([09f1e5](https://github.com/telecart-labs/telecart/commit/09f1e514a975fea5c4fcd3b8cc587f906ab30bd3)) -* Update admin page ([cd818d](https://github.com/telecart-labs/telecart/commit/cd818d3356d5738a9fb534e056d2e1055b2016ce)) -* Update design for product and product cards ([8a777c](https://github.com/telecart-labs/telecart/commit/8a777cd4d280b7049b60fdd0d3fa0586561e0a65)) -* Update product page design ([c64170](https://github.com/telecart-labs/telecart/commit/c64170f2d8058d99ae60323d907579b59566c119)) -* Update readme ([5fb450](https://github.com/telecart-labs/telecart/commit/5fb45000ac77de0019a256150089256d5c423d68), [540595](https://github.com/telecart-labs/telecart/commit/540595c9f0661a2ca4c16d8876be54f9258bc0a3), [1361fe](https://github.com/telecart-labs/telecart/commit/1361fea993bcc37b0495b8fff7c20a45ccbd8ca2)) -* Update styles for swipe to back ([e6a9e6](https://github.com/telecart-labs/telecart/commit/e6a9e6797f518d27caba507ac79d07ac8c113b06)) -* Use yaMetrika number in settings ([cedc49](https://github.com/telecart-labs/telecart/commit/cedc49f0d5c3107791c1e6ff87a2f024a8baf828)) -* Visualize swipe back ([50bdb8](https://github.com/telecart-labs/telecart/commit/50bdb8601c04799a4ecdb1b854ee1151a02f00f1)) -* WIP add yandex metrika goals ([4e59c4](https://github.com/telecart-labs/telecart/commit/4e59c4e7888925a87ce63eb53587d5e21fec4561)) -* добавлена функциональность политики конфиденциальности и согласия на обработку ПД ([7a5eeb](https://github.com/telecart-labs/telecart/commit/7a5eebec91ee73a2d38509cfa4f9bbb87cb75225)) -* добавлен жест swipe back для навигации назад ([179729](https://github.com/telecart-labs/telecart/commit/17972993ca815072ad5ded2bbc7a29e97f1abc6f)) +* Add aspect ratio selector for products_carousel ([615e8c](https://github.com/megapay-labs/megapay/commit/615e8c54a60d076a65bc04e60d26c5cbb21c264f)) +* Add cron service to run megapay schedule tasks ([16a258](https://github.com/megapay-labs/megapay/commit/16a258ab682947f9856459797bc99b0adbf0d335)) +* Add debug mode for developers. Logs improvements ([fbccd5](https://github.com/megapay-labs/megapay/commit/fbccd506752e8cdada461e92a85b7603335a8f23)) +* Add default configs ([2bc751](https://github.com/megapay-labs/megapay/commit/2bc751119cb5c55c7d29a90d28a24f015ba76692)) +* Added new products_carousel bock type ([f0837e](https://github.com/megapay-labs/megapay/commit/f0837e5c94ef3327f0d249e1994dc73a6da1c42b)) +* Add FormKit framework support and update dependencies ([6a59dc](https://github.com/megapay-labs/megapay/commit/6a59dcc0c9b4f8e6ee003c7e168b632d8199981e)) +* Add hide keyboard button on search page ([17ff88](https://github.com/megapay-labs/megapay/commit/17ff888c053983a7ae334ba695338ccd8b2db3ab)) +* Add html editor for telegram messages ([97df5b](https://github.com/megapay-labs/megapay/commit/97df5b4c0aa1d5fbf19c2132436045af0846b5f1)) +* Add italy dump ([13f63e](https://github.com/megapay-labs/megapay/commit/13f63e09fcc3c33cb4de2e809a981a0bf532bb63)) +* Add migrations, mantenance tasks, database cache, blocks cache ([c0a6cb](https://github.com/megapay-labs/megapay/commit/c0a6cb17b3fa5a75185ad2e42e8979b1c848c285)) +* Add old browser checks ([76c32c](https://github.com/megapay-labs/megapay/commit/76c32c53200f33a5de8fee3587b6aa597ce6d04a)) +* Add options to select aspect ratio and cron algo for product images ([e9c6ed](https://github.com/megapay-labs/megapay/commit/e9c6ed8ddf801d3cfbb91c08733ab118fec3de21)) +* Add reactivity to formkit ([fdcfce](https://github.com/megapay-labs/megapay/commit/fdcfce0a79af94f5f7ff05e19b4edec0fad4d452)) +* Add redis cache driver ([2b0f04](https://github.com/megapay-labs/megapay/commit/2b0f04eb9455e2f1abb5b9374f3348072ffd1d6a)) +* Add scheduler module ([65973d](https://github.com/megapay-labs/megapay/commit/65973d2d79a8c6bfbfc367b56a2b83e465fa2e32)) +* Add MegaPay Pulse heartbeat telemetry ([b60c77](https://github.com/megapay-labs/megapay/commit/b60c77e4539aab9d2cdb1e9916b7e60c9848d686)) +* Add MegaPayPulse telemetry system and ETL endpoints ([e8d0f8](https://github.com/megapay-labs/megapay/commit/e8d0f8a8190c2877ac5aa1e0cc7a5a1663598fe5)) +* Add Telegram customers management system with admin panel ([9a93cc](https://github.com/megapay-labs/megapay/commit/9a93cc73421c9c85e3cfbe403cd2c8fb41ba3406)) +* Add texts configuration ([34dfe9](https://github.com/megapay-labs/megapay/commit/34dfe9028693ad488d40f2015af482d789f012c6)) +* Add UI for CRON Scheduler ([7372b9](https://github.com/megapay-labs/megapay/commit/7372b9c330ba4ba83458ca8d722cc71f57316180)) +* Add warmup images command ([ecd372](https://github.com/megapay-labs/megapay/commit/ecd372dad30e05c5913fa489e561475584b89079)) +* Better algorythm for image resize ([13e5bc](https://github.com/megapay-labs/megapay/commit/13e5bce8a548439da3dcd892b0c5600ffc995be6)) +* Button to show all products from category ([b2d29f](https://github.com/megapay-labs/megapay/commit/b2d29fd3e288991f77ba6c0bee4bc7c5092b6594)) +* Change image crop algorythm for product view page ([262f52](https://github.com/megapay-labs/megapay/commit/262f52929063802404af6f0592741ca836c91bcd)) +* Clear cache after settings update ([6f9855](https://github.com/megapay-labs/megapay/commit/6f9855995dd3603b622a9e601162ac0b6da9a694)) +* Correct stats for megapay dashboard ([05af49](https://github.com/megapay-labs/megapay/commit/05af4949bfcf2a42ece30f1d77816a3c3018eae2)) +* Design update, show avatar in navbar ([6ac6a4](https://github.com/megapay-labs/megapay/commit/6ac6a42e2105bb6f234c108e3a5d21096b87660f)) +* Disable source maps for frontend production builds ([770ec8](https://github.com/megapay-labs/megapay/commit/770ec81fdcd1456ad7787c9d1e31d92383849f8f)) +* Dont migrate tg messages from v1 ([b87797](https://github.com/megapay-labs/megapay/commit/b87797ee6728523d8e17eeab13b85b014c157d95)) +* Expose module version ([f1a39e](https://github.com/megapay-labs/megapay/commit/f1a39eeb0023d9fdf99cfd95b21288d950730b23)) +* Fixed width and preloader for product view page ([5d775e](https://github.com/megapay-labs/megapay/commit/5d775e8eb6710cc1ca3501be1fdfc957582e8663)) +* Fix opecart module status, remove .vite ([e72948](https://github.com/megapay-labs/megapay/commit/e729484fd7a698fcadacdfc99a30beb9d4acbb09)) +* Hide greeting image from frontend ([2ec683](https://github.com/megapay-labs/megapay/commit/2ec683f0163804e7562de14d098b8a0c0f0f28da)) +* Image processing improve ([38668f](https://github.com/megapay-labs/megapay/commit/38668fb4a7f2a3f94a85e06e20ecdff98f5d160d)) +* Images and products loading optimization ([bf6744](https://github.com/megapay-labs/megapay/commit/bf674473e97111aa7a2acad9c835fcea37c3b2ec)) +* Improve mainpage ui/ux ([f5d9d4](https://github.com/megapay-labs/megapay/commit/f5d9d417b3b86c7b710da5751a1d50af10a42b6e)) +* Increase default per_page products ([6ed2fd](https://github.com/megapay-labs/megapay/commit/6ed2fd2062295bc4296d9ef5c4852541e0e4138f)) +* Integrate yandex metrika ecommerce ([2f74ab](https://github.com/megapay-labs/megapay/commit/2f74aba35f548d632beed65d81693483942289d5)) +* Maintenance tasks, logs ([ae9771](https://github.com/megapay-labs/megapay/commit/ae9771dec436bd3ff619b26c9c6ce811b1e876dd)) +* More fluent vuejs app error handler ([955747](https://github.com/megapay-labs/megapay/commit/955747334d7a7f4863e145f52bcc2864beb8818e)) +* Move getImage response to admin ([f539bb](https://github.com/megapay-labs/megapay/commit/f539bbfbbf023995f88b684406ac5eb8f16fff66)) +* New settings and mainpage blocks ([6176c7](https://github.com/megapay-labs/megapay/commit/6176c720b1f4c0ce9f06a3cc4ff50b72a52ab0fb)) +* Provide current opencart timezone to App ([51f462](https://github.com/megapay-labs/megapay/commit/51f462922ec49c8cc5e1b0c7909a69180cbe8e72)) +* Remove unused js libs ([08f0e2](https://github.com/megapay-labs/megapay/commit/08f0e24859c4e201e85075f2186ed741e3180b38)) +* Send xdebug trigger from frontend ([2743b8](https://github.com/megapay-labs/megapay/commit/2743b83a2c624191d2b65a1b13f5b3645e69b71a)) +* Separated coupon and voucher errors ([dd12cb](https://github.com/megapay-labs/megapay/commit/dd12cb8c3434cd3d6f3b8eed4e469db8cd02e3f5)) +* Set environment variables ([3716e8](https://github.com/megapay-labs/megapay/commit/3716e89811f2a4135d644cb5a6bae0bb57c367ee)) +* Show module version in admin ([116821](https://github.com/megapay-labs/megapay/commit/116821a20946bf3f341e1589af2b24ace1e904da)) +* Store customer_id in with order ([8260d2](https://github.com/megapay-labs/megapay/commit/8260d2bc96bfb256e73673e13740b242756eede2)) +* Tg bot start message customization ([152e6d](https://github.com/megapay-labs/megapay/commit/152e6d715bfff1cfd05bdab72c4d4b54f7878e4a)) +* Track and push MegaPay Pulse events ([ef7856](https://github.com/megapay-labs/megapay/commit/ef785654b969e7abc955ed452d8367d6cf3aa55e)) +* UI/UX, add reset cache to admin ([09f1e5](https://github.com/megapay-labs/megapay/commit/09f1e514a975fea5c4fcd3b8cc587f906ab30bd3)) +* Update admin page ([cd818d](https://github.com/megapay-labs/megapay/commit/cd818d3356d5738a9fb534e056d2e1055b2016ce)) +* Update design for product and product cards ([8a777c](https://github.com/megapay-labs/megapay/commit/8a777cd4d280b7049b60fdd0d3fa0586561e0a65)) +* Update product page design ([c64170](https://github.com/megapay-labs/megapay/commit/c64170f2d8058d99ae60323d907579b59566c119)) +* Update readme ([5fb450](https://github.com/megapay-labs/megapay/commit/5fb45000ac77de0019a256150089256d5c423d68), [540595](https://github.com/megapay-labs/megapay/commit/540595c9f0661a2ca4c16d8876be54f9258bc0a3), [1361fe](https://github.com/megapay-labs/megapay/commit/1361fea993bcc37b0495b8fff7c20a45ccbd8ca2)) +* Update styles for swipe to back ([e6a9e6](https://github.com/megapay-labs/megapay/commit/e6a9e6797f518d27caba507ac79d07ac8c113b06)) +* Use yaMetrika number in settings ([cedc49](https://github.com/megapay-labs/megapay/commit/cedc49f0d5c3107791c1e6ff87a2f024a8baf828)) +* Visualize swipe back ([50bdb8](https://github.com/megapay-labs/megapay/commit/50bdb8601c04799a4ecdb1b854ee1151a02f00f1)) +* WIP add yandex metrika goals ([4e59c4](https://github.com/megapay-labs/megapay/commit/4e59c4e7888925a87ce63eb53587d5e21fec4561)) +* добавлена функциональность политики конфиденциальности и согласия на обработку ПД ([7a5eeb](https://github.com/megapay-labs/megapay/commit/7a5eebec91ee73a2d38509cfa4f9bbb87cb75225)) +* добавлен жест swipe back для навигации назад ([179729](https://github.com/megapay-labs/megapay/commit/17972993ca815072ad5ded2bbc7a29e97f1abc6f)) ##### Admin -* Add more details for admin errors ([17865d](https://github.com/telecart-labs/telecart/commit/17865d8af4ed4b7f1f02a5b065847281fa5ede5f)) -* Refactor logs viewer with table display and detailed dialog ([b39a34](https://github.com/telecart-labs/telecart/commit/b39a344a7dac32225d6fe939ea81fcc67f4b5750)) -* Remove legacy setting keys that not defined in defaults ([107741](https://github.com/telecart-labs/telecart/commit/1077417d717cbd601bdff82ab3dfbb61402c3640)) +* Add more details for admin errors ([17865d](https://github.com/megapay-labs/megapay/commit/17865d8af4ed4b7f1f02a5b065847281fa5ede5f)) +* Refactor logs viewer with table display and detailed dialog ([b39a34](https://github.com/megapay-labs/megapay/commit/b39a344a7dac32225d6fe939ea81fcc67f4b5750)) +* Remove legacy setting keys that not defined in defaults ([107741](https://github.com/megapay-labs/megapay/commit/1077417d717cbd601bdff82ab3dfbb61402c3640)) ##### Banner -* Add banner feature ([05e7ca](https://github.com/telecart-labs/telecart/commit/05e7cafd0f36b204e0dea51a0f46f1a2c795dceb)) +* Add banner feature ([05e7ca](https://github.com/megapay-labs/megapay/commit/05e7cafd0f36b204e0dea51a0f46f1a2c795dceb)) ##### Customers -* Track order meta and OC sync ([952d8e](https://github.com/telecart-labs/telecart/commit/952d8e58da2972ff834d7f6609749b6dbd15a938)) +* Track order meta and OC sync ([952d8e](https://github.com/megapay-labs/megapay/commit/952d8e58da2972ff834d7f6609749b6dbd15a938)) ##### Products-feed -* Replace fixed image dimensions with aspect ratio selection ([cd0606](https://github.com/telecart-labs/telecart/commit/cd060610fe991c7c6d0db81a24bfa2b062192d20)) +* Replace fixed image dimensions with aspect ratio selection ([cd0606](https://github.com/megapay-labs/megapay/commit/cd060610fe991c7c6d0db81a24bfa2b062192d20)) ##### Pulse -* Implement reliable event tracking and delivery system ([4a3dcc](https://github.com/telecart-labs/telecart/commit/4a3dcc11d161420c58494d744909f48982bd2582)) +* Implement reliable event tracking and delivery system ([4a3dcc](https://github.com/megapay-labs/megapay/commit/4a3dcc11d161420c58494d744909f48982bd2582)) ##### Search -* Add keyboard hide button and auto-hide Dock ([db8d13](https://github.com/telecart-labs/telecart/commit/db8d1360fc9d8702fa7f2607337ac447ea646c5d)) -* Improve search UI with sticky bar and keyboard handling ([64ead2](https://github.com/telecart-labs/telecart/commit/64ead29583086dc55ae59e5d2b775dae31f36944)) +* Add keyboard hide button and auto-hide Dock ([db8d13](https://github.com/megapay-labs/megapay/commit/db8d1360fc9d8702fa7f2607337ac447ea646c5d)) +* Improve search UI with sticky bar and keyboard handling ([64ead2](https://github.com/megapay-labs/megapay/commit/64ead29583086dc55ae59e5d2b775dae31f36944)) ##### Slider -* Add slider feature ([3049bd](https://github.com/telecart-labs/telecart/commit/3049bd3101a44259f2883b351244c6eb5564cf89)) +* Add slider feature ([3049bd](https://github.com/megapay-labs/megapay/commit/3049bd3101a44259f2883b351244c6eb5564cf89)) ##### Spa -* Add custom dock ([4936e6](https://github.com/telecart-labs/telecart/commit/4936e6f16c0cd44299d086911a347cd3626fa2af)) -* Add dock ([2e699e](https://github.com/telecart-labs/telecart/commit/2e699eb0d6aca08d3f87030ea822c1fc79d3d477)) -* Correct radius for floating panel, small ui fixes ([72ab84](https://github.com/telecart-labs/telecart/commit/72ab842a95f090b886787f551bee274fc2f6932c)) -* Show navbar with app logo and app name ([c3c0d6](https://github.com/telecart-labs/telecart/commit/c3c0d6d2c179c83a1700d773c496ff7a44cce99c)) -* UI changes ([ed8592](https://github.com/telecart-labs/telecart/commit/ed8592c19dabf4f26d6ed45e55a3c6f7398d667e)) +* Add custom dock ([4936e6](https://github.com/megapay-labs/megapay/commit/4936e6f16c0cd44299d086911a347cd3626fa2af)) +* Add dock ([2e699e](https://github.com/megapay-labs/megapay/commit/2e699eb0d6aca08d3f87030ea822c1fc79d3d477)) +* Correct radius for floating panel, small ui fixes ([72ab84](https://github.com/megapay-labs/megapay/commit/72ab842a95f090b886787f551bee274fc2f6932c)) +* Show navbar with app logo and app name ([c3c0d6](https://github.com/megapay-labs/megapay/commit/c3c0d6d2c179c83a1700d773c496ff7a44cce99c)) +* UI changes ([ed8592](https://github.com/megapay-labs/megapay/commit/ed8592c19dabf4f26d6ed45e55a3c6f7398d667e)) -##### Telecart +##### Megapay -* Add vouchers and coupons (#9) ([ac24f0](https://github.com/telecart-labs/telecart/commit/ac24f0376bee13cc14db49a2904867ef173dcf95)) +* Add vouchers and coupons (#9) ([ac24f0](https://github.com/megapay-labs/megapay/commit/ac24f0376bee13cc14db49a2904867ef173dcf95)) ##### Texts -* Add options to redefine text for zero product prices ([1fbbb7](https://github.com/telecart-labs/telecart/commit/1fbbb7b6db13a9dac745c32d11f2e71ed79e854e)) +* Add options to redefine text for zero product prices ([1fbbb7](https://github.com/megapay-labs/megapay/commit/1fbbb7b6db13a9dac745c32d11f2e71ed79e854e)) ##### Ya metrika -* WIP yandex metrika ([d7666f](https://github.com/telecart-labs/telecart/commit/d7666f94ba22fc1a808299e9a91ead14e6b58b25)) +* WIP yandex metrika ([d7666f](https://github.com/megapay-labs/megapay/commit/d7666f94ba22fc1a808299e9a91ead14e6b58b25)) ### Bug Fixes -* Admin mainpage builder drawer doesnot show ([ad54b1](https://github.com/telecart-labs/telecart/commit/ad54b14c6804fae8960a5e15dbceb0549d91c732)) -* Base header color ([28d80d](https://github.com/telecart-labs/telecart/commit/28d80d0f19ee31fea5011c2b466edea1590ab71e)) -* Browser check ([4cd49b](https://github.com/telecart-labs/telecart/commit/4cd49b17a6df65863dc9fd32efdd0bba4b4e44ff)) -* Center image on product view ([dc198c](https://github.com/telecart-labs/telecart/commit/dc198c63b7c4f66b92eeb55958983d8eaed0260f)) -* Correct cli.php path for phar ([57c840](https://github.com/telecart-labs/telecart/commit/57c8400904b74569c843cd898fe6c39552f91e6b)) -* Correct counter id for yandex metrika test ([9870f2](https://github.com/telecart-labs/telecart/commit/9870f2f36364ec7d968b3aec14091aefae774199)) -* Correct crontab line ([613ce5](https://github.com/telecart-labs/telecart/commit/613ce520ee53be47ee06e101daf54c8f5136184b)) -* Correct path for cron ([185f30](https://github.com/telecart-labs/telecart/commit/185f3096e1e17507f4191104794991448d4d44bb)) -* Correct url for hit ([515b82](https://github.com/telecart-labs/telecart/commit/515b82302ba603f61324ace576e23adbf82560fd)) -* Disable fullscreen for desktop ([bf32d9](https://github.com/telecart-labs/telecart/commit/bf32d9081169206cef62d92f27338321d1cc1e69)) -* Fix dock layout ([bdbdfc](https://github.com/telecart-labs/telecart/commit/bdbdfc3650ff24e77f7f35059ac72e87cd02ddf2)) -* Fix errors and small improvements ([3b2e2c](https://github.com/telecart-labs/telecart/commit/3b2e2cb656bb8db6feebdbb23612202f96cdde3f)) -* Fix search issues ([2f9a55](https://github.com/telecart-labs/telecart/commit/2f9a553ae356fe4fb7ee3a481010d14be7d94ad7)) -* Fix type error ([836161](https://github.com/telecart-labs/telecart/commit/8361616dd647397777849fd87267134e0bc1fb9b)) -* Glob not work with phar ([24db69](https://github.com/telecart-labs/telecart/commit/24db69fbbad6758d11dabdac54f075611cde9593)) -* Grant +x permissions for cli.php ([0ee3b7](https://github.com/telecart-labs/telecart/commit/0ee3b7d091da970d19a755207c73c28689bfd2a4)) -* Handle missing tags in workflow ([bc50cf](https://github.com/telecart-labs/telecart/commit/bc50cf064854ad0597f1d7a39b0eb32d88d2598a)) -* Image picker component name type ([30b010](https://github.com/telecart-labs/telecart/commit/30b0108fe78b2a594db0c749f563577921c189d0)) -* Many products in search ([a5e91d](https://github.com/telecart-labs/telecart/commit/a5e91dd488b1f13abf739797e75400ddf36ba7e1)) -* Order creation ([82ab81](https://github.com/telecart-labs/telecart/commit/82ab8134e19f2cc4066de5241e7ff29905d79b17)) -* Pulse ingest ([95dd54](https://github.com/telecart-labs/telecart/commit/95dd545dc5718046cd421d70ad2d4ea137919852)) -* Scroll behaviour ([359395](https://github.com/telecart-labs/telecart/commit/359395b7e880d72dd34da504f6d9fe001d6f0aff)) -* Search ([e5792a](https://github.com/telecart-labs/telecart/commit/e5792a059a0986b6d6c86df9dbcbda212bc0f548)) -* Settings numeric error ([44d2af](https://github.com/telecart-labs/telecart/commit/44d2af3b30a7133b550e56385c3096c0e8848df5)) -* Store error ([ab5c2f](https://github.com/telecart-labs/telecart/commit/ab5c2f42b907d19f0c52c631cea02b981a199c39)) -* Switch between code and visual for custom forms ([0ab09a](https://github.com/telecart-labs/telecart/commit/0ab09aad10eb724cf0378bcc2f46001b5108fade)) -* Test ([c4b192](https://github.com/telecart-labs/telecart/commit/c4b19286f36ad166a1092dda86e65d48e3390723)) -* Use html for tg bot ([7e6502](https://github.com/telecart-labs/telecart/commit/7e6502b07e74e27e27326c9593f25c2c9c03418b)) +* Admin mainpage builder drawer doesnot show ([ad54b1](https://github.com/megapay-labs/megapay/commit/ad54b14c6804fae8960a5e15dbceb0549d91c732)) +* Base header color ([28d80d](https://github.com/megapay-labs/megapay/commit/28d80d0f19ee31fea5011c2b466edea1590ab71e)) +* Browser check ([4cd49b](https://github.com/megapay-labs/megapay/commit/4cd49b17a6df65863dc9fd32efdd0bba4b4e44ff)) +* Center image on product view ([dc198c](https://github.com/megapay-labs/megapay/commit/dc198c63b7c4f66b92eeb55958983d8eaed0260f)) +* Correct cli.php path for phar ([57c840](https://github.com/megapay-labs/megapay/commit/57c8400904b74569c843cd898fe6c39552f91e6b)) +* Correct counter id for yandex metrika test ([9870f2](https://github.com/megapay-labs/megapay/commit/9870f2f36364ec7d968b3aec14091aefae774199)) +* Correct crontab line ([613ce5](https://github.com/megapay-labs/megapay/commit/613ce520ee53be47ee06e101daf54c8f5136184b)) +* Correct path for cron ([185f30](https://github.com/megapay-labs/megapay/commit/185f3096e1e17507f4191104794991448d4d44bb)) +* Correct url for hit ([515b82](https://github.com/megapay-labs/megapay/commit/515b82302ba603f61324ace576e23adbf82560fd)) +* Disable fullscreen for desktop ([bf32d9](https://github.com/megapay-labs/megapay/commit/bf32d9081169206cef62d92f27338321d1cc1e69)) +* Fix dock layout ([bdbdfc](https://github.com/megapay-labs/megapay/commit/bdbdfc3650ff24e77f7f35059ac72e87cd02ddf2)) +* Fix errors and small improvements ([3b2e2c](https://github.com/megapay-labs/megapay/commit/3b2e2cb656bb8db6feebdbb23612202f96cdde3f)) +* Fix search issues ([2f9a55](https://github.com/megapay-labs/megapay/commit/2f9a553ae356fe4fb7ee3a481010d14be7d94ad7)) +* Fix type error ([836161](https://github.com/megapay-labs/megapay/commit/8361616dd647397777849fd87267134e0bc1fb9b)) +* Glob not work with phar ([24db69](https://github.com/megapay-labs/megapay/commit/24db69fbbad6758d11dabdac54f075611cde9593)) +* Grant +x permissions for cli.php ([0ee3b7](https://github.com/megapay-labs/megapay/commit/0ee3b7d091da970d19a755207c73c28689bfd2a4)) +* Handle missing tags in workflow ([bc50cf](https://github.com/megapay-labs/megapay/commit/bc50cf064854ad0597f1d7a39b0eb32d88d2598a)) +* Image picker component name type ([30b010](https://github.com/megapay-labs/megapay/commit/30b0108fe78b2a594db0c749f563577921c189d0)) +* Many products in search ([a5e91d](https://github.com/megapay-labs/megapay/commit/a5e91dd488b1f13abf739797e75400ddf36ba7e1)) +* Order creation ([82ab81](https://github.com/megapay-labs/megapay/commit/82ab8134e19f2cc4066de5241e7ff29905d79b17)) +* Pulse ingest ([95dd54](https://github.com/megapay-labs/megapay/commit/95dd545dc5718046cd421d70ad2d4ea137919852)) +* Scroll behaviour ([359395](https://github.com/megapay-labs/megapay/commit/359395b7e880d72dd34da504f6d9fe001d6f0aff)) +* Search ([e5792a](https://github.com/megapay-labs/megapay/commit/e5792a059a0986b6d6c86df9dbcbda212bc0f548)) +* Settings numeric error ([44d2af](https://github.com/megapay-labs/megapay/commit/44d2af3b30a7133b550e56385c3096c0e8848df5)) +* Store error ([ab5c2f](https://github.com/megapay-labs/megapay/commit/ab5c2f42b907d19f0c52c631cea02b981a199c39)) +* Switch between code and visual for custom forms ([0ab09a](https://github.com/megapay-labs/megapay/commit/0ab09aad10eb724cf0378bcc2f46001b5108fade)) +* Test ([c4b192](https://github.com/megapay-labs/megapay/commit/c4b19286f36ad166a1092dda86e65d48e3390723)) +* Use html for tg bot ([7e6502](https://github.com/megapay-labs/megapay/commit/7e6502b07e74e27e27326c9593f25c2c9c03418b)) ##### Admin -* Fix error when chat_id is string ([8f6af0](https://github.com/telecart-labs/telecart/commit/8f6af04e732f853eb79504676dc5ae83ba151c93)) +* Fix error when chat_id is string ([8f6af0](https://github.com/megapay-labs/megapay/commit/8f6af04e732f853eb79504676dc5ae83ba151c93)) ##### Spa -* Remove html in price for some opencart custom themes ([3423dd](https://github.com/telecart-labs/telecart/commit/3423dd172748845ce5177ea6bf5894a6da977c37), [d6a436](https://github.com/telecart-labs/telecart/commit/d6a43605acaff1cf335dc044e2b297132d6eb2ce)) +* Remove html in price for some opencart custom themes ([3423dd](https://github.com/megapay-labs/megapay/commit/3423dd172748845ce5177ea6bf5894a6da977c37), [d6a436](https://github.com/megapay-labs/megapay/commit/d6a43605acaff1cf335dc044e2b297132d6eb2ce)) -##### Telecart +##### Megapay -* Fix products search ([98ee6d](https://github.com/telecart-labs/telecart/commit/98ee6d9ecac4349cad847bdba1b10cf8660c251f)) +* Fix products search ([98ee6d](https://github.com/megapay-labs/megapay/commit/98ee6d9ecac4349cad847bdba1b10cf8660c251f)) --- -## [1.3.2](https://github.com/telecart-labs/telecart/compare/v1.3.1...v1.3.2) (2025-10-24) +## [1.3.2](https://github.com/megapay-labs/megapay/compare/v1.3.1...v1.3.2) (2025-10-24) ### Bug Fixes ##### Products -* Encode html for title on products page ([78ca4f](https://github.com/telecart-labs/telecart/commit/78ca4fd309e2254771a01ade75197d46e149c5f3)) +* Encode html for title on products page ([78ca4f](https://github.com/megapay-labs/megapay/commit/78ca4fd309e2254771a01ade75197d46e149c5f3)) --- -## [1.3.1](https://github.com/telecart-labs/telecart/compare/v1.3.0...v1.3.1) (2025-10-19) +## [1.3.1](https://github.com/megapay-labs/megapay/compare/v1.3.0...v1.3.1) (2025-10-19) ### Bug Fixes ##### App -* Fix unhandled exceptions ([aa4264](https://github.com/telecart-labs/telecart/commit/aa42643c34c1a7cb11aae2d3191ac63c0af3236a)) +* Fix unhandled exceptions ([aa4264](https://github.com/megapay-labs/megapay/commit/aa42643c34c1a7cb11aae2d3191ac63c0af3236a)) --- -## [1.3.0](https://github.com/telecart-labs/telecart/compare/v1.2.0...v1.3.0) (2025-10-19) +## [1.3.0](https://github.com/megapay-labs/megapay/compare/v1.2.0...v1.3.0) (2025-10-19) ### Features -* Add filters to mainpage ([1e2a9b](https://github.com/telecart-labs/telecart/commit/1e2a9bc7051e14c65eb44b392dba11f766b95d33)) -* Handle start command for telecart bot ([c936d7](https://github.com/telecart-labs/telecart/commit/c936d727b495b06f63d7f15949d540f2c9a2b9c0)) +* Add filters to mainpage ([1e2a9b](https://github.com/megapay-labs/megapay/commit/1e2a9bc7051e14c65eb44b392dba11f766b95d33)) +* Handle start command for megapay bot ([c936d7](https://github.com/megapay-labs/megapay/commit/c936d727b495b06f63d7f15949d540f2c9a2b9c0)) ##### Admin -* Do not log assets cleanup message if nothing deleted ([00165b](https://github.com/telecart-labs/telecart/commit/00165b3b61841303a6eff0447ee134d860f4a8b9)) -* Remove old assets ([01368b](https://github.com/telecart-labs/telecart/commit/01368bbfce831cd8949500ffdf5f5e4614316459)) -* Remove old maps ([31a990](https://github.com/telecart-labs/telecart/commit/31a9909cc37c953113c743d248c9dd4065f89acb)) +* Do not log assets cleanup message if nothing deleted ([00165b](https://github.com/megapay-labs/megapay/commit/00165b3b61841303a6eff0447ee134d860f4a8b9)) +* Remove old assets ([01368b](https://github.com/megapay-labs/megapay/commit/01368bbfce831cd8949500ffdf5f5e4614316459)) +* Remove old maps ([31a990](https://github.com/megapay-labs/megapay/commit/31a9909cc37c953113c743d248c9dd4065f89acb)) ##### Bot -* Add bot commands ([023ace](https://github.com/telecart-labs/telecart/commit/023acee68fb8f247a5e84f62aade44c77cfc0ed5)) +* Add bot commands ([023ace](https://github.com/megapay-labs/megapay/commit/023acee68fb8f247a5e84f62aade44c77cfc0ed5)) ##### Filters -* Add filters for the main page ([e7e045](https://github.com/telecart-labs/telecart/commit/e7e045b695d227d2d895242b4c0f19883d07f69e)) +* Add filters for the main page ([e7e045](https://github.com/megapay-labs/megapay/commit/e7e045b695d227d2d895242b4c0f19883d07f69e)) ##### Spa -* Hide floating cart btn for filters page ([259154](https://github.com/telecart-labs/telecart/commit/259154e4f1ca2ac0e2e6a357e8a53be78a00441a)) -* Lock vertical orientation ([646721](https://github.com/telecart-labs/telecart/commit/6467216775c44a7f4cc924d4551cc88ca246b757)) -* Update Telegram Mini App to 59 version ([3ecb51](https://github.com/telecart-labs/telecart/commit/3ecb51b5cd1751f4e2ace73171225ee3a33e46c4)) +* Hide floating cart btn for filters page ([259154](https://github.com/megapay-labs/megapay/commit/259154e4f1ca2ac0e2e6a357e8a53be78a00441a)) +* Lock vertical orientation ([646721](https://github.com/megapay-labs/megapay/commit/6467216775c44a7f4cc924d4551cc88ca246b757)) +* Update Telegram Mini App to 59 version ([3ecb51](https://github.com/megapay-labs/megapay/commit/3ecb51b5cd1751f4e2ace73171225ee3a33e46c4)) ### Bug Fixes -* Escape character for start message command ([a051ff](https://github.com/telecart-labs/telecart/commit/a051ff545e920760e3a0e6c34ef3cc94a0c1bfdb)) +* Escape character for start message command ([a051ff](https://github.com/megapay-labs/megapay/commit/a051ff545e920760e3a0e6c34ef3cc94a0c1bfdb)) --- -## [1.2.0](https://github.com/telecart-labs/telecart/compare/v1.1.0...v1.2.0) (2025-09-27) +## [1.2.0](https://github.com/megapay-labs/megapay/compare/v1.1.0...v1.2.0) (2025-09-27) ### Features ##### Product -* Add option to disable store feature ([d7dd05](https://github.com/telecart-labs/telecart/commit/d7dd055e245a5bb0772b382ca8542394e92fecd5)) +* Add option to disable store feature ([d7dd05](https://github.com/megapay-labs/megapay/commit/d7dd055e245a5bb0772b382ca8542394e92fecd5)) ### Bug Fixes -* Correct update opencart config after defaults diff update ([e24e7c](https://github.com/telecart-labs/telecart/commit/e24e7c6d106597c627451abf8014723f42fdda34)) +* Correct update opencart config after defaults diff update ([e24e7c](https://github.com/megapay-labs/megapay/commit/e24e7c6d106597c627451abf8014723f42fdda34)) --- -## [1.1.0](https://github.com/telecart-labs/telecart/compare/v1.0.7...v1.1.0) (2025-09-26) +## [1.1.0](https://github.com/megapay-labs/megapay/compare/v1.0.7...v1.1.0) (2025-09-26) --- -## [1.0.7](https://github.com/telecart-labs/telecart/compare/v1.0.6...v1.0.7) (2025-09-26) +## [1.0.7](https://github.com/megapay-labs/megapay/compare/v1.0.6...v1.0.7) (2025-09-26) ### Features ##### Categories -* Added animations for categories list ([b7b255](https://github.com/telecart-labs/telecart/commit/b7b255887db2d04b8ba70a966382f44c92475df0)) -* Add skeleton for categories loading ([294e0c](https://github.com/telecart-labs/telecart/commit/294e0cd17e2038f3088b504331ad9b009129e8ed)) -* Hide button from categories ([f06606](https://github.com/telecart-labs/telecart/commit/f066069a1b6cf186046e272bc7af61ab46f79c0e)) +* Added animations for categories list ([b7b255](https://github.com/megapay-labs/megapay/commit/b7b255887db2d04b8ba70a966382f44c92475df0)) +* Add skeleton for categories loading ([294e0c](https://github.com/megapay-labs/megapay/commit/294e0cd17e2038f3088b504331ad9b009129e8ed)) +* Hide button from categories ([f06606](https://github.com/megapay-labs/megapay/commit/f066069a1b6cf186046e272bc7af61ab46f79c0e)) ##### Design -* Add safe top padding for product page ([a3e5b8](https://github.com/telecart-labs/telecart/commit/a3e5b8b07a28813115662b566284f8622f0b3722)) -* Product link in cart ([39a350](https://github.com/telecart-labs/telecart/commit/39a350d517d5d762720236f0e9b682299fd2b746)) +* Add safe top padding for product page ([a3e5b8](https://github.com/megapay-labs/megapay/commit/a3e5b8b07a28813115662b566284f8622f0b3722)) +* Product link in cart ([39a350](https://github.com/megapay-labs/megapay/commit/39a350d517d5d762720236f0e9b682299fd2b746)) ##### Products -* Show correct product prices ([35dd0d](https://github.com/telecart-labs/telecart/commit/35dd0de261a4497c01cd6eb54ed0d7032cea5f8b)) +* Show correct product prices ([35dd0d](https://github.com/megapay-labs/megapay/commit/35dd0de261a4497c01cd6eb54ed0d7032cea5f8b)) ### Bug Fixes ##### Product -* Decode html entities for product and category names ([acbfae](https://github.com/telecart-labs/telecart/commit/acbfaebcf415f42c6fb16c6a39d5e10f0776da90)) -* Fix error when image not found ([a381b3](https://github.com/telecart-labs/telecart/commit/a381b3a6ee6972775815db382269ec8ab3d31a4f)) -* Fix select product option UI ([22a783](https://github.com/telecart-labs/telecart/commit/22a783f0ef833f5797e798222dce65493d71b34b)) +* Decode html entities for product and category names ([acbfae](https://github.com/megapay-labs/megapay/commit/acbfaebcf415f42c6fb16c6a39d5e10f0776da90)) +* Fix error when image not found ([a381b3](https://github.com/megapay-labs/megapay/commit/a381b3a6ee6972775815db382269ec8ab3d31a4f)) +* Fix select product option UI ([22a783](https://github.com/megapay-labs/megapay/commit/22a783f0ef833f5797e798222dce65493d71b34b)) --- -## [1.0.6](https://github.com/telecart-labs/telecart/compare/v1.0.5...v1.0.6) (2025-09-24) +## [1.0.6](https://github.com/megapay-labs/megapay/compare/v1.0.5...v1.0.6) (2025-09-24) ### Bug Fixes -* Fix possible foreign error message on telecart page ([016eeb](https://github.com/telecart-labs/telecart/commit/016eeb445db7ce692825d323bed7c1dd815e30af)) +* Fix possible foreign error message on megapay page ([016eeb](https://github.com/megapay-labs/megapay/commit/016eeb445db7ce692825d323bed7c1dd815e30af)) ##### Categories -* Fix nested lvl > 2 categories rendering ([0f04cb](https://github.com/telecart-labs/telecart/commit/0f04cbf105252b88358095ae5be33fedca6f1e63)) -* Increase max categories count to display up to 100 ([9f6416](https://github.com/telecart-labs/telecart/commit/9f6416a1b7b7f065b558ecd3089c42ef397bd817)) +* Fix nested lvl > 2 categories rendering ([0f04cb](https://github.com/megapay-labs/megapay/commit/0f04cbf105252b88358095ae5be33fedca6f1e63)) +* Increase max categories count to display up to 100 ([9f6416](https://github.com/megapay-labs/megapay/commit/9f6416a1b7b7f065b558ecd3089c42ef397bd817)) ##### Database -* Fix db connection error when not standard mysql port ([ec5cdf](https://github.com/telecart-labs/telecart/commit/ec5cdfcaa9321cb824c858df91ce4464d6158a2c)) +* Fix db connection error when not standard mysql port ([ec5cdf](https://github.com/megapay-labs/megapay/commit/ec5cdfcaa9321cb824c858df91ce4464d6158a2c)) --- -## [1.0.5](https://github.com/telecart-labs/telecart/compare/v1.0.4...v1.0.5) (2025-09-24) +## [1.0.5](https://github.com/megapay-labs/megapay/compare/v1.0.4...v1.0.5) (2025-09-24) ### Features ##### Categories -* Add options to select what categories to show on front page ([9e4022](https://github.com/telecart-labs/telecart/commit/9e4022f64856082fffa7a0264949373319cdf9ff)) +* Add options to select what categories to show on front page ([9e4022](https://github.com/megapay-labs/megapay/commit/9e4022f64856082fffa7a0264949373319cdf9ff)) --- -## [1.0.4](https://github.com/telecart-labs/telecart/compare/v1.0.3...v1.0.4) (2025-09-24) +## [1.0.4](https://github.com/megapay-labs/megapay/compare/v1.0.3...v1.0.4) (2025-09-24) ### Bug Fixes -* Error when category doesnt have image ([490cbf](https://github.com/telecart-labs/telecart/commit/490cbfacf72095001dccaf374034292ea247e21b)) +* Error when category doesnt have image ([490cbf](https://github.com/megapay-labs/megapay/commit/490cbfacf72095001dccaf374034292ea247e21b)) --- -## [1.0.3](https://github.com/telecart-labs/telecart/compare/v1.0.2...v1.0.3) (2025-09-24) +## [1.0.3](https://github.com/megapay-labs/megapay/compare/v1.0.2...v1.0.3) (2025-09-24) ### Bug Fixes -* Init exception for some opencart versions ([0cf0c4](https://github.com/telecart-labs/telecart/commit/0cf0c438433f8c1895bef5f490bc0f9af86b0c04)) +* Init exception for some opencart versions ([0cf0c4](https://github.com/megapay-labs/megapay/commit/0cf0c438433f8c1895bef5f490bc0f9af86b0c04)) --- -## [1.0.2](https://github.com/telecart-labs/telecart/compare/v1.0.1...v1.0.2) (2025-08-16) +## [1.0.2](https://github.com/megapay-labs/megapay/compare/v1.0.1...v1.0.2) (2025-08-16) ### Bug Fixes -* UI fixes ([854dfd](https://github.com/telecart-labs/telecart/commit/854dfdf7f2dba7bc78b53c19f345c1909298c474)) +* UI fixes ([854dfd](https://github.com/megapay-labs/megapay/commit/854dfdf7f2dba7bc78b53c19f345c1909298c474)) --- -## [1.0.1](https://github.com/telecart-labs/telecart/compare/v1.0.0...v1.0.1) (2025-08-16) +## [1.0.1](https://github.com/megapay-labs/megapay/compare/v1.0.0...v1.0.1) (2025-08-16) ### Bug Fixes -* Check code phrase when configure chat_id ([a0abc1](https://github.com/telecart-labs/telecart/commit/a0abc14c6db91fb6cec14f8aa64297d671e88a7e)) +* Check code phrase when configure chat_id ([a0abc1](https://github.com/megapay-labs/megapay/commit/a0abc14c6db91fb6cec14f8aa64297d671e88a7e)) --- -## [1.0.0](https://github.com/telecart-labs/telecart/compare/v0.0.2...v1.0.0) (2025-08-16) +## [1.0.0](https://github.com/megapay-labs/megapay/compare/v0.0.2...v1.0.0) (2025-08-16) ### Features -* Add bot_token validation ([d7df5a](https://github.com/telecart-labs/telecart/commit/d7df5a4b5c8abdf5117c07a9bb7fc7744c23eb1d)) -* Add carousel for images ([a40089](https://github.com/telecart-labs/telecart/commit/a40089ef553eaf30d813a9e2b2495fe3aa7dd0d4)) -* Add Categories ([6a8ea0](https://github.com/telecart-labs/telecart/commit/6a8ea048ea52e6bd3c146b4ec311e9633fce269a)) -* Add custom BottomButton instead of TG ([b0cc02](https://github.com/telecart-labs/telecart/commit/b0cc0237af12ea5560835092bb808e4bc742c380)) -* Add fullscreen viewer ([4ae8d5](https://github.com/telecart-labs/telecart/commit/4ae8d593280774527fbeda3e52d924bd23a12813)) -* Add fulscreen mode, dark mode ([252854](https://github.com/telecart-labs/telecart/commit/252854e67ea93716c271e2e20d25b0d73e24e380)) -* Add haptictouch to bottom buttons ([51ce6e](https://github.com/telecart-labs/telecart/commit/51ce6ed959e9b673a0cfd9fac614f743b24d582f)) -* Add hero block ([3c819e](https://github.com/telecart-labs/telecart/commit/3c819e6c6cf9d25088c2a8024da13e8e0180bde7)) -* Add manufacturer to product view ([b25f6d](https://github.com/telecart-labs/telecart/commit/b25f6d3c7335c42487702aa7fff2c5003fd63046)) -* Add new mainpage products options, hide attributes ([d9fd26](https://github.com/telecart-labs/telecart/commit/d9fd26d3541e02d4656d32af547a3e338bbbc4ff)) -* Add preloader for product page ([b66a02](https://github.com/telecart-labs/telecart/commit/b66a02fd57a2f0233b37bb76b30a360e71333256)) -* Add product view page ([f13e12](https://github.com/telecart-labs/telecart/commit/f13e128d03831598ecd058217a0e8874f0831f75)) -* Add telegram api ([b958fe](https://github.com/telecart-labs/telecart/commit/b958feaec751b2e3a4134f925a74c75d5d2d1b42)) -* Add telegram safe content area ([1715c0](https://github.com/telecart-labs/telecart/commit/1715c01b1d1b99d4e99a8fe6f40107a384250326)) -* Add validation and use opencart logger ([9f35ac](https://github.com/telecart-labs/telecart/commit/9f35acf39935416bfbb35735c3749baf0af20995)) -* Allow only vertical orientation ([fe4188](https://github.com/telecart-labs/telecart/commit/fe4188eb8b3d58cb5fa25c267e0e0ba46effbbac)) -* Cache frontpage products and categories ([5f785e](https://github.com/telecart-labs/telecart/commit/5f785e82e6689283526dd5a218d76908078e7942)) -* Create new order ([c057f4](https://github.com/telecart-labs/telecart/commit/c057f4be76544466af62556237f7031c874f5f51)) -* Deny direct access to the spa ([41e74b](https://github.com/telecart-labs/telecart/commit/41e74bad121d76b9a4be2a2f02822d8323e739cc)) -* Diplicate webhook info request ([6249b2](https://github.com/telecart-labs/telecart/commit/6249b218a137e105e64fbfb0b6c8829e2ca01349)) -* Display product options ([f47bb4](https://github.com/telecart-labs/telecart/commit/f47bb46751fea79e43a96e2b63afde4cb7ef801b)) -* Do not check signature if bot token not set ([1d892f](https://github.com/telecart-labs/telecart/commit/1d892f7d090a1ff91f724871e688b18a40df768e)) -* Encode images to webp for telegram mini app ([c282b6](https://github.com/telecart-labs/telecart/commit/c282b6ea3b5c04ae92708eb1984ad14d2ea46cfa)) -* Expand mini app on mounted ([1e454b](https://github.com/telecart-labs/telecart/commit/1e454b8f2387d9a4e2e4316253d7f8bddadccc1c)) -* Fix module name in admin ([9770a0](https://github.com/telecart-labs/telecart/commit/9770a09fc0abe57d7b97137c9fef4bfaf5687278)) -* Infinity scroll, load more, resore scroll ([bb2ee3](https://github.com/telecart-labs/telecart/commit/bb2ee38118e8626f8d85070047e256ad8305c1e5)) -* Make two columns grid for product list ([34bd64](https://github.com/telecart-labs/telecart/commit/34bd64e9025fbd61cd3c64c1e9a9bebb4bf98e5d)) -* Product options, speedup home page, themes ([e3cc0d](https://github.com/telecart-labs/telecart/commit/e3cc0d4b10edf3a7c655a8e6d9a39ca587d6ecbc)) -* Remove cache, refactor ([7404ec](https://github.com/telecart-labs/telecart/commit/7404ecb33e1289439a3b4b9b5926175fe5d3872d)) -* Remove prefilled fields in checkout ([33b350](https://github.com/telecart-labs/telecart/commit/33b3500aa470438963af90ee2edccdff9a27233d)) -* Safe-top and search ([a8bb5e](https://github.com/telecart-labs/telecart/commit/a8bb5eb493ab329bebca8c7903d4facf4a22d76a)) -* Search component and loading splashscreen ([2fb841](https://github.com/telecart-labs/telecart/commit/2fb841ef08027eeabdade90d9a4725ea602b3f48)) -* Show tg app link ([b1ea16](https://github.com/telecart-labs/telecart/commit/b1ea169e2f83cd3d3108d9d11d2b9bb8ee234211)) -* UI changes ([d522cb](https://github.com/telecart-labs/telecart/commit/d522cbef8389adb05cc6e70ed6665db37915233c)) -* Ui improvements, show only active products, limit max page for infinity scroll ([d499d7](https://github.com/telecart-labs/telecart/commit/d499d7d846d55cc158306160c51d4b871f5b6376)) -* Update styles ([ca3a59](https://github.com/telecart-labs/telecart/commit/ca3a59f43ae19f9c8417993e45c63f29696f46c8)) +* Add bot_token validation ([d7df5a](https://github.com/megapay-labs/megapay/commit/d7df5a4b5c8abdf5117c07a9bb7fc7744c23eb1d)) +* Add carousel for images ([a40089](https://github.com/megapay-labs/megapay/commit/a40089ef553eaf30d813a9e2b2495fe3aa7dd0d4)) +* Add Categories ([6a8ea0](https://github.com/megapay-labs/megapay/commit/6a8ea048ea52e6bd3c146b4ec311e9633fce269a)) +* Add custom BottomButton instead of TG ([b0cc02](https://github.com/megapay-labs/megapay/commit/b0cc0237af12ea5560835092bb808e4bc742c380)) +* Add fullscreen viewer ([4ae8d5](https://github.com/megapay-labs/megapay/commit/4ae8d593280774527fbeda3e52d924bd23a12813)) +* Add fulscreen mode, dark mode ([252854](https://github.com/megapay-labs/megapay/commit/252854e67ea93716c271e2e20d25b0d73e24e380)) +* Add haptictouch to bottom buttons ([51ce6e](https://github.com/megapay-labs/megapay/commit/51ce6ed959e9b673a0cfd9fac614f743b24d582f)) +* Add hero block ([3c819e](https://github.com/megapay-labs/megapay/commit/3c819e6c6cf9d25088c2a8024da13e8e0180bde7)) +* Add manufacturer to product view ([b25f6d](https://github.com/megapay-labs/megapay/commit/b25f6d3c7335c42487702aa7fff2c5003fd63046)) +* Add new mainpage products options, hide attributes ([d9fd26](https://github.com/megapay-labs/megapay/commit/d9fd26d3541e02d4656d32af547a3e338bbbc4ff)) +* Add preloader for product page ([b66a02](https://github.com/megapay-labs/megapay/commit/b66a02fd57a2f0233b37bb76b30a360e71333256)) +* Add product view page ([f13e12](https://github.com/megapay-labs/megapay/commit/f13e128d03831598ecd058217a0e8874f0831f75)) +* Add telegram api ([b958fe](https://github.com/megapay-labs/megapay/commit/b958feaec751b2e3a4134f925a74c75d5d2d1b42)) +* Add telegram safe content area ([1715c0](https://github.com/megapay-labs/megapay/commit/1715c01b1d1b99d4e99a8fe6f40107a384250326)) +* Add validation and use opencart logger ([9f35ac](https://github.com/megapay-labs/megapay/commit/9f35acf39935416bfbb35735c3749baf0af20995)) +* Allow only vertical orientation ([fe4188](https://github.com/megapay-labs/megapay/commit/fe4188eb8b3d58cb5fa25c267e0e0ba46effbbac)) +* Cache frontpage products and categories ([5f785e](https://github.com/megapay-labs/megapay/commit/5f785e82e6689283526dd5a218d76908078e7942)) +* Create new order ([c057f4](https://github.com/megapay-labs/megapay/commit/c057f4be76544466af62556237f7031c874f5f51)) +* Deny direct access to the spa ([41e74b](https://github.com/megapay-labs/megapay/commit/41e74bad121d76b9a4be2a2f02822d8323e739cc)) +* Diplicate webhook info request ([6249b2](https://github.com/megapay-labs/megapay/commit/6249b218a137e105e64fbfb0b6c8829e2ca01349)) +* Display product options ([f47bb4](https://github.com/megapay-labs/megapay/commit/f47bb46751fea79e43a96e2b63afde4cb7ef801b)) +* Do not check signature if bot token not set ([1d892f](https://github.com/megapay-labs/megapay/commit/1d892f7d090a1ff91f724871e688b18a40df768e)) +* Encode images to webp for telegram mini app ([c282b6](https://github.com/megapay-labs/megapay/commit/c282b6ea3b5c04ae92708eb1984ad14d2ea46cfa)) +* Expand mini app on mounted ([1e454b](https://github.com/megapay-labs/megapay/commit/1e454b8f2387d9a4e2e4316253d7f8bddadccc1c)) +* Fix module name in admin ([9770a0](https://github.com/megapay-labs/megapay/commit/9770a09fc0abe57d7b97137c9fef4bfaf5687278)) +* Infinity scroll, load more, resore scroll ([bb2ee3](https://github.com/megapay-labs/megapay/commit/bb2ee38118e8626f8d85070047e256ad8305c1e5)) +* Make two columns grid for product list ([34bd64](https://github.com/megapay-labs/megapay/commit/34bd64e9025fbd61cd3c64c1e9a9bebb4bf98e5d)) +* Product options, speedup home page, themes ([e3cc0d](https://github.com/megapay-labs/megapay/commit/e3cc0d4b10edf3a7c655a8e6d9a39ca587d6ecbc)) +* Remove cache, refactor ([7404ec](https://github.com/megapay-labs/megapay/commit/7404ecb33e1289439a3b4b9b5926175fe5d3872d)) +* Remove prefilled fields in checkout ([33b350](https://github.com/megapay-labs/megapay/commit/33b3500aa470438963af90ee2edccdff9a27233d)) +* Safe-top and search ([a8bb5e](https://github.com/megapay-labs/megapay/commit/a8bb5eb493ab329bebca8c7903d4facf4a22d76a)) +* Search component and loading splashscreen ([2fb841](https://github.com/megapay-labs/megapay/commit/2fb841ef08027eeabdade90d9a4725ea602b3f48)) +* Show tg app link ([b1ea16](https://github.com/megapay-labs/megapay/commit/b1ea169e2f83cd3d3108d9d11d2b9bb8ee234211)) +* UI changes ([d522cb](https://github.com/megapay-labs/megapay/commit/d522cbef8389adb05cc6e70ed6665db37915233c)) +* Ui improvements, show only active products, limit max page for infinity scroll ([d499d7](https://github.com/megapay-labs/megapay/commit/d499d7d846d55cc158306160c51d4b871f5b6376)) +* Update styles ([ca3a59](https://github.com/megapay-labs/megapay/commit/ca3a59f43ae19f9c8417993e45c63f29696f46c8)) ##### Admin -* Correct getting chat_id ([1e80fd](https://github.com/telecart-labs/telecart/commit/1e80fdb2ebaf47e39a6cbd45438860428146aac6)) -* Correct merge new default settings after initializing app ([469077](https://github.com/telecart-labs/telecart/commit/469077d0c9006f3bcfffcecf4454f2e5e4492fac)) -* Update disclaimer text ([133bad](https://github.com/telecart-labs/telecart/commit/133badf45b9727fbf2bee7c9b9f74ff274fa3cc8)) +* Correct getting chat_id ([1e80fd](https://github.com/megapay-labs/megapay/commit/1e80fdb2ebaf47e39a6cbd45438860428146aac6)) +* Correct merge new default settings after initializing app ([469077](https://github.com/megapay-labs/megapay/commit/469077d0c9006f3bcfffcecf4454f2e5e4492fac)) +* Update disclaimer text ([133bad](https://github.com/megapay-labs/megapay/commit/133badf45b9727fbf2bee7c9b9f74ff274fa3cc8)) ##### App -* Add maintenance mode ([2752ec](https://github.com/telecart-labs/telecart/commit/2752ec3dd18261af9894c8a28a6775bdb22301c3)) -* Telegram init data signature validator ([350ec4](https://github.com/telecart-labs/telecart/commit/350ec4f64bf6534e57cf613e6b38d39a052fd646)) +* Add maintenance mode ([2752ec](https://github.com/megapay-labs/megapay/commit/2752ec3dd18261af9894c8a28a6775bdb22301c3)) +* Telegram init data signature validator ([350ec4](https://github.com/megapay-labs/megapay/commit/350ec4f64bf6534e57cf613e6b38d39a052fd646)) ##### Order -* Add success haptic for order created event ([858be6](https://github.com/telecart-labs/telecart/commit/858be67c89130ab291b34d8bd7fb4340b6fff422)) -* Order default status and customer group ([14d42c](https://github.com/telecart-labs/telecart/commit/14d42c6ecb1967cc626c57ae7ccb60f66b361aec)) -* Order process enchancements ([85101b](https://github.com/telecart-labs/telecart/commit/85101b988140c1d0114d3176115aab0864011b16)) -* WIP: telegram notifications ([454bd3](https://github.com/telecart-labs/telecart/commit/454bd39f1f12a6fa004f80c3b13ebc17032a35f9)) +* Add success haptic for order created event ([858be6](https://github.com/megapay-labs/megapay/commit/858be67c89130ab291b34d8bd7fb4340b6fff422)) +* Order default status and customer group ([14d42c](https://github.com/megapay-labs/megapay/commit/14d42c6ecb1967cc626c57ae7ccb60f66b361aec)) +* Order process enchancements ([85101b](https://github.com/megapay-labs/megapay/commit/85101b988140c1d0114d3176115aab0864011b16)) +* WIP: telegram notifications ([454bd3](https://github.com/megapay-labs/megapay/commit/454bd39f1f12a6fa004f80c3b13ebc17032a35f9)) ##### Orders -* Tg notifications, ya metrika, meta tags ([86d0fa](https://github.com/telecart-labs/telecart/commit/86d0fa95941fd2b1d491de8280817d0e80b461f2)) +* Tg notifications, ya metrika, meta tags ([86d0fa](https://github.com/megapay-labs/megapay/commit/86d0fa95941fd2b1d491de8280817d0e80b461f2)) ##### Product -* Change router history driver, change add to cart behaviour ([ebc352](https://github.com/telecart-labs/telecart/commit/ebc352dcdfcf08694d2590ee94c9e799e795a2fc)) -* Display attributes ([63adf9](https://github.com/telecart-labs/telecart/commit/63adf96908137ab0c173415f77278ee7483a2fb8)) +* Change router history driver, change add to cart behaviour ([ebc352](https://github.com/megapay-labs/megapay/commit/ebc352dcdfcf08694d2590ee94c9e799e795a2fc)) +* Display attributes ([63adf9](https://github.com/megapay-labs/megapay/commit/63adf96908137ab0c173415f77278ee7483a2fb8)) ##### Shop -* Change grid image resize algorythm ([c3c256](https://github.com/telecart-labs/telecart/commit/c3c25619326e292575236979e389f8ddb68b6958)) +* Change grid image resize algorythm ([c3c256](https://github.com/megapay-labs/megapay/commit/c3c25619326e292575236979e389f8ddb68b6958)) ##### Style -* Change pagination swiper styles ([50bf90](https://github.com/telecart-labs/telecart/commit/50bf9061be778b37f7f6869f4c39a4833af31b1d)) +* Change pagination swiper styles ([50bf90](https://github.com/megapay-labs/megapay/commit/50bf9061be778b37f7f6869f4c39a4833af31b1d)) ### Bug Fixes -* Add CORS headers, make ci builds as preleases ([551535](https://github.com/telecart-labs/telecart/commit/55153531fb4899d0f3e699b70231d32290800ee2)) -* Add route names ([47bb2c](https://github.com/telecart-labs/telecart/commit/47bb2cae85e9a16b0076898cd6265512c3adfc3c)) -* Change hardcoded axios url ([4bb983](https://github.com/telecart-labs/telecart/commit/4bb983e4af53baf2a7a5aa39f15b5389906a4c71)) -* Correct back button work ([08af20](https://github.com/telecart-labs/telecart/commit/08af204d7403572dbc45f3a74e13cf5d3d560a42)) -* Correct controller class ([5af66d](https://github.com/telecart-labs/telecart/commit/5af66d228a3defbc6f0b4fd15a9e2a3c192bf41d)) -* Corrent telegram mini app url in settings ([ea2a60](https://github.com/telecart-labs/telecart/commit/ea2a60b59b20d2bede9d6884349b09e55e345774)) -* Exception if no images ([9bcf32](https://github.com/telecart-labs/telecart/commit/9bcf32841ebd4663b5c6bd5e855b18e8cd486e45)) -* Fullscreen slide index ([4114c3](https://github.com/telecart-labs/telecart/commit/4114c3366e4090e41e29bf6e48fe5f54d0dd4a9c)) -* Glitch ([db24be](https://github.com/telecart-labs/telecart/commit/db24be6f92bbe485985892ea017f4e4ef457cd52)) -* Icon error ([19911c](https://github.com/telecart-labs/telecart/commit/19911c8f871e456c51836c3d07add3f066744ace)) -* Infinity scroll, init data in base64 ([f2f161](https://github.com/telecart-labs/telecart/commit/f2f1618e0ee591bc58a830a333b1f759b0a860d6)) -* Night theme ([06a6dc](https://github.com/telecart-labs/telecart/commit/06a6dca656871a920092dc6767990ab70b9fc6c2)) -* Router in opencart ([ad92db](https://github.com/telecart-labs/telecart/commit/ad92dbfad48f993e2393c0e235083614581ae0c6)) -* Router scroll scrollBehavior ([08d245](https://github.com/telecart-labs/telecart/commit/08d2453df92ffc89c5e6c4e264370d8b9c32a432)) -* Totals ([eb1f1d](https://github.com/telecart-labs/telecart/commit/eb1f1dc9c1de7c4733d0117257f7902f145614b2)) -* Watch router ([1ffb1c](https://github.com/telecart-labs/telecart/commit/1ffb1cef12df1bde4330a7c9531b6574a07d2fe6)) +* Add CORS headers, make ci builds as preleases ([551535](https://github.com/megapay-labs/megapay/commit/55153531fb4899d0f3e699b70231d32290800ee2)) +* Add route names ([47bb2c](https://github.com/megapay-labs/megapay/commit/47bb2cae85e9a16b0076898cd6265512c3adfc3c)) +* Change hardcoded axios url ([4bb983](https://github.com/megapay-labs/megapay/commit/4bb983e4af53baf2a7a5aa39f15b5389906a4c71)) +* Correct back button work ([08af20](https://github.com/megapay-labs/megapay/commit/08af204d7403572dbc45f3a74e13cf5d3d560a42)) +* Correct controller class ([5af66d](https://github.com/megapay-labs/megapay/commit/5af66d228a3defbc6f0b4fd15a9e2a3c192bf41d)) +* Corrent telegram mini app url in settings ([ea2a60](https://github.com/megapay-labs/megapay/commit/ea2a60b59b20d2bede9d6884349b09e55e345774)) +* Exception if no images ([9bcf32](https://github.com/megapay-labs/megapay/commit/9bcf32841ebd4663b5c6bd5e855b18e8cd486e45)) +* Fullscreen slide index ([4114c3](https://github.com/megapay-labs/megapay/commit/4114c3366e4090e41e29bf6e48fe5f54d0dd4a9c)) +* Glitch ([db24be](https://github.com/megapay-labs/megapay/commit/db24be6f92bbe485985892ea017f4e4ef457cd52)) +* Icon error ([19911c](https://github.com/megapay-labs/megapay/commit/19911c8f871e456c51836c3d07add3f066744ace)) +* Infinity scroll, init data in base64 ([f2f161](https://github.com/megapay-labs/megapay/commit/f2f1618e0ee591bc58a830a333b1f759b0a860d6)) +* Night theme ([06a6dc](https://github.com/megapay-labs/megapay/commit/06a6dca656871a920092dc6767990ab70b9fc6c2)) +* Router in opencart ([ad92db](https://github.com/megapay-labs/megapay/commit/ad92dbfad48f993e2393c0e235083614581ae0c6)) +* Router scroll scrollBehavior ([08d245](https://github.com/megapay-labs/megapay/commit/08d2453df92ffc89c5e6c4e264370d8b9c32a432)) +* Totals ([eb1f1d](https://github.com/megapay-labs/megapay/commit/eb1f1dc9c1de7c4733d0117257f7902f145614b2)) +* Watch router ([1ffb1c](https://github.com/megapay-labs/megapay/commit/1ffb1cef12df1bde4330a7c9531b6574a07d2fe6)) ##### Admin -* Fix shop url ([c61dfd](https://github.com/telecart-labs/telecart/commit/c61dfd824a532512703c207c464954b51dbcce5a)) +* Fix shop url ([c61dfd](https://github.com/megapay-labs/megapay/commit/c61dfd824a532512703c207c464954b51dbcce5a)) --- -## [0.0.2](https://github.com/telecart-labs/telecart/compare/v0.0.1+a26c8ba...v0.0.2) (2025-07-10) +## [0.0.2](https://github.com/megapay-labs/megapay/compare/v0.0.1+a26c8ba...v0.0.2) (2025-07-10) ### Bug Fixes -* Add CORS headers, make ci builds as preleases ([551535](https://github.com/telecart-labs/telecart/commit/55153531fb4899d0f3e699b70231d32290800ee2)) -* Correct controller class ([5af66d](https://github.com/telecart-labs/telecart/commit/5af66d228a3defbc6f0b4fd15a9e2a3c192bf41d)) +* Add CORS headers, make ci builds as preleases ([551535](https://github.com/megapay-labs/megapay/commit/55153531fb4899d0f3e699b70231d32290800ee2)) +* Correct controller class ([5af66d](https://github.com/megapay-labs/megapay/commit/5af66d228a3defbc6f0b4fd15a9e2a3c192bf41d)) --- -## [0.0.1+a26c8ba](https://github.com/telecart-labs/telecart/compare/v0.0.1...v0.0.1+a26c8ba) (2025-07-10) +## [0.0.1+a26c8ba](https://github.com/megapay-labs/megapay/compare/v0.0.1...v0.0.1+a26c8ba) (2025-07-10) ### Bug Fixes -* Add CORS headers, make ci builds as preleases ([551535](https://github.com/telecart-labs/telecart/commit/55153531fb4899d0f3e699b70231d32290800ee2)) -* Correct controller class ([5af66d](https://github.com/telecart-labs/telecart/commit/5af66d228a3defbc6f0b4fd15a9e2a3c192bf41d)) -* Move files to the correct folder ([9735d4](https://github.com/telecart-labs/telecart/commit/9735d48957b7d9947be5a1be18edba8aebc45531)) +* Add CORS headers, make ci builds as preleases ([551535](https://github.com/megapay-labs/megapay/commit/55153531fb4899d0f3e699b70231d32290800ee2)) +* Correct controller class ([5af66d](https://github.com/megapay-labs/megapay/commit/5af66d228a3defbc6f0b4fd15a9e2a3c192bf41d)) +* Move files to the correct folder ([9735d4](https://github.com/megapay-labs/megapay/commit/9735d48957b7d9947be5a1be18edba8aebc45531)) --- -## [0.0.1](https://github.com/telecart-labs/telecart/compare/c3664025ba6b608920a0182799102a207980d7be...v0.0.1) (2025-07-10) +## [0.0.1](https://github.com/megapay-labs/megapay/compare/c3664025ba6b608920a0182799102a207980d7be...v0.0.1) (2025-07-10) ### Features -* WIP ([846fa6](https://github.com/telecart-labs/telecart/commit/846fa64fb4db9760c4264179098c43e7f53b557c)) +* WIP ([846fa6](https://github.com/megapay-labs/megapay/commit/846fa64fb4db9760c4264179098c43e7f53b557c)) --- diff --git a/Makefile b/Makefile index af53c88..3787565 100644 --- a/Makefile +++ b/Makefile @@ -42,7 +42,7 @@ dev-spa: dev-admin: rm -rf module/oc_telegram_shop/upload/admin/view/javascript && \ rm -rf module/oc_telegram_shop/upload/system/library/oc_telegram_shop && \ - rm -rf src/upload/admin/view/javascript/telecart && \ + rm -rf src/upload/admin/view/javascript/megapay && \ cd frontend/admin && npm run dev lint: @@ -70,8 +70,8 @@ test-coverage: docker compose exec -w /module/oc_telegram_shop/upload/oc_telegram_shop web bash -c "./vendor/bin/phpunit --coverage-html coverage tests/" phar: - docker build -t telecart_local_build -f ./deployment/build.dockerfile . && \ - docker run -v "./src/upload/system/library/oc_telegram_shop:/build" telecart_local_build sh -c 'sh /scripts/build_phar.sh' + docker build -t megapay_local_build -f ./deployment/build.dockerfile . && \ + docker run -v "./src/upload/system/library/oc_telegram_shop:/build" megapay_local_build sh -c 'sh /scripts/build_phar.sh' cli: docker compose exec -w /module/oc_telegram_shop/upload web bash -c "/usr/local/bin/php cli.php $(ARGS)" diff --git a/backend/src/.env.example b/backend/src/.env.example index cd945c9..e53c77a 100755 --- a/backend/src/.env.example +++ b/backend/src/.env.example @@ -1,11 +1,11 @@ APP_DEBUG=true -PULSE_API_HOST=https://pulse.telecart.pro/api/ +PULSE_API_HOST=https://pulse.megapay.pro/api/ PULSE_HEARTBEAT_SECRET=c5261f5d-529e-45ad-a69c-9778b755b7cb -TELECART_CACHE_DRIVER=redis -#TELECART_REDIS_HOST=redis -#TELECART_REDIS_PORT=6379 -#TELECART_REDIS_DATABASE=0 +MEGAPAY_CACHE_DRIVER=redis +#MEGAPAY_REDIS_HOST=redis +#MEGAPAY_REDIS_PORT=6379 +#MEGAPAY_REDIS_DATABASE=0 SENTRY_ENABLED=false SENTRY_DSN= diff --git a/backend/src/.env.production b/backend/src/.env.production index e0b036a..331a882 100755 --- a/backend/src/.env.production +++ b/backend/src/.env.production @@ -1,10 +1,10 @@ APP_DEBUG=false -PULSE_API_HOST=https://pulse.telecart.pro/api/ +PULSE_API_HOST=https://pulse.megapay.pro/api/ PULSE_HEARTBEAT_SECRET=c5261f5d-529e-45ad-a69c-9778b755b7cb -TELECART_CACHE_DRIVER=mysql -TELECART_REDIS_HOST=redis -TELECART_REDIS_PORT=6379 -TELECART_REDIS_DATABASE=0 +MEGAPAY_CACHE_DRIVER=mysql +MEGAPAY_REDIS_HOST=redis +MEGAPAY_REDIS_PORT=6379 +MEGAPAY_REDIS_DATABASE=0 SENTRY_ENABLED=false SENTRY_DSN= diff --git a/backend/src/app/ApplicationFactory.php b/backend/src/app/ApplicationFactory.php index dea32f5..0c2e83d 100755 --- a/backend/src/app/ApplicationFactory.php +++ b/backend/src/app/ApplicationFactory.php @@ -10,7 +10,7 @@ use Openguru\OpenCartFramework\ImageTool\ImageToolServiceProvider; use Openguru\OpenCartFramework\QueryBuilder\QueryBuilderServiceProvider; use Openguru\OpenCartFramework\Router\RouteServiceProvider; use Openguru\OpenCartFramework\Support\Arr; -use Openguru\OpenCartFramework\TeleCartPulse\TeleCartPulseServiceProvider; +use Openguru\OpenCartFramework\MegaPayPulse\MegaPayPulseServiceProvider; use Openguru\OpenCartFramework\Scheduler\SchedulerServiceProvider; use Openguru\OpenCartFramework\Telegram\TelegramServiceProvider; use Openguru\OpenCartFramework\Telegram\TelegramValidateInitDataMiddleware; @@ -34,7 +34,7 @@ class ApplicationFactory TelegramServiceProvider::class, SchedulerServiceProvider::class, ValidatorServiceProvider::class, - TeleCartPulseServiceProvider::class, + MegaPayPulseServiceProvider::class, ImageToolServiceProvider::class, ]) ->withMiddlewares([ diff --git a/backend/src/app/Handlers/ETLHandler.php b/backend/src/app/Handlers/ETLHandler.php index fb4022d..b3793b2 100755 --- a/backend/src/app/Handlers/ETLHandler.php +++ b/backend/src/app/Handlers/ETLHandler.php @@ -32,9 +32,9 @@ class ETLHandler COALESCE(( SELECT MAX(date_modified) FROM oc_order as o - where o.customer_id = telecart_customers.oc_customer_id + where o.customer_id = megapay_customers.oc_customer_id ), 0), - telecart_customers.updated_at + megapay_customers.updated_at ) '; } @@ -44,7 +44,7 @@ class ETLHandler $lastUpdatedAtSql = $this->getLastUpdatedAtSql(); return $this->builder->newQuery() - ->from('telecart_customers') + ->from('megapay_customers') ->where('allows_write_to_pm', '=', 1) ->when($updatedAt !== null, function (Builder $builder) use ($lastUpdatedAtSql, $updatedAt) { $builder->where(new RawExpression($lastUpdatedAtSql), '>=', $updatedAt); @@ -101,7 +101,7 @@ class ETLHandler 'username', 'photo_url', 'telegram_user_id' => 'tg_user_id', - 'telecart_customers.oc_customer_id', + 'megapay_customers.oc_customer_id', 'is_premium', 'last_seen_at', 'orders_count' => 'orders_count_total', @@ -110,14 +110,14 @@ class ETLHandler '( SELECT MIN(date_added) FROM oc_order - WHERE oc_order.customer_id = telecart_customers.oc_customer_id + WHERE oc_order.customer_id = megapay_customers.oc_customer_id ) AS first_order_date' ), new RawExpression( '( SELECT MAX(date_added) FROM oc_order - WHERE oc_order.customer_id = telecart_customers.oc_customer_id + WHERE oc_order.customer_id = megapay_customers.oc_customer_id ) AS last_order_date' ), new RawExpression( @@ -127,7 +127,7 @@ class ETLHandler FROM oc_order WHERE - oc_order.customer_id = telecart_customers.oc_customer_id + oc_order.customer_id = megapay_customers.oc_customer_id AND oc_order.order_status_id IN ($successOrderStatusIds) ), 0) AS total_spent" ), @@ -138,7 +138,7 @@ class ETLHandler FROM oc_order WHERE - oc_order.customer_id = telecart_customers.oc_customer_id + oc_order.customer_id = megapay_customers.oc_customer_id AND oc_order.order_status_id IN ($successOrderStatusIds) ), 0) AS orders_count_success" ), diff --git a/backend/src/app/Handlers/FormsHandler.php b/backend/src/app/Handlers/FormsHandler.php index 2ab3aec..66150da 100755 --- a/backend/src/app/Handlers/FormsHandler.php +++ b/backend/src/app/Handlers/FormsHandler.php @@ -32,7 +32,7 @@ class FormsHandler } $form = $this->builder->newQuery() - ->from('telecart_forms') + ->from('megapay_forms') ->where('alias', '=', $alias) ->firstOrNull(); diff --git a/backend/src/app/Handlers/TelegramCustomerHandler.php b/backend/src/app/Handlers/TelegramCustomerHandler.php index 61de0a7..c6b343b 100755 --- a/backend/src/app/Handlers/TelegramCustomerHandler.php +++ b/backend/src/app/Handlers/TelegramCustomerHandler.php @@ -4,12 +4,12 @@ declare(strict_types=1); namespace App\Handlers; -use App\Services\TelecartCustomerService; +use App\Services\MegapayCustomerService; use Symfony\Component\HttpFoundation\JsonResponse; use Openguru\OpenCartFramework\Http\Request; use Symfony\Component\HttpFoundation\Response; use Openguru\OpenCartFramework\Support\Arr; -use Openguru\OpenCartFramework\TeleCartPulse\TrackingIdGenerator; +use Openguru\OpenCartFramework\MegaPayPulse\TrackingIdGenerator; use Openguru\OpenCartFramework\Telegram\Enums\TelegramHeader; use Openguru\OpenCartFramework\Telegram\Exceptions\DecodeTelegramInitDataException; use Openguru\OpenCartFramework\Telegram\TelegramInitDataDecoder; @@ -19,12 +19,12 @@ use Throwable; class TelegramCustomerHandler { - private TelecartCustomerService $telegramCustomerService; + private MegapayCustomerService $telegramCustomerService; private LoggerInterface $logger; private TelegramInitDataDecoder $initDataDecoder; public function __construct( - TelecartCustomerService $telegramCustomerService, + MegapayCustomerService $telegramCustomerService, LoggerInterface $logger, TelegramInitDataDecoder $initDataDecoder ) { diff --git a/backend/src/app/Handlers/TelemetryHandler.php b/backend/src/app/Handlers/TelemetryHandler.php index 1167822..1a0b36c 100755 --- a/backend/src/app/Handlers/TelemetryHandler.php +++ b/backend/src/app/Handlers/TelemetryHandler.php @@ -5,8 +5,8 @@ declare(strict_types=1); namespace App\Handlers; use Openguru\OpenCartFramework\Http\Request; -use Openguru\OpenCartFramework\TeleCartPulse\PulseIngestException; -use Openguru\OpenCartFramework\TeleCartPulse\TeleCartPulseService; +use Openguru\OpenCartFramework\MegaPayPulse\PulseIngestException; +use Openguru\OpenCartFramework\MegaPayPulse\MegaPayPulseService; use Psr\Log\LoggerInterface; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Response; @@ -14,14 +14,14 @@ use Throwable; class TelemetryHandler { - private TeleCartPulseService $teleCartPulseService; + private MegaPayPulseService $megaPayPulseService; private LoggerInterface $logger; public function __construct( - TeleCartPulseService $teleCartPulseService, + MegaPayPulseService $megaPayPulseService, LoggerInterface $logger ) { - $this->teleCartPulseService = $teleCartPulseService; + $this->megaPayPulseService = $megaPayPulseService; $this->logger = $logger; } @@ -30,7 +30,7 @@ class TelemetryHandler */ public function ingest(Request $request): JsonResponse { - $this->teleCartPulseService->handleIngest($request->json()); + $this->megaPayPulseService->handleIngest($request->json()); return new JsonResponse([], Response::HTTP_NO_CONTENT); } @@ -38,9 +38,9 @@ class TelemetryHandler public function heartbeat(): JsonResponse { try { - $this->teleCartPulseService->handleHeartbeat(); + $this->megaPayPulseService->handleHeartbeat(); } catch (Throwable $e) { - $this->logger->warning('TeleCart Pulse Heartbeat failed: ' . $e->getMessage(), ['exception' => $e]); + $this->logger->warning('MegaPay Pulse Heartbeat failed: ' . $e->getMessage(), ['exception' => $e]); } return new JsonResponse(['status' => 'ok']); diff --git a/backend/src/app/Models/TelegramCustomer.php b/backend/src/app/Models/TelegramCustomer.php index 2aaa9b9..facd44e 100755 --- a/backend/src/app/Models/TelegramCustomer.php +++ b/backend/src/app/Models/TelegramCustomer.php @@ -7,12 +7,12 @@ namespace App\Models; use Carbon\Carbon; use Openguru\OpenCartFramework\QueryBuilder\Builder; use Openguru\OpenCartFramework\QueryBuilder\Connections\ConnectionInterface; -use Openguru\OpenCartFramework\TeleCartPulse\TrackingIdGenerator; +use Openguru\OpenCartFramework\MegaPayPulse\TrackingIdGenerator; use RuntimeException; class TelegramCustomer { - private const TABLE_NAME = 'telecart_customers'; + private const TABLE_NAME = 'megapay_customers'; private ConnectionInterface $database; private Builder $builder; diff --git a/backend/src/app/ServiceProviders/AppServiceProvider.php b/backend/src/app/ServiceProviders/AppServiceProvider.php index 9b22247..2efb99b 100755 --- a/backend/src/app/ServiceProviders/AppServiceProvider.php +++ b/backend/src/app/ServiceProviders/AppServiceProvider.php @@ -44,7 +44,7 @@ class AppServiceProvider extends ServiceProvider $registry->addCommand( 'start', StartCommand::class, - 'Базовая команда Telegram бота. Присылает ссылку на открытие Telecart магазина.' + 'Базовая команда Telegram бота. Присылает ссылку на открытие Megapay магазина.' ); } diff --git a/backend/src/app/Services/OcCustomerService.php b/backend/src/app/Services/OcCustomerService.php index 56e0932..fb450c2 100755 --- a/backend/src/app/Services/OcCustomerService.php +++ b/backend/src/app/Services/OcCustomerService.php @@ -17,7 +17,7 @@ class OcCustomerService $this->database = $database; } - public function create(array $orderData, ?int $telecartCustomerId): ?int + public function create(array $orderData, ?int $megapayCustomerId): ?int { $customerData = [ 'customer_group_id' => $orderData['customer_group_id'], @@ -41,10 +41,10 @@ class OcCustomerService $this->database->insert(db_table('customer'), $customerData); $lastInsertId = $this->database->lastInsertId(); - if ($telecartCustomerId) { + if ($megapayCustomerId) { $this->builder - ->where('id', '=', $telecartCustomerId) - ->update('telecart_customers', [ + ->where('id', '=', $megapayCustomerId) + ->update('megapay_customers', [ 'oc_customer_id' => $lastInsertId, ]); } @@ -52,15 +52,15 @@ class OcCustomerService return $lastInsertId; } - public function findByTelecartCustomerId(int $telegramCustomerId): ?array + public function findByMegapayCustomerId(int $telegramCustomerId): ?array { return $this->builder->newQuery() ->select(['oc_customers.*']) ->from(db_table('customer'), 'oc_customers') - ->join('telecart_customers', function (JoinClause $join) { - $join->on('telecart_customers.oc_customer_id', '=', 'oc_customers.customer_id'); + ->join('megapay_customers', function (JoinClause $join) { + $join->on('megapay_customers.oc_customer_id', '=', 'oc_customers.customer_id'); }) - ->where('telecart_customers.id', '=', $telegramCustomerId) + ->where('megapay_customers.id', '=', $telegramCustomerId) ->firstOrNull(); } @@ -73,12 +73,12 @@ class OcCustomerService ->firstOrNull(); } - public function findOrCreateByTelecartCustomerId(int $telecartCustomerId, array $orderData): ?array + public function findOrCreateByMegapayCustomerId(int $megapayCustomerId, array $orderData): ?array { - $ocCustomer = $this->findByTelecartCustomerId($telecartCustomerId); + $ocCustomer = $this->findByMegapayCustomerId($megapayCustomerId); if (! $ocCustomer) { - $ocCustomerId = $this->create($orderData, $telecartCustomerId); + $ocCustomerId = $this->create($orderData, $megapayCustomerId); return $this->findById($ocCustomerId); } diff --git a/backend/src/app/Services/OrderCreateService.php b/backend/src/app/Services/OrderCreateService.php index df4ec13..ba5d34c 100755 --- a/backend/src/app/Services/OrderCreateService.php +++ b/backend/src/app/Services/OrderCreateService.php @@ -23,7 +23,7 @@ class OrderCreateService private SettingsService $settings; private TelegramService $telegramService; private LoggerInterface $logger; - private TelecartCustomerService $telecartCustomerService; + private MegapayCustomerService $megapayCustomerService; private OcCustomerService $ocCustomerService; private OrderMetaService $orderMetaService; @@ -34,7 +34,7 @@ class OrderCreateService SettingsService $settings, TelegramService $telegramService, LoggerInterface $logger, - TelecartCustomerService $telegramCustomerService, + MegapayCustomerService $telegramCustomerService, OcCustomerService $ocCustomerService, OrderMetaService $orderMetaService ) { @@ -44,7 +44,7 @@ class OrderCreateService $this->settings = $settings; $this->telegramService = $telegramService; $this->logger = $logger; - $this->telecartCustomerService = $telegramCustomerService; + $this->megapayCustomerService = $telegramCustomerService; $this->ocCustomerService = $ocCustomerService; $this->orderMetaService = $orderMetaService; } @@ -110,9 +110,9 @@ class OrderCreateService try { $this->database->beginTransaction(); - $telecartCustomer = $this->telecartCustomerService->saveOrUpdate($telegramUserdata); - $telecartCustomerId = (int) $telecartCustomer['id']; - $ocCustomer = $this->ocCustomerService->findOrCreateByTelecartCustomerId($telecartCustomerId, $orderData); + $megapayCustomer = $this->megapayCustomerService->saveOrUpdate($telegramUserdata); + $megapayCustomerId = (int) $megapayCustomer['id']; + $ocCustomer = $this->ocCustomerService->findOrCreateByMegapayCustomerId($megapayCustomerId, $orderData); $ocCustomerId = (int) $ocCustomer['customer_id']; $orderData['customer_id'] = $ocCustomerId; @@ -131,10 +131,10 @@ class OrderCreateService // Insert order meta data if ($customOrderFields) { - $this->orderMetaService->insert($orderId, $storeId, $customOrderFields, $telecartCustomerId); + $this->orderMetaService->insert($orderId, $storeId, $customOrderFields, $megapayCustomerId); } - $this->telecartCustomerService->increaseOrdersCount($telecartCustomerId); + $this->megapayCustomerService->increaseOrdersCount($megapayCustomerId); $this->database->commitTransaction(); } catch (Throwable $exception) { diff --git a/backend/src/app/Services/OrderMetaService.php b/backend/src/app/Services/OrderMetaService.php index 4eb01bf..c8a7f2e 100755 --- a/backend/src/app/Services/OrderMetaService.php +++ b/backend/src/app/Services/OrderMetaService.php @@ -13,15 +13,15 @@ class OrderMetaService $this->connection = $connection; } - public function insert(int $orderId, int $storeId, array $fields, ?int $telecartCustomerId = null): void + public function insert(int $orderId, int $storeId, array $fields, ?int $megapayCustomerId = null): void { $orderMeta = [ 'oc_order_id' => $orderId, 'oc_store_id' => $storeId, - 'telecart_customer_id' => $telecartCustomerId, + 'megapay_customer_id' => $megapayCustomerId, 'meta_data' => json_encode($fields, JSON_THROW_ON_ERROR), ]; - $this->connection->insert('telecart_order_meta', $orderMeta); + $this->connection->insert('megapay_order_meta', $orderMeta); } } diff --git a/backend/src/app/Services/ProductsService.php b/backend/src/app/Services/ProductsService.php index e085688..517e4d4 100755 --- a/backend/src/app/Services/ProductsService.php +++ b/backend/src/app/Services/ProductsService.php @@ -287,7 +287,7 @@ class ProductsService $data['share'] = Str::htmlEntityEncode( $this->oc->url->link('product/product', [ 'product_id' => $productId, - 'utm_source' => 'telecart', + 'utm_source' => 'megapay', 'utm_medium' => 'telegram', 'utm_campaign' => 'product_click', 'utm_content' => 'product_button', diff --git a/backend/src/app/Services/TelecartCustomerService.php b/backend/src/app/Services/TelecartCustomerService.php index 7208d78..3a76fce 100755 --- a/backend/src/app/Services/TelecartCustomerService.php +++ b/backend/src/app/Services/TelecartCustomerService.php @@ -11,7 +11,7 @@ use Openguru\OpenCartFramework\Support\Arr; use Openguru\OpenCartFramework\Support\Utils; use RuntimeException; -class TelecartCustomerService +class MegapayCustomerService { private TelegramCustomer $telegramCustomer; private Settings $settings; @@ -87,7 +87,7 @@ class TelecartCustomerService } /** - * Assign OpenCart Customer to Telegram User ID and return Telecart Customer ID if it exists. + * Assign OpenCart Customer to Telegram User ID and return Megapay Customer ID if it exists. * * @param $telegramUserId * @param int $ocCustomerId @@ -111,9 +111,9 @@ class TelecartCustomerService return (int)$customer['id']; } - public function increaseOrdersCount(int $telecartCustomerId): void + public function increaseOrdersCount(int $megapayCustomerId): void { - $this->telegramCustomer->increase($telecartCustomerId, 'orders_count'); + $this->telegramCustomer->increase($megapayCustomerId, 'orders_count'); } /** diff --git a/backend/src/app/Telegram/LinkCommand.php b/backend/src/app/Telegram/LinkCommand.php index e71acf6..49956ad 100755 --- a/backend/src/app/Telegram/LinkCommand.php +++ b/backend/src/app/Telegram/LinkCommand.php @@ -42,7 +42,7 @@ class LinkCommand extends TelegramCommand $greeting = $this->telegram->escapeTgSpecialCharacters( <<telegram->prepareMessage($template, [ - '{LINK}' => 'https://telecart-labs.github.io/docs/telegram/telegram/#direct-link', + '{LINK}' => 'https://megapay-labs.github.io/docs/telegram/telegram/#direct-link', ]); $this->telegram->sendMessage($chatId, $text); diff --git a/backend/src/bastion/ApplicationFactory.php b/backend/src/bastion/ApplicationFactory.php index 629f68e..0238e73 100755 --- a/backend/src/bastion/ApplicationFactory.php +++ b/backend/src/bastion/ApplicationFactory.php @@ -12,7 +12,7 @@ use Openguru\OpenCartFramework\ImageTool\ImageToolServiceProvider; use Openguru\OpenCartFramework\QueryBuilder\QueryBuilderServiceProvider; use Openguru\OpenCartFramework\Router\RouteServiceProvider; use Openguru\OpenCartFramework\Support\Arr; -use Openguru\OpenCartFramework\TeleCartPulse\TeleCartPulseServiceProvider; +use Openguru\OpenCartFramework\MegaPayPulse\MegaPayPulseServiceProvider; use Openguru\OpenCartFramework\Telegram\TelegramServiceProvider; class ApplicationFactory @@ -33,7 +33,7 @@ class ApplicationFactory AppServiceProvider::class, CacheServiceProvider::class, TelegramServiceProvider::class, - TeleCartPulseServiceProvider::class, + MegaPayPulseServiceProvider::class, ImageToolServiceProvider::class, ]); } diff --git a/backend/src/bastion/Handlers/FormsHandler.php b/backend/src/bastion/Handlers/FormsHandler.php index 3609fb1..f12bf1f 100755 --- a/backend/src/bastion/Handlers/FormsHandler.php +++ b/backend/src/bastion/Handlers/FormsHandler.php @@ -33,7 +33,7 @@ class FormsHandler } $form = $this->builder->newQuery() - ->from('telecart_forms') + ->from('megapay_forms') ->where('alias', '=', $alias) ->firstOrNull(); diff --git a/backend/src/bastion/Handlers/LogsHandler.php b/backend/src/bastion/Handlers/LogsHandler.php index a9d8416..1d7adf3 100755 --- a/backend/src/bastion/Handlers/LogsHandler.php +++ b/backend/src/bastion/Handlers/LogsHandler.php @@ -198,7 +198,7 @@ class LogsHandler private function findLastLogsFileInDir(string $dir): ?string { - $files = glob($dir . '/telecart-*.log'); + $files = glob($dir . '/megapay-*.log'); return $files ? end($files) : null; } diff --git a/backend/src/bastion/Handlers/SendMessageHandler.php b/backend/src/bastion/Handlers/SendMessageHandler.php index e2b04b9..69f002e 100755 --- a/backend/src/bastion/Handlers/SendMessageHandler.php +++ b/backend/src/bastion/Handlers/SendMessageHandler.php @@ -87,7 +87,7 @@ class SendMessageHandler * Извлечь ID записи из запроса * * @param Request $request HTTP запрос - * @return int ID записи в таблице telecart_customers + * @return int ID записи в таблице megapay_customers * @throws RuntimeException Если ID отсутствует или невалиден */ private function extractCustomerId(Request $request): int diff --git a/backend/src/bastion/Handlers/SettingsHandler.php b/backend/src/bastion/Handlers/SettingsHandler.php index 35a87eb..5bd73c7 100755 --- a/backend/src/bastion/Handlers/SettingsHandler.php +++ b/backend/src/bastion/Handlers/SettingsHandler.php @@ -112,7 +112,7 @@ class SettingsHandler $data['scheduled_jobs'] = $this->scheduledJob->all(); $forms = $this->builder->newQuery() - ->from('telecart_forms') + ->from('megapay_forms') ->get(); if ($forms) { @@ -184,7 +184,7 @@ class SettingsHandler $schema = json_encode($form['schema'], JSON_THROW_ON_ERROR); $this->builder->newQuery() ->where('alias', '=', $form['alias']) - ->update('telecart_forms', [ + ->update('megapay_forms', [ 'friendly_name' => $form['friendly_name'], 'is_custom' => $form['is_custom'], 'schema' => $schema, @@ -267,7 +267,7 @@ class SettingsHandler $info['MySQL Version'] = 'Error: ' . $e->getMessage(); } - $cacheDriver = env('TELECART_CACHE_DRIVER', 'mysql'); + $cacheDriver = env('MEGAPAY_CACHE_DRIVER', 'mysql'); $cacheClass = get_class($this->cache); $info['Cache Driver'] = $cacheDriver . ' (' . basename(str_replace('\\', '/', $cacheClass)) . ')'; diff --git a/backend/src/bastion/Handlers/StatsHandler.php b/backend/src/bastion/Handlers/StatsHandler.php index 72af1ed..00eb794 100755 --- a/backend/src/bastion/Handlers/StatsHandler.php +++ b/backend/src/bastion/Handlers/StatsHandler.php @@ -30,12 +30,12 @@ class StatsHandler new RawExpression('SUM(orders.total) AS orders_total_amount'), ]) ->from(db_table('order'), 'orders') - ->join('telecart_customers', function (JoinClause $join) { - $join->on('orders.customer_id', '=', 'telecart_customers.oc_customer_id'); + ->join('megapay_customers', function (JoinClause $join) { + $join->on('orders.customer_id', '=', 'megapay_customers.oc_customer_id'); }) - ->join('telecart_order_meta', function (JoinClause $join) { - $join->on('orders.order_id', '=', 'telecart_order_meta.oc_order_id') - ->whereRaw('orders.store_id = telecart_order_meta.oc_store_id'); + ->join('megapay_order_meta', function (JoinClause $join) { + $join->on('orders.order_id', '=', 'megapay_order_meta.oc_order_id') + ->whereRaw('orders.store_id = megapay_order_meta.oc_store_id'); }) ->firstOrNull(); @@ -54,7 +54,7 @@ class StatsHandler private function countCustomersCount(): int { return $this->builder->newQuery() - ->from('telecart_customers') + ->from('megapay_customers') ->count(); } } diff --git a/backend/src/bastion/Handlers/TeleCartPulseStatsHandler.php b/backend/src/bastion/Handlers/TeleCartPulseStatsHandler.php index add8947..a37a87e 100755 --- a/backend/src/bastion/Handlers/TeleCartPulseStatsHandler.php +++ b/backend/src/bastion/Handlers/TeleCartPulseStatsHandler.php @@ -3,17 +3,17 @@ namespace Bastion\Handlers; use Openguru\OpenCartFramework\Cache\CacheInterface; -use Openguru\OpenCartFramework\TeleCartPulse\TeleCartEvent; +use Openguru\OpenCartFramework\MegaPayPulse\MegaPayEvent; use Symfony\Component\HttpFoundation\JsonResponse; -class TeleCartPulseStatsHandler +class MegaPayPulseStatsHandler { - private TeleCartEvent $eventModel; + private MegaPayEvent $eventModel; private CacheInterface $cache; - private const CACHE_KEY = 'telecart_pulse_stats'; + private const CACHE_KEY = 'megapay_pulse_stats'; private const CACHE_TTL = 3600; // 1 час - public function __construct(TeleCartEvent $eventModel, CacheInterface $cache) + public function __construct(MegaPayEvent $eventModel, CacheInterface $cache) { $this->eventModel = $eventModel; $this->cache = $cache; diff --git a/backend/src/bastion/Handlers/TelegramCustomersHandler.php b/backend/src/bastion/Handlers/TelegramCustomersHandler.php index 21a5765..ef86424 100755 --- a/backend/src/bastion/Handlers/TelegramCustomersHandler.php +++ b/backend/src/bastion/Handlers/TelegramCustomersHandler.php @@ -12,7 +12,7 @@ use Openguru\OpenCartFramework\Support\Arr; class TelegramCustomersHandler { - private const TABLE_NAME = 'telecart_customers'; + private const TABLE_NAME = 'megapay_customers'; private const DEFAULT_PAGE = 1; private const DEFAULT_ROWS = 20; private const DEFAULT_SORT_FIELD = 'last_seen_at'; diff --git a/backend/src/bastion/ScheduledTasks/TeleCartPulseSendEventsTask.php b/backend/src/bastion/ScheduledTasks/TeleCartPulseSendEventsTask.php index 670a9fa..ab3f613 100755 --- a/backend/src/bastion/ScheduledTasks/TeleCartPulseSendEventsTask.php +++ b/backend/src/bastion/ScheduledTasks/TeleCartPulseSendEventsTask.php @@ -6,15 +6,15 @@ use GuzzleHttp\Exception\GuzzleException; use Openguru\OpenCartFramework\Cache\CacheInterface; use Openguru\OpenCartFramework\Config\Settings; use Openguru\OpenCartFramework\Scheduler\TaskInterface; -use Openguru\OpenCartFramework\TeleCartPulse\TeleCartEvent; -use Openguru\OpenCartFramework\TeleCartPulse\TeleCartPulseEventsSender; +use Openguru\OpenCartFramework\MegaPayPulse\MegaPayEvent; +use Openguru\OpenCartFramework\MegaPayPulse\MegaPayPulseEventsSender; use Psr\Log\LoggerInterface; use Throwable; -class TeleCartPulseSendEventsTask implements TaskInterface +class MegaPayPulseSendEventsTask implements TaskInterface { - private TeleCartEvent $eventModel; - private TeleCartPulseEventsSender $eventsSender; + private MegaPayEvent $eventModel; + private MegaPayPulseEventsSender $eventsSender; private LoggerInterface $logger; private CacheInterface $cache; private Settings $settings; @@ -23,8 +23,8 @@ class TeleCartPulseSendEventsTask implements TaskInterface public function __construct( Settings $settings, - TeleCartEvent $eventModel, - TeleCartPulseEventsSender $eventsSender, + MegaPayEvent $eventModel, + MegaPayPulseEventsSender $eventsSender, LoggerInterface $logger, CacheInterface $cache ) { @@ -82,7 +82,7 @@ class TeleCartPulseSendEventsTask implements TaskInterface 'failed' => $failed, ]); } catch (Throwable $e) { - $this->logger->error("TeleCartPulseSendEventsTask failed: " . $e->getMessage(), [ + $this->logger->error("MegaPayPulseSendEventsTask failed: " . $e->getMessage(), [ 'exception' => $e, ]); } finally { @@ -117,8 +117,8 @@ class TeleCartPulseSendEventsTask implements TaskInterface return true; } - // TeleCart Pulse не вернул подтверждение - $errorReason = 'No confirmation received from TeleCart Pulse'; + // MegaPay Pulse не вернул подтверждение + $errorReason = 'No confirmation received from MegaPay Pulse'; $this->handleFailedAttempt($eventId, $attemptsCount, $errorReason); } catch (GuzzleException $e) { // Ошибка HTTP запроса @@ -170,6 +170,6 @@ class TeleCartPulseSendEventsTask implements TaskInterface */ private function clearStatsCache(): void { - $this->cache->delete('telecart_pulse_stats'); + $this->cache->delete('megapay_pulse_stats'); } } diff --git a/backend/src/bastion/Services/SettingsService.php b/backend/src/bastion/Services/SettingsService.php index cc89106..b65c37b 100755 --- a/backend/src/bastion/Services/SettingsService.php +++ b/backend/src/bastion/Services/SettingsService.php @@ -23,8 +23,8 @@ class SettingsService public function update(array $data): void { $this->connection->transaction(function () use ($data) { - $this->registry->model_setting_setting->editSetting('module_telecart', [ - 'module_telecart_settings' => $data, + $this->registry->model_setting_setting->editSetting('module_megapay', [ + 'module_megapay_settings' => $data, ]); $this->registry->model_setting_setting->editSetting('module_tgshop', [ diff --git a/backend/src/bastion/routes.php b/backend/src/bastion/routes.php index 7a048a5..2866ca4 100755 --- a/backend/src/bastion/routes.php +++ b/backend/src/bastion/routes.php @@ -8,7 +8,7 @@ use Bastion\Handlers\LogsHandler; use Bastion\Handlers\SendMessageHandler; use Bastion\Handlers\SettingsHandler; use Bastion\Handlers\StatsHandler; -use Bastion\Handlers\TeleCartPulseStatsHandler; +use Bastion\Handlers\MegaPayPulseStatsHandler; use Bastion\Handlers\TelegramCustomersHandler; use Bastion\Handlers\TelegramHandler; @@ -33,5 +33,5 @@ return [ 'sendMessageToCustomer' => [SendMessageHandler::class, 'sendMessage'], 'testTgMessage' => [TelegramHandler::class, 'testTgMessage'], 'tgGetMe' => [TelegramHandler::class, 'tgGetMe'], - 'getTeleCartPulseStats' => [TeleCartPulseStatsHandler::class, 'getStats'], + 'getMegaPayPulseStats' => [MegaPayPulseStatsHandler::class, 'getStats'], ]; diff --git a/backend/src/cli.php b/backend/src/cli.php index aa60b02..473d49d 100755 --- a/backend/src/cli.php +++ b/backend/src/cli.php @@ -42,7 +42,7 @@ $prefix = DB_PREFIX; $dsn = "mysql:host=$host;port=$port;dbname=$dbName"; $pdo = new PDO($dsn, $username, $password); $connection = new MySqlConnection($pdo); -$raw = $connection->select("SELECT value FROM `{$prefix}setting` WHERE `key` = 'module_telecart_settings'"); +$raw = $connection->select("SELECT value FROM `{$prefix}setting` WHERE `key` = 'module_megapay_settings'"); $timezone = $connection->select("SELECT value FROM `{$prefix}setting` WHERE `key` = 'config_timezone'"); $timezone = $timezone[0]['value'] ?? 'UTC'; $json = json_decode($raw[0]['value'], true, 512, JSON_THROW_ON_ERROR); @@ -79,10 +79,10 @@ $items = Arr::mergeArraysRecursively($json, [ ], ]); -$logger = new Logger('TeleCart_CLI', [], [], new DateTimeZone('UTC')); +$logger = new Logger('MegaPay_CLI', [], [], new DateTimeZone('UTC')); $logger->pushHandler( new RotatingFileHandler( - DIR_LOGS . '/telecart.log', 14, $debug ? Logger::DEBUG : Logger::INFO + DIR_LOGS . '/megapay.log', 14, $debug ? Logger::DEBUG : Logger::INFO ), ); @@ -90,7 +90,7 @@ $app = ApplicationFactory::create($items); $app->setLogger($logger); $app->boot(); -$console = new Application('TeleCart', module_version()); +$console = new Application('MegaPay', module_version()); $console->add($app->get(VersionCommand::class)); $console->add($app->get(ScheduleRunCommand::class)); $console->add($app->get(PulseSendEventsCommand::class)); diff --git a/backend/src/configs/app.php b/backend/src/configs/app.php index 0cdc52f..3851c16 100755 --- a/backend/src/configs/app.php +++ b/backend/src/configs/app.php @@ -3,7 +3,7 @@ return [ 'app' => [ 'app_enabled' => true, - 'app_name' => 'Telecart', + 'app_name' => 'Megapay', 'app_icon' => null, "theme_light" => "light", "theme_dark" => "dark", @@ -104,15 +104,15 @@ HTML, ], 'cache' => [ - 'namespace' => 'telecart', + 'namespace' => 'megapay', 'default_lifetime' => 60 * 60 * 24, 'options' => [ - 'db_table' => 'telecart_cache_items', + 'db_table' => 'megapay_cache_items', ], ], 'paths' => [ - 'images_cache' => 'cache/telecart', + 'images_cache' => 'cache/megapay', ], 'cron' => [ diff --git a/backend/src/console/ApplicationFactory.php b/backend/src/console/ApplicationFactory.php index 31130c6..6eea4e3 100755 --- a/backend/src/console/ApplicationFactory.php +++ b/backend/src/console/ApplicationFactory.php @@ -10,7 +10,7 @@ use Openguru\OpenCartFramework\ImageTool\ImageToolServiceProvider; use Openguru\OpenCartFramework\QueryBuilder\QueryBuilderServiceProvider; use Openguru\OpenCartFramework\Scheduler\SchedulerServiceProvider; use Openguru\OpenCartFramework\Support\Arr; -use Openguru\OpenCartFramework\TeleCartPulse\TeleCartPulseServiceProvider; +use Openguru\OpenCartFramework\MegaPayPulse\MegaPayPulseServiceProvider; use Openguru\OpenCartFramework\Telegram\TelegramServiceProvider; class ApplicationFactory @@ -28,7 +28,7 @@ class ApplicationFactory AppServiceProvider::class, CacheServiceProvider::class, TelegramServiceProvider::class, - TeleCartPulseServiceProvider::class, + MegaPayPulseServiceProvider::class, SchedulerServiceProvider::class, ImageToolServiceProvider::class, ]); diff --git a/backend/src/console/Commands/CacheClearCommand.php b/backend/src/console/Commands/CacheClearCommand.php index 4a97d73..5a44592 100644 --- a/backend/src/console/Commands/CacheClearCommand.php +++ b/backend/src/console/Commands/CacheClearCommand.php @@ -10,10 +10,10 @@ use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Style\SymfonyStyle; -class CacheClearCommand extends TeleCartCommand +class CacheClearCommand extends MegaPayCommand { protected static $defaultName = 'cache:clear'; - protected static $defaultDescription = 'Очистка кеша модуля TeleCart'; + protected static $defaultDescription = 'Очистка кеша модуля MegaPay'; private CacheInterface $cache; @@ -27,7 +27,7 @@ class CacheClearCommand extends TeleCartCommand { $io = new SymfonyStyle($input, $output); - $io->title('Очистка кеша модуля TeleCart'); + $io->title('Очистка кеша модуля MegaPay'); try { $this->cache->clear(); diff --git a/backend/src/console/Commands/CustomerCountsCommand.php b/backend/src/console/Commands/CustomerCountsCommand.php index 3cc7dc2..b958043 100755 --- a/backend/src/console/Commands/CustomerCountsCommand.php +++ b/backend/src/console/Commands/CustomerCountsCommand.php @@ -8,7 +8,7 @@ use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Style\SymfonyStyle; -class CustomerCountsCommand extends TeleCartCommand +class CustomerCountsCommand extends MegaPayCommand { protected static $defaultName = 'customer:counts'; protected static $defaultDescription = 'Обновление счетчиков заказов для всех клиентов'; @@ -29,8 +29,8 @@ class CustomerCountsCommand extends TeleCartCommand $io->writeln('Выполняется пересчёт счетчиков заказов...'); $sql = <<container->getConfigValue('paths.images'); - $cachePath = $this->container->getConfigValue('paths.images_cache', 'cache/telecart'); + $cachePath = $this->container->getConfigValue('paths.images_cache', 'cache/megapay'); $cachePath = ltrim($cachePath, '/'); $fullCachePath = rtrim($imagesDir, '/') . '/' . $cachePath; diff --git a/backend/src/console/Commands/ImagesWarmupCacheCommand.php b/backend/src/console/Commands/ImagesWarmupCacheCommand.php index 86828d3..6d19f24 100755 --- a/backend/src/console/Commands/ImagesWarmupCacheCommand.php +++ b/backend/src/console/Commands/ImagesWarmupCacheCommand.php @@ -16,7 +16,7 @@ use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Style\SymfonyStyle; -class ImagesWarmupCacheCommand extends TeleCartCommand +class ImagesWarmupCacheCommand extends MegaPayCommand { protected static $defaultName = 'images:warmup'; protected static $defaultDescription = 'Прогрев кеша изображений товаров'; diff --git a/backend/src/console/Commands/PulseSendEventsCommand.php b/backend/src/console/Commands/PulseSendEventsCommand.php index 1b6b5e0..1636886 100755 --- a/backend/src/console/Commands/PulseSendEventsCommand.php +++ b/backend/src/console/Commands/PulseSendEventsCommand.php @@ -2,27 +2,27 @@ namespace Console\Commands; -use Bastion\ScheduledTasks\TeleCartPulseSendEventsTask; +use Bastion\ScheduledTasks\MegaPayPulseSendEventsTask; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; -class PulseSendEventsCommand extends TeleCartCommand +class PulseSendEventsCommand extends MegaPayCommand { protected static $defaultName = 'pulse:send'; protected static $defaultDescription = 'Manually send pulse events ignoring schedule.'; - private TeleCartPulseSendEventsTask $teleCartPulseSendEventsTask; + private MegaPayPulseSendEventsTask $megaPayPulseSendEventsTask; - public function __construct(TeleCartPulseSendEventsTask $teleCartPulseSendEventsTask) + public function __construct(MegaPayPulseSendEventsTask $megaPayPulseSendEventsTask) { parent::__construct(); - $this->teleCartPulseSendEventsTask = $teleCartPulseSendEventsTask; + $this->megaPayPulseSendEventsTask = $megaPayPulseSendEventsTask; } protected function execute(InputInterface $input, OutputInterface $output): int { $output->writeln('Sending Pulse events.'); - $this->teleCartPulseSendEventsTask->execute(); + $this->megaPayPulseSendEventsTask->execute(); return self::SUCCESS; } diff --git a/backend/src/console/Commands/ScheduleRunCommand.php b/backend/src/console/Commands/ScheduleRunCommand.php index 620281c..90c8613 100755 --- a/backend/src/console/Commands/ScheduleRunCommand.php +++ b/backend/src/console/Commands/ScheduleRunCommand.php @@ -10,7 +10,7 @@ use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; -class ScheduleRunCommand extends TeleCartCommand +class ScheduleRunCommand extends MegaPayCommand { private SchedulerService $scheduler; private Settings $settings; @@ -46,7 +46,7 @@ class ScheduleRunCommand extends TeleCartCommand $output->writeln( sprintf( - '[%s] TeleCart Scheduler Running...', + '[%s] MegaPay Scheduler Running...', Carbon::now()->toJSON(), ) ); diff --git a/backend/src/console/Commands/TeleCartCommand.php b/backend/src/console/Commands/TeleCartCommand.php index b17726e..c9d0b39 100755 --- a/backend/src/console/Commands/TeleCartCommand.php +++ b/backend/src/console/Commands/TeleCartCommand.php @@ -4,7 +4,7 @@ namespace Console\Commands; use Symfony\Component\Console\Command\Command; -abstract class TeleCartCommand extends Command +abstract class MegaPayCommand extends Command { public function __construct() { diff --git a/backend/src/console/Commands/VersionCommand.php b/backend/src/console/Commands/VersionCommand.php index 2d281a3..560d39d 100755 --- a/backend/src/console/Commands/VersionCommand.php +++ b/backend/src/console/Commands/VersionCommand.php @@ -6,13 +6,13 @@ use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; -class VersionCommand extends TeleCartCommand +class VersionCommand extends MegaPayCommand { protected static $defaultName = 'version'; protected function execute(InputInterface $input, OutputInterface $output): int { - $output->writeln('TeleCart Version: ' . module_version()); + $output->writeln('MegaPay Version: ' . module_version()); return Command::SUCCESS; } diff --git a/backend/src/database/migrations/20260101000000_migrate_from_legacy_settings.php b/backend/src/database/migrations/20260101000000_migrate_from_legacy_settings.php index 7933696..4445b76 100755 --- a/backend/src/database/migrations/20260101000000_migrate_from_legacy_settings.php +++ b/backend/src/database/migrations/20260101000000_migrate_from_legacy_settings.php @@ -15,7 +15,7 @@ return new class extends Migration { return; } - $newSettings = $opencart->model_setting_setting->getSetting('module_telecart'); + $newSettings = $opencart->model_setting_setting->getSetting('module_megapay'); static $mapLegacyToNewSettings = [ 'module_tgshop_app_icon' => 'app.app_icon', @@ -62,8 +62,8 @@ return new class extends Migration { } } - $opencart->model_setting_setting->editSetting('module_telecart', [ - 'module_telecart_settings' => $data, + $opencart->model_setting_setting->editSetting('module_megapay', [ + 'module_megapay_settings' => $data, ]); $this->logger->info('Выполнено обновление настроек с 1й версии модуля.'); diff --git a/backend/src/database/migrations/20260101000003_create_telecart_forms_table.php b/backend/src/database/migrations/20260101000003_create_telecart_forms_table.php index 26acce8..e150257 100755 --- a/backend/src/database/migrations/20260101000003_create_telecart_forms_table.php +++ b/backend/src/database/migrations/20260101000003_create_telecart_forms_table.php @@ -6,7 +6,7 @@ return new class extends Migration { public function up(): void { $sql = <<database->insert('telecart_forms', [ + $this->database->insert('megapay_forms', [ 'alias' => 'checkout', 'friendly_name' => 'Оформление заказа', 'schema' => $checkoutForm, diff --git a/backend/src/database/migrations/20260101000005_create_telecart_customers_table.php b/backend/src/database/migrations/20260101000005_create_telecart_customers_table.php index e800c1d..3dbc1b1 100755 --- a/backend/src/database/migrations/20260101000005_create_telecart_customers_table.php +++ b/backend/src/database/migrations/20260101000005_create_telecart_customers_table.php @@ -5,7 +5,7 @@ use Openguru\OpenCartFramework\Migrations\Migration; return new class extends Migration { public function up(): void { - $tableName = 'telecart_customers'; + $tableName = 'megapay_customers'; $sql = <<app->get(OcRegistryDecorator::class); $opencart->load->model('setting/setting'); - $currentSettings = $opencart->model_setting_setting->getSetting('module_telecart'); + $currentSettings = $opencart->model_setting_setting->getSetting('module_megapay'); - if (! $currentSettings || ! isset($currentSettings['module_telecart_settings'])) { + if (! $currentSettings || ! isset($currentSettings['module_megapay_settings'])) { $this->logger->info("Settings not found in database, migration skipped"); return; } - $allSettings = $currentSettings['module_telecart_settings']; + $allSettings = $currentSettings['module_megapay_settings']; // Проверяем наличие store.enable_store $enableStore = Arr::get($allSettings, 'store.enable_store'); @@ -41,8 +41,8 @@ return new class extends Migration { $this->logger->info("Removed store.enable_store from settings"); // Сохраняем обновленные настройки через OpenCart модель - $opencart->model_setting_setting->editSetting('module_telecart', [ - 'module_telecart_settings' => $allSettings, + $opencart->model_setting_setting->editSetting('module_megapay', [ + 'module_megapay_settings' => $allSettings, ]); $this->logger->info("Successfully migrated store.enable_store to product_interaction_mode and removed store.enable_store from settings"); diff --git a/backend/src/database/migrations/20260103000000_fill_empty_usernames_in_telecart_customers.php b/backend/src/database/migrations/20260103000000_fill_empty_usernames_in_telecart_customers.php index a09dccf..4d9b366 100644 --- a/backend/src/database/migrations/20260103000000_fill_empty_usernames_in_telecart_customers.php +++ b/backend/src/database/migrations/20260103000000_fill_empty_usernames_in_telecart_customers.php @@ -6,7 +6,7 @@ return new class extends Migration { public function up(): void { $sql = <<database->insert('telecart_scheduled_jobs', [ - 'name' => 'telecart_pulse_send_events', - 'task' => TeleCartPulseSendEventsTask::class, + $this->database->insert('megapay_scheduled_jobs', [ + 'name' => 'megapay_pulse_send_events', + 'task' => MegaPayPulseSendEventsTask::class, 'is_enabled' => 0, 'cron_expression' => '*/10 * * * *', 'last_success_at' => null, diff --git a/backend/src/framework/Cache/CacheServiceProvider.php b/backend/src/framework/Cache/CacheServiceProvider.php index fc1653a..fb4bc2c 100755 --- a/backend/src/framework/Cache/CacheServiceProvider.php +++ b/backend/src/framework/Cache/CacheServiceProvider.php @@ -31,10 +31,10 @@ class CacheServiceProvider extends ServiceProvider // Регистрация RedisAdapter для Redis кеша $this->container->singleton(RedisAdapter::class, function (Container $container) { - $host = env('TELECART_REDIS_HOST', '127.0.0.1'); - $port = (int) env('TELECART_REDIS_PORT', 6379); - $password = env('TELECART_REDIS_PASSWORD', null); - $database = (int) env('TELECART_REDIS_DATABASE', 0); + $host = env('MEGAPAY_REDIS_HOST', '127.0.0.1'); + $port = (int) env('MEGAPAY_REDIS_PORT', 6379); + $password = env('MEGAPAY_REDIS_PASSWORD', null); + $database = (int) env('MEGAPAY_REDIS_DATABASE', 0); $redisConfig = [ 'host' => $host, @@ -56,7 +56,7 @@ class CacheServiceProvider extends ServiceProvider // Регистрация CacheInterface с выбором драйвера $this->container->singleton(CacheInterface::class, function (Container $container) { - $driver = env('TELECART_CACHE_DRIVER', 'mysql'); + $driver = env('MEGAPAY_CACHE_DRIVER', 'mysql'); if ($driver === 'redis') { return new SymfonyRedisCache($container->get(RedisAdapter::class)); diff --git a/backend/src/framework/ImageTool/ImageFactory.php b/backend/src/framework/ImageTool/ImageFactory.php index 34c9bec..83050f7 100755 --- a/backend/src/framework/ImageTool/ImageFactory.php +++ b/backend/src/framework/ImageTool/ImageFactory.php @@ -31,7 +31,7 @@ class ImageFactory 'format' => 'webp', 'quality' => 90, 'no_image_path' => 'no_image.png', - 'cache_path' => 'cache/telecart', + 'cache_path' => 'cache/megapay', ]; public function __construct(string $imageDir, string $siteUrl, string $driver, array $options = []) @@ -180,7 +180,7 @@ class ImageFactory $filename .= '_' . substr(hash('SHA256', json_encode($this->modifications)), 0, 12); } - $cachePath = $this->options['cache_path'] ?? 'cache/telecart'; + $cachePath = $this->options['cache_path'] ?? 'cache/megapay'; $cachePath = ltrim($cachePath, '/'); return $this->imageDir . '/' . $cachePath . '/' . $imagePath . $filename . '.' . $format; diff --git a/backend/src/framework/ImageTool/ImageToolServiceProvider.php b/backend/src/framework/ImageTool/ImageToolServiceProvider.php index 057d1d4..165bd52 100755 --- a/backend/src/framework/ImageTool/ImageToolServiceProvider.php +++ b/backend/src/framework/ImageTool/ImageToolServiceProvider.php @@ -17,7 +17,7 @@ class ImageToolServiceProvider extends ServiceProvider $container->getConfigValue('app.shop_base_url'), $driver, [ - 'cache_path' => $container->getConfigValue('paths.images_cache', 'cache/telecart'), + 'cache_path' => $container->getConfigValue('paths.images_cache', 'cache/megapay'), ] ); }); diff --git a/backend/src/framework/Migrations/MigratorService.php b/backend/src/framework/Migrations/MigratorService.php index 2443f5a..21048be 100755 --- a/backend/src/framework/Migrations/MigratorService.php +++ b/backend/src/framework/Migrations/MigratorService.php @@ -41,7 +41,7 @@ class MigratorService private function getMigrationsTableName(): string { - return 'telecart_migrations'; + return 'megapay_migrations'; } private function ensureMigrationsTableExists(): void diff --git a/backend/src/framework/Scheduler/Models/ScheduledJob.php b/backend/src/framework/Scheduler/Models/ScheduledJob.php index a7aecdb..c952a17 100644 --- a/backend/src/framework/Scheduler/Models/ScheduledJob.php +++ b/backend/src/framework/Scheduler/Models/ScheduledJob.php @@ -10,7 +10,7 @@ use Openguru\OpenCartFramework\QueryBuilder\Builder; class ScheduledJob { - private const TABLE_NAME = 'telecart_scheduled_jobs'; + private const TABLE_NAME = 'megapay_scheduled_jobs'; private Builder $builder; diff --git a/backend/src/framework/TeleCartPulse/PayloadSignException.php b/backend/src/framework/TeleCartPulse/PayloadSignException.php index 17044c9..b258aaf 100755 --- a/backend/src/framework/TeleCartPulse/PayloadSignException.php +++ b/backend/src/framework/TeleCartPulse/PayloadSignException.php @@ -1,6 +1,6 @@ database->lastInsertId(); diff --git a/backend/src/framework/TeleCartPulse/TeleCartPulseEventsSender.php b/backend/src/framework/TeleCartPulse/TeleCartPulseEventsSender.php index 71b64d6..194ad65 100755 --- a/backend/src/framework/TeleCartPulse/TeleCartPulseEventsSender.php +++ b/backend/src/framework/TeleCartPulse/TeleCartPulseEventsSender.php @@ -1,13 +1,13 @@ env('PULSE_TIMEOUT', 5.0), 'headers' => [ 'Authorization' => 'Bearer ' . $this->apiKey, - 'X-TELECART-VERSION' => module_version(), + 'X-MEGAPAY-VERSION' => module_version(), ], ]); diff --git a/backend/src/framework/TeleCartPulse/TeleCartPulseService.php b/backend/src/framework/TeleCartPulse/TeleCartPulseService.php index c392662..39d5e3a 100755 --- a/backend/src/framework/TeleCartPulse/TeleCartPulseService.php +++ b/backend/src/framework/TeleCartPulse/TeleCartPulseService.php @@ -1,6 +1,6 @@ cache->get('telecart_pulse_heartbeat')) { + if ($this->cache->get('megapay_pulse_heartbeat')) { return; } try { - $this->cache->set('telecart_pulse_heartbeat', time(), 3600); + $this->cache->set('megapay_pulse_heartbeat', time(), 3600); $me = $this->telegramService->getMe(); } catch (Throwable $e) { $this->logger->warning( - 'TeleCart Pulse heartbeat prerequisites failed: ' . $e->getMessage(), + 'MegaPay Pulse heartbeat prerequisites failed: ' . $e->getMessage(), ['exception' => $e] ); @@ -173,7 +173,7 @@ class TeleCartPulseService $signature = $this->heartbeatPayloadSigner->sign($payload); } catch (PayloadSignException $exception) { $this->logger->warning( - 'TeleCart Pulse heartbeat signing failed: ' . $exception->getMessage(), + 'MegaPay Pulse heartbeat signing failed: ' . $exception->getMessage(), ['exception' => $exception] ); @@ -199,7 +199,7 @@ class TeleCartPulseService 'base_uri' => $baseUri, 'timeout' => env('PULSE_TIMEOUT', 2.0), 'headers' => [ - 'X-TELECART-VERSION' => module_version(), + 'X-MEGAPAY-VERSION' => module_version(), ], ]); diff --git a/backend/src/framework/TeleCartPulse/TeleCartPulseServiceProvider.php b/backend/src/framework/TeleCartPulse/TeleCartPulseServiceProvider.php index 557e498..3f80aa1 100755 --- a/backend/src/framework/TeleCartPulse/TeleCartPulseServiceProvider.php +++ b/backend/src/framework/TeleCartPulse/TeleCartPulseServiceProvider.php @@ -1,6 +1,6 @@ container->singleton(TeleCartPulseService::class, function (Container $app) { + $this->container->singleton(MegaPayPulseService::class, function (Container $app) { $heartbeatSecret = $app->getConfigValue('pulse.heartbeat_secret') ?? env('PULSE_HEARTBEAT_SECRET'); $heartbeatSigner = $heartbeatSecret ? new PayloadSigner($heartbeatSecret) : null; - return new TeleCartPulseService( + return new MegaPayPulseService( $app->get(TelegramInitDataDecoder::class), $app->get(TelegramService::class), $app->get(CacheInterface::class), $app->get(LoggerInterface::class), - $app->get(TeleCartEvent::class), + $app->get(MegaPayEvent::class), $app->getConfigValue('pulse.api_key'), $heartbeatSigner, ); }); - $this->container->singleton(TeleCartPulseEventsSender::class, function (Container $app) { - return new TeleCartPulseEventsSender( + $this->container->singleton(MegaPayPulseEventsSender::class, function (Container $app) { + return new MegaPayPulseEventsSender( $app->get(PayloadSigner::class), $app->get(LoggerInterface::class), $app->getConfigValue('pulse.api_key'), diff --git a/backend/src/framework/TeleCartPulse/TrackingIdGenerator.php b/backend/src/framework/TeleCartPulse/TrackingIdGenerator.php index 866085f..caedc00 100755 --- a/backend/src/framework/TeleCartPulse/TrackingIdGenerator.php +++ b/backend/src/framework/TeleCartPulse/TrackingIdGenerator.php @@ -1,6 +1,6 @@ settings->get('texts.start_message', 'Welcome to Telecart - Telegram e-commerce solution.'); + $message = $this->settings->get('texts.start_message', 'Welcome to Megapay - Telegram e-commerce solution.'); $buttons = [ 'inline_keyboard' => [ [ diff --git a/backend/src/tests/TestCase.php b/backend/src/tests/TestCase.php index f8e4aa8..1e086e6 100755 --- a/backend/src/tests/TestCase.php +++ b/backend/src/tests/TestCase.php @@ -46,7 +46,7 @@ class TestCase extends BaseTestCase $app = ApplicationFactory::create([ 'app' => [ 'app_enabled' => true, - 'app_name' => 'Telecart', + 'app_name' => 'Megapay', 'app_icon' => null, "theme_light" => "light", "theme_dark" => "dark", @@ -108,10 +108,10 @@ class TestCase extends BaseTestCase ], 'cache' => [ - 'namespace' => 'telecart', + 'namespace' => 'megapay', 'default_lifetime' => 60 * 60 * 24, 'options' => [ - 'db_table' => 'telecart_cache_items', + 'db_table' => 'megapay_cache_items', ], ], @@ -161,7 +161,7 @@ class TestCase extends BaseTestCase protected function getNullLogger(): LoggerInterface { - $logger = new Logger('Telecart_Tests'); + $logger = new Logger('Megapay_Tests'); $logger->pushHandler(new NullHandler()); return $logger; diff --git a/backend/src/tests/Unit/Framework/ArrTest.php b/backend/src/tests/Unit/Framework/ArrTest.php index 5edf78e..b76a811 100755 --- a/backend/src/tests/Unit/Framework/ArrTest.php +++ b/backend/src/tests/Unit/Framework/ArrTest.php @@ -403,10 +403,10 @@ class ArrTest extends TestCase public function testMergeArraysRecursivelyWithDotNotationRealWorldExample(): void { $json = [ - 'module_telecart_settings' => [ + 'module_megapay_settings' => [ 'app' => [ 'app_enabled' => true, - 'app_name' => 'Telecart', + 'app_name' => 'Megapay', ], 'telegram' => [ 'bot_token' => 'old_token', @@ -415,22 +415,22 @@ class ArrTest extends TestCase ]; $envOverrides = [ - 'app.logs.path' => '/var/log/telecart', + 'app.logs.path' => '/var/log/megapay', 'app.app_debug' => true, 'telegram.bot_token' => 'new_token_from_env', ]; $result = Arr::mergeArraysRecursivelyWithDotNotation( - $json['module_telecart_settings'], + $json['module_megapay_settings'], $envOverrides ); $expected = [ 'app' => [ 'app_enabled' => true, - 'app_name' => 'Telecart', + 'app_name' => 'Megapay', 'logs' => [ - 'path' => '/var/log/telecart', + 'path' => '/var/log/megapay', ], 'app_debug' => true, ], @@ -667,7 +667,7 @@ class ArrTest extends TestCase public function testExceptRemovesSpecifiedKeys(): void { $array = [ - 'app' => 'telecart', + 'app' => 'megapay', 'debug' => true, 'version' => '1.0.0', ]; @@ -675,7 +675,7 @@ class ArrTest extends TestCase $result = Arr::except($array, ['debug', 'nonexistent']); $expected = [ - 'app' => 'telecart', + 'app' => 'megapay', 'version' => '1.0.0', ]; @@ -685,7 +685,7 @@ class ArrTest extends TestCase public function testExceptReturnsOriginalArrayWhenNoKeysProvided(): void { $array = [ - 'app' => 'telecart', + 'app' => 'megapay', 'debug' => true, ]; diff --git a/backend/src/tests/Unit/Framework/BuilderTest.php b/backend/src/tests/Unit/Framework/BuilderTest.php index b00f8f5..852a330 100755 --- a/backend/src/tests/Unit/Framework/BuilderTest.php +++ b/backend/src/tests/Unit/Framework/BuilderTest.php @@ -519,7 +519,7 @@ class BuilderTest extends TestCase $connection->expects($this->once()) ->method('statement') ->with( - 'UPDATE `telecart_settings` SET `alias` = ?, `foo` = ? WHERE alias = ?', + 'UPDATE `megapay_settings` SET `alias` = ?, `foo` = ? WHERE alias = ?', ['foobar2', 'bar2', 'foobar'] ) ->willReturn(true); @@ -528,7 +528,7 @@ class BuilderTest extends TestCase $builder->newQuery() ->where('alias', '=', 'foobar') - ->update('telecart_settings', [ + ->update('megapay_settings', [ 'alias' => 'foobar2', 'foo' => 'bar2', ]); @@ -542,7 +542,7 @@ class BuilderTest extends TestCase $connection->expects($this->once()) ->method('statement') ->with( - 'UPDATE `telecart_settings` SET `json` = ? WHERE alias = ?', + 'UPDATE `megapay_settings` SET `json` = ? WHERE alias = ?', [$json, 'foobar'] ) ->willReturn(true); @@ -551,7 +551,7 @@ class BuilderTest extends TestCase $builder->newQuery() ->where('alias', '=', 'foobar') - ->update('telecart_settings', [ + ->update('megapay_settings', [ 'json' => $json, ]); } @@ -564,7 +564,7 @@ class BuilderTest extends TestCase $connection->expects($this->once()) ->method('statement') ->with( - 'UPDATE `telecart_settings` SET `json` = ? WHERE alias = ?', + 'UPDATE `megapay_settings` SET `json` = ? WHERE alias = ?', [$json, 'foobar'] ) ->willReturn(true); @@ -573,7 +573,7 @@ class BuilderTest extends TestCase $builder->newQuery() ->where('alias', '=', 'foobar') - ->update('telecart_settings', [ + ->update('megapay_settings', [ 'json' => $json, ]); } diff --git a/backend/src/tests/Unit/Framework/ImageTool/ImageFactoryTest.php b/backend/src/tests/Unit/Framework/ImageTool/ImageFactoryTest.php index 1b5eca8..c5e9d4e 100755 --- a/backend/src/tests/Unit/Framework/ImageTool/ImageFactoryTest.php +++ b/backend/src/tests/Unit/Framework/ImageTool/ImageFactoryTest.php @@ -60,11 +60,11 @@ class ImageFactoryTest extends TestCase $factory = new ImageFactory($this->imageDir, $this->siteUrl, 'gd'); - // Ожидание: http://localhost/image/cache/telecart/catalog/test_... + // Ожидание: http://localhost/image/cache/megapay/catalog/test_... $url = $factory->make('catalog/test.png')->url(); - // Проверяем, что 'cache' не пострадал от ltrim и путь содержит telecart - $this->assertStringContainsString('/image/cache/telecart/catalog/test', $url, 'URL corrupted: ' . $url); + // Проверяем, что 'cache' не пострадал от ltrim и путь содержит megapay + $this->assertStringContainsString('/image/cache/megapay/catalog/test', $url, 'URL corrupted: ' . $url); } public function testFilenameLengthAndDuplication() @@ -84,7 +84,7 @@ class ImageFactoryTest extends TestCase $expectedHash = substr(hash('SHA256', json_encode(['resize' => ['width' => 100, 'height' => 100]])), 0, 12); $this->assertStringContainsString($expectedHash, $filename); - $this->assertFileExists($this->imageDir . '/cache/telecart/test_' . $expectedHash . '.webp'); + $this->assertFileExists($this->imageDir . '/cache/megapay/test_' . $expectedHash . '.webp'); } public function testMissingImageFallback() @@ -100,7 +100,7 @@ class ImageFactoryTest extends TestCase $this->assertStringContainsString('no_image', $url); // Проверяем, что сам файл создался (конвертация в webp) - $this->assertFileExists($this->imageDir . '/cache/telecart/no_image.webp'); + $this->assertFileExists($this->imageDir . '/cache/megapay/no_image.webp'); } public function testMissingFallbackImageSafeFail() diff --git a/backend/src/tests/Unit/Services/OrderCreateServiceTest.php b/backend/src/tests/Unit/Services/OrderCreateServiceTest.php index e3e3e4b..5231ac5 100755 --- a/backend/src/tests/Unit/Services/OrderCreateServiceTest.php +++ b/backend/src/tests/Unit/Services/OrderCreateServiceTest.php @@ -7,7 +7,7 @@ use App\Services\OcCustomerService; use App\Services\OrderCreateService; use App\Services\OrderMetaService; use App\Services\SettingsService; -use App\Services\TelecartCustomerService; +use App\Services\MegapayCustomerService; use Carbon\Carbon; use Mockery as m; use Openguru\OpenCartFramework\OpenCart\Decorators\OcRegistryDecorator; @@ -67,7 +67,7 @@ class OrderCreateServiceTest extends TestCase $orderId = 1111; $orderProductId = 223; $ocCustomerId = 333; - $telecartCustomerId = 444; + $megapayCustomerId = 444; $product = [ 'product_id' => 93, @@ -176,24 +176,24 @@ class OrderCreateServiceTest extends TestCase $telegramServiceMock = m::mock(TelegramService::class); $loggerMock = m::mock(LoggerInterface::class); - $telegramCustomerService = m::mock(TelecartCustomerService::class); + $telegramCustomerService = m::mock(MegapayCustomerService::class); $telegramCustomerService->shouldReceive('saveOrUpdate')->once() ->with($tgData['user']) - ->andReturn(['id' => $telecartCustomerId]); + ->andReturn(['id' => $megapayCustomerId]); $telegramCustomerService->shouldReceive('increaseOrdersCount')->once() - ->with($telecartCustomerId) + ->with($megapayCustomerId) ->andReturnNull(); $ocCustomerService = m::mock(OcCustomerService::class); - $ocCustomerService->shouldReceive('findOrCreateByTelecartCustomerId')->once() - ->with($telecartCustomerId, m::type('array')) + $ocCustomerService->shouldReceive('findOrCreateByMegapayCustomerId')->once() + ->with($megapayCustomerId, m::type('array')) ->andReturn(['customer_id' => $ocCustomerId]); $orderMetaService = m::mock(OrderMetaService::class); $orderMetaService->shouldReceive('insert') ->once() - ->with($orderId, $storeId, $customOrderFields, $telecartCustomerId) + ->with($orderId, $storeId, $customOrderFields, $megapayCustomerId) ->andReturnNull(); $service = new OrderCreateService( diff --git a/docker-compose.yaml b/docker-compose.yaml index 682dc2d..6819823 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -28,12 +28,12 @@ services: - XDEBUG_CLIENT_HOST=host.docker.internal - XDEBUG_CLIENT_PORT=9003 - XDEBUG_DISCOVER_CLIENT_HOST=false - - PHP_IDE_CONFIG=serverName=telecart + - PHP_IDE_CONFIG=serverName=megapay - php.session.gc_maxlifetime=28800 - php.session.cookie_lifetime=0 - - TELECART_REDIS_HOST=redis - - TELECART_REDIS_PORT=6379 - - TELECART_REDIS_DATABASE=0 + - MEGAPAY_REDIS_HOST=redis + - MEGAPAY_REDIS_PORT=6379 + - MEGAPAY_REDIS_DATABASE=0 depends_on: - mysql - redis @@ -63,7 +63,7 @@ services: - ./deployment/mysql/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d cron: - image: ghcr.io/telecart-labs/scheduler:latest + image: ghcr.io/megapay-labs/scheduler:latest platform: linux/amd64 restart: unless-stopped environment: diff --git a/frontend/admin/.vscode/extensions.json b/frontend/admin/.vscode/extensions.json deleted file mode 100644 index 3f84126..0000000 --- a/frontend/admin/.vscode/extensions.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "recommendations": [ - "Vue.volar", - "dbaeumer.vscode-eslint", - "EditorConfig.EditorConfig", - "oxc.oxc-vscode", - "esbenp.prettier-vscode" - ] -} diff --git a/frontend/admin/src/App.vue b/frontend/admin/src/App.vue index 7b213d1..054f93b 100644 --- a/frontend/admin/src/App.vue +++ b/frontend/admin/src/App.vue @@ -58,7 +58,7 @@
  • - TeleCart Pulse BETA + MegaPay Pulse BETA
  • diff --git a/frontend/admin/src/assets/main.css b/frontend/admin/src/assets/main.css index bfc17d8..1b5eba9 100644 --- a/frontend/admin/src/assets/main.css +++ b/frontend/admin/src/assets/main.css @@ -43,7 +43,7 @@ legend.p-fieldset-legend { margin-bottom: 0; } -.telecart-admin-app { +.megapay-admin-app { color: var(--color-slate-700); } diff --git a/frontend/admin/src/components/ScheduledJobsList.vue b/frontend/admin/src/components/ScheduledJobsList.vue index 96d5fc6..7c8516c 100644 --- a/frontend/admin/src/components/ScheduledJobsList.vue +++ b/frontend/admin/src/components/ScheduledJobsList.vue @@ -67,9 +67,9 @@ const settings = useSettingsStore(); /** Человекочитаемое имя и описание задач (ключ — job.name с бэкенда) */ const JOB_META = { - telecart_pulse_send_events: { - friendlyName: 'Отправка данных в TeleCart Pulse', - description: 'Отправка данных телеметрии о действиях в TeleCart. Требуется для сбора метрик по рассылкам и кампаниям, сделанных через сервис TeleCart Pulse', + megapay_pulse_send_events: { + friendlyName: 'Отправка данных в MegaPay Pulse', + description: 'Отправка данных телеметрии о действиях в MegaPay. Требуется для сбора метрик по рассылкам и кампаниям, сделанных через сервис MegaPay Pulse', }, }; diff --git a/frontend/admin/src/components/Settings/ItemCategoriesSelect.vue b/frontend/admin/src/components/Settings/ItemCategoriesSelect.vue index f456b6f..c94a9ba 100644 --- a/frontend/admin/src/components/Settings/ItemCategoriesSelect.vue +++ b/frontend/admin/src/components/Settings/ItemCategoriesSelect.vue @@ -94,7 +94,7 @@ onMounted(() => { $(searchInput.value).autocomplete({ source: function (request, response) { $.ajax({ - url: `/admin/index.php?route=catalog/category/autocomplete&user_token=${window.TeleCart.user_token}&filter_name=${encodeURIComponent(request)}`, + url: `/admin/index.php?route=catalog/category/autocomplete&user_token=${window.MegaPay.user_token}&filter_name=${encodeURIComponent(request)}`, dataType: 'json', success: function (json) { response($.map(json, function (item) { diff --git a/frontend/admin/src/components/Settings/ItemProductsSelect.vue b/frontend/admin/src/components/Settings/ItemProductsSelect.vue index ef172ec..3263821 100644 --- a/frontend/admin/src/components/Settings/ItemProductsSelect.vue +++ b/frontend/admin/src/components/Settings/ItemProductsSelect.vue @@ -94,7 +94,7 @@ onMounted(() => { $(productsInput.value).autocomplete({ source: function (request, response) { $.ajax({ - url: `/admin/index.php?route=catalog/product/autocomplete&user_token=${window.TeleCart.user_token}&filter_name=${encodeURIComponent(request)}`, + url: `/admin/index.php?route=catalog/product/autocomplete&user_token=${window.MegaPay.user_token}&filter_name=${encodeURIComponent(request)}`, dataType: 'json', success: function (json) { response($.map(json, function (item) { diff --git a/frontend/admin/src/components/Settings/ItemTgBotToken.vue b/frontend/admin/src/components/Settings/ItemTgBotToken.vue index 4929478..a8099bb 100644 --- a/frontend/admin/src/components/Settings/ItemTgBotToken.vue +++ b/frontend/admin/src/components/Settings/ItemTgBotToken.vue @@ -40,7 +40,7 @@ diff --git a/frontend/admin/src/components/Settings/ItemTgMessageTemplate.vue b/frontend/admin/src/components/Settings/ItemTgMessageTemplate.vue index 1abfbeb..75ae137 100644 --- a/frontend/admin/src/components/Settings/ItemTgMessageTemplate.vue +++ b/frontend/admin/src/components/Settings/ItemTgMessageTemplate.vue @@ -41,7 +41,7 @@ Telegram поддерживает только часть HTML тегов, которые описаны в их документации .

    -

    Дополнительно к этому TeleCart добавляет переменные, которые вы можете использовать, чтобы сделать сообщения динамическими.

    +

    Дополнительно к этому MegaPay добавляет переменные, которые вы можете использовать, чтобы сделать сообщения динамическими.

    • {store_name} — название магазина
    • {order_id} — номер заказа
    • diff --git a/frontend/admin/src/components/Settings/ItemTgMiniAppLink.vue b/frontend/admin/src/components/Settings/ItemTgMiniAppLink.vue index 7172b79..e7d5e5c 100644 --- a/frontend/admin/src/components/Settings/ItemTgMiniAppLink.vue +++ b/frontend/admin/src/components/Settings/ItemTgMiniAppLink.vue @@ -6,9 +6,9 @@ :modelValue="model" :allowCopy="true" > - Ссылка на сайт с TeleCart витриной, которую нужно указывать в настройках MiniApp в @BotFather.
      + Ссылка на сайт с MegaPay витриной, которую нужно указывать в настройках MiniApp в @BotFather.
      Подробная инструкция по настройке в - + документации . diff --git a/frontend/admin/src/components/Slider/CategorySelect.vue b/frontend/admin/src/components/Slider/CategorySelect.vue index 05f3fd2..30c7634 100644 --- a/frontend/admin/src/components/Slider/CategorySelect.vue +++ b/frontend/admin/src/components/Slider/CategorySelect.vue @@ -30,7 +30,7 @@ onMounted(() => { } $.ajax({ - url: `index.php?route=catalog/category/autocomplete&user_token=${window.TeleCart.user_token}&filter_name=` + encodeURIComponent(request), + url: `index.php?route=catalog/category/autocomplete&user_token=${window.MegaPay.user_token}&filter_name=` + encodeURIComponent(request), dataType: 'json', success: function (json) { response($.map(json, function (item) { diff --git a/frontend/admin/src/components/Slider/ProductSelect.vue b/frontend/admin/src/components/Slider/ProductSelect.vue index e9be91a..3a9ad13 100644 --- a/frontend/admin/src/components/Slider/ProductSelect.vue +++ b/frontend/admin/src/components/Slider/ProductSelect.vue @@ -29,7 +29,7 @@ onMounted(() => { } $.ajax({ - url: `index.php?route=catalog/product/autocomplete&user_token=${window.TeleCart.user_token}&filter_name=` + encodeURIComponent(request), + url: `index.php?route=catalog/product/autocomplete&user_token=${window.MegaPay.user_token}&filter_name=` + encodeURIComponent(request), dataType: 'json', success: function (json) { response($.map(json, function (item) { diff --git a/frontend/admin/src/components/TopLead.vue b/frontend/admin/src/components/TopLead.vue index a2aae34..ac79930 100644 --- a/frontend/admin/src/components/TopLead.vue +++ b/frontend/admin/src/components/TopLead.vue @@ -18,7 +18,7 @@
      Количество заказов @@ -31,7 +31,7 @@
      Общая сумма