refactor: ortak tipler @/types/yokatlas + features/rapor/types'a çıkarıldı, server-only korumaları eklendi (Faz 1)
- Program/PUAN_TURLERI/DilimKey/RankResults/UniturGrubu/ProgramNetSatiri/ SihirbazFacetleri artık src/types/yokatlas.ts'te; lib/db.ts yalnızca sorgu fonksiyonları barındırıyor - RaporSonuc/RaporKapsam/RaporParams/MaskeliRapor src/features/rapor/types/ rapor.ts'e taşındı; ölü kalan TercihSchema/RaporSchema silindi - 11 lib dosyasına import "server-only" eklendi; scripts'in düz node ile import ettiği dosyalara (db, appdb, rapor-havuzu, tadimlik-havuzu, ai/client, ai/cagri, credits) bilinçli eklenmedi - Davranış değişikliği yok; pnpm build yeşil Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
69
src/features/rapor/types/rapor.ts
Normal file
69
src/features/rapor/types/rapor.ts
Normal file
@@ -0,0 +1,69 @@
|
||||
// Rapor domain'inin ortak tipleri — client bileşenleri ve server katmanı
|
||||
// birlikte tüketir. Üretim mantığı @/lib/ai/rapor.ts'te (server-only) yaşar
|
||||
// ve bu tiplere karşı derlenir; alan ekleme/çıkarma burada yapılır.
|
||||
|
||||
import type { DilimKey, PuanTuruKey, UniturGrubu } from "@/types/yokatlas";
|
||||
|
||||
export type RaporTercih = {
|
||||
programId: string;
|
||||
sira: number;
|
||||
dilim: DilimKey;
|
||||
gerekce: string;
|
||||
riskNotu: string;
|
||||
trendOzeti: string;
|
||||
};
|
||||
|
||||
/**
|
||||
* Listenin havuza uyarlanma bilgisi. uyarlandi=true ise dağılım ideal
|
||||
* 5/13/6'dan sapmıştır (havuz yetersizdi) ve UI dürüst bir not gösterir.
|
||||
* Eski kayıtlı raporlarda yok → opsiyonel.
|
||||
*/
|
||||
export type RaporKapsam = {
|
||||
toplam: number;
|
||||
dagilim: Record<DilimKey, number>;
|
||||
uyarlandi: boolean;
|
||||
};
|
||||
|
||||
// uyarilar şemada zorunlu ama eski kayıtlı raporlarda yok → tipte opsiyonel
|
||||
export type RaporSonuc = {
|
||||
tercihler: RaporTercih[];
|
||||
genelDegerlendirme: string;
|
||||
uyarilar?: string[];
|
||||
kapsam?: RaporKapsam;
|
||||
// Dev mock üretimi işareti: gerçek AI aktifken bayat mock kayıtları
|
||||
// ayıklamak için (bkz. src/lib/rapor-kaydi.ts)
|
||||
devMock?: boolean;
|
||||
// Render için havuzdan zenginleştirilmiş program bilgisi
|
||||
// efektifSira: COALESCE(sira2025, sira2024) — eski kayıtlı raporlarda yok
|
||||
// siraGecmisi: [2021..2025] taban sıralamaları — deterministik trend oku
|
||||
programlar: Record<
|
||||
string,
|
||||
{
|
||||
isim: string;
|
||||
universite: string;
|
||||
il: string | null;
|
||||
unitur: string | null;
|
||||
efektifSira?: number | null;
|
||||
siraGecmisi?: (number | null)[];
|
||||
}
|
||||
>;
|
||||
};
|
||||
|
||||
/**
|
||||
* Maske çıktısı: kilitli uyarıların yalnızca SAYISI iner, metinleri inmez.
|
||||
* RaporSchema'ya (LLM çıktısı) eklenmez — bu alan yalnızca maskede doğar.
|
||||
*/
|
||||
export type MaskeliRapor = RaporSonuc & { kilitliUyariSayisi?: number };
|
||||
|
||||
export interface RaporParams {
|
||||
sira: number;
|
||||
tur: PuanTuruKey;
|
||||
// Sihirbaz seçimleri (yeni akış)
|
||||
kategoriler?: string[];
|
||||
iller?: string[];
|
||||
universiteTipi?: UniturGrubu | "farketmez";
|
||||
oncelikler?: string[];
|
||||
// Eski akış alanları (geriye uyum — eski kayıtlı raporlar)
|
||||
il?: string;
|
||||
notlar?: string;
|
||||
}
|
||||
Reference in New Issue
Block a user