# ANCHOR: Project_README # Семантика: Документация, описывающая проект, его структуру и способ использования. # Сервис мониторинга цен ElixirPeptide (v3.0) Это распределенное Python-приложение для мониторинга каталога товаров с сайта `elixirpeptide.ru`. Сервис автоматически отслеживает изменения в ценах и наличии товаров, и отправляет отчеты в Telegram. ## 🚀 Архитектура (v3.0) Проект перешел от простого парсера к полноценному сервису мониторинга с асинхронной обработкой данных. - **Точка входа**: `monitoring_service.py` — главный скрипт, запускаемый по расписанию (cron). - **Оркестратор**: `src/orchestrator.py` управляет процессом парсинга. - **Анализатор**: `src/analyzer.py` сравнивает данные последнего и предпоследнего запусков, выявляя изменения. - **Уведомления**: `src/utils/telegram_sender.py` отправляет HTML-отчеты об изменениях в Telegram. - **Очередь сообщений**: Интеграция с **RabbitMQ** для асинхронного экспорта данных о товарах и логах. - **База данных**: **SQLite** используется для хранения истории парсинга и данных для анализа. ## ✨ Ключевые возможности - **Автоматический мониторинг**: Запуск по расписанию для непрерывного отслеживания. - **Отчеты об изменениях**: Уведомления в Telegram о новых, удаленных товарах, а также изменениях цен и наличия. - **Асинхронный экспорт**: Отправка данных в RabbitMQ для дальнейшей обработки другими системами. - **Надежность**: Механизм retry-запросов, детальное логирование и отказоустойчивость. - **Гибкая конфигурация**: Все параметры настраиваются через `.env` файл. ## Структура Проекта - `monitoring_service.py`: **[NEW]** Главная точка входа для запуска по расписанию. - `src/`: Основная директория с исходным кодом. - `orchestrator.py`: **[NEW]** Управляет всем процессом парсинга. - `analyzer.py`: **[NEW]** Анализирует данные и формирует отчеты. - `main.py`: Точка входа для ручного запуска парсинга. - `core/`: Ядро приложения. - `settings.py`: **[ENHANCED]** Pydantic-модели для конфигурации (включая Telegram, RabbitMQ). - `database.py`: Логика работы с базой данных SQLite. - `rabbitmq.py`: **[NEW]** Клиент для работы с RabbitMQ. - `scraper/`: Логика парсинга. - `engine.py`: Улучшенный движок парсера. - `utils/`: Вспомогательные утилиты. - `telegram_sender.py`: **[NEW]** Отправка уведомлений в Telegram. - `requirements.txt`: **[UPDATED]** Обновленный список зависимостей. - `.env.example`: Пример файла с переменными окружения. - `RABBITMQ_SETUP.md`: **[NEW]** Руководство по настройке RabbitMQ. ## Установка и Запуск ### 1. Клонирование и настройка окружения ```bash git clone https://gitea.bebesh.ru/busya/peptide-parcer.git cd peptide-parcer # Создание виртуального окружения python -m venv venv source venv/bin/activate # Для Windows: venv\Scripts\activate # Установка зависимостей pip install -r requirements.txt ``` ### 2. Настройка RabbitMQ (Опционально) Для асинхронного экспорта данных требуется RabbitMQ. Рекомендуется запуск через Docker: ```bash docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management ``` Подробности см. в `RABBITMQ_SETUP.md`. ### 3. Настройка конфигурации Скопируйте `.env.example` в `.env` и заполните необходимые параметры. ```bash cp .env.example .env nano .env # Отредактируйте файл ``` **Ключевые переменные окружения:** - `TELEGRAM_BOT_TOKEN`: Токен вашего Telegram-бота. - `TELEGRAM_CHAT_ID`: ID чата, куда будут приходить отчеты. - `ENABLE_RABBITMQ_EXPORT`: `true` или `false` для включения/отключения экспорта в RabbitMQ. - `RABBITMQ_HOST`, `RABBITMQ_PORT` и т.д.: Настройки подключения к RabbitMQ. ### 4. Запуск #### Автоматический мониторинг (рекомендуется) Настройте запуск `monitoring_service.py` через `cron` или планировщик задач. ```bash # Пример для cron, запуск каждый час # 0 * * * * /path/to/your/project/venv/bin/python /path/to/your/project/monitoring_service.py >> /path/to/your/project/logs/cron.log 2>&1 # Ручной запуск для проверки python monitoring_service.py ``` #### Ручной запуск парсинга (без анализа и отчета) ```bash python src/main.py ``` ## Результаты ### Отчеты в Telegram Сервис присылает в указанный чат отчет, если обнаруживает изменения: - **💰 Изменились цены**: список товаров с новой и старой ценой. - **📦 Изменилось наличие**: список товаров, которые появились или закончились. - **✨ Новые товары**: список добавленных товаров. - **🗑️ Удаленные товары**: список удаленных товаров. ### Данные - **База данных**: `price_data_final/parser_data.db` — хранит всю историю парсинга. - **CSV файл**: `price_data_final/prices_full_catalog_*.csv` — создается при ручном запуске. - **RabbitMQ**: Сообщения с данными о товарах и логах отправляются в очереди `price_parser.products` и `price_parser.logs`. ## Устранение неполадок 1. **Не приходят сообщения в Telegram**: - Проверьте правильность `TELEGRAM_BOT_TOKEN` и `TELEGRAM_CHAT_ID`. - Убедитесь, что бот добавлен в чат с нужными правами. 2. **Ошибка подключения к RabbitMQ**: - Проверьте, что RabbitMQ запущен и доступен. - Убедитесь в корректности настроек в `.env`. 3. **Ошибки парсинга**: - Проверьте доступность сайта `elixirpeptide.ru`. - Возможно, изменилась структура HTML-страниц. В этом случае нужно обновить CSS-селекторы в `src/core/settings.py`.