EWS (Early Warning System) Domain Bilgisi

Tablolar:
- map_identity: Firma kimlik (entity_id, muta, unvan). entity_id = muta.
- dim_entity: Firma boyut bilgisi (entity_id, segment, bolge_kodu, sube_kodu, ...)
- fact_periodic: Dönemsel risk metrikleri (entity_id, donem, ews_skor, kombine_risk, ...)
- brz_memzuc: Merkez Bankası uzun vadeli kredi (muta, donem, idari_kanuni_takip, ikt_6ay_ort)
- brz_kik_izleme: KİK izleme verileri (muta, donem, ykn_izl_flag, tfrs_rating, kik_risk, ...)
- brz_kredi_risk: Kredi risk tutarları (muta, donem, kredi_risk)
- brz_statik: Statik firma bilgileri (muta, bolge_kodu, sube_kodu, grup_tanimi, ...)
- brz_train_features: Eğitim veri segmentleri (muta, donem, segment)
- ref_sube_bolge: Şube-bölge eşleme (sube_kodu, sube_adi, bolge_kodu, bolge_adi)

Metrikler:
- ews_skor: Risk skoru (VARCHAR — sayısal değerler + 'YI' = Yakın İzleme). Yüksek = riskli.
- kombine_risk: Toplam kredi riski (TL, BIGINT). Büyük tutar = büyük firma.
- kredi_risk, kik_risk, depo_risk, nakit_risk, gnakit_risk: Alt risk kırılımları.
- risk_degisim: Önceki döneme göre risk farkı.
- yis_skor: YİS skoru (INTEGER). ews_skor'un model bileşeni.
- eus_skor: EUS skoru (DOUBLE).
- tfrs_rating: TFRS rating (A/B/C/D).

MODEL VE KAYNAK TABLO İLİŞKİLERİ:
- "YIS" → brz_yis_tahmin tablosu (muta, donem, yis_skor, yis_ihtimal, yis_label).
  Bu tablo YIS modelinin HAM tahmin çıktısıdır. fact_periodic'teki yis kolonları buradan kopyalanmıştır
  ama brz_yis_tahmin daha fazla dönem içerir (21 dönem vs fact_periodic 12 dönem).
  YIS detay sorgusu → brz_yis_tahmin kullan, fact_periodic DEĞİL.
- "YIS21", "yis 2.1", "yis21 datası" → brz_train_features tablosu (muta, donem, segment).
  Kaynak: yis_21_v21_YYMM.parquet dosyaları. Bu dosyalar YIS 2.1 model eğitim verisini içerir.
  Pipeline sadece SON dönemi yükler (segment bilgisi için). Firma segmenti (KOBI, KUR-TIC, ESKK, MIKRO)
  bu tablodan gelir ve dim_entity'ye aktarılır.
  NOT: brz_yis_tahmin ile KARIŞTIRILMAMALI — yis_tahmin tahmin çıktısı, yis21 eğitim verisidir.
- "EUS" → brz_eus_tahmin tablosu (muta, donem, eus_skor, eus_ihtimal).
  EUS modelinin HAM çıktısı. Aynı mantık: EUS detay sorgusu → brz_eus_tahmin kullan.
- "EUS kapsam" → brz_eus_kapsam (muta, donem). Firma bu dönem EUS kapsamında mı.
- "EUS hedef" → brz_eus_hedef (muta, donem). Firma bu dönem EUS hedefi mi.
- fact_periodic: TÜM modellerin ÖZET sonuçlarını birleştirir. Genel sorgu için kullan.
  Model-spesifik detay sorgusu için brz_* kaynak tabloları kullan.

ÖNEMLİ KAVRAMLAR:
- "riskli" veya "risk" → ews_skor kullan (yüksek = riskli)
- "büyük" veya "hacim" → kombine_risk kullan (büyük tutar = büyük firma)
- Büyük firma ≠ riskli firma. kombine_risk ile ews_skor korelasyon göstermez.
- "MUTA" → entity_id/muta numarası (firma kimlik no)
- Dönem belirtilmezse en son dönem: MAX(donem)
- unvan SADECE map_identity tablosundadır. dim_entity'de unvan YOK.
- segment SADECE dim_entity tablosundadır.

VERİ TİPİ UYARILARI:
- entity_id ve muta VARCHAR tipindedir (sayısal görünür ama string).
- ews_skor VARCHAR: sayısal değerler ('100'-'950') + 'YI' (Yakın İzleme).
  Sayısal sıralama için: TRY_CAST(ews_skor AS INTEGER) DESC NULLS LAST
- donem VARCHAR: 'YYMM' formatında (ör. '2602' = 2026 Şubat).

TEMPORAL SORGULAR:
"artan", "düşen", "yükselen", "azalan" → iki dönem karşılaştırması gerektirir.
Önceki dönem için: önce MAX(donem), sonra ondan bir önceki dönemi bul.

ÇAPRAZ TABLO JOIN KURALI:
Dönemsel tabloları JOIN'lerken dönem eşleştir:
  ON t1.entity_id = t2.entity_id AND t1.donem = t2.donem
muta bazlı tablolarda:
  ON mi.muta = brz.muta AND fp.donem = brz.donem
Dönem eşleştirmesi yoksa satır sayısı dönem² patlar.

DÖNEM GÖRÜNÜRLÜK KURALI:
İki dönemsel tabloyu birleştirirken her tablonun donem kolonunu SELECT'e ekle.
Kullanıcı hangi dönemin verisini gördüğünü bilmeli.
Tek dönem filtreleniyorsa (WHERE fp.donem = '2602') bile,
eklenen tablonun dönem bilgisini göster: bm.donem AS memzuc_donem

SQL YAZIM KURALLARI:
- JOIN'de her kolona tablo alias kullan: fp.entity_id, mi.unvan
- ILIKE operatör olarak kullan: WHERE unvan ILIKE '%x%' (fonksiyon syntax DEĞİL)
- Alias: fp=fact_periodic, mi=map_identity, de=dim_entity, bm=brz_memzuc

HER SORGUDA entity_id ve unvan kolonlarını dahil et.
Firmalar bu iki alanla tanımlanır.
Sadece COUNT/SUM gibi tek değer döndüren aggregation'larda gerekmez.

"BÜTÜN BİLGİLERİ GETİR" KURALI:
Kullanıcı bir firma hakkında "bütün bilgileri", "tüm bilgileri", "her şeyi" istediğinde
sadece fact_periodic YETERSİZDİR. Tüm ilgili tabloları JOIN ile birleştir:
  SELECT mi.muta, mi.unvan, de.segment, de.grup_tanimi,
         fp.ews_skor, fp.kombine_risk, fp.kredi_risk, fp.kik_risk,
         fp.depo_risk, fp.nakit_risk, fp.gnakit_risk, fp.risk_degisim,
         fp.yis_skor, fp.eus_skor, fp.tfrs_rating, fp.ykn_izl_flag,
         bm.idari_kanuni_takip, bm.ikt_6ay_ort,
         bk.ykn_izl_flag as kik_ykn_izl, bk.gckm_gun_say,
         bs.bolge_adi, bs.sube_adi, bs.aksiyon_sahibi
  FROM fact_periodic fp
  JOIN map_identity mi ON fp.entity_id = mi.entity_id
  JOIN dim_entity de ON fp.entity_id = de.entity_id
  LEFT JOIN brz_memzuc bm ON mi.muta = bm.muta AND fp.donem = bm.donem
  LEFT JOIN brz_kik_izleme bk ON mi.muta = bk.muta AND fp.donem = bk.donem
  LEFT JOIN brz_statik bs ON mi.muta = bs.muta
  WHERE mi.muta = 'XXXXX' AND fp.donem = 'YYYY'
Tek dönem isteniyorsa WHERE ile filtrele.
Dönem belirtilmezse MAX(donem) kullan.

FİRMA ARAMA KURALLARI:
1. Tam eşleşme: WHERE unvan ILIKE 'merkez tekstil a.ş.'
2. Başlangıç: WHERE unvan ILIKE 'merkez tekstil%'
3. İçerik: WHERE unvan ILIKE '%merkez tekstil%'
Her aşamada sonuç varsa dur. Çok fazla sonuçta LIMIT 10.
Sayısal değer = doğrudan WHERE mi.muta = 'XXXXX'

Segmentler: KOBI, KUR-TIC, ESKK, MIKRO
Dönem formatı: YYMM (ör. '2602')
