diff --git a/src/features/katalog/components/bolum-program-listesi.tsx b/src/features/katalog/components/bolum-program-listesi.tsx index 9083819..2d80712 100644 --- a/src/features/katalog/components/bolum-program-listesi.tsx +++ b/src/features/katalog/components/bolum-program-listesi.tsx @@ -22,6 +22,7 @@ import { SATIR_BUTON_BASLIK, SATIR_BUTON_HUCRE, SATIR_BUTON_KABI, + SATIR_CIP, SATIR_GRUP, SATIR_IKINCIL_LINK, SATIR_META, @@ -242,6 +243,10 @@ export function BolumProgramListesi({ )} + {/* Burs/dil/öğretim türü: aynı adlı satırları ayırt eder (§4.15 çip) */} + {p.varyant ? ( + {p.varyant} + ) : null} {p.il ? ( {TUR_ETIKET[p.tur] ?? p.tur} + {/* Burs/dil/öğretim türü: aynı adlı satırları ayırt eder (§4.15 çip) */} + {p.varyant ? ( + {p.varyant} + ) : null} {p.sure ? ( {p.sure} yıl ) : null} diff --git a/src/features/liste/components/liste-cekmecesi.tsx b/src/features/liste/components/liste-cekmecesi.tsx index 6db74f5..3104dc6 100644 --- a/src/features/liste/components/liste-cekmecesi.tsx +++ b/src/features/liste/components/liste-cekmecesi.tsx @@ -452,6 +452,10 @@ function CekmeceSatiri({ > {trBaslikDuzeni(tercih.universite)} + {/* Burs/dil/öğretim türü: aynı adlı satırları ayırt eder */} + {tercih.varyant ? ( + · {tercih.varyant} + ) : null} {tercih.risk || tercih.efektifSira != null ? ( diff --git a/src/features/liste/components/program-ekle-butonu.tsx b/src/features/liste/components/program-ekle-butonu.tsx index 10ba5ce..8275d43 100644 --- a/src/features/liste/components/program-ekle-butonu.tsx +++ b/src/features/liste/components/program-ekle-butonu.tsx @@ -28,6 +28,7 @@ type ProgramOzet = Pick< | "unitur" | "tur" | "efektifSira" + | "varyant" >; const PROFILSIZ_EKLEME_TOAST_ID = "profilsiz-ekleme"; diff --git a/src/features/liste/components/program-tablosu.tsx b/src/features/liste/components/program-tablosu.tsx index 1ba6711..d720c5a 100644 --- a/src/features/liste/components/program-tablosu.tsx +++ b/src/features/liste/components/program-tablosu.tsx @@ -55,6 +55,7 @@ import { SATIR_BUTON_HUCRE, SATIR_BUTON_KABI, SATIR_ALT_GRUP, + SATIR_CIP, SATIR_IKINCIL_LINK, SATIR_META, SATIR_MOBIL_SAYI, @@ -373,6 +374,10 @@ function ProgramSatiri({ unitur={p.unitur} onClick={(e) => e.stopPropagation()} /> + {/* Burs/dil/öğretim türü: aynı adlı satırları ayırt eder (§4.15 çip) */} + {p.varyant ? ( + {p.varyant} + ) : null} {p.il ? ( ; kaynak: ManuelKaynak; adaySira?: number; @@ -271,11 +272,16 @@ export function programEkleIste(opts: { } const profil = profilsiz ? null : (durum.profil ?? tercihProfiliOku()); - const tercih = programdanManuelTercih( - program, - adaySira ?? profil?.sira ?? null, - kaynak, - ); + // programdanManuelTercih (liste-store) varyantı bilmez; etiket burada + // kopyalanır ki çekmece aynı adlı satırları ayırt edebilsin. + const tercih = { + ...programdanManuelTercih( + program, + adaySira ?? profil?.sira ?? null, + kaynak, + ), + varyant: program.varyant ?? null, + }; const ok = ekle(tercih); if (!ok) { return { diff --git a/src/features/liste/liste-dogrula.ts b/src/features/liste/liste-dogrula.ts index 2396a66..c63494d 100644 --- a/src/features/liste/liste-dogrula.ts +++ b/src/features/liste/liste-dogrula.ts @@ -30,6 +30,8 @@ export type ManuelTercih = { /** Ekleme / profil anındaki aday sıralamasına göre risk */ risk: RiskSeviyesi | null; kaynak?: ManuelKaynak; + /** Burs/dil/öğretim türü etiketi (Program.varyant); eski kayıtlarda yok */ + varyant?: string | null; }; /** Güvenilmeyen JSON'u (localStorage veya sunucu kaydı) listeye süzer. */ @@ -66,6 +68,7 @@ export function dogrula(ham: unknown): ManuelTercih[] { : null, risk, kaynak, + varyant: typeof kayit.varyant === "string" ? kayit.varyant : null, }); if (sonuc.length >= MANUEL_LISTE_MAX) break; } diff --git a/src/features/liste/liste-queries.ts b/src/features/liste/liste-queries.ts index d716a2e..4f95cb7 100644 --- a/src/features/liste/liste-queries.ts +++ b/src/features/liste/liste-queries.ts @@ -25,6 +25,7 @@ export function programOzetle(p: Program): ProgramListeSatiri { efektifSira: p.efektifSira, kontenjanSon: p.kontenjanSon, yerlesenSon: p.yerlesenSon, + varyant: p.varyant, }; }