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 = { guvenli: "Güvenli", "az-riskli": "Az riskli", riskli: "Riskli", }; /** * 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, 3×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"; }