Files
huizenbot/src/config.py

56 lines
1.7 KiB
Python

"""
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")