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:
bilalgursen
2026-09-21 17:00:39 +03:00
parent 38e02e0ed9
commit ce40b7c5b3
14 changed files with 195 additions and 106 deletions

View File

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