import type { Dilim } from "./rapor-havuzu";

/**
 * Satır bazlı yerleşme riski. Renk dili ürünün her yerinde aynı:
 * yeşil = güvenli, sarı = az riskli, kırmızı = riskli.
 */
export type RiskSeviyesi = "guvenli" | "az-riskli" | "riskli";

export const RISK_ETIKET: Record<RiskSeviyesi, string> = {
  guvenli: "Güvenli",
  "az-riskli": "Az riskli",
  riskli: "Riskli",
};

/** Harita pinlerinin SVG dolgu renkleri — risk renk dilinin oklch karşılığı. */
export const RISK_PIN_RENK: Record<RiskSeviyesi, string> = {
  guvenli: "oklch(0.696 0.17 162.5)", // emerald-500
  "az-riskli": "oklch(0.769 0.188 70.1)", // amber-500
  riskli: "oklch(0.637 0.237 25.3)", // red-500
};

/**
 * Deterministik risk: programın efektif taban sıralaması (COALESCE 2025→2024)
 * adayın sıralamasıyla kıyaslanır. Eşikler db.ts'teki dilim aralıklarıyla
 * birebir aynı (dengeli: [sira, 1.4×sira], garanti: (1.4×sira, ∞)).
 */
export function riskHesapla(
  efektifSira: number | null | undefined,
  adaySira: number,
): RiskSeviyesi | null {
  if (efektifSira == null || !Number.isFinite(adaySira) || adaySira < 1) {
    return null;
  }
  if (efektifSira > Math.round(adaySira * 1.4)) return "guvenli";
  if (efektifSira >= adaySira) return "az-riskli";
  return "riskli";
}

/** Eski raporlar için (efektifSira kaydedilmemiş): dilimden risk türet. */
export function dilimdenRisk(dilim: Dilim | string): RiskSeviyesi {
  if (dilim === "garanti") return "guvenli";
  if (dilim === "dengeli") return "az-riskli";
  return "riskli";
}
