fix(liste): kayıtlı manuel liste tabanları yeni veri yılına tazelenir; yıl metinleri 2021–2026
All checks were successful
Deploy / deploy (push) Successful in 7m24s
All checks were successful
Deploy / deploy (push) Successful in 7m24s
Denetim bulgusu (2026-09-21): ManuelTercih.efektifSira ekleme anının snapshot'ıydı; 2026 verisi yüklenince /listem 2025 tabanıyla renk verirken /sonuc tablosu 2026 gösteriyordu ve hiçbir yol yenilemiyordu. - db.ts: efektifSiralarGetir(ids) — güncel COALESCE(sira2026, sira2025). - liste-actions: listeTabanlariniTazele (oturumsuz, ≤24 id); sunucu kaydı (listeSenkronla/listeyiKaydet) tazelenmiş yazılır. - liste-store: tabanlariGuncelle — efektif sıra + profil varsa risk yenilenir, arşivlenmiş program eski değerini korur, değişiklik yoksa yayın yok. - liste-senkron: girişli/girişsiz herkes için sekme oturumu başına bir kez (anahtar SON_YIL taşır). - meraklisina-icerik: "son beş yılın" → VERI_YIL_SAYISI. - rehber (4 yazı): katalog sayfalarını anlatan "2021–2025 / son 5 yıl" ifadeleri 2021–2026 / son yıllar; yazıların kendi örnek tabloları 2021–2025 olarak etiketli kaldı. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
@@ -210,6 +210,27 @@ export function netlerGetir(programId: string): ProgramNetSatiri[] {
|
||||
.all(programId) as ProgramNetSatiri[];
|
||||
}
|
||||
|
||||
/**
|
||||
* Kayıtlı manuel liste satırlarının güncel efektif sırası (son yıl, yoksa bir
|
||||
* önceki). Kayıtlar efektif sırayı ekleme anının snapshot'ı olarak taşır; yeni
|
||||
* yerleştirme yılı yüklenince bununla tazelenir. Güncel kılavuzda olmayan
|
||||
* (arşivlenmiş) id'ler sonuçta yer almaz — çağıran taraf eski değeri korur.
|
||||
*/
|
||||
export function efektifSiralarGetir(
|
||||
ids: readonly string[]
|
||||
): Record<string, number | null> {
|
||||
if (ids.length === 0) return {};
|
||||
const satirlar = getDb()
|
||||
.prepare(
|
||||
`SELECT id, ${EFEKTIF_SIRA} AS efektif FROM programs
|
||||
WHERE id IN (${ids.map(() => "?").join(",")})`
|
||||
)
|
||||
.all(...ids) as { id: string; efektif: number | null }[];
|
||||
const sonuc: Record<string, number | null> = {};
|
||||
for (const s of satirlar) sonuc[s.id] = s.efektif;
|
||||
return sonuc;
|
||||
}
|
||||
|
||||
// Sihirbaz bubble'ları için erişilebilir program penceresi: hayal için
|
||||
// gerçekçi alt sınırdan (sira*0.5) itibaren AÇIK uçlu — garanti tarafı artık
|
||||
// sınırsız olduğundan üst kesim yok. Böylece 500B sıradaki aday Tıp bubble'ı
|
||||
|
||||
Reference in New Issue
Block a user