import { env } from "@/lib/env";

/**
 * Geo-Konfiguration, zentral aus dem kanonischen `env.ts` abgeleitet.
 * Alle Werte haben Defaults (env.ts), damit die Validierung ohne explizite
 * Geo-Variablen nicht scheitert; eine kaputte URL wird dort weiterhin abgelehnt.
 */
export const geoConfig = {
  osrmUrl: env.OSRM_URL.replace(/\/+$/, ""),
  nominatimUrl: env.NOMINATIM_URL.replace(/\/+$/, ""),
  httpTimeoutMs: env.GEO_HTTP_TIMEOUT_MS,
  /** Durchschnittsgeschwindigkeit (km/h) für die Haversine-Fallback-Schätzung. */
  haversineKmh: env.HAVERSINE_KMH,
  /** Vorfilter-Radius (km) für `searchHitsToGeoCandidates`. */
  defaultRadiusKm: 60,
  /** Harte Obergrenze an Kandidaten pro OSRM-`/table`-Aufruf. */
  maxCandidates: 100,
} as const;

/** Schätzt die Fahrdauer (Sekunden) aus der Luftlinie und `haversineKmh`. */
export function haversineDurationSec(distanceMeters: number): number {
  const metersPerSec = (geoConfig.haversineKmh * 1000) / 3600;
  return distanceMeters / metersPerSec;
}
