v2 #10

Merged
bilal merged 34 commits from v2 into main 2026-10-11 01:38:50 +03:00
8 changed files with 34 additions and 5 deletions
Showing only changes of commit 7c48f64ff3 - Show all commits

View File

@@ -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({
)}
<span className={SATIR_META}>
<TurCipi unitur={p.unitur} />
{/* Burs/dil/öğretim türü: aynı adlı satırları ayırt eder (§4.15 çip) */}
{p.varyant ? (
<span className={SATIR_CIP}>{p.varyant}</span>
) : null}
{p.il ? (
<Link
href={ilSayfaHref(p.il)}

View File

@@ -107,6 +107,10 @@ export function UniversiteProgramTablosu({
<span className={SATIR_CIP}>
{TUR_ETIKET[p.tur] ?? p.tur}
</span>
{/* Burs/dil/öğretim türü: aynı adlı satırları ayırt eder (§4.15 çip) */}
{p.varyant ? (
<span className={SATIR_CIP}>{p.varyant}</span>
) : null}
{p.sure ? (
<span className="shrink-0">{p.sure} yıl</span>
) : null}

View File

@@ -452,6 +452,10 @@ function CekmeceSatiri({
>
{trBaslikDuzeni(tercih.universite)}
</Link>
{/* Burs/dil/öğretim türü: aynı adlı satırları ayırt eder */}
{tercih.varyant ? (
<span className="shrink-0 text-slate-500">· {tercih.varyant}</span>
) : null}
</span>
{tercih.risk || tercih.efektifSira != null ? (
<span className="mt-1.5 flex flex-wrap items-center gap-x-3 gap-y-1 text-sm text-slate-500">

View File

@@ -28,6 +28,7 @@ type ProgramOzet = Pick<
| "unitur"
| "tur"
| "efektifSira"
| "varyant"
>;
const PROFILSIZ_EKLEME_TOAST_ID = "profilsiz-ekleme";

View File

@@ -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 ? (
<span className={SATIR_CIP}>{p.varyant}</span>
) : null}
{p.il ? (
<Link
href={ilSayfaHref(p.il)}

View File

@@ -29,6 +29,7 @@ export type BekleyenProgram = {
| "unitur"
| "tur"
| "efektifSira"
| "varyant"
>;
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 {

View File

@@ -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;
}

View File

@@ -25,6 +25,7 @@ export function programOzetle(p: Program): ProgramListeSatiri {
efektifSira: p.efektifSira,
kontenjanSon: p.kontenjanSon,
yerlesenSon: p.yerlesenSon,
varyant: p.varyant,
};
}