diff --git a/src/app/page.tsx b/src/app/page.tsx index 0a06a1e..d63def0 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -30,6 +30,7 @@ import { SectionEyebrow, } from "@/components/pixel-decor"; import { MAX_REVIZYON, URUNLER } from "@/lib/credits"; +import { VERI_YIL_SAYISI } from "@/lib/veri-kapsami"; import { Accordion, AccordionContent, @@ -103,8 +104,7 @@ const steps = [ icon: BarChart3, step: "2", title: "Yapay zekâ veriyi tarasın", - description: - "Son 4 yılın YÖK Atlas verisi — taban sıralaması trendleri, kontenjan değişimleri, doluluk oranları — senin için analiz edilsin.", + description: `Son ${VERI_YIL_SAYISI} yılın YÖK Atlas verisi — taban sıralaması trendleri, kontenjan değişimleri, doluluk oranları — senin için analiz edilsin.`, }, { icon: ShieldCheck, @@ -118,8 +118,7 @@ const steps = [ const faqs = [ { question: "KolayTercih'in önerileri neye dayanıyor?", - answer: - "Tüm öneriler YÖK Atlas'ın resmî verisine dayanır: son 4 yılın taban başarı sıralamaları, kontenjanlar, yerleşme istatistikleri ve doluluk oranları. Yapay zekâ bu veriyi yorumlar; veri olmadan tahmin yürütmez.", + answer: `Tüm öneriler YÖK Atlas'ın resmî verisine dayanır: son ${VERI_YIL_SAYISI} yılın taban başarı sıralamaları, kontenjanlar, yerleşme istatistikleri ve doluluk oranları. Yapay zekâ bu veriyi yorumlar; veri olmadan tahmin yürütmez.`, }, { question: "Ücretsiz tercih robotlarından farkı ne?", @@ -145,7 +144,7 @@ const comparison = [ tercihai: true, }, { - feature: "Son 4 yılın trend analizi", + feature: `Son ${VERI_YIL_SAYISI} yılın trend analizi`, robot: false, danisman: true, tercihai: true, @@ -177,7 +176,7 @@ const paketOzellikleri = [ }, { icon: ShieldCheck, - text: "Her tercih için yerleşme olasılığı ve risk analizi (son 4 yıl)", + text: `Her tercih için yerleşme riski ve trend analizi (son ${VERI_YIL_SAYISI} yıl)`, }, { icon: FileText, text: "Veliyle paylaşılabilir PDF rapor" }, { icon: RefreshCcw, text: `${MAX_REVIZYON} liste revizyon hakkı` }, @@ -362,7 +361,7 @@ export default function Home() { {[ { value: "23.000+", label: "Taranan lisans programı" }, { - value: "4 yıl", + value: `${VERI_YIL_SAYISI} yıl`, label: "Taban sıralaması trend verisi", }, { value: "%100", label: "Resmî YÖK Atlas kaynağı" }, diff --git a/src/components/arama-funnel-karti.tsx b/src/components/arama-funnel-karti.tsx index 29b8c5a..6e59359 100644 --- a/src/components/arama-funnel-karti.tsx +++ b/src/components/arama-funnel-karti.tsx @@ -35,7 +35,7 @@ const FUNNEL_METINLERI = [ "Sıralaman ne söylüyor? Birlikte bakalım.", "Her satırı senin için hesaplıyoruz.", "Akıllı tercih, içi rahat bir bekleyiş.", - "Yerleşme ihtimalini görerek seç.", + "Yerleşme riskini görerek seç.", "Sana özel liste birkaç dakikada hazır.", "İlgi alanların ve şehrin, tek listede.", "Boş kalan tercih, kaçan fırsattır.", diff --git a/src/features/odeme/components/paket-satinal.tsx b/src/features/odeme/components/paket-satinal.tsx index 6693d6f..5ebf077 100644 --- a/src/features/odeme/components/paket-satinal.tsx +++ b/src/features/odeme/components/paket-satinal.tsx @@ -12,6 +12,7 @@ import { } from "lucide-react"; import { getCurrentUser } from "@/lib/session"; import { URUNLER, DENEME_KREDISI } from "@/lib/credits"; +import { VERI_YIL_SAYISI } from "@/lib/veri-kapsami"; import { Button } from "@/components/ui/button"; import { Parallax } from "@/components/parallax"; import { Skeleton } from "@/components/ui/skeleton"; @@ -28,7 +29,7 @@ const OZELLIKLER = [ }, { icon: ShieldCheck, - text: "Her tercih için yerleşme olasılığı ve risk analizi (son 4 yıl trend)", + text: `Her tercih için yerleşme riski ve trend analizi (son ${VERI_YIL_SAYISI} yıl)`, }, { icon: FileText, text: "Veliyle paylaşılabilir PDF rapor" }, { icon: RefreshCcw, text: "2 liste revizyon hakkı" }, diff --git a/src/lib/ai/rapor.ts b/src/lib/ai/rapor.ts index 7d6e305..3141b23 100644 --- a/src/lib/ai/rapor.ts +++ b/src/lib/ai/rapor.ts @@ -18,7 +18,12 @@ import { type AdayProgram, } from "../rapor-havuzu"; import { secimOzeti } from "@/features/sihirbaz/sihirbaz-sabitler"; -import { RISK_ETIKET, dilimdenRisk, riskHesapla } from "../risk"; +import { + RISK_ETIKET, + dilimdenRisk, + riskHesapla, + riskNotuMetni, +} from "../risk"; // Yapay zekâdan istenen küçük şema (kullanıcı kararı, 6 Ağu 2026): riskNotu // ve trendOzeti gerçek sıra geçmişinden deterministik üretilir; dilim iskeleti @@ -161,16 +166,7 @@ function trendOzetiUret(p: AdayProgram): string { } function riskNotuUret(p: AdayProgram, adaySira: number): string { - switch (riskHesapla(p.sira2025 ?? p.sira2024, adaySira)) { - case "guvenli": - return "Taban sıralaması senin sıranın belirgin altında; yüksek ihtimalle yerleşirsin."; - case "az-riskli": - return "Taban sıralaması sırana yakın; orta ihtimalle yerleşilebilir."; - case "riskli": - return "Taban sıralaması senin sıranın üstünde kapandı; yerleşme ihtimali düşük."; - default: - return "Güncel taban sıralaması verisi yok; ihtimal öngörülemez, temkinli yaklaş."; - } + return riskNotuMetni(riskHesapla(p.sira2025 ?? p.sira2024, adaySira)); } /** Havuz programını render için gereken bilgiye indirger. */ diff --git a/src/lib/risk.ts b/src/lib/risk.ts index 4b7c151..8d7898d 100644 --- a/src/lib/risk.ts +++ b/src/lib/risk.ts @@ -42,3 +42,22 @@ export function dilimdenRisk(dilim: Dilim | string): RiskSeviyesi { if (dilim === "dengeli") return "az-riskli"; return "riskli"; } + +/** + * Risk seviyesinin tek cümlelik açıklaması (rapor satırları + tadımlık). + * Ürün yerleşme olasılığı HESAPLAMAZ; yalnızca son taban sıralamasını adayın + * sırasıyla kıyaslar. Bu yüzden metin olasılık/ihtimal/"yerleşirsin" demez. + * "Geçen yıl" da denmez: efektif sıra 2025 yoksa 2024'e düşüyor. + */ +export function riskNotuMetni(risk: RiskSeviyesi | null): string { + switch (risk) { + case "guvenli": + return "Son taban sıralaması senin sıranın belirgin altında; geçmiş veriye göre güvenli aralıkta."; + case "az-riskli": + return "Son taban sıralaması sırana yakın; küçük bir kayma sonucu değiştirebilir."; + case "riskli": + return "Son taban sıralaması senin sıranın üstünde kapandı; hayal tercihi olarak düşün."; + default: + return "Güncel taban verisi yok; bu satırı temkinli değerlendir."; + } +} diff --git a/src/lib/veri-kapsami.ts b/src/lib/veri-kapsami.ts new file mode 100644 index 0000000..937f77a --- /dev/null +++ b/src/lib/veri-kapsami.ts @@ -0,0 +1,6 @@ +/** + * Taban sıralaması geçmişinin kapsadığı yıl sayısı. Veritabanında + * sira2021–sira2025 kolonları var (5 yıl); "son N yıl" diyen tüm metinler bu + * sabitten okur. Yeni veri yılı eklenince (ör. sira2026) burayı güncelle. + */ +export const VERI_YIL_SAYISI = 5;