'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' => [
} 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; // Прекращаем выполнение при отсутствии обязательных переменных
}
--- /dev/null
+# Как запустить тесты для 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 приложение настроено
+++ /dev/null
-# Как запустить тесты для 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 приложение настроено