fix(havuz): B8 — KKTC uyruklu ve M.T.O.K. kontenjan satırları havuza girmesin [KARAR]
YÖK Atlas özel kontenjanları ayrı program satırı olarak veriyor; adında "(KKTC Uyruklu)" ya da "(M.T.O.K.)" geçen, taban sırası olan 118 satır herkesin aday havuzuna giriyordu (p02'de 54 programın 7'si). Sihirbaz uyruk ya da lise türü sormadığı için bu satırlar herkese önerilemez. Kural tek yerde ve export'lu: rapor-havuzu.ts → ozelKontenjanSatiriMi(). Kanıt (havuzdaki özel kontenjan satırı, önce → sonra): p02 7 → 0, p14 6 → 0, p05 4 → 0, p09 3 → 0, a09 3 → 0; 40 profilin hepsinde 0. Gevşetme basamağı ve liste uzunluğu hiçbir profilde değişmedi. /meraklisina şeması (aday havuzu düğümü), 4. bölüm anlatımı, aria-label ve figcaption aynı kuralla güncellendi. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
@@ -17,7 +17,7 @@ flowchart TD
|
||||
A --> B("2. adım · İl seçimi<br/>programı olan tüm iller, seçtiğin alanlardaki program sayısına göre yeniden sayılır")
|
||||
B --> C("3. adım · Devlet / Vakıf<br/>sayılar hem alanı hem ili hesaba katar")
|
||||
C --> P("Danışmana söylediklerin<br/>öğretim dili, uzaktan/örgün, burs, yıllık ücret sınırı, evden uzaklık — sohbette söyleyip kaydettiklerin varsa havuzu bunlar da süzer")
|
||||
P --> H("Aday havuzu<br/>elde kalan gerçek programlar — yalnızca en son tercih kılavuzunda yer alanlar<br/>kapanan ya da kodu değişip eski kaydı kalan programlar önerilmez")
|
||||
P --> H("Aday havuzu<br/>elde kalan gerçek programlar — yalnızca en son tercih kılavuzunda yer alanlar<br/>kapanan ya da kodu değişip eski kaydı kalan programlar önerilmez<br/>yalnızca KKTC uyruklulara ya da meslek lisesi mezunlarına ayrılmış kontenjanlar da havuza girmez")
|
||||
H --> S{"Havuzda 24'ten az program mı kaldı?"}
|
||||
S -- "evet" --> G("Filtreler adım adım gevşetilir<br/>önce danışmana söylediklerin, sonra il, sonra alan — listede açıkça belirtilir<br/>seçimine uyan programlar havuzda kalır, boşluk sıralamana en yakın diğer programlarla dolar")
|
||||
G --> H
|
||||
@@ -45,11 +45,13 @@ export function HuniSemasi() {
|
||||
return (
|
||||
<ElCizimiSema
|
||||
tanim={SEMA}
|
||||
ariaLabel="Sihirbaz akış şeması: sıralamanla açılan programlar alan, il ve devlet/vakıf adımlarıyla, danışmana söyleyip kaydettiğin tercihler (öğretim dili, uzaktan/örgün, burs, yıllık ücret sınırı, evden uzaklık) varsa onlarla da aday havuzuna daraltılır; havuza yalnızca en son tercih kılavuzunda yer alan programlar girer, kapanan ya da kodu değişip eski kaydı kalan programlar önerilmez; alanlar bölümün adına ve bağlı olduğu fakülteye göre belirlenir, il adımında programı olan tüm iller listelenir; havuz 24'ün altına düşerse filtreler önce danışmana söylediklerin, sonra il, sonra alan sırasıyla gevşetilir, gevşeyen seçimine uyan programlar havuzda kalır ve boşluk sıralamana en yakın diğer programlarla dolar, yine de dar kalırsa liste eldeki programlarla kurulur ve dağılım havuza uyarlanır; yapay zekâ havuzdan üstte hayal, ortada dengeli, sonda güvenli olacak şekilde en fazla 24 tercih seçip her satıra gerekçe yazar; risk notu ve trend özeti gerçek sıralama geçmişinden hesaplanır."
|
||||
ariaLabel="Sihirbaz akış şeması: sıralamanla açılan programlar alan, il ve devlet/vakıf adımlarıyla, danışmana söyleyip kaydettiğin tercihler (öğretim dili, uzaktan/örgün, burs, yıllık ücret sınırı, evden uzaklık) varsa onlarla da aday havuzuna daraltılır; havuza yalnızca en son tercih kılavuzunda yer alan programlar girer, kapanan ya da kodu değişip eski kaydı kalan programlar önerilmez, yalnızca KKTC uyruklulara ya da meslek lisesi mezunlarına ayrılmış kontenjanlar da havuza girmez; alanlar bölümün adına ve bağlı olduğu fakülteye göre belirlenir, il adımında programı olan tüm iller listelenir; havuz 24'ün altına düşerse filtreler önce danışmana söylediklerin, sonra il, sonra alan sırasıyla gevşetilir, gevşeyen seçimine uyan programlar havuzda kalır ve boşluk sıralamana en yakın diğer programlarla dolar, yine de dar kalırsa liste eldeki programlarla kurulur ve dağılım havuza uyarlanır; yapay zekâ havuzdan üstte hayal, ortada dengeli, sonda güvenli olacak şekilde en fazla 24 tercih seçip her satıra gerekçe yazar; risk notu ve trend özeti gerçek sıralama geçmişinden hesaplanır."
|
||||
figcaption={
|
||||
<>
|
||||
Havuza yalnızca en son tercih kılavuzunda yer alan programlar girer;
|
||||
kapanan ya da kodu değişip eski kaydı kalan programlar önerilmez. Her
|
||||
kapanan ya da kodu değişip eski kaydı kalan programlar, yalnızca KKTC
|
||||
uyruklulara ya da meslek lisesi mezunlarına ayrılmış kontenjanlar
|
||||
önerilmez. Her
|
||||
adım havuzu biraz daha daraltır; danışmana söyleyip kaydettiğin
|
||||
tercihler de (dil, ücret, uzaklık gibi) havuzu süzer. Yapay zekâ
|
||||
listeyi bu havuzun{" "}
|
||||
|
||||
@@ -124,8 +124,11 @@ export function MeraklisinaIcerik() {
|
||||
verilir. Havuza yalnızca{" "}
|
||||
<strong>en son tercih kılavuzunda yer alan</strong>{" "}
|
||||
programlar girer: kapanmış ya da kodu değiştiği için eski kaydı
|
||||
kalmış bir program sana önerilmez. Aşağıdaki şema akışın tamamını
|
||||
gösterir — havuz 24'ün altına düşerse filtrelerin hangi
|
||||
kalmış bir program sana önerilmez. Adında “KKTC
|
||||
Uyruklu” ya da “M.T.O.K.” (meslek lisesi
|
||||
mezunlarına ayrılmış) yazan kontenjanlar da havuza girmez; onlar
|
||||
herkesin yazabileceği tercihler değildir. Aşağıdaki şema akışın
|
||||
tamamını gösterir — havuz 24'ün altına düşerse filtrelerin hangi
|
||||
sırayla gevşetildiği (önce danışmana söylediklerin, sonra il,
|
||||
sonra alan), yine de yetmezse listenin eldeki programlarla, sana
|
||||
açıkça belirtilerek nasıl kurulduğu da dahil. Bir filtre
|
||||
|
||||
@@ -176,6 +176,21 @@ function oncelikliBirlestir(...katmanlar: AdayProgram[][]): AdayProgram[] {
|
||||
return sonuc;
|
||||
}
|
||||
|
||||
// Program adının sonundaki kontenjan eki; YÖK Atlas bu kontenjanları ayrı
|
||||
// program satırı olarak verir.
|
||||
const OZEL_KONTENJAN = /\((KKTC Uyruklu|M\.T\.O\.K\.)\)/;
|
||||
|
||||
/**
|
||||
* Yalnızca belirli adaylara ayrılmış kontenjan satırı mı: "(KKTC Uyruklu)"
|
||||
* KKTC vatandaşlarına, "(M.T.O.K.)" mesleki ve teknik ortaöğretim kurumu
|
||||
* mezunlarına ayrılır. Sihirbaz adayın uyruğunu ya da lise türünü sormaz; bu
|
||||
* satırlar herkese önerilemez, aday havuzuna girmez. Kural tek yerde: aynı
|
||||
* ayrımı yapacak her yer (ör. danışman araçları) bunu kullanmalı.
|
||||
*/
|
||||
export function ozelKontenjanSatiriMi(isim: string): boolean {
|
||||
return OZEL_KONTENJAN.test(isim);
|
||||
}
|
||||
|
||||
function dilimEkle(r: {
|
||||
hayal: Program[];
|
||||
dengeli: Program[];
|
||||
@@ -227,17 +242,18 @@ export function havuzOlustur(
|
||||
// Bırakmazsa profil gevşetilir ve aşağıdaki sihirbaz akışı aynen sürer;
|
||||
// liste yine kurulur, gevşetme yapay zekâya ve adaya söylenir.
|
||||
const suzgec = profilSuzgeci(profil, iller.length > 0);
|
||||
// Dilimin tamamı; özel kontenjan satırları (KKTC uyruklu, M.T.O.K.) hariç
|
||||
const adaylar = (ozellik?: OzellikSuzgeci) =>
|
||||
dilimEkle(
|
||||
havuzAdaylari(params.sira, params.tur, { uniturGrubu, ozellik }),
|
||||
).filter((p) => !ozelKontenjanSatiriMi(p.isim));
|
||||
|
||||
const profilGevsetildi: Gevsetilen[] = [];
|
||||
// Profil gevşerse profile uyan (24'ten az) programlar yine en önde tutulur
|
||||
let profilliFiltreli: AdayProgram[] = [];
|
||||
if (suzgec.ozellik || suzgec.iller) {
|
||||
const profilliHam = ilFiltre(
|
||||
dilimEkle(
|
||||
havuzAdaylari(params.sira, params.tur, {
|
||||
uniturGrubu,
|
||||
ozellik: suzgec.ozellik,
|
||||
}),
|
||||
),
|
||||
adaylar(suzgec.ozellik),
|
||||
iller.length > 0 ? iller : suzgec.iller,
|
||||
);
|
||||
profilliFiltreli = kategoriFiltre(profilliHam);
|
||||
@@ -251,9 +267,7 @@ export function havuzOlustur(
|
||||
}
|
||||
|
||||
// 1. Tam filtre: üniversite tipi (SQL), iller + kategori (JS)
|
||||
const ilsizHam = dilimEkle(
|
||||
havuzAdaylari(params.sira, params.tur, { uniturGrubu }),
|
||||
);
|
||||
const ilsizHam = adaylar();
|
||||
const tamHam = ilFiltre(ilsizHam, iller);
|
||||
const tamFiltreli = kategoriFiltre(tamHam);
|
||||
const kirp = (...katmanlar: AdayProgram[][]) =>
|
||||
|
||||
Reference in New Issue
Block a user