56 lines
1.7 KiB
Python
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")
|