fix(danisman): veri yılı ve başarı sırası barajı prompt'ta ve araç çıktısında (iş 2; B2, B8, B16) [KARAR]
- Prompt: veri yılı veri-yillari.ts'ten (SON_YIL) türetilir; 'geçen yıl' kalktı, başka yıl uydurma yasağı.
- Prompt: baraj bölümü. Değerler program_ozellik.min_basari_sirasi'ndan (araclar.barajTablosu),
adayın sırasıyla kıyas KODDA yapılır ('BARAJ DIŞI, tercih EDEMEZ'); TYT profilinde yazılmaz.
- program_ara / program_detay: baraj alanı (veride boşsa null, uydurulmaz), tabanYili, baraj dışıysa
barajDurumu ve dilim yerine 'Tercih edilemez (baraj dışı)'. dilim süzgeci baraj dışını getirmez.
program_detay'daki tercihBaraji alanının adı baraj oldu.
- program_ara: (KKTC Uyruklu) ve (M.T.O.K.) satırları varsayılan gizli (rapor-havuzu.ozelKontenjanSatiriMi);
ozel_kontenjan=true ile açılır.
- Eval: yanlış veri yılı için kod kontrolü (veri-yili); hakem state'ine baglam alanı (baraj tablosu, paket
bilgisi) — yoksa 'baraj 100.000' ve '299 TL' dayanaksız sayılıyordu; s103 araç şartı kalktı.
Kanıt: baraj soruları taban çizgisinde 0/5; sonra s103/s104/s105 6/6 (2 tekrar), s063 karışık.
Yanlış veri yılı: taban çizgisinde 9 cevap; aynı 8 soru × 2'de 0. Kilitli: s106 2/2.
Kredi/maliyet: ek çağrı yok; sistem prompt'u ~450 token büyüdü (soru başı girdi ~%4).
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
@@ -11,6 +11,7 @@ import type { RaporParams } from "@/features/rapor/types/rapor";
|
||||
import { secimOzeti } from "@/features/sihirbaz/sihirbaz-sabitler";
|
||||
import { PUAN_TURLERI } from "@/types/yokatlas";
|
||||
import { ACIK_SATIR } from "@/lib/rapor-maske";
|
||||
import { ONCEKI_YIL, SON_YIL, TERCIH_YILI } from "@/lib/veri-yillari";
|
||||
|
||||
/**
|
||||
* Profil kaydı öncesi "kaydedeyim mi?" onayı (KVKK Üretken YZ Rehberi:
|
||||
@@ -33,11 +34,39 @@ export function sohbetListeOzeti(tamOzet: string, kilitli: boolean): string {
|
||||
].join("\n");
|
||||
}
|
||||
|
||||
/**
|
||||
* Başarı sırası barajı bölümü. Kıyas (adayın sırası barajın içinde mi) kodda
|
||||
* yapılır; model yalnız aktarır. Baraj değerleri veriden gelir (sabit yazılmaz).
|
||||
*/
|
||||
function barajBolumu(sira: number, barajlar?: { sira: number; bolumler: string }[]): string | null {
|
||||
if (!barajlar?.length) return null;
|
||||
const sayi = (n: number) => n.toLocaleString("tr-TR");
|
||||
const disinda = barajlar.filter((b) => sira > b.sira);
|
||||
const satirlar = barajlar.map(
|
||||
(b) => `- ${sayi(b.sira)}: ${b.bolumler} → aday ${sira > b.sira ? "BARAJ DIŞI, tercih EDEMEZ" : "barajın içinde, tercih edebilir"}`,
|
||||
);
|
||||
return `BAŞARI SIRASI BARAJI (ÖSYM kılavuz kuralı; değerler veriden): bazı bölümler
|
||||
yalnız başarı sırası belli bir sıradan İYİ olan adaylarca tercih edilebilir.
|
||||
Adayın sırası ${sayi(sira)}:
|
||||
${satirlar.join("\n")}
|
||||
${
|
||||
disinda.length
|
||||
? `Aday yukarıda "BARAJ DIŞI" yazan bölümleri TERCİH EDEMEZ; bu bir risk ya da olasılık meselesi değil, kuraldır. Bu bölümler sorulursa barajı sayısıyla söyle ("… için başarı sırası barajı ${sayi(disinda.at(-1)!.sira)}; senin sıran ${sayi(sira)}, bu yüzden tercih edemezsin"), "Hayal olarak yaz" deme ve bu bölümler için taban sırası kıyasına girme. Listede bu bölümlerin olmaması da bu yüzdendir.`
|
||||
: "Aday bu barajların hepsinin içinde."
|
||||
}
|
||||
Barajın içinde olmak yerleşmek demek değildir. Tek bir programın barajı
|
||||
program_ara / program_detay çıktısındaki "baraj" alanındadır; alan boşsa o
|
||||
programda baraj yok ya da veride yok — baraj UYDURMA. Ön lisans (TYT)
|
||||
programlarında başarı sırası barajı yoktur.`;
|
||||
}
|
||||
|
||||
export function sistemPromptu(opts: {
|
||||
params: RaporParams;
|
||||
listeOzeti: string;
|
||||
kilitli?: boolean;
|
||||
profil?: DanismanProfili;
|
||||
/** Verideki başarı sırası barajları (araclar.barajTablosu); verilmezse baraj bölümü yazılmaz. */
|
||||
barajlar?: { sira: number; bolumler: string }[];
|
||||
}): string {
|
||||
const { params } = opts;
|
||||
const secimVar =
|
||||
@@ -60,8 +89,14 @@ KURALLAR:
|
||||
(aday ya da eski mesajlar böyle dese bile sen "güvenli" diye düzelt).
|
||||
- Listedeki her satırda dilim ve risk etiketi var: Güvenli (yeşil) = taban
|
||||
sıralaması adayın belirgin altında, Az riskli (sarı) = adayın sıralaması
|
||||
civarında, Riskli (kırmızı) = geçen yıl adayın sıralamasının üzerinde
|
||||
kapandı. Risk sorularında bu etiketleri ve taban sıralarını kullan.
|
||||
civarında, Riskli (kırmızı) = son yerleştirmede adayın sıralamasının
|
||||
üzerinde kapandı. Risk sorularında bu etiketleri ve taban sıralarını kullan.
|
||||
- VERİ YILI: listedeki ve araçlardaki taban sıraları ile kontenjanlar
|
||||
${SON_YIL} yerleştirmesine aittir (${SON_YIL}'da dolmayan az sayıda programda
|
||||
${ONCEKI_YIL}; araç bunu "tabanYili" alanında söyler). Yıl söylemen
|
||||
gerekirse "${SON_YIL} yerleştirmesi" de; "${SON_YIL - 2} verisi", "${ONCEKI_YIL} verisi" gibi
|
||||
başka bir yıl UYDURMA. Net, TÜİK ve URAP verisinin yılı araç çıktısında
|
||||
yazar; onu aynen aktar. ${TERCIH_YILI} taban sıraları henüz yok, tahmin etme.
|
||||
- OLASILIK VE GARANTİ YOK: yerleşme garantisi verme; yerleşmeyi olasılık,
|
||||
yüzde, ihtimal ya da şans diliyle TAHMİN ETME. İki yönde de yasak: "yerleşme
|
||||
olasılığın yüksek" de, "olasılığın düşük" de söylenmez. KolayTercih olasılık
|
||||
@@ -125,8 +160,11 @@ KURALLAR:
|
||||
konusuna dön (güvenlik kuralı bunun istisnasıdır).
|
||||
- Kesin konuşmaktan kaçın: "${SORUMLULUK_REDDI}"`,
|
||||
`ADAY BİLGİSİ: başarı sıralaması ${params.sira.toLocaleString("tr-TR")}, puan türü ${PUAN_TURLERI[params.tur]}.`,
|
||||
`ADAYIN 24'LÜK LİSTESİ:\n${opts.listeOzeti}`,
|
||||
`ADAYIN 24'LÜK LİSTESİ (taban sıraları ${SON_YIL} yerleştirmesinden):\n${opts.listeOzeti}`,
|
||||
];
|
||||
// TYT sırası lisans barajlarıyla kıyaslanmaz; ön lisansta baraj yok
|
||||
const baraj = params.tur === "tyt" ? null : barajBolumu(params.sira, opts.barajlar);
|
||||
if (baraj) parcalar.splice(2, 0, baraj);
|
||||
if (opts.kilitli) {
|
||||
parcalar.push(
|
||||
`ÖNEMLİ: Adayın paketi yok; listenin yalnızca ilk ${ACIK_SATIR} tercihi açık.
|
||||
|
||||
Reference in New Issue
Block a user