1) Общая информация
Название проекта: Бот мониторинга объявлений по заданным параметрам + исключение продавцов (“минус-продавцы”)
Цель: Автоматически находить новые объявления на порталах недвижимости/объявлений по заданным фильтрам и отправлять 1 раз в сутки подборку ссылок в Telegram (обязательно) и опционально в WhatsApp / Email.
Источники (минимум):
Wallapop (es.wallapop.com)
Idealista (idealista.com)
Milanuncios (milanuncios.com)
Предпочитаемый стек: Python, управление через Telegram-бота, размещение на сервере (VPS).
2) Роли пользователей и права
2.1 Роли
Администратор: полные права (создание/редактирование фильтров, управление продавцами, управление источниками, получателями, расписанием, просмотр логов/статуса).
Оператор (опционально): может управлять фильтрами и продавцами, но без доступа к системным настройкам.
Получатель: получает отчеты, не управляет настройками.
2.2 Авторизация
3) Функциональные требования
3.1 Мониторинг объявлений
Система должна:
Периодически (по расписанию) проверять новые объявления по заданным фильтрам.
Выявлять и сохранять уникальные объявления, чтобы не присылать повторно.
Уметь исключать объявления по “минус-продавцам” (blacklist sellers) и/или по ключевым признакам (телефон, id продавца, имя/ник, ссылка на профиль — в зависимости от сайта).
Формировать ежедневный дайджест (1 раз в сутки) со списком новых объявлений за период.
3.2 Фильтры (настройки “разделов”)
В интерфейсе Telegram должна быть возможность:
3.3 Параметры поиска (минимальный набор)
Для каждого источника должны поддерживаться параметры (по возможности ресурса):
Локация (город/регион/провинция, радиус если возможно)
Тип объекта (квартира/дом/комната и т.п. — если применимо)
Цена: min/max
Площадь: min/max (если доступно)
Кол-во комнат: min/max (если доступно)
Ключевые слова включить/исключить (include/exclude)
Доп. параметры: этаж, лифт, новострой/вторичка, состояние и т.п. (опционально)
Сортировка (по дате публикации, newest first — приоритет)
Важно: если ресурс не позволяет часть параметров через URL/поиск, бот должен делать постфильтрацию по полям карточки (если эти поля удается стабильно извлекать).
3.4 “Минус-продавцы” (blacklist)
Нужно уметь:
Добавить продавца в blacklist:
по ссылке на профиль продавца (если есть)
по seller_id (если доступно)
по имени/нику (как запасной вариант)
по телефону/контакту (если публикуется)
Удалить продавца из blacklist
Просмотреть список blacklist
Возможность привязки blacklist:
3.5 Дедупликация (не слать одно и то же)
Для каждого объявления хранить:
уникальный идентификатор (если есть у сайта) или нормализованный URL
дата первого обнаружения
источник
привязанный фильтр(ы)
статус “отправлено / не отправлено”
(опционально) хэш ключевых полей
Повторная отправка возможна только если администратор явно выберет “переслать”.
3.6 Отчеты и уведомления
Ежедневный отчет (по каждому фильтру или общий):
Заголовок: название фильтра, период, количество новых объявлений
Список объявлений:
ссылка
цена (если удалось извлечь)
локация (если удалось)
краткое описание/заголовок (если удалось)
дата публикации (если доступно)
Формат для Telegram: сообщения + возможно батчинг (например по 10-20 ссылок на сообщение)
Опционально:
3.7 Управление через Telegram (обязательно)
Команды/меню (примерная структура):
UI предпочтительно через Inline-кнопки и пошаговые диалоги.
4) Технические требования
4.1 Архитектура
4.2 Хранилище
Подойдет:
4.3 Планировщик