### Подробное техническое задание для автоматизации сбора данных о недвижимости
**Цель:** Автоматизировать сбор данных о недвижимости с сайта 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. **Сроки выполнения и поставки:**
- **План проекта:** Предоставить подробный план проекта с ключевыми этапами и сроками выполнения.
- **Прототип:** Предоставить рабочий прототип в течение первых двух недель.
- **Окончательная сдача:** Завершить проект в согласованные сроки.
#### Дополнительные условия:
- **Пользовательский интерфейс:** Разработать простой веб-интерфейс или командную строку для пользователей для изменения критериев фильтрации и настроек оповещений.
- **Масштабируемость:** Обеспечить возможность обработки увеличивающегося количества объявлений и взаимодействий пользователей без значительного ухудшения производительности.
- **План поддержки:** Предложить план поддержки после развертывания для обеспечения долгосрочной функциональности и решения возникающих проблем.
---
Пожалуйста, подтвердите свою готовность взяться за проект, предоставьте информацию о стоимости выполнения задания и сроки выполнения.