Skip to content

Latest commit

 

History

History
84 lines (65 loc) · 3.74 KB

File metadata and controls

84 lines (65 loc) · 3.74 KB

Структура проекта Crypto Spread

📁 Основные директории

app/

  • Console/Commands/ - Консольные команды

    • TelegramBotCommand.php - Обработка команд Telegram бота
    • RunPriceFetcherCommand.php - Команда для запуска фетчера цен
  • Jobs/ - Queue Jobs

    • FetchPricesJob.php - Получение цен с бирж
    • CheckArbitrageJob.php - Проверка арбитражных возможностей
    • SendTelegramNotificationJob.php - Отправка уведомлений в Telegram
  • Models/ - Eloquent модели

    • User.php - Пользователи Telegram бота
    • Exchange.php - Биржи
    • Price.php - Цены
    • Alert.php - Арбитражные сигналы
  • Services/ - Бизнес-логика

    • ArbitrageService.php - Сервис обнаружения арбитража
    • TelegramBotService.php - Сервис работы с Telegram API
    • Exchange/ - Сервисы для работы с биржами
      • ExchangeServiceInterface.php - Интерфейс
      • BinanceService.php - Интеграция с Binance
      • OKXService.php - Интеграция с OKX
      • BybitService.php - Интеграция с Bybit
      • ExchangeServiceFactory.php - Фабрика сервисов

database/

  • migrations/ - Миграции базы данных

    • 0001_01_01_000000_create_users_table.php - Базовая таблица users
    • 2024_01_01_000001_create_exchanges_table.php - Таблица бирж
    • 2024_01_01_000002_create_prices_table.php - Таблица цен
    • 2024_01_01_000003_create_alerts_table.php - Таблица сигналов
    • 2024_01_01_000004_update_users_table_for_telegram.php - Обновление users для Telegram
  • seeders/ - Сидеры

    • DatabaseSeeder.php - Главный сидер
    • ExchangeSeeder.php - Заполнение бирж

docker/

  • nginx/default.conf - Конфигурация Nginx
  • php/local.ini - Настройки PHP

config/

  • services.php - Конфигурация внешних сервисов (Telegram)
  • queue.php - Конфигурация очередей (Redis)
  • database.php - Конфигурация базы данных

🔄 Поток данных

  1. FetchPricesJob → Получает цены с бирж → Сохраняет в prices
  2. CheckArbitrageJob → Анализирует цены → Создает alerts при обнаружении арбитража
  3. SendTelegramNotificationJob → Отправляет уведомления пользователям

🚀 Запуск сервисов

  1. Queue Worker: php artisan queue:work redis
  2. Telegram Bot: php artisan telegram:bot
  3. Price Fetcher: php artisan arbitrage:fetch-prices BTC/USDT --interval=5

📊 База данных

Таблицы:

  • users - Пользователи (telegram_id, password_hash, alerts_enabled)
  • exchanges - Биржи (name, api_url, priority, is_active)
  • prices - Цены (exchange_id, symbol, price, created_at)
  • alerts - Сигналы (symbol, buy_exchange, sell_exchange, profit_percent, notified)

🔐 Безопасность

  • Пароли хешируются с помощью bcrypt
  • Аутентификация через пароль в Telegram боте
  • Логирование всех операций

📝 Логирование

Все логи сохраняются в storage/logs/laravel.log:

  • Получение цен с бирж
  • Обнаружение арбитража
  • Активность Telegram бота
  • Ошибки API запросов