Merge branch 'gece/0922-unitur-kacagi' into is/0923-birlesik
# Conflicts: # scripts/veri-kalite.ts
This commit is contained in:
@@ -21,6 +21,7 @@ import { EFEKTIF_SIRA_SQL, ILK_YIL } from "../src/lib/veri-yillari";
|
||||
import { EFEKTIF_INDEKS, efektifSorguPlani } from "./db-index";
|
||||
import { kimlikFarklari, onarimKayitlari, yilKolonlari, type DbKimlik } from "./kimlik";
|
||||
import { hamOku, sonHamDosya, TUR_MAP } from "./refresh";
|
||||
import { KKTC_ILLERI } from "./unitur-onar";
|
||||
import {
|
||||
argOku,
|
||||
bayrakVar,
|
||||
@@ -295,6 +296,53 @@ async function main() {
|
||||
console.log(` şimdi, tüm satırlar (yeni dahil) : ${toplamlar(simdi)}`);
|
||||
}
|
||||
|
||||
// 13. Aynı kurumun iki yazımı arasında unitur çelişkisi — BAZ AD üzerinden.
|
||||
// unitur-onar.ts'in eski çelişki koruması GROUP BY universite (TAM ad) ile
|
||||
// çalıştığı için "X ÜNİVERSİTESİ" ve "X ÜNİVERSİTESİ (ÜSKÜP-MAKEDONYA)" iki
|
||||
// ayrı kurum sayılıyor, aralarındaki DEVLET↔YURTDISI KAMU çelişkisi hiç
|
||||
// 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 ${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",
|
||||
bolunmus === "",
|
||||
bolunmus === ""
|
||||
? "aynı kurumun iki yazımı devlet/vakıf filtresini bölmüyor"
|
||||
: `devlet filtresine giren, vakıf filtresinden düşen kurum: ${bolunmus} → scripts/unitur-onar.ts KURUM_DUZELT`
|
||||
);
|
||||
const esdegerFark = ornek(`SELECT bazAd, turler, adet FROM ${bazAdCeliskileri} WHERE NOT devletBolunmus`);
|
||||
bilgi("baz ad unitur farkı (devlet/vakıf ayrımını bölmeyen)", false, esdegerFark || "yok");
|
||||
|
||||
// 14. DEVLET etiketli ama hiçbir programı Türkiye ilinde olmayan kurum.
|
||||
// 13'ün kör noktası: kurumun İKİ yazımı da yanlış etiketliyse çelişki yoktur.
|
||||
// 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 ${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`,
|
||||
...KKTC_ILLERI
|
||||
);
|
||||
zorunlu(
|
||||
"DEVLET etiketi Türkiye ili ile destekli",
|
||||
yurtDisiDevlet === "",
|
||||
yurtDisiDevlet === ""
|
||||
? "DEVLET etiketli her kurumun en az bir programı Türkiye ilinde"
|
||||
: `tüm programları KKTC/yurt dışında olduğu hâlde DEVLET: ${yurtDisiDevlet}`
|
||||
);
|
||||
urapKontrolleri(db, zorunlu, bilgi);
|
||||
|
||||
db.close();
|
||||
|
||||
Reference in New Issue
Block a user