From: Vladimir Fomichev Date: Wed, 28 Jan 2026 10:30:48 +0000 (+0300) Subject: Правки X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=8a717f747bb49d980ee577f9e18d2e517beb271d;p=erp24_rep%2Fyii-erp24%2F.git Правки --- diff --git a/erp24/api2/config/dev.api2.config.php b/erp24/api2/config/dev.api2.config.php index 0e024d1f..fd057d89 100644 --- a/erp24/api2/config/dev.api2.config.php +++ b/erp24/api2/config/dev.api2.config.php @@ -46,18 +46,7 @@ return [ 'exchangeName' => 'telegram-exchange', ], // ВАЖНО для ERP24: Database credentials вынесены в переменные окружения (.env) - 'db' => [ - 'class' => yii\db\Connection::class, - 'dsn' => strtr('mysql:host={host};dbname={dbname}', [ - '{host}' => getenv('DB_HOST') ?: 'localhost', - '{dbname}' => getenv('DB_SCHEMA') ?: 'erp24', - ]), - 'username' => getenv('DB_USER') ?: '', - 'password' => getenv('DB_PASSWORD') ?: '', - 'charset' => 'utf8', - 'enableSchemaCache' => true, - 'schemaCacheDuration' => 300, - ], + 'db' => require __DIR__ . '/../../config/db.php', 'log' => [ 'traceLevel' => 3, 'targets' => [ diff --git a/erp24/api2/config/env.php b/erp24/api2/config/env.php index 19ba42f0..3a4c2aec 100644 --- a/erp24/api2/config/env.php +++ b/erp24/api2/config/env.php @@ -18,4 +18,7 @@ try { } catch (\Dotenv\Exception\InvalidPathException $e) { putenv("APP_ENV=development"); error_log('[ENV ERROR] Файл .env не найден: ' . $e->getMessage()); +} catch (\Dotenv\Exception\ValidationException $e) { + error_log('[ENV ERROR] Ошибка валидации .env: ' . $e->getMessage()); + throw $e; // Прекращаем выполнение при отсутствии обязательных переменных } diff --git a/erp24/tests/unit/commands/TEST_STARTS.md b/erp24/tests/unit/commands/TEST_STARTS.md new file mode 100644 index 00000000..33331823 --- /dev/null +++ b/erp24/tests/unit/commands/TEST_STARTS.md @@ -0,0 +1,121 @@ +# Как запустить тесты для MarketplaceController и отправки уведомлений + +## Быстрый старт + +```bash +# Из корня проекта (C:\Users\tel89\PhpstormProjects\yii-erp24) +./vendor/bin/codecept run unit commands/MarketplaceControllerTest +./vendor/bin/codecept run unit services/OrderControlReportServiceNotificationTest +``` + +## Тесты для команды отправки отчёта + +### Запуск всех тестов команды +```bash +./vendor/bin/codecept run unit commands/MarketplaceControllerTest +``` + +### Конкретный тест +```bash +./vendor/bin/codecept run unit commands/MarketplaceControllerTest:testExitCodeForSuccessWithoutIssues +``` + +## Тесты для отправки уведомлений (Telegram и Email) + +### Запуск всех тестов уведомлений +```bash +./vendor/bin/codecept run unit services/OrderControlReportServiceNotificationTest +``` + +### Тест с выводом конфигурации каналов и получателей +```bash +./vendor/bin/codecept run unit services/OrderControlReportServiceNotificationTest:testOutputNotificationConfiguration -vvv +``` + +Этот тест выводит информацию о: +- **Telegram Bot Token** - какой бот используется (dev/prod) +- **Telegram Chat ID** - в какой канал/чат отправляется сообщение +- **Email Recipients** - список получателей email +- **Email Sender** - отправитель email (по умолчанию: noreply@bazacvetov24.ru) + +### Все тесты уведомлений +```bash +# Форматирование сообщений +./vendor/bin/codecept run unit services/OrderControlReportServiceNotificationTest:testFormatTelegramControlReportStructure +./vendor/bin/codecept run unit services/OrderControlReportServiceNotificationTest:testFormatEmailControlReportStructure + +# Конфигурация Telegram +./vendor/bin/codecept run unit services/OrderControlReportServiceNotificationTest:testGetTelegramBotTokenForDevEnvironment +./vendor/bin/codecept run unit services/OrderControlReportServiceNotificationTest:testGetTelegramChatId + +# Конфигурация Email +./vendor/bin/codecept run unit services/OrderControlReportServiceNotificationTest:testEmailSenderFromConfiguration +./vendor/bin/codecept run unit services/OrderControlReportServiceNotificationTest:testEmailRecipientsConfiguration +``` + +## Альтернативные способы запуска + +### 1. Все unit-тесты проекта +```bash +./vendor/bin/codecept run unit +``` + +### 2. С подробным выводом (debug) +```bash +./vendor/bin/codecept run unit commands/MarketplaceControllerTest -vvv +./vendor/bin/codecept run unit services/OrderControlReportServiceNotificationTest -vvv +``` + +### 3. С покрытием кода +```bash +./vendor/bin/codecept run unit commands/MarketplaceControllerTest --coverage +./vendor/bin/codecept run unit services/OrderControlReportServiceNotificationTest --coverage +``` + +## Что тестируется + +### MarketplaceController +✅ Логика exit codes (0, 1, 2) +✅ Обработка всех типов проблем заказов +✅ Структура контроллера и методы +✅ Тестовый режим (--test) + +### OrderControlReportService (Уведомления) +✅ Форматирование сообщений Telegram (MarkdownV2) +✅ Форматирование HTML Email +✅ Конфигурация Telegram бота (dev/prod токены) +✅ Конфигурация Telegram канала/чата (chat_id) +✅ Конфигурация Email отправителя (from) +✅ Конфигурация Email получателей (to) +✅ Экранирование HTML и специальных символов +✅ Структура API запросов + +## Запуск реальной команды + +```bash +# Стандартный режим +php yii marketplace/send-order-control-report + +# Тестовый режим +php yii marketplace/send-order-control-report --test +``` + +## Конфигурация уведомлений + +### Telegram +- **Bot Token Dev**: `TELEGRAM_BOT_TOKEN_DEV` или константа `TELEGRAM_BOT_DEV` +- **Bot Token Prod**: `TELEGRAM_BOT_TOKEN_PROD` или константа `TELEGRAM_BOT_PROD` +- **Chat ID Dev**: `TELEGRAM_ORDER_CONTROL_CHAT_ID_DEV` или из конфига +- **Chat ID Prod**: `TELEGRAM_ORDER_CONTROL_CHAT_ID_PROD` или из конфига + +### Email +- **Отправитель**: `MAIL_USERNAME` или `noreply@bazacvetov24.ru` +- **Имя отправителя**: `ERP24 Контроль МП` +- **Получатели**: `ORDER_CONTROL_EMAIL_RECIPIENTS` (через запятую) или из конфига +- **Тема**: `Контроль статусов заказов МП` + +## Требования + +- PHP 7.4+ +- Codeception установлен через Composer +- Yii2 приложение настроено diff --git "a/erp24/tests/unit/commands/\320\227\320\220\320\237\320\243\320\241\320\232_\320\242\320\225\320\241\320\242\320\236\320\222.md" "b/erp24/tests/unit/commands/\320\227\320\220\320\237\320\243\320\241\320\232_\320\242\320\225\320\241\320\242\320\236\320\222.md" deleted file mode 100644 index 33331823..00000000 --- "a/erp24/tests/unit/commands/\320\227\320\220\320\237\320\243\320\241\320\232_\320\242\320\225\320\241\320\242\320\236\320\222.md" +++ /dev/null @@ -1,121 +0,0 @@ -# Как запустить тесты для MarketplaceController и отправки уведомлений - -## Быстрый старт - -```bash -# Из корня проекта (C:\Users\tel89\PhpstormProjects\yii-erp24) -./vendor/bin/codecept run unit commands/MarketplaceControllerTest -./vendor/bin/codecept run unit services/OrderControlReportServiceNotificationTest -``` - -## Тесты для команды отправки отчёта - -### Запуск всех тестов команды -```bash -./vendor/bin/codecept run unit commands/MarketplaceControllerTest -``` - -### Конкретный тест -```bash -./vendor/bin/codecept run unit commands/MarketplaceControllerTest:testExitCodeForSuccessWithoutIssues -``` - -## Тесты для отправки уведомлений (Telegram и Email) - -### Запуск всех тестов уведомлений -```bash -./vendor/bin/codecept run unit services/OrderControlReportServiceNotificationTest -``` - -### Тест с выводом конфигурации каналов и получателей -```bash -./vendor/bin/codecept run unit services/OrderControlReportServiceNotificationTest:testOutputNotificationConfiguration -vvv -``` - -Этот тест выводит информацию о: -- **Telegram Bot Token** - какой бот используется (dev/prod) -- **Telegram Chat ID** - в какой канал/чат отправляется сообщение -- **Email Recipients** - список получателей email -- **Email Sender** - отправитель email (по умолчанию: noreply@bazacvetov24.ru) - -### Все тесты уведомлений -```bash -# Форматирование сообщений -./vendor/bin/codecept run unit services/OrderControlReportServiceNotificationTest:testFormatTelegramControlReportStructure -./vendor/bin/codecept run unit services/OrderControlReportServiceNotificationTest:testFormatEmailControlReportStructure - -# Конфигурация Telegram -./vendor/bin/codecept run unit services/OrderControlReportServiceNotificationTest:testGetTelegramBotTokenForDevEnvironment -./vendor/bin/codecept run unit services/OrderControlReportServiceNotificationTest:testGetTelegramChatId - -# Конфигурация Email -./vendor/bin/codecept run unit services/OrderControlReportServiceNotificationTest:testEmailSenderFromConfiguration -./vendor/bin/codecept run unit services/OrderControlReportServiceNotificationTest:testEmailRecipientsConfiguration -``` - -## Альтернативные способы запуска - -### 1. Все unit-тесты проекта -```bash -./vendor/bin/codecept run unit -``` - -### 2. С подробным выводом (debug) -```bash -./vendor/bin/codecept run unit commands/MarketplaceControllerTest -vvv -./vendor/bin/codecept run unit services/OrderControlReportServiceNotificationTest -vvv -``` - -### 3. С покрытием кода -```bash -./vendor/bin/codecept run unit commands/MarketplaceControllerTest --coverage -./vendor/bin/codecept run unit services/OrderControlReportServiceNotificationTest --coverage -``` - -## Что тестируется - -### MarketplaceController -✅ Логика exit codes (0, 1, 2) -✅ Обработка всех типов проблем заказов -✅ Структура контроллера и методы -✅ Тестовый режим (--test) - -### OrderControlReportService (Уведомления) -✅ Форматирование сообщений Telegram (MarkdownV2) -✅ Форматирование HTML Email -✅ Конфигурация Telegram бота (dev/prod токены) -✅ Конфигурация Telegram канала/чата (chat_id) -✅ Конфигурация Email отправителя (from) -✅ Конфигурация Email получателей (to) -✅ Экранирование HTML и специальных символов -✅ Структура API запросов - -## Запуск реальной команды - -```bash -# Стандартный режим -php yii marketplace/send-order-control-report - -# Тестовый режим -php yii marketplace/send-order-control-report --test -``` - -## Конфигурация уведомлений - -### Telegram -- **Bot Token Dev**: `TELEGRAM_BOT_TOKEN_DEV` или константа `TELEGRAM_BOT_DEV` -- **Bot Token Prod**: `TELEGRAM_BOT_TOKEN_PROD` или константа `TELEGRAM_BOT_PROD` -- **Chat ID Dev**: `TELEGRAM_ORDER_CONTROL_CHAT_ID_DEV` или из конфига -- **Chat ID Prod**: `TELEGRAM_ORDER_CONTROL_CHAT_ID_PROD` или из конфига - -### Email -- **Отправитель**: `MAIL_USERNAME` или `noreply@bazacvetov24.ru` -- **Имя отправителя**: `ERP24 Контроль МП` -- **Получатели**: `ORDER_CONTROL_EMAIL_RECIPIENTS` (через запятую) или из конфига -- **Тема**: `Контроль статусов заказов МП` - -## Требования - -- PHP 7.4+ -- Codeception установлен через Composer -- Yii2 приложение настроено