info('📧 Запуск получения новостей из Email...'); $force = $this->option('force'); $verbose = $this->option('log'); // Проверяем, включена ли функция if (!config('email-news.enabled', true) && !$force) { $this->error('❌ Функция отключена в конфиге (EMAIL_NEWS_ENABLED=false)'); $this->warn('Используйте --force для принудительного запуска'); return 1; } try { $result = $fetchEmailNewsAction->run(); // Вывод результатов $this->newLine(); $this->line('📊 Результаты обработки:'); $this->table( ['Метрика', 'Значение'], [ ['Обработано писем', $result['processed_emails']], ['Пропущено (не редактор)', $result['skipped_emails']], ['Создано новостей', $result['created_posts']], ['Ошибок', count($result['errors'])], ] ); // Вывод созданных постов if (!empty($result['posts'])) { $this->newLine(); $this->info('✅ Созданные новости:'); foreach ($result['posts'] as $post) { $status = $post->status instanceof \BackedEnum ? $post->status->value : $post->status; $this->line(" • {$post->title} (ID: {$post->id}, статус: {$status})"); } } // Вывод ошибок if (!empty($result['errors'])) { $this->newLine(); $this->error('❌ Ошибки:'); foreach ($result['errors'] as $error) { $this->warn(" • {$error['email_subject']}: {$error['error']}"); } } // Подробный лог if ($verbose) { $this->newLine(); $this->info('📝 Детальный лог доступен в storage/logs/laravel.log'); } $this->newLine(); $this->info('✅ Завершено!'); return 0; } catch (EmailFetchException $e) { $this->error('❌ Ошибка Email: ' . $e->getMessage()); Log::error('[FetchEmailNewsCommand] EmailFetchException', [ 'code' => $e->getCode(), 'message' => $e->getMessage(), ]); return 1; } catch (\Exception $e) { $this->error('❌ Критическая ошибка: ' . $e->getMessage()); $this->warn('Проверьте логи: storage/logs/laravel.log'); Log::error('[FetchEmailNewsCommand] Critical Error', [ 'error' => $e->getMessage(), 'trace' => $e->getTraceAsString(), ]); return 1; } } }