From 85ed972c68d37f72e01f2d2ddfd3d8b5024410fd Mon Sep 17 00:00:00 2001 From: bilalgursen Date: Mon, 21 Sep 2026 17:00:39 +0300 Subject: [PATCH] =?UTF-8?q?feat(tadimlik):=20batch=20=C3=BCretimi=20y?= =?UTF-8?q?=C4=B1ls=C4=B1z=20alanlarla;=20snapshot'a=20ilkYil=20(P-B=20c)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Prompt ve mock metni "son ${VERI_YIL_SAYISI} yıl" der; program seçimi yerlesenSon'a göre; snapshot rapor.ts programBilgisi ile aynı şekilde siraGecmisi + ilkYil yazar. Co-Authored-By: Claude Fable 5.1 --- scripts/tadimlik-uret.ts | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/scripts/tadimlik-uret.ts b/scripts/tadimlik-uret.ts index 697c6dd..f27ed2c 100644 --- a/scripts/tadimlik-uret.ts +++ b/scripts/tadimlik-uret.ts @@ -38,6 +38,7 @@ import { } from "../src/lib/tadimlik-havuzu"; import { anahtarVar } from "../src/lib/ai/client"; import { yapilandirilmisUret } from "../src/lib/ai/cagri"; +import { ILK_YIL, VERI_YIL_SAYISI } from "../src/lib/veri-yillari"; // Next dışında koşuyoruz; .env dosyalarını elle yükle (mevcut env kazanır). function envYukle(dosya: string): void { @@ -72,8 +73,8 @@ KURALLAR (kesin): riskli" etiketleriyle konuş. - Programın "dilim" alanındaki "garanti" değeri teknik anahtardır; adaya dönük hiçbir metinde bu kelimeyi kullanma, o dilimi "güvenli" diye an. -- trendOzeti: son 5 yılın taban sıralaması hareketi, TEK cümle (ör. "2022'den - beri taban 45B'den 38B'ye indi, bölüm zorlaşıyor"). +- trendOzeti: son ${VERI_YIL_SAYISI} yılın taban sıralaması hareketi, TEK cümle + (ör. "2022'den beri taban 45B'den 38B'ye indi, bölüm zorlaşıyor"). - Adayın sıralaması yaklaşıktır; kesin sıra telaffuz etme, banda göre konuş.`; function mockAktif(): boolean { @@ -87,27 +88,30 @@ function mockMetin(p: Program, temsiliSira: number, kategori: string | null) { riskNotu: "(Dev mock) Son taban sıralaması sırana yakın; küçük bir kayma sonucu değiştirebilir.", trendOzeti: - "(Dev mock) Son 5 yılda taban sıralaması görece stabil seyretti.", + `(Dev mock) Son ${VERI_YIL_SAYISI} yılda taban sıralaması görece stabil seyretti.`, }; } /** rapor.ts programBilgisi ile aynı snapshot şekli. */ function programBilgisi(p: Program) { - const gecmis = [p.sira2021, p.sira2022, p.sira2023, p.sira2024, p.sira2025]; + const gecmis = p.siraGecmisi; + const gecmisVar = gecmis.some((s) => s != null); return { isim: p.isim, universite: p.universite, il: p.il, unitur: p.unitur, - efektifSira: p.sira2025 ?? p.sira2024, - siraGecmisi: gecmis.some((s) => s != null) ? gecmis : undefined, + efektifSira: p.efektifSira, + siraGecmisi: gecmisVar ? gecmis : undefined, + ilkYil: gecmisVar ? ILK_YIL : undefined, }; } /** * Deterministik program seçimi: kovanın temsili sırası için "dengeli" dilimden - * (boşsa "garanti") kategoriye ve üniversite tipine uyan, 2025'te en çok - * yerleşen alan program. Tanınır/dolu programlar tadımlıkta daha ikna edici. + * (boşsa "garanti") kategoriye ve üniversite tipine uyan, son yerleştirme + * yılında en çok yerleşen alan program. Tanınır/dolu programlar tadımlıkta + * daha ikna edici. */ function programSec( temsiliSira: number, @@ -125,7 +129,7 @@ function programSec( : programlar; if (uygunlar.length === 0) continue; const secilen = [...uygunlar].sort( - (a, b) => (b.yerlesen2025 ?? -1) - (a.yerlesen2025 ?? -1), + (a, b) => (b.yerlesenSon ?? -1) - (a.yerlesenSon ?? -1), )[0]; return { program: secilen, dilim }; }