Files
kolaytercih/src/lib/risk.ts
bilalgursen d5235310d5 Risk hesaplama katmanı: rapor listesi satırları adayın sırasına göre renklenir
sihirbaz-modal'ın kullandığı RaporListesi adaySira prop'u bu dosyalara
bağlıydı; önceki commit'te eksik kalınca CI build'i kırıldı.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-26 02:35:20 +03:00

38 lines
1.2 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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",
};
/**
* 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";
}