import Image from "next/image"; import { redirect } from "next/navigation"; import { verifySession, getCurrentUser } from "@/lib/session"; import { kullanicininRaporu } from "../rapor-queries"; import { PUAN_TURLERI, type DilimKey } from "@/types/yokatlas"; import { DILIM_ETIKET, RISK_ETIKET, dilimdenRisk } from "@/lib/risk"; import type { RaporParams, RaporSonuc } from "../types/rapor"; import { Skeleton } from "@/components/ui/skeleton"; import { YazdirButonu } from "./yazdir-butonu"; // Dilim sütunu: dilim adı + varsayılan riski. Üçüncü dilimde ikisi aynı // kelime ("Güvenli") olduğu için parantez düşer — "Güvenli (Güvenli)" yazmaz. function dilimLabel(dilim: DilimKey): string { const ad = DILIM_ETIKET[dilim] ?? dilim; const risk = RISK_ETIKET[dilimdenRisk(dilim)]; return ad === risk ? ad : `${ad} (${risk})`; } export async function RaporYazdir() { const session = await verifySession("/rapor/yazdir"); // Kullanıcı satırı ile rapor sorgusu bağımsız — paralel çöz const [user, satir] = await Promise.all([ getCurrentUser(), kullanicininRaporu(session.user.id), ]); if (!user) redirect("/giris"); if (!user.hasPaket) redirect("/paket"); if (!satir?.result) redirect("/sonuc"); const rapor = satir.result as RaporSonuc; const params = satir.params as RaporParams; const tarih = new Date(satir.updatedAt).toLocaleDateString("tr-TR", { day: "numeric", month: "long", year: "numeric", }); return (
Başarı sıralaması: {params.sira.toLocaleString("tr-TR")} · Puan türü: {PUAN_TURLERI[params.tur]} {params.il ? ` · İl: ${params.il}` : ""} · {tarih}
{rapor.kapsam?.uyarlandi ? (Not: Tercihlerine göre {rapor.kapsam.toplam} uygun program bulundu; liste {rapor.kapsam.dagilim.hayal} hayal ·{" "} {rapor.kapsam.dagilim.dengeli} dengeli ·{" "} {rapor.kapsam.dagilim.garanti} güvenli olarak kuruldu.
) : null}{rapor.genelDegerlendirme}
| # | Program / Üniversite | Dilim | Gerekçe | Risk notu | Trend |
|---|---|---|---|---|---|
| {t.sira} |
{p?.isim}
{p?.universite} · {p?.il ?? "—"} |
{dilimLabel(t.dilim)} | {t.gerekce} | {t.riskNotu} | {t.trendOzeti} |