fix(veri): KURUM_DUZELT arşiv tablosunu da tarar (BACKLOG #21)

Dün Aşama D yalnız `programs`'a uygulanmıştı; `programs_arsiv`'de aynı yanlış
etiket duruyordu (31 ULUSLARARASI BALKAN + 30 ULUSLARARASI SARAYBOSNA
`unitur='DEVLET'`, Balkan'ın 24 satırında il Saraybosna). Kapanan programlar
arşive `programs`'tan olduğu gibi taşındığı için etiket oraya da yazılmış.

- `unitur-onar.ts` Aşama D iki tabloyu da tarar (`programs_arsiv` varsa).
  Dokunulan kolon yalnız `unitur` ve `il`; A/B/C aşamaları `programs`'ta kalır.
- `veri-kalite.ts` kontrol 13 ve 14 arşivi de tarar. Genişletme olmadan iki
  tablo ayrışabilir ve denetim bunu görmez.
- Yanlış etiket duran DB'de iki kontrol de KALDI veriyor (çıkış kodu 1):
  `baz ad başına tek unitur — … BALKAN/YURTDISI KAMU,DEVLET/81 ; … SARAYBOSNA/68`
  `DEVLET etiketi Türkiye ili ile destekli — … /SARAYBOSNA - BOSNA - HERSEK/31 ; /30`

Kullanıcıya bugün yansımıyor: `src/` tarafında `programs_arsiv`'i okuyan SQL
yok. Düzeltme tablo ileride okunduğunda sızıntının geri gelmemesi içindir.

Dünkü veri commit'inin (1df86cf) gövdesindeki rakam düzeltmesi: "/universiteler
hub'ında Devlet listesi 170 → 166" YANLIŞTIR. 170/166 ham `programs.universite`
ad sayısıdır, hub satırı değil; `uniAdiNormalize` parantezli eki attığı için
Kıbrıs Amerikan'ın iki yazımı tek slug. Hub'daki doğru değişim 132 → 129 kurum
(3 kurum). Kaynak: `12-kod-denetimi.md` O1, dalın kendi build HTML'i.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
bilalgursen
2026-09-23 07:26:56 +03:00
parent 1df86cfa15
commit 972268995e
2 changed files with 58 additions and 28 deletions

View File

@@ -299,9 +299,17 @@ async function main() {
// görünmüyordu. Baz ad = sondaki parantezli ek atılmış hâl.
const BAZ_AD =
"TRIM(CASE WHEN instr(universite, '(') > 0 THEN substr(universite, 1, instr(universite, '(') - 1) ELSE universite END)";
// 13 ve 14 arşivi de tarar: kapanan programlar `programs_arsiv`'e olduğu gibi
// taşındığı için yanlış etiket orada da duruyordu (BACKLOG #21). Bugün `src/`
// tarafında arşivi okuyan SQL yok, ama iki tablo ayrışırsa denetim bunu
// görmez ve tablo ileride okunduğunda sızıntı geri gelir.
const KURUMLAR = tabloVar(db, "programs_arsiv")
? `(SELECT universite, unitur, il FROM programs
UNION ALL SELECT universite, unitur, il FROM programs_arsiv)`
: "programs";
const bazAdCeliskileri = `(SELECT ${BAZ_AD} AS bazAd, GROUP_CONCAT(DISTINCT unitur) AS turler, COUNT(*) AS adet,
MAX(unitur = 'DEVLET') <> MIN(unitur = 'DEVLET') AS devletBolunmus
FROM programs WHERE unitur IS NOT NULL GROUP BY 1 HAVING COUNT(DISTINCT unitur) > 1)`;
FROM ${KURUMLAR} WHERE unitur IS NOT NULL GROUP BY 1 HAVING COUNT(DISTINCT unitur) > 1)`;
const bolunmus = ornek(`SELECT bazAd, turler, adet FROM ${bazAdCeliskileri} WHERE devletBolunmus`);
zorunlu(
"baz ad başına tek unitur",
@@ -318,7 +326,7 @@ async function main() {
// Türkiye illerinde tire geçmez; yurt dışı iller tireli (BİŞKEK-KIRGIZİSTAN…),
// KKTC illeri KKTC_ILLERI'nde. İli hiç olmayan kurumlar (MSB/İçişleri) hariç.
const yurtDisiDevlet = ornek(
`SELECT universite, GROUP_CONCAT(DISTINCT il), COUNT(*) FROM programs
`SELECT universite, GROUP_CONCAT(DISTINCT il), COUNT(*) FROM ${KURUMLAR}
WHERE unitur = 'DEVLET' GROUP BY universite
HAVING SUM(il IS NOT NULL) > 0
AND SUM(il NOT LIKE '%-%' AND il NOT IN (${KKTC_ILLERI.map(() => "?").join(",")})) = 0`,