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 Планувальник