### Докладне технічне завдання для автоматизації збору даних про нерухомість
**Мета:** Автоматизувати збір даних про нерухомість з сайту myhome.ge, оновлювати базу даних в Excel і надсилати сповіщення на електронну пошту раз на годину з новими оголошеннями, що відповідають заданим критеріям.
#### Основні завдання:
1. **Збір даних з сайту myhome.ge:**
- **Технологія скрейпінгу:** Використовувати `Scrapy` для ефективного веб-скрейпінгу.
- **Проксі та капча:** Впровадити ротацію проксі-серверів з використанням `Scrapy-Proxy-Pool` та рішення капч через сервіс `2Captcha`, якщо необхідно.
- **Витягування даних:** Зібрати такі дані:
- Назва оголошення
- Ціна
- Розташування
- Кількість кімнат
- Площа (кв. метри)
- Дата розміщення
- Опис
- Контактна інформація
2. **Фільтрація даних за заданими критеріями:**
- **Критерії:**
- Мінімальна та максимальна ціна
- Район
- Тип нерухомості (наприклад, квартира, будинок)
- Кількість кімнат
- Мінімальна та максимальна площа
- Додаткові характеристики (наприклад, балкон, поверх, тип опалення, стан нерухомості)
- **Оновлення в реальному часі:** Забезпечити інтерфейс для динамічного зміни критеріїв фільтрації користувачем.
3. **Управління базою даних в Excel:**
- **Формат файлу:** Використовувати `pandas` для створення та управління Excel файлом.
- **Оновлення даних:**
- Оновлювати базу даних щогодини, додаючи нові оголошення.
- Видаляти застарілі або дублікатні оголошення.
- **Резервне копіювання та версійність:** Підтримувати версійні резервні копії Excel файлу для запобігання втраті даних.
4. **Система сповіщень по електронній пошті:**
- **Частота:** Надсилати сповіщення кожну годину.
- **Зміст листів:** Включати нові оголошення, що відповідають заданим критеріям.
- **Сервіс надсилання листів:** Використовувати `smtplib` для надсилання листів.
- **Налаштовуваний графік:** Дозволити користувачу змінювати частоту сповіщень за необхідності.
#### Технічні вимоги:
1. **Мова програмування:**
- Рекомендується Python
2. **Бібліотеки та інструменти:**
- **Веб-скрейпінг:** `Scrapy`, `BeautifulSoup`
- **HTTP-запити:** `requests`
- **Обробка даних:** `pandas`, `openpyxl`
- **Надсилання листів:** `smtplib`
- **Ротація проксі:** `Scrapy-Proxy-Pool`
- **Рішення капчі:** `2Captcha`
3. **Моніторинг та підтримка:**
- **Моніторинг в реальному часі:** Впровадити моніторинг з використанням `Prometheus` та `Grafana`.
- **Метрики:**
- Час відгуку
- Кількість успішних/неуспішних запитів
- Помилки
- **Система сповіщень:** Налаштувати сповіщення при критичних проблемах (наприклад, високий рівень помилок, простої).
4. **Тестування та документація:**
- **Фреймворк для тестування:** Використовувати `pytest` для ретельного тестування.
- **Документація:** Надати повну документацію, включаючи інструкції з установки, посібник користувача та посібник з усунення неполадок.
5. **Безпека та відповідність вимогам:**
- **Конфіденційність даних:** Забезпечити відповідність обробки даних GDPR та іншим релевантним регламентам.
- **Безпечний доступ:** Використовувати безпечні методи для доступу та зберігання конфіденційної інформації (наприклад, контактних даних).
6. **Терміни виконання та поставки:**
- **План проекту:** Надати детальний план проекту з ключовими етапами та термінами виконання.
- **Прототип:** Надати робочий прототип протягом перших двох тижнів.
- **Остаточна здача:** Завершити проект у погоджені терміни.
#### Додаткові умови:
- **Користувацький інтерфейс:** Розробити простий веб-інтерфейс або командний рядок для користувачів для зміни критеріїв фільтрації та налаштувань сповіщень.
- **Масштабованість:** Забезпечити можливість обробки зростаючої кількості оголошень та взаємодій користувачів без значного погіршення продуктивності.
- **План підтримки:** Запропонувати план підтримки після розгортання для забезпечення довгострокової функціональності та вирішення виникаючих проблем.
---
Будь ласка, підтвердіть свою готовність взятися за проект, надайте інформацію про вартість виконання завдання та терміни виконання.