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";
|
} from "../src/lib/tadimlik-havuzu";
|
||||||
import { anahtarVar } from "../src/lib/ai/client";
|
import { anahtarVar } from "../src/lib/ai/client";
|
||||||
import { yapilandirilmisUret } from "../src/lib/ai/cagri";
|
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).
|
// Next dışında koşuyoruz; .env dosyalarını elle yükle (mevcut env kazanır).
|
||||||
function envYukle(dosya: string): void {
|
function envYukle(dosya: string): void {
|
||||||
@@ -72,8 +73,8 @@ KURALLAR (kesin):
|
|||||||
riskli" etiketleriyle konuş.
|
riskli" etiketleriyle konuş.
|
||||||
- Programın "dilim" alanındaki "garanti" değeri teknik anahtardır; adaya dönük
|
- 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.
|
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
|
- trendOzeti: son ${VERI_YIL_SAYISI} yılın taban sıralaması hareketi, TEK cümle
|
||||||
beri taban 45B'den 38B'ye indi, bölüm zorlaşıyor").
|
(ö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ş.`;
|
- Adayın sıralaması yaklaşıktır; kesin sıra telaffuz etme, banda göre konuş.`;
|
||||||
|
|
||||||
function mockAktif(): boolean {
|
function mockAktif(): boolean {
|
||||||
@@ -87,27 +88,30 @@ function mockMetin(p: Program, temsiliSira: number, kategori: string | null) {
|
|||||||
riskNotu:
|
riskNotu:
|
||||||
"(Dev mock) Son taban sıralaması sırana yakın; küçük bir kayma sonucu değiştirebilir.",
|
"(Dev mock) Son taban sıralaması sırana yakın; küçük bir kayma sonucu değiştirebilir.",
|
||||||
trendOzeti:
|
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. */
|
/** rapor.ts programBilgisi ile aynı snapshot şekli. */
|
||||||
function programBilgisi(p: Program) {
|
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 {
|
return {
|
||||||
isim: p.isim,
|
isim: p.isim,
|
||||||
universite: p.universite,
|
universite: p.universite,
|
||||||
il: p.il,
|
il: p.il,
|
||||||
unitur: p.unitur,
|
unitur: p.unitur,
|
||||||
efektifSira: p.sira2025 ?? p.sira2024,
|
efektifSira: p.efektifSira,
|
||||||
siraGecmisi: gecmis.some((s) => s != null) ? gecmis : undefined,
|
siraGecmisi: gecmisVar ? gecmis : undefined,
|
||||||
|
ilkYil: gecmisVar ? ILK_YIL : undefined,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Deterministik program seçimi: kovanın temsili sırası için "dengeli" dilimden
|
* 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
|
* (boşsa "garanti") kategoriye ve üniversite tipine uyan, son yerleştirme
|
||||||
* yerleşen alan program. Tanınır/dolu programlar tadımlıkta daha ikna edici.
|
* yılında en çok yerleşen alan program. Tanınır/dolu programlar tadımlıkta
|
||||||
|
* daha ikna edici.
|
||||||
*/
|
*/
|
||||||
function programSec(
|
function programSec(
|
||||||
temsiliSira: number,
|
temsiliSira: number,
|
||||||
@@ -125,7 +129,7 @@ function programSec(
|
|||||||
: programlar;
|
: programlar;
|
||||||
if (uygunlar.length === 0) continue;
|
if (uygunlar.length === 0) continue;
|
||||||
const secilen = [...uygunlar].sort(
|
const secilen = [...uygunlar].sort(
|
||||||
(a, b) => (b.yerlesen2025 ?? -1) - (a.yerlesen2025 ?? -1),
|
(a, b) => (b.yerlesenSon ?? -1) - (a.yerlesenSon ?? -1),
|
||||||
)[0];
|
)[0];
|
||||||
return { program: secilen, dilim };
|
return { program: secilen, dilim };
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user