"""Konfiguracja scrapera leadów kancelarii prawnych."""

import os
from pathlib import Path

from dotenv import load_dotenv

# === Ścieżki ===
BASE_DIR = Path(__file__).resolve().parent
LOG_DIR = BASE_DIR / "logs"
LOG_FILE = LOG_DIR / "scraper.log"

# --- Załaduj .env z katalogu nadrzędnego (root projektu) ---
load_dotenv(dotenv_path=BASE_DIR.parent / ".env")


def _required_env(name: str) -> str:
    """Pobierz zmienną środowiskową; rzuć wyjątek jeśli brakuje."""
    val = os.getenv(name)
    if not val:
        raise RuntimeError(
            f"Missing required environment variable: {name}. "
            f"Copy .env.example to .env and fill in the values."
        )
    return val


# === Tryb testowy ===
# Gdy True, każdy lead trafiający do CRM ma email nadpisany na TEST_EMAIL.
TEST_MODE = False
TEST_EMAIL = os.getenv("TEST_EMAIL", "test@example.com")

# === CRM dgred ===
CRM_BASE_URL = "https://app.dgred.com/api/v1"
CRM_API_KEY = _required_env("CRM_API_KEY")

# === Limity ===
DAILY_LIMIT = 10          # łączny limit leadów dziennie (0 = bez limitu)
DELAY_SECONDS = 2          # opóźnienie między requestami HTTP
REQUEST_TIMEOUT = 10       # timeout requestów w sekundach

SOURCE_LIMITS = {
    "ora":          3,
    "oirp":         1,
    "google_maps":  0,
    "panoramafirm": 2,
    "linkedin":     4,
}

# Priorytet uruchamiania źródeł
SOURCE_PRIORITY = ["ora", "oirp", "panoramafirm", "google_maps", "linkedin"]

# === Apify (LinkedIn) ===
# Actor do uruchomienia. Można podmienić np. na "apify/linkedin-company-scraper".
APIFY_LINKEDIN_ACTOR = os.getenv("APIFY_LINKEDIN_ACTOR", "harvestapi/linkedin-company-search")
# Domyślny limit rekordów per uruchomienie aktora
APIFY_LINKEDIN_MAX_ITEMS = 50
# Timeout dla synchronicznego uruchomienia aktora (sekundy)
APIFY_RUN_TIMEOUT = 600

# === Apify (OIRP / radcowie prawni) ===
# szukajradcy.pl/search jest zablokowany przez robots.txt — listing pobieramy
# przez Apify aktora "apify/web-scraper" (renderuje stronę w przeglądarce
# i wyciąga profile zgodnie z pageFunction).
APIFY_OIRP_ACTOR = os.getenv("APIFY_OIRP_ACTOR", "apify/web-scraper")
APIFY_OIRP_MAX_ITEMS = 30
APIFY_OIRP_QUERY = "prawo rodzinne"
APIFY_OIRP_MAX_PAGES = 5

# === Klucze zewnętrzne ===
GOOGLE_MAPS_API_KEY = _required_env("GOOGLE_MAPS_API_KEY")
APIFY_API_KEY = _required_env("APIFY_API_KEY")

# === Alerty (SendGrid) ===
ALERT_EMAIL = os.getenv("ALERT_EMAIL", "d@dgx.dev")
SENDGRID_API_KEY = _required_env("SENDGRID_API_KEY")
SENDGRID_FROM = os.getenv("SENDGRID_FROM", "sys@airminal.com")

# === HTTP ===
USER_AGENT = "Mozilla/5.0 (compatible; LegalLeadBot/1.0)"
DEFAULT_HEADERS = {"User-Agent": USER_AGENT}

# === Słowa kluczowe ===
KEYWORDS = [
    "kancelaria adwokacka",
    "kancelaria prawna",
    "adwokat",
    "radca prawny",
    "prawo rodzinne",
    "rozwód",
    "adwokat rodzinny",
]

# === Główne miasta Polski (Google Maps query) ===
CITIES = [
    "Warszawa", "Kraków", "Łódź", "Wrocław", "Poznań",
    "Gdańsk", "Szczecin", "Bydgoszcz", "Lublin", "Białystok",
    "Katowice", "Gdynia", "Częstochowa", "Radom", "Sosnowiec",
    "Toruń", "Kielce", "Rzeszów", "Gliwice", "Olsztyn",
    "Zabrze", "Bytom", "Bielsko-Biała", "Zielona Góra", "Opole",
    "Rybnik", "Tychy", "Płock", "Elbląg", "Wałbrzych",
    "Włocławek", "Tarnów", "Chorzów", "Koszalin", "Kalisz",
    "Legnica", "Grudziądz", "Jaworzno", "Słupsk", "Jastrzębie-Zdrój",
    "Nowy Sącz", "Jelenia Góra", "Siedlce", "Mysłowice", "Konin",
    "Piotrków Trybunalski", "Inowrocław", "Lubin", "Ostrów Wielkopolski",
    "Suwałki", "Gniezno", "Ostrowiec Świętokrzyski", "Głogów", "Łomża",
    "Zamość", "Przemyśl", "Stalowa Wola", "Ostrołęka", "Tarnobrzeg",
    # --- Mazowsze / Podlasie / Warmia-Mazury ---
    "Aleksandrów Kujawski", "Augustów", "Białobrzegi", "Bielsk Podlaski",
    "Biskupiec", "Błonie", "Brańsk", "Brok", "Brwinów", "Ciechanów",
    "Chorzele", "Czerwonka", "Czyżew", "Dobre Miasto", "Drobin",
    "Ełk", "Garwolin", "Giżycko", "Goniądz", "Góra Kalwaria",
    "Grajewo", "Grodzisk Mazowiecki", "Jadów", "Józefów", "Kadzidło",
    "Kałuszyn", "Kętrzyn", "Kolno", "Kobyłka", "Konstancin-Jeziorna",
    "Legionowo", "Lidzbark Warmiński", "Łochów", "Maków Mazowiecki",
    "Marki", "Mińsk Mazowiecki", "Mława", "Myszyniec", "Nasielsk",
    "Nowogród", "Nowy Dwór Mazowiecki", "Ostrów Mazowiecka", "Otwock",
    "Piaseczno", "Pisz", "Płońsk", "Przasnysz", "Pruszków", "Pułtusk",
    "Różan", "Serock", "Sokołów Podlaski", "Szczytno", "Tłuszcz",
    "Węgrów", "Wieliszew", "Wołomin", "Wyszków", "Zambrów", "Ząbki",
    "Żyrardów",
]

# === Mapping źródło -> tag CRM ===
SOURCE_TAGS = {
    "ora":          "źródło:ora",
    "oirp":         "źródło:oirp",
    "google_maps":  "źródło:google-maps",
    "panoramafirm": "źródło:panoramafirm",
    "linkedin":     "źródło:linkedin",
}

# Kolor tagu źródła w CRM (domyślnie 3, override per źródło)
SOURCE_TAG_COLORS = {
    "linkedin": 4,
}
SOURCE_TAG_COLOR_DEFAULT = 3

# === Domyślne tagi dla każdego leada ===
DEFAULT_TAGS = [
    {"tag": "nowy-lead", "color": 1},
]

DEFAULT_CATEGORIES = ["kancelaria-prawna"]
