ТЕХНИЧЕСКОЕ ЗАДАНИЕ Проект: Универсальный парсер брендов по магазинам РФ для Telegram-бота 1. Цель проекта Создать систему (Telegram-бот + сервер + парсер), которая по запросу пользователя собирает товары любого указанного бренда с заданного списка магазинов, анализирует: • цену • старую цену (если есть) • наличие • ссылку • фото товара • название • магазин и выдает данные в удобном виде, отсортированные по лучшей цене. 2. Пример работы Пользователь пишет в боте: salewa Бот: Запускает парсер по всем магазинам. Ищет товары, содержащие бренд “Salewa” (учитывать русские и английские варианты написания). Складывает результаты в БД. Отдает пользователю список с сортировкой по цене от минимальной. 3. Требования к функционалу 3.1. Команды бота /brand salewa /brand salomon /brand helikon /brand marmot Нужно, чтобы любой бренд, который пользователь написал, участвовал в поиске. 3.2. Что должен уметь парсер Работать по строке, введенной пользователем. Искать товары бренда на сайте: – либо через строку поиска – либо по параметрам URL – либо по парсингу каталога Собрать данные: – product_name – price – old_price (если есть) – availability – image_url – link – store Чётко определять наличие: – есть – нет – нет размера – предзаказ Поддерживать русские и английские варианты: Salewa / Салева, Jack Wolfskin / Джек Вольфскин и т. д. 3.3. Логика обновления • Бот хранит данные в БД. • Если данные старше 24 часов, при следующем запросе запускается новый парсинг. 3.4. Результат пользователю • Список товаров • Сортировка: цена ? • Отмечать товары со скидкой более 30% • Кнопка “Показать ещё” если позиций > 20 4. Список магазинов для парсинга Все магазины проверенные, с нормальной репутацией. Первые 10 — обязательно для запуска. 1. Спортмарафон https://sport-marafon.ru 2. Триал-Спорт https://trial-sport.ru 3. Кант https://kant.ru 4. SportiQue https://sportique.ru 5. BigWall https://bigwall.ru 6. KTM (outdoor, не мотоциклы) https://ktm-rf.ru (программист пусть уточнит, если перенесут каталог) 7. Мандрогор https://mandragor.ru 8. Territoriya (Территория приключений) https://territory-store.ru 9. TRAMP (официальный магазин) https://tramp-shop.ru 10. ALLRAD https://allrad.ru 5. Архитектура 5.1. Telegram-бот Написать на Python (aiogram или telebot) или NodeJS. 5.2. Серверная часть Python (FastAPI) или NodeJS. 5.3. База данных SQLite для MVP PostgreSQL — если нужен масштаб. Таблица: | id | brand | product_name | price | old_price | availability | link | image_url | store | updated_at | 6. Алгоритм работы Пользователь отправляет название бренда. Бот проверяет, есть ли в базе свежие данные (моложе 24 часов). Если нет — начинает новый парсинг всех магазинов. Из каждого магазина тянется список товаров. Результаты записываются в БД. Бот отправляет отсортированный список пользователю. 7. Дополнительные фишки (после MVP) 7.1. Автоуведомления о скидках Команда: /track salewa Бот шлет уведомление, если цена на любой товар Salewa упала. 7.2. Мультибрендовый запрос /brand salewa, salomon, montane 7.3. Умная подборка Бот сам отмечает: • минимум цены по рынку • скидки > 50% • подозрительные магазины (если появятся) 8. UX логика вывода Результат должен быть таким: Salewa Brenta Down Jacket Black Цена: 16 790 ? Было: 23 990 ? Магазин: Кант Наличие: есть все размеры Ссылка: … 9. Что важно учесть программисту • У каждого магазина своя HTML-структура, парсеры пишутся отдельно. • Нужно ограничение скорости запросов, чтобы не словить бан. • Нужен нормальный User-Agent + небольшие задержки. • Фотографии желательно качать по прямому URL. • На 2-м этапе можно сделать кэширование изображений. 10. Дедлайн MVP (10 магазинов, поиск бренда, выдача результатов): 2–4 недели реальной работы одного разработчика.