feat(tadimlik): batch üretimi yılsız alanlarla; snapshot'a ilkYil (P-B c)
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 <noreply@anthropic.com>
This commit is contained in:
@@ -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 };
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user