""" config.py — Secrets via environment variables. """ import os MARK_WERK_POSTCODE = "2629HG" MICHELLE_WERK_POSTCODE = "3133AV" MARK_WERK_9292 = "delft/"+MARK_WERK_POSTCODE MICHELLE_WERK_9292 = "vlaardingen/"+MICHELLE_WERK_POSTCODE HA_WEBHOOK_URL = os.environ.get("HA_WEBHOOK_URL", "") USER_AGENT = "Huizenbot/1.0 (+mark@kalsbeek.dev) persoonlijk gebruik" DB_PATH = os.environ.get("DB_PATH", "/data/huizenbot.db") FIETS_SNELHEID_FACTOR = 1.27 MAX_PRICE = 300_000 # coarse pre-filter in adapters only MIN_AREA = 65 # Sq meters # Fine price filter: max mortgage per energy label group * 0.9 # Labels not in this map fall back to the most conservative tier. _LABEL_DISCOUNT = 0.9 MAX_PRIJS_PER_LABEL: dict[str, int] = { "EFG": int(286_942 * _LABEL_DISCOUNT), "CD": int(291_942 * _LABEL_DISCOUNT), "AB": int(296_942 * _LABEL_DISCOUNT), "A+": int(306_942 * _LABEL_DISCOUNT), } _MAX_PRIJS_ONBEKEND = MAX_PRIJS_PER_LABEL["EFG"] # conservative fallback def max_prijs_voor_label(label: str | None) -> int: """Return the max allowed price for a given energy label (or None/unknown).""" if not label: return _MAX_PRIJS_ONBEKEND l = label.strip().upper() if l in ("A+++", "A++", "A+"): return MAX_PRIJS_PER_LABEL["A+"] if l in ("A", "B"): return MAX_PRIJS_PER_LABEL["AB"] if l in ("C", "D"): return MAX_PRIJS_PER_LABEL["CD"] if l in ("E", "F", "G"): return MAX_PRIJS_PER_LABEL["EFG"] return _MAX_PRIJS_ONBEKEND # Travel time limits (None travel time → pass, with warning) MAX_OV_MINUTEN_MARK = 50 MAX_OV_MINUTEN_MICHELLE = 50 MAX_FIETS_MINUTEN_MARK = 35 # No fiets limit for michelle APP_ENV = os.environ.get("APP_ENV", "dev")