feat(veri): Program tipi yılsız — db eşleyicisi, lib ve snapshot ilkYil (P-B a)
Program artık siraGecmisi (YILLAR ile hizalı) + efektifSira + siraSon/puanSon/ kontenjanSon/yerlesenSon taşır. db.ts kolonları YILLAR'dan üretip takma adla seçer, programSatiri eşleyicisi ham satırı Program'a çevirir; SELECT_COLS'un üç tüketicisi de eşleyiciden geçer. EFEKTIF_SIRA veri-yillari'dan gelir. - trend: ILK_YIL tek kaynaktan, opsiyonel ilkYil parametresi - rapor snapshot'ına opsiyonel ilkYil yazılır (eski kayıtlar: okurken ILK_YIL) - rapor promptu son 4 yılı göndermeye devam eder, anahtarlar dinamik - tadımlık "son N yıl" filtresi genel: N != VERI_YIL_SAYISI ise servis edilmez - veri-kapsami VERI_YIL_SAYISI'nı veri-yillari'dan türetir Bileşenler bir sonraki commit'te yeni tipe geçer (ikisi birlikte derlenir). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
@@ -28,8 +28,7 @@ export type BekleyenProgram = {
|
||||
| "il"
|
||||
| "unitur"
|
||||
| "tur"
|
||||
| "sira2025"
|
||||
| "sira2024"
|
||||
| "efektifSira"
|
||||
>;
|
||||
kaynak: ManuelKaynak;
|
||||
adaySira?: number;
|
||||
|
||||
@@ -8,7 +8,8 @@ import type {
|
||||
UniturGrubu,
|
||||
} from "@/types/yokatlas";
|
||||
|
||||
// Tabloda kullanılmayan alanlar (fakulte, puan2025) client'a serileşmesin.
|
||||
// Tabloda kullanılmayan alanlar (fakulte, puanSon, siraSon) client'a
|
||||
// serileşmesin.
|
||||
// Alanlar tek tek seçilir: Program'a alan eklenirse ProgramListeSatiri
|
||||
// üzerinden derleyici burada da karar vermeye zorlar.
|
||||
export function programOzetle(p: Program): ProgramListeSatiri {
|
||||
@@ -20,13 +21,10 @@ export function programOzetle(p: Program): ProgramListeSatiri {
|
||||
il: p.il,
|
||||
tur: p.tur,
|
||||
sure: p.sure,
|
||||
sira2025: p.sira2025,
|
||||
sira2024: p.sira2024,
|
||||
sira2023: p.sira2023,
|
||||
sira2022: p.sira2022,
|
||||
sira2021: p.sira2021,
|
||||
kontenjan2025: p.kontenjan2025,
|
||||
yerlesen2025: p.yerlesen2025,
|
||||
siraGecmisi: p.siraGecmisi,
|
||||
efektifSira: p.efektifSira,
|
||||
kontenjanSon: p.kontenjanSon,
|
||||
yerlesenSon: p.yerlesenSon,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -158,10 +158,8 @@ export function sunucuylaBirlestir(sunucuItems: ManuelTercih[]): ManuelTercih[]
|
||||
return liste;
|
||||
}
|
||||
|
||||
export function efektifSiraAl(
|
||||
p: Pick<Program, "sira2025" | "sira2024">,
|
||||
): number | null {
|
||||
return p.sira2025 ?? p.sira2024 ?? null;
|
||||
export function efektifSiraAl(p: Pick<Program, "efektifSira">): number | null {
|
||||
return p.efektifSira ?? null;
|
||||
}
|
||||
|
||||
/** Program satırını manuel liste kaydına çevirir. */
|
||||
@@ -174,8 +172,7 @@ export function programdanManuelTercih(
|
||||
| "il"
|
||||
| "unitur"
|
||||
| "tur"
|
||||
| "sira2025"
|
||||
| "sira2024"
|
||||
| "efektifSira"
|
||||
>,
|
||||
adaySira?: number | null,
|
||||
kaynak: ManuelKaynak = "sonuc",
|
||||
|
||||
@@ -34,8 +34,13 @@ export type RaporSonuc = {
|
||||
// ayıklamak için (bkz. features/rapor/rapor-queries.ts)
|
||||
devMock?: boolean;
|
||||
// Render için havuzdan zenginleştirilmiş program bilgisi
|
||||
// efektifSira: COALESCE(sira2025, sira2024) — eski kayıtlı raporlarda yok
|
||||
// siraGecmisi: [2021..2025] taban sıralamaları — deterministik trend oku
|
||||
// efektifSira: üretim anındaki son yılın sırası, yoksa bir önceki yılınki —
|
||||
// eski kayıtlı raporlarda yok
|
||||
// siraGecmisi: [ilkYil..] taban sıralamaları — deterministik trend oku.
|
||||
// Uzunluk üretim anındaki veri penceresidir (eski kayıtlarda 5 eleman);
|
||||
// okuyan taraf diziyi doldurmaz, yılı `ilkYil + indeks` ile bulur.
|
||||
// ilkYil: dizinin ilk elemanının yılı — eski kayıtlarda yok (okurken
|
||||
// lib/veri-yillari ILK_YIL)
|
||||
programlar: Record<
|
||||
string,
|
||||
{
|
||||
@@ -45,6 +50,7 @@ export type RaporSonuc = {
|
||||
unitur: string | null;
|
||||
efektifSira?: number | null;
|
||||
siraGecmisi?: (number | null)[];
|
||||
ilkYil?: number;
|
||||
}
|
||||
>;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user