### Szczegółowe zadanie techniczne dotyczące automatyzacji zbierania danych o nieruchomościach
**Cel:** Zautomatyzować zbieranie danych o nieruchomościach z witryny myhome.ge, aktualizować bazę danych w Excelu i wysyłać powiadomienia na adres e-mail co godzinę z nowymi ogłoszeniami, które odpowiadają określonym kryteriom.
#### Główne zadania:
1. **Zbieranie danych z witryny myhome.ge:**
- **Technologia skanowania:** Używać `Scrapy` do efektywnego skanowania stron internetowych.
- **Proxy i CAPTCHA:** Wdrożyć rotację serwerów proxy z użyciem `Scrapy-Proxy-Pool` oraz rozwiązanie CAPTCHA za pomocą usługi `2Captcha`, jeśli to konieczne.
- **Ekstrakcja danych:** Zebrać następujące dane:
- Tytuł ogłoszenia
- Cena
- Lokalizacja
- Liczba pokoi
- Powierzchnia (m²)
- Data publikacji
- Opis
- Informacje kontaktowe
2. **Filtrowanie danych według określonych kryteriów:**
- **Kryteria:**
- Minimalna i maksymalna cena
- Dzielnica
- Typ nieruchomości (np. mieszkanie, dom)
- Liczba pokoi
- Minimalna i maksymalna powierzchnia
- Dodatkowe cechy (np. balkon, piętro, typ ogrzewania, stan nieruchomości)
- **Aktualizacje w czasie rzeczywistym:** Zapewnić interfejs do dynamicznej zmiany kryteriów filtrowania przez użytkownika.
3. **Zarządzanie bazą danych w Excelu:**
- **Format pliku:** Używać `pandas` do tworzenia i zarządzania plikiem Excel.
- **Aktualizacja danych:**
- Aktualizować bazę danych co godzinę, dodając nowe ogłoszenia.
- Usuwać przestarzałe lub zduplikowane ogłoszenia.
- **Kopia zapasowa i wersjonowanie:** Utrzymywać wersjonowane kopie zapasowe pliku Excel, aby zapobiec utracie danych.
4. **System powiadomień e-mail:**
- **Częstotliwość:** Wysyłać powiadomienia co godzinę.
- **Treść wiadomości:** Zawierać nowe ogłoszenia, które odpowiadają określonym kryteriom.
- **Usługa wysyłania wiadomości:** Używać `smtplib` do wysyłania wiadomości.
- **Konfigurowalny harmonogram:** Pozwolić użytkownikowi na zmianę częstotliwości powiadomień w razie potrzeby.
#### Wymagania techniczne:
1. **Język programowania:**
- Zalecany Python
2. **Biblioteki i narzędzia:**
- **Web scraping:** `Scrapy`, `BeautifulSoup`
- **Żądania HTTP:** `requests`
- **Przetwarzanie danych:** `pandas`, `openpyxl`
- **Wysyłanie wiadomości:** `smtplib`
- **Rotacja proxy:** `Scrapy-Proxy-Pool`
- **Rozwiązywanie CAPTCHA:** `2Captcha`
3. **Monitorowanie i wsparcie:**
- **Monitorowanie w czasie rzeczywistym:** Wdrożyć monitorowanie z użyciem `Prometheus` i `Grafana`.
- **Metryki:**
- Czas odpowiedzi
- Liczba udanych/nieudanych żądań
- Błędy
- **System powiadomień:** Skonfigurować powiadomienia w przypadku krytycznych problemów (np. wysoki poziom błędów, przestoje).
4. **Testowanie i dokumentacja:**
- **Framework do testowania:** Używać `pytest` do dokładnego testowania.
- **Dokumentacja:** Dostarczyć pełną dokumentację, w tym instrukcje instalacji, podręcznik użytkownika i przewodnik rozwiązywania problemów.
5. **Bezpieczeństwo i zgodność:**
- **Prywatność danych:** Zapewnić zgodność przetwarzania danych z RODO i innymi odpowiednimi regulacjami.
- **Bezpieczny dostęp:** Używać bezpiecznych metod dostępu i przechowywania poufnych informacji (np. danych kontaktowych).
6. **Terminy realizacji i dostawy:**
- **Plan projektu:** Dostarczyć szczegółowy plan projektu z kluczowymi etapami i terminami realizacji.
- **Prototyp:** Dostarczyć działający prototyp w ciągu pierwszych dwóch tygodni.
- **Ostateczne oddanie:** Zakończyć projekt w uzgodnionym terminie.
#### Dodatkowe warunki:
- **Interfejs użytkownika:** Opracować prosty interfejs internetowy lub wiersza poleceń dla użytkowników do zmiany kryteriów filtrowania i ustawień powiadomień.
- **Skalowalność:** Zapewnić możliwość przetwarzania rosnącej liczby ogłoszeń i interakcji użytkowników bez znacznego pogorszenia wydajności.
- **Plan wsparcia:** Zaproponować plan wsparcia po wdrożeniu, aby zapewnić długoterminową funkcjonalność i rozwiązywanie pojawiających się problemów.
---
Proszę potwierdzić swoją gotowość do podjęcia się projektu, podać informacje o kosztach realizacji zadania oraz terminy wykonania.