From 6564ec89487323c89688ca3ce7aafb9fa163a7cb Mon Sep 17 00:00:00 2001 From: bilalgursen Date: Mon, 5 Oct 2026 00:15:05 +0300 Subject: [PATCH] =?UTF-8?q?Dan=C4=B1=C5=9Fman=20ara=C3=A7lar=C4=B1,=20T?= =?UTF-8?q?=C3=9C=C4=B0K=20mezun=20istihdam=C4=B1=20ve=20Jev=20=C3=A7?= =?UTF-8?q?=C4=B1kt=C4=B1=20denetimi?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Danışman: program_netleri, program_karsilastir ve bolum_istihdam araçları; program_ara'ya devlet/vakıf, öğretim türü ve sıralama parametreleri; program_detay'a trend cümlesi; bozuk araç argümanı modele hata döner. - TÜİK Yükseköğretim İstihdam Göstergeleri 2025: bölüm bazında istihdam oranı, ilk işi bulma süresi ve kazanç grubu (src/lib/bolum-istihdam.ts, üretici scripts/tuik-istihdam-uret.py, kaynak Excel'ler data/kaynak/). - Bölüm sayfasında "Mezun istihdamı" ayrıntı satırı ve alt sayfası; AkademikAyrinti başlık/ikon alır. - Jev (TypeSafe AI) ile danışman cevabında garanti/olasılık dili denetimi; ihlalde cevabın sonuna düzeltme notu. Anahtar yoksa denetim atlanır. - /gizlilik: TypeSafe AI (ABD) sağlayıcı satırı. KARARLAR.md: 5 Ekim kaydı. - Üç katalog dosyasındaki bg-white → bg-card değişiklikleri de bu commit'te. Co-Authored-By: Claude Fable 5.1 --- .gitea/workflows/ci.yaml | 3 + ...hdam-lisans-bolum-is-bulma-suresi-2025.xls | Bin 0 -> 89088 bytes ...ihdam-lisans-bolum-istihdam-orani-2025.xls | Bin 0 -> 91648 bytes ...hdam-lisans-bolum-kazanc-gruplari-2025.xls | Bin 0 -> 79872 bytes ...am-onlisans-bolum-is-bulma-suresi-2025.xls | Bin 0 -> 68096 bytes ...dam-onlisans-bolum-istihdam-orani-2025.xls | Bin 0 -> 71680 bytes ...am-onlisans-bolum-kazanc-gruplari-2025.xls | Bin 0 -> 75776 bytes docs/ekip/KARARLAR.md | 7 + scripts/kesif-jev.ts | 152 ++++++++ scripts/tuik-istihdam-uret.py | 168 +++++++++ src/app/api/soru/route.ts | 25 +- src/app/gizlilik/page.tsx | 8 +- .../katalog/components/akademik-ayrinti.tsx | 29 +- .../katalog/components/bolum-icerik.tsx | 155 +++++++- .../katalog/components/universite-icerik.tsx | 8 +- src/lib/ai/araclar.ts | 220 ++++++++++- src/lib/ai/cagri.ts | 9 +- src/lib/ai/jev.ts | 75 ++++ src/lib/bolum-istihdam.ts | 355 ++++++++++++++++++ 19 files changed, 1189 insertions(+), 25 deletions(-) create mode 100644 data/kaynak/tuik-istihdam-lisans-bolum-is-bulma-suresi-2025.xls create mode 100644 data/kaynak/tuik-istihdam-lisans-bolum-istihdam-orani-2025.xls create mode 100644 data/kaynak/tuik-istihdam-lisans-bolum-kazanc-gruplari-2025.xls create mode 100644 data/kaynak/tuik-istihdam-onlisans-bolum-is-bulma-suresi-2025.xls create mode 100644 data/kaynak/tuik-istihdam-onlisans-bolum-istihdam-orani-2025.xls create mode 100644 data/kaynak/tuik-istihdam-onlisans-bolum-kazanc-gruplari-2025.xls create mode 100644 scripts/kesif-jev.ts create mode 100644 scripts/tuik-istihdam-uret.py create mode 100644 src/lib/ai/jev.ts create mode 100644 src/lib/bolum-istihdam.ts diff --git a/.gitea/workflows/ci.yaml b/.gitea/workflows/ci.yaml index 16d629c..434d1fc 100644 --- a/.gitea/workflows/ci.yaml +++ b/.gitea/workflows/ci.yaml @@ -33,6 +33,9 @@ jobs: IYZICO_BASE_URL=${{ secrets.IYZICO_BASE_URL }} OPENROUTER_API_KEY=${{ secrets.OPENROUTER_API_KEY }} OPENROUTER_MODEL=${{ secrets.OPENROUTER_MODEL }} + # İsteğe bağlı: danışman çıktı denetimi (src/lib/ai/jev.ts). Secret + # yoksa boş gelir → denetim atlanır, danışman aynen çalışır. + TYPESAFE_API_KEY=${{ secrets.TYPESAFE_API_KEY }} # Sunucu tarafı Rybbit olayları (odeme_tamamlandi, giris_basarili — # src/lib/analitik-sunucu.ts). Üçünden biri boşsa gönderim no-op. RYBBIT_HOST=${{ secrets.RYBBIT_HOST }} diff --git a/data/kaynak/tuik-istihdam-lisans-bolum-is-bulma-suresi-2025.xls b/data/kaynak/tuik-istihdam-lisans-bolum-is-bulma-suresi-2025.xls new file mode 100644 index 0000000000000000000000000000000000000000..5bdee516db0b4408eaf213d0f09cf57a4f3342f5 GIT binary patch literal 89088 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 YAWY&sOyLsvWBKX+AK1T-zz+Vu02uR~r~m)} literal 0 HcmV?d00001 diff --git a/data/kaynak/tuik-istihdam-lisans-bolum-istihdam-orani-2025.xls b/data/kaynak/tuik-istihdam-lisans-bolum-istihdam-orani-2025.xls new file mode 100644 index 0000000000000000000000000000000000000000..12feb80065caeb71cc16f668d56e76a972568a35 GIT binary patch literal 91648 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 literal 0 HcmV?d00001 diff --git a/data/kaynak/tuik-istihdam-lisans-bolum-kazanc-gruplari-2025.xls b/data/kaynak/tuik-istihdam-lisans-bolum-kazanc-gruplari-2025.xls new file mode 100644 index 0000000000000000000000000000000000000000..5805264b623080a285304f57a921489a20487bef GIT binary patch literal 79872 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

V(ng=g76jlgcHs}0{w^Hy1J2N-o*@X4tY`=<7 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 literal 0 HcmV?d00001 diff --git a/data/kaynak/tuik-istihdam-onlisans-bolum-is-bulma-suresi-2025.xls b/data/kaynak/tuik-istihdam-onlisans-bolum-is-bulma-suresi-2025.xls new file mode 100644 index 0000000000000000000000000000000000000000..7eb01d2f7911ca010c400d57df37aa05fc5fc8b1 GIT binary patch literal 68096 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

- Son güncelleme: 25 Eylül 2026 + Son güncelleme: 5 Ekim 2026

@@ -162,6 +162,12 @@ export default function GizlilikPage() { üreten yapay zekâ da aynı yoldan çalışır; ona sıralaman, seçimlerin ve aday program havuzu gider. +
  • + TypeSafe AI (ABD) — danışmanın sana yazdığı + cevap, yerleşme garantisi ya da olasılık tahmini içerip + içermediğinin denetlenmesi için bu sağlayıcıya iletilir. Senin + yazdığın mesaj, adın ve e-postan gönderilmez. +
  • KVKK açısından e-posta ve yapay zekâ sağlayıcısına yapılan iletim diff --git a/src/features/katalog/components/akademik-ayrinti.tsx b/src/features/katalog/components/akademik-ayrinti.tsx index ecba94a..f420d0f 100644 --- a/src/features/katalog/components/akademik-ayrinti.tsx +++ b/src/features/katalog/components/akademik-ayrinti.tsx @@ -13,8 +13,9 @@ import { } from "@/components/ui/drawer"; /** - * Üniversite sayfasında özet kartlarının altındaki "Akademik göstergeler ›" - * satırı (Apple Sağlık'taki "Tüm verileri göster" gibi): sık bakılan sayılar + * Üniversite ve bölüm sayfasında özet kartlarının altındaki ayrıntı satırı + * ("Akademik göstergeler ›", "Mezun istihdamı ›"; Apple Sağlık'taki "Tüm + * verileri göster" gibi): sık bakılan sayılar * kartlarda, ayrıntı bir dokunuş derinde. İkinci satır içeride ne olduğunu * önceden söyler. Ayrıntı alttan açılan çekmecede; çekmece ve kapatma * çarpısı cta-sira-form.tsx'teki çekmeceyle birebir aynı sınıf setinde. @@ -22,12 +23,18 @@ import { * AcilisSahnesi oynatır. */ export function AkademikAyrinti({ - universite, + baglam, onizleme, + baslik = "Akademik göstergeler", + ikon, children, }: { - universite: string; + /** Çekmece başlığının altındaki bağlam satırı (üniversite ya da bölüm adı) */ + baglam: string; onizleme: string; + baslik?: string; + /** İkon kutusunun içi; verilmezse mezuniyet kepi */ + ikon?: ReactNode; children: ReactNode; }) { return ( @@ -35,14 +42,16 @@ export function AkademikAyrinti({ - + Kapat

    - Akademik göstergeler + {baslik} - {universite} + {baglam} {children}
    diff --git a/src/features/katalog/components/bolum-icerik.tsx b/src/features/katalog/components/bolum-icerik.tsx index 3b15470..145a94d 100644 --- a/src/features/katalog/components/bolum-icerik.tsx +++ b/src/features/katalog/components/bolum-icerik.tsx @@ -2,6 +2,7 @@ import type { Metadata } from "next"; import Link from "next/link"; import { notFound } from "next/navigation"; import { + Briefcase, Building2, Calculator, ChevronRight, @@ -32,7 +33,16 @@ import { import { BolumProgramListesi } from "./bolum-program-listesi"; import { VeriKaynagi } from "./veri-kaynagi"; import { NavBaslik } from "./nav-baslik"; +import { AkademikAyrinti } from "./akademik-ayrinti"; import { OzetKart } from "@/components/ozet-kart"; +import { + BOLUM_ISTIHDAM_KAYNAK_URL, + BOLUM_ISTIHDAM_YIL, + ISTIHDAM_ORTALAMA, + bolumIstihdamBul, + type BolumIstihdam, + type IstihdamDuzeyi, +} from "@/lib/bolum-istihdam"; import { PagePixelDivider } from "@/components/pixel-decor"; import { CtaSiraForm } from "@/features/sihirbaz/components/cta-sira-form"; import { SiteFooter } from "@/components/site-footer"; @@ -64,6 +74,134 @@ function kartSayisi(n: number): { deger: string; birim?: string } { return { deger: sayi(n) }; } +const ondalik = (n: number) => + n.toLocaleString("tr-TR", { maximumFractionDigits: 1 }); + +/** Ayrıntı satırının ikinci satırı: içeride ne olduğunu söyler (DESIGN.md §4.9). */ +function istihdamOnizleme(v: BolumIstihdam): string { + const parcalar = [ + v.istihdam != null + ? `Mezunların %${ondalik(v.istihdam)}'i kayıtlı çalışıyor` + : null, + v.isBulmaAy != null ? `ilk iş ${ondalik(v.isBulmaAy)} ayda` : null, + v.istihdam == null && v.kazanc + ? `kazanç grubu: ${v.kazanc.toLocaleLowerCase("tr-TR")}` + : null, + ].filter(Boolean); + const metin = parcalar.join(" · "); + return metin.charAt(0).toLocaleUpperCase("tr-TR") + metin.slice(1); +} + +/** + * Mezun istihdamı: TÜİK Yükseköğretim İstihdam Göstergeleri (ülke geneli, + * bölüm bazında). Sayfada değil, özet kartlarının altındaki "Mezun + * istihdamı ›" satırının açtığı alt sayfada durur (DESIGN.md §4.9–4.11): + * kart ve süs ayraç yok, gösterge kareleri masonry, altında tek not ve + * kaynak. Renk sempati katar, anlam taşımaz — risk dili değildir. data-* + * işaretleri açılış koreografisinin sözleşmesi (akademik-ayrinti.tsx). + */ +function MezunIstihdami({ + veri, + duzey, +}: { + veri: BolumIstihdam; + duzey: IstihdamDuzeyi; +}) { + const ort = ISTIHDAM_ORTALAMA[duzey]; + const kare = + "flex flex-col items-center justify-center rounded-3xl px-3 text-white"; + const etiket = "text-sm font-bold text-white/90"; + const devSayi = + "font-heading text-5xl font-bold leading-none tracking-tight"; + const orta = "font-heading text-3xl font-bold leading-none"; + + const istihdamKaresi = + veri.istihdam != null ? ( +
    +
    Kayıtlı çalışan
    +
    %{ondalik(veri.istihdam)}
    + {ort.istihdam != null ? ( +
    + Türkiye: %{ondalik(ort.istihdam)} +
    + ) : null} +
    + ) : null; + const kazancKaresi = veri.kazanc ? ( +
    +
    {veri.kazanc}
    +
    Kazanç grubu
    +
    + ) : null; + const sureKaresi = + veri.isBulmaAy != null ? ( +
    +
    İlk işi bulma
    +
    + {ondalik(veri.isBulmaAy)} + ay +
    + {ort.isBulmaAy != null ? ( +
    + Türkiye: {ondalik(ort.isBulmaAy)} ay +
    + ) : null} +
    + ) : null; + const solVar = istihdamKaresi != null || kazancKaresi != null; + + return ( +
    + ); +} + /** Lisans puan türünün kimlik hapındaki adı (DB: SAYISAL, EŞİT AĞIRLIK…). */ const PUAN_TURU_HAP: Record = { SAYISAL: "Sayısal puan", @@ -295,13 +433,18 @@ export function BolumIcerik({ slug, sayfa }: { slug: string; sayfa: number }) { } } const { stats } = bolum; + // TÜİK mezun istihdamı: lisansı olan bölümde lisans tablosu, yalnız ön + // lisansı olanda ön lisans tablosu. Tabloda yoksa satır hiç çizilmez. + const istihdamDuzeyi: IstihdamDuzeyi = + bolum.lisansProgramlari.length > 0 ? "lisans" : "onlisans"; + const istihdam = bolumIstihdamBul(slug, istihdamDuzeyi); // Sayfaya özgü, veriden türeyen özet cümle (GEO: yapay zekâ cevap motorları // sayfa başına ilk metni saklar; 1011 katalog sayfasının aynı şablon cümleyle // açılması hem alıntıyı hem Google'ın "ölçekli içerik" politikasını zorlar — // docs/arastirma/2026-09-24-geo-seo). Rakamlar tablodakiyle aynı kaynaktan. const veriOzeti = ilkSayfa ? bolumVeriOzeti(bolum, tumProgramlar) : null; const hapSinifi = - "inline-flex h-10 items-center gap-2 rounded-full border border-slate-200 bg-white px-4 text-sm font-semibold text-slate-800"; + "inline-flex h-10 items-center gap-2 rounded-full border border-slate-200 bg-card px-4 text-sm font-semibold text-slate-800"; return ( <> @@ -460,6 +603,16 @@ export function BolumIcerik({ slug, sayfa }: { slug: string; sayfa: number }) { /> ) : null} + {ilkSayfa && istihdam ? ( + } + > + + + ) : null} diff --git a/src/features/katalog/components/universite-icerik.tsx b/src/features/katalog/components/universite-icerik.tsx index 7d620b4..9256db3 100644 --- a/src/features/katalog/components/universite-icerik.tsx +++ b/src/features/katalog/components/universite-icerik.tsx @@ -605,13 +605,13 @@ export function UniversiteIcerik({ {ikon} {turEtiketi.cip} ) : ( - + {ikon} {turEtiketi.cip} @@ -624,7 +624,7 @@ export function UniversiteIcerik({ {trBaslikDuzeni(uni.il)} @@ -710,7 +710,7 @@ export function UniversiteIcerik({ {uni.urap || uni.istatistik ? ( diff --git a/src/lib/ai/araclar.ts b/src/lib/ai/araclar.ts index 6720a86..dad7adf 100644 --- a/src/lib/ai/araclar.ts +++ b/src/lib/ai/araclar.ts @@ -13,6 +13,7 @@ import { dilimAraligi, EFEKTIF_SIRA, getDb, + netlerGetir, programGetir, programSatiri, SELECT_COLS, @@ -29,10 +30,18 @@ import { import { getAllUniversiteler, getUniversiteBySlug } from "@/lib/katalog"; import { kadinYuzdesi, ogrenciBasinaUye, YOK_ISTATISTIK_DONEM } from "@/lib/yok-istatistik"; import { URAP_DONEM, URAP_TOPLAM } from "@/lib/urap-siralama"; -import { turkishSlugify } from "@/lib/slug"; +import { bolumSayfaSlug, turkishSlugify } from "@/lib/slug"; +import { + BOLUM_ISTIHDAM, + BOLUM_ISTIHDAM_KAYNAK, + ISTIHDAM_ORTALAMA, + type IstihdamDuzeyi, +} from "@/lib/bolum-istihdam"; import { DILIM_ETIKET } from "@/lib/risk"; +import { trendOzetiMetni } from "@/lib/trend"; +import { TUR_SAYFALARI } from "@/lib/unitur"; import { YILLAR } from "@/lib/veri-yillari"; -import { PUAN_TURLERI, type Program, type PuanTuruKey } from "@/types/yokatlas"; +import { PUAN_TURLERI, type Program, type ProgramNetSatiri, type PuanTuruKey } from "@/types/yokatlas"; import { PROFIL_ALAN_ACIKLAMA, PROFIL_ALANLARI, @@ -55,6 +64,8 @@ export type AracBaglami = { export type AracTanimi = OpenAI.Chat.Completions.ChatCompletionTool; const ARAMA_LIMIT = 8; +const KARSILASTIRMA_UST = 4; +const NET_YIL_SAYISI = 2; export const ARACLAR: AracTanimi[] = [ { @@ -62,14 +73,20 @@ export const ARACLAR: AracTanimi[] = [ function: { name: "program_ara", description: - "Adayın puan türündeki programları veriden arar (YÖK Atlas, son yerleştirme). Bölüm adı, üniversite, il, öğretim dili, burs ve yıllık ücret üst sınırına göre süzer; adayın sırasına en yakın programları döner. Sayı uydurmak yerine bunu çağır.", + "Adayın puan türündeki programları veriden arar (YÖK Atlas, son yerleştirme). Bölüm adı, üniversite, il, devlet/vakıf, öğretim dili ve türü, burs ve yıllık ücret üst sınırına göre süzer; varsayılan olarak adayın sırasına en yakın programları döner. Sayı uydurmak yerine bunu çağır.", parameters: { type: "object", properties: { arama: { type: "string", description: "Bölüm adı parçası, ör. 'bilgisayar mühendisliği', 'hukuk'" }, universite: { type: "string", description: "Üniversite adı parçası" }, il: { type: "string", description: "İl adı, ör. 'İzmir'" }, + tur: { type: "string", enum: ["devlet", "vakif"], description: "Yalnız devlet ya da yalnız vakıf üniversiteleri" }, dil: { type: "string", enum: ["Türkçe", "İngilizce"], description: "Öğretim dili" }, + ogretim_turu: { + type: "string", + enum: ["Örgün Öğretim", "Uzaktan Öğretim", "Açık Öğretim"], + description: "Öğretim türü", + }, burs: { type: "string", enum: ["Burslu", "%50 İndirimli", "%25 İndirimli", "Ücretli"], @@ -81,6 +98,12 @@ export const ARACLAR: AracTanimi[] = [ enum: ["hayal", "dengeli", "guvenli"], description: "Yalnız bu dilimdekiler: hayal = adayın sırasının üstünde kapananlar, dengeli = sırasının 1,4 katına kadar, guvenli = daha altı", }, + sirala: { + type: "string", + enum: ["yakinlik", "taban", "ucret"], + description: + "yakinlik (varsayılan) = adayın sırasına en yakın; taban = en iyi taban sırası önce ('en iyi/en yüksek' sorularında); ucret = en ucuz önce (devlet ve tam burslu 0 sayılır)", + }, }, additionalProperties: false, }, @@ -102,6 +125,65 @@ export const ARACLAR: AracTanimi[] = [ }, }, }, + { + type: "function", + function: { + name: "program_netleri", + description: + "Programa yerleşen SON kişinin ders bazında netleri (TYT/AYT/YDT), taban puanı ve OBP'si; son iki yıl. 'Kaç net lazım' sorularında bunu çağır, net uydurma.", + parameters: { + type: "object", + properties: { + program_id: { type: "string", description: "program_ara sonucundaki id (kılavuz kodu)" }, + }, + required: ["program_id"], + additionalProperties: false, + }, + }, + }, + { + type: "function", + function: { + name: "program_karsilastir", + description: `2-${KARSILASTIRMA_UST} programı yan yana getirir: taban sırası, trend, kontenjan, ücret/burs, dil, akreditasyon, kadro, evden uzaklık. 'A mı B mi' sorularında program_detay'ı tek tek çağırmak yerine bunu kullan.`, + parameters: { + type: "object", + properties: { + program_idler: { + type: "array", + items: { type: "string" }, + minItems: 2, + maxItems: KARSILASTIRMA_UST, + description: "program_ara sonucundaki id'ler", + }, + }, + required: ["program_idler"], + additionalProperties: false, + }, + }, + }, + { + type: "function", + function: { + name: "bolum_istihdam", + description: + "Bölüm mezunlarının iş durumu (TÜİK, ülke geneli): kayıtlı istihdam oranı, ilk işi bulma süresi (ay) ve kazanç grubu; ülke ortalamasıyla birlikte. 'Mezun olunca iş bulur muyum', 'hangisinin işi daha iyi' sorularında bunu çağır. Üniversiteye göre veri YOK; aynı bölüm her üniversitede aynı sayıyı verir.", + parameters: { + type: "object", + properties: { + bolumler: { + type: "array", + items: { type: "string" }, + minItems: 1, + maxItems: KARSILASTIRMA_UST, + description: "Bölüm adları, ör. ['Hukuk', 'Psikoloji']", + }, + }, + required: ["bolumler"], + additionalProperties: false, + }, + }, + }, { type: "function", function: { @@ -195,12 +277,19 @@ type ProgramAraArg = { arama?: string; universite?: string; il?: string; + tur?: "devlet" | "vakif"; dil?: string; + ogretim_turu?: string; burs?: string; ucret_ust?: number; dilim?: "hayal" | "dengeli" | "guvenli"; + sirala?: "yakinlik" | "taban" | "ucret"; }; +/** Ücret sıralaması: devlet (ücret yok) ve tam burslu 0 sayılır. */ +const UCRET_SIRA_SQL = `COALESCE((SELECT CASE WHEN o.burs_orani = 'Burslu' THEN 0 ELSE o.ucret END + FROM program_ozellik o WHERE o.id = programs.id), 0)`; + function programAra(b: AracBaglami, a: ProgramAraArg, profilUygula = true): ProgramAraSonuc { const db = getDb(); const profil: DanismanProfili = profilUygula ? b.profil : {}; @@ -237,6 +326,12 @@ function programAra(b: AracBaglami, a: ProgramAraArg, profilUygula = true): Prog uygulanan.push(`profil: ${profil.evIl} iline en fazla ${profil.maxKm} km (${iller.length} il)`); } } + if (a.tur && a.tur in TUR_SAYFALARI) { + const uniturler = TUR_SAYFALARI[a.tur].uniturler; + kosullar.push(`unitur IN (${uniturler.map(() => "?").join(",")})`); + args.push(...uniturler); + uygulanan.push(`tür = ${a.tur === "devlet" ? "devlet" : "vakıf"}`); + } // Özellik süzgeçleri alt sorguda (program_ozellik.id çakışmasın) const ozKosul: string[] = []; const ozArgs: (string | number)[] = []; @@ -260,7 +355,11 @@ function programAra(b: AracBaglami, a: ProgramAraArg, profilUygula = true): Prog ozArgs.push(ucretUst); uygulanan.push(`yıllık ücret ≤ ${ucretUst.toLocaleString("tr-TR")} TL${a.ucret_ust ? "" : " (profil)"}`); } - if (profil.ogretimTuru === "yalniz-orgun") { + if (a.ogretim_turu) { + ozKosul.push("ogrenim_turu = ?"); + ozArgs.push(a.ogretim_turu); + uygulanan.push(`öğretim türü = ${a.ogretim_turu}`); + } else if (profil.ogretimTuru === "yalniz-orgun") { ozKosul.push("(ogrenim_turu IS NULL OR ogrenim_turu = 'Örgün Öğretim')"); uygulanan.push("profil: yalnız örgün"); } @@ -277,10 +376,20 @@ function programAra(b: AracBaglami, a: ProgramAraArg, profilUygula = true): Prog uygulanan.push(`dilim = ${DILIM_ETIKET[anahtar]}`); } + // İkincil anahtar hep sıraya yakınlık: eşit ücretlilerde (ör. tüm devletler) anlamlı kalsın + const yakinlik = `ABS(${EFEKTIF_SIRA} - ?) ASC`; + const siralama = + a.sirala === "taban" + ? `${EFEKTIF_SIRA} ASC, ${yakinlik}` + : a.sirala === "ucret" + ? `${UCRET_SIRA_SQL} ASC, ${yakinlik}` + : yakinlik; + if (a.sirala === "taban") uygulanan.push("sıralama: en iyi taban sırası önce"); + if (a.sirala === "ucret") uygulanan.push("sıralama: en ucuz önce"); const satirlar = db .prepare( `SELECT ${SELECT_COLS} FROM programs WHERE ${kosullar.join(" AND ")} - ORDER BY ABS(${EFEKTIF_SIRA} - ?) ASC LIMIT ?`, + ORDER BY ${siralama} LIMIT ?`, ) .all(...args, b.sira, ARAMA_LIMIT) as ProgramHamSatiri[]; const programlar = satirlar.map(programSatiri); @@ -328,6 +437,7 @@ function programDetay(b: AracBaglami, a: { program_id?: string }) { fakulte: p.fakulte, sure: p.sure, tabanSiraYillara: Object.fromEntries(YILLAR.map((y, i) => [y, p.siraGecmisi[i]])), + trend: trendOzetiMetni(p.siraGecmisi), puanSon: p.puanSon, yerlesenSon: p.yerlesenSon, ucretYillik: o?.ucret ?? null, @@ -345,6 +455,100 @@ function programDetay(b: AracBaglami, a: { program_id?: string }) { }; } +const NET_ETIKET: Partial> = { + tytTrkNet: "TYT Türkçe", + tytSosNet: "TYT Sosyal", + tytMatNet: "TYT Matematik", + tytFenNet: "TYT Fen", + aytMatNet: "AYT Matematik", + aytFizNet: "AYT Fizik", + aytKimNet: "AYT Kimya", + aytBioNet: "AYT Biyoloji", + aytTdeNet: "AYT Edebiyat", + aytTrh1Net: "AYT Tarih-1", + aytCog1Net: "AYT Coğrafya-1", + aytTrh2Net: "AYT Tarih-2", + aytCog2Net: "AYT Coğrafya-2", + aytDinNet: "AYT Din Kültürü", + aytFelNet: "AYT Felsefe Grubu", + ydtYdilNet: "YDT Yabancı Dil", +}; + +function programNetleri(_b: AracBaglami, a: { program_id?: string }) { + const id = String(a.program_id ?? "").trim(); + const p = id ? programGetir(id) : null; + if (!p) return { hata: "Program bulunamadı; önce program_ara ile id al." }; + const satirlar = netlerGetir(id).slice(0, NET_YIL_SAYISI); + if (!satirlar.length) { + return { program: p.isim, universite: p.universite, hata: "Bu program için net verisi yok; uydurma." }; + } + return { + program: p.isim, + universite: p.universite, + yillar: satirlar.map((s) => ({ + yil: s.yil, + tabanPuan: s.tabanPuan, + obp: s.obp, + netler: Object.fromEntries( + (Object.keys(NET_ETIKET) as (keyof ProgramNetSatiri)[]) + .filter((k) => s[k] != null) + .map((k) => [NET_ETIKET[k], s[k]]), + ), + })), + not: "Netler programa yerleşen SON kişinin netleridir (YÖK Atlas); aynı puana farklı net dağılımıyla da ulaşılır, OBP sonucu değiştirir. Hedef değil, yaklaşık düzey olarak aktar.", + }; +} + +function programKarsilastir(b: AracBaglami, a: { program_idler?: unknown }) { + const idler = Array.isArray(a.program_idler) + ? Array.from(new Set(a.program_idler.map((x) => String(x).trim()).filter(Boolean))) + : []; + if (idler.length < 2) return { hata: "En az 2 program id'si gerekli; önce program_ara ile id al." }; + return { + programlar: idler.slice(0, KARSILASTIRMA_UST).map((id) => { + const d = programDetay(b, { program_id: id }); + if ("hata" in d) return { id, hata: "Program bulunamadı." }; + // Koşul metinleri uzun; karşılaştırmada yalnız sayısı, ayrıntı program_detay'da + const { kosullar, ...ozet } = d; + return { ...ozet, kosulSayisi: kosullar.length }; + }), + }; +} + +function bolumIstihdam(b: AracBaglami, a: { bolumler?: unknown }) { + const adlar = Array.isArray(a.bolumler) + ? a.bolumler.map((x) => String(x).trim()).filter(Boolean).slice(0, KARSILASTIRMA_UST) + : []; + if (!adlar.length) return { hata: "En az bir bölüm adı gerekli." }; + const duzey: IstihdamDuzeyi = b.tur === "tyt" ? "onlisans" : "lisans"; + const tablo = BOLUM_ISTIHDAM[duzey]; + const anahtarlar = Object.keys(tablo); + return { + duzey: duzey === "lisans" ? "lisans mezunları" : "ön lisans mezunları", + ulkeOrtalamasi: ISTIHDAM_ORTALAMA[duzey], + bolumler: adlar.map((ad) => { + const slug = bolumSayfaSlug(ad); + // Birebir > başı tutan > içinde geçen ("bilgisayar müh" → bilgisayar-muhendisligi) + const anahtar = + (slug in tablo ? slug : undefined) ?? + anahtarlar.find((k) => k.startsWith(slug)) ?? + anahtarlar.find((k) => k.includes(slug)); + if (!anahtar) { + return { aranan: ad, hata: "Bu bölüm TÜİK tablosunda yok (yeni bölüm ya da mezun sayısı az); istihdam verisi uydurma." }; + } + const v = tablo[anahtar]; + return { + aranan: ad, + bolumSayfasi: `/bolum/${anahtar}`, + kayitliIstihdamYuzde: v.istihdam, + ilkIsBulmaAy: v.isBulmaAy, + kazancGrubu: v.kazanc, + }; + }), + not: `Kaynak: ${BOLUM_ISTIHDAM_KAYNAK}. Ülke geneli, tüm üniversitelerin mezunları birlikte; üniversiteye göre değişir ama o veri yok. Kayıtlı istihdam = SGK kaydıyla çalışma oranı. Kazanç TL değil, bölümler arası göreli grup. Bu sayılar geçmiş mezunları anlatır; yerleşme ya da iş bulma garantisi değildir, cevabında kaynağı söyle.`, + }; +} + function universiteProfili(_b: AracBaglami, a: { universite?: string }) { const q = String(a.universite ?? "").trim(); if (!q) return { hata: "Üniversite adı gerekli." }; @@ -443,6 +647,12 @@ export function aracCalistirici(b: AracBaglami) { return programAra(b, a as ProgramAraArg); case "program_detay": return programDetay(b, a); + case "program_netleri": + return programNetleri(b, a); + case "program_karsilastir": + return programKarsilastir(b, a); + case "bolum_istihdam": + return bolumIstihdam(b, a); case "universite_profili": return universiteProfili(b, a); case "profil_guncelle": diff --git a/src/lib/ai/cagri.ts b/src/lib/ai/cagri.ts index a2367ad..0ba0bbd 100644 --- a/src/lib/ai/cagri.ts +++ b/src/lib/ai/cagri.ts @@ -255,14 +255,19 @@ export async function* sohbetAkisiAraclarla(opts: { for (const [i, c] of liste.entries()) { opts.onArac?.(c.name); let arg: unknown = {}; + let argBozuk = false; try { arg = c.arguments ? JSON.parse(c.arguments) : {}; } catch { - arg = {}; + argBozuk = true; } let sonuc: unknown; try { - sonuc = await opts.calistir(c.name, arg); + // Bozuk argümanla çalıştırma: boş argüman süzgeçsiz sonuç döndürür, + // model onu sorunun cevabı sanar. Hatayı söyle, yeniden denesin. + sonuc = argBozuk + ? { hata: "Araç argümanları geçerli JSON değil; aracı düzgün argümanlarla yeniden çağır." } + : await opts.calistir(c.name, arg); } catch (hata) { console.error("[cagri] araç hatası:", c.name, hata); sonuc = { hata: "Araç çalışmadı; veriye ulaşılamadı, uydurma." }; diff --git a/src/lib/ai/jev.ts b/src/lib/ai/jev.ts new file mode 100644 index 0000000..fd14b7d --- /dev/null +++ b/src/lib/ai/jev.ts @@ -0,0 +1,75 @@ +/** + * Danışman çıktı denetimi — Jev (TypeSafe "System One" modeli). + * + * Danışman cevabı bittikten sonra tek soru sorulur: cevap yerleşme garantisi + * veriyor ya da yerleşmeyi olasılık/yüzde/ihtimal diliyle tahmin ediyor mu + * (sistem prompt'undaki yasak; api/soru/route.ts). Jev metin üretmez, 0-1 + * arası bir olasılık döner. Yalnız danışmanın CEVABI gider; kullanıcının + * mesajı, adı ya da e-postası gitmez. Sağlayıcı ABD'de — /gizlilik "Hizmet + * sağlayıcılar" bölümünde yazılı; değişirse aynı commit'te güncellenir. + * + * Güvenli tarafa düşer: anahtar yoksa, zaman aşımında ya da hata olursa + * denetim atlanır (null), cevap olduğu gibi kalır. Saf modül: Next dışından + * (scripts/kesif-jev.ts) da import edilir. + */ + +const UC = "https://api.typesafe.ai/v1/systemone"; +const MODEL = "jev-latest"; +/** 5 Eki 2026 keşfi: temiz cevaplar ≤0,37, ihlaller ≥0,74 (36 örnek). */ +export const JEV_IHLAL_ESIGI = 0.5; +/** Akış sonunda bekletir; ölçülen p95 ~335 ms. */ +const ZAMAN_ASIMI_MS = 2000; + +export const JEV_IHLAL_SORUSU = { + type: "noul", + instructions: + "Bu metin bir üniversite tercih danışmanının öğrenciye verdiği Türkçe cevaptır. Cevap, öğrenciye bir programa yerleşeceğine dair garanti/söz/kesinlik veriyor mu YA DA yerleşmeyi olasılık, yüzde, ihtimal ya da şans diliyle tahmin ediyor mu? " + + "Şunlar ihlal DEĞİLDİR: 'Güvenli / Az riskli / Riskli' etiketleri; 'garanti verilemez' gibi reddeden cümleler; burs indirimi, doluluk, öğrenci oranı ya da mezunların istihdam oranı gibi yerleşme tahmini olmayan yüzdeler; geçmiş taban sırası ve kontenjan sayıları.", +} as const; + +type JevYanit = { + answers?: Record; + usage?: { input_tokens?: number }; +}; + +export function jevAnahtari(): string | undefined { + return process.env.TYPESAFE_API_KEY?.trim() || undefined; +} + +/** Ham çağrı: ihlal olasılığı + girdi token'ı. Hata fırlatır (keşif betiği görsün). */ +export async function jevIhlalSor( + anahtar: string, + cevap: string, + zamanAsimiMs = 30_000, +): Promise<{ p: number; girdiToken: number }> { + const r = await fetch(UC, { + method: "POST", + headers: { Authorization: `Bearer ${anahtar}`, "Content-Type": "application/json" }, + body: JSON.stringify({ state: cevap, model: MODEL, questions: { ihlal: JEV_IHLAL_SORUSU } }), + signal: AbortSignal.timeout(zamanAsimiMs), + }); + if (!r.ok) throw new Error(`Jev ${r.status}: ${(await r.text()).slice(0, 300)}`); + const y = (await r.json()) as JevYanit; + const p = y.answers?.ihlal?.noul; + if (typeof p !== "number") throw new Error(`Jev beklenmeyen yanıt: ${JSON.stringify(y).slice(0, 300)}`); + return { p, girdiToken: y.usage?.input_tokens ?? 0 }; +} + +/** + * Danışman cevabının ihlal olasılığı; denetim yapılamadıysa null. Asla + * fırlatmaz — denetim cevabı düşürmemeli. + */ +export async function cevapIhlalOlasiligi(cevap: string): Promise { + const anahtar = jevAnahtari(); + if (!anahtar || !cevap.trim()) return null; + try { + return (await jevIhlalSor(anahtar, cevap, ZAMAN_ASIMI_MS)).p; + } catch (hata) { + console.warn("[jev] denetim atlandı:", hata instanceof Error ? hata.message : hata); + return null; + } +} + +/** İhlal yakalanınca cevabın sonuna eklenen düzeltme notu. */ +export const JEV_DUZELTME_NOTU = + "Not: Yukarıdaki cevap bir yerleşme garantisi ya da olasılık tahmini değildir. Taban sıraları her yıl değişir; karar verirken Güvenli / Az riskli / Riskli etiketlerine ve geçmiş taban sıralarına bak."; diff --git a/src/lib/bolum-istihdam.ts b/src/lib/bolum-istihdam.ts new file mode 100644 index 0000000..6a3f90b --- /dev/null +++ b/src/lib/bolum-istihdam.ts @@ -0,0 +1,355 @@ +// TÜİK Yükseköğretim İstihdam Göstergeleri 2025: bölüm başına mezun istihdamı. +// +// ÜRETİLMİŞ DOSYA — elle düzenleme. Kaynak Excel'ler data/kaynak/ altında; +// yeniden üretmek için: python3 scripts/tuik-istihdam-uret.py 2025 +// +// Veri ÜLKE GENELİ ve bölüm bazındadır: aynı bölümün her üniversitesi için +// aynı sayı döner; üniversite kırılımı TÜİK'te yok. Kayıtlı istihdam = mezunun +// SGK kaydıyla çalışıyor olması. Kazanç TL değil, beş kademeli gruptur. +// Anahtar: /bolum/[slug] sayfa slug'ı. Burada olmayan bölüm ya henüz yeterli +// mezun vermemiştir ya da TÜİK tablosunda yoktur — "kötü" demek değildir. + +export const BOLUM_ISTIHDAM_YIL = 2025; + +export const BOLUM_ISTIHDAM_KAYNAK = "TÜİK, Yükseköğretim İstihdam Göstergeleri, 2025"; + +export const BOLUM_ISTIHDAM_KAYNAK_URL = "https://veriportali.tuik.gov.tr/tr/press/58027"; + +export type KazancGrubu = "Çok düşük" | "Düşük" | "Orta" | "Yüksek" | "Çok yüksek"; + +export type IstihdamDuzeyi = "lisans" | "onlisans"; + +export type BolumIstihdam = { + /** Kayıtlı istihdam oranı (%) */ + istihdam: number | null; + /** Mezuniyetten sonra ilk işi bulma süresi (ay, ortalama) */ + isBulmaAy: number | null; + /** Aylık ortalama kazanç grubu (bölümler arası göreli) */ + kazanc: KazancGrubu | null; +}; + +/** Tüm mezunların ortalaması — kıyas çizgisi. */ +export const ISTIHDAM_ORTALAMA: Record = { + lisans: { istihdam: 73.9, isBulmaAy: 14.2 }, + onlisans: { istihdam: 65.7, isBulmaAy: 15.8 }, +}; + +export const BOLUM_ISTIHDAM: Record> = { + lisans: { + "acil-yardim-ve-afet-yonetimi": { istihdam: 73.5, isBulmaAy: 12.5, kazanc: "Düşük" }, + "aktuerya-bilimleri": { istihdam: 81.0, isBulmaAy: 13.2, kazanc: "Çok yüksek" }, + "alman-dili-ve-edebiyati": { istihdam: 64.7, isBulmaAy: 10.8, kazanc: "Düşük" }, + "almanca-ogretmenligi": { istihdam: 65.7, isBulmaAy: 10.0, kazanc: "Düşük" }, + "amerikan-kulturu-ve-edebiyati": { istihdam: 68.7, isBulmaAy: 12.1, kazanc: "Orta" }, + "antrenorluk-egitimi": { istihdam: 69.3, isBulmaAy: 13.2, kazanc: "Çok düşük" }, + "antropoloji": { istihdam: 61.2, isBulmaAy: 18.7, kazanc: "Düşük" }, + "arap-dili-ve-edebiyati": { istihdam: 68.9, isBulmaAy: 13.0, kazanc: "Düşük" }, + "arapca-ogretmenligi": { istihdam: 76.4, isBulmaAy: 9.8, kazanc: "Düşük" }, + "arkeoloji": { istihdam: 63.1, isBulmaAy: 16.8, kazanc: "Çok düşük" }, + "astronomi-ve-uzay-bilimleri": { istihdam: 63.2, isBulmaAy: 17.0, kazanc: "Düşük" }, + "bahce-bitkileri": { istihdam: 69.3, isBulmaAy: 17.8, kazanc: "Düşük" }, + "bankacilik-ve-sigortacilik": { istihdam: 72.8, isBulmaAy: 12.7, kazanc: "Düşük" }, + "beden-egitimi-ve-spor-ogretmenligi": { istihdam: 72.4, isBulmaAy: 13.6, kazanc: "Çok düşük" }, + "beslenme-ve-diyetetik": { istihdam: 64.8, isBulmaAy: 16.2, kazanc: "Çok düşük" }, + "bilgi-ve-belge-yonetimi": { istihdam: 74.8, isBulmaAy: 16.1, kazanc: "Düşük" }, + "bilgisayar-muhendisligi": { istihdam: 80.8, isBulmaAy: 11.2, kazanc: "Çok yüksek" }, + "bilgisayar-ve-ogretim-teknolojileri-ogretmenligi": { istihdam: 79.3, isBulmaAy: 15.0, kazanc: "Orta" }, + "bilisim-sistemleri-muhendisligi": { istihdam: 80.9, isBulmaAy: 10.4, kazanc: "Çok yüksek" }, + "bilisim-sistemleri-ve-teknolojileri": { istihdam: 78.2, isBulmaAy: 11.3, kazanc: "Çok yüksek" }, + "bitki-koruma": { istihdam: 73.5, isBulmaAy: 16.4, kazanc: "Düşük" }, + "biyokimya": { istihdam: 65.5, isBulmaAy: 15.6, kazanc: "Düşük" }, + "biyoloji": { istihdam: 64.9, isBulmaAy: 16.2, kazanc: "Düşük" }, + "biyoloji-ogretmenligi": { istihdam: 67.0, isBulmaAy: 15.3, kazanc: "Çok düşük" }, + "biyomedikal-muhendisligi": { istihdam: 74.0, isBulmaAy: 14.1, kazanc: "Orta" }, + "biyomuhendislik": { istihdam: 69.3, isBulmaAy: 13.8, kazanc: "Orta" }, + "biyosistem-muhendisligi": { istihdam: 66.8, isBulmaAy: 16.2, kazanc: "Düşük" }, + "biyoteknoloji": { istihdam: 59.5, isBulmaAy: 14.2, kazanc: "Çok düşük" }, + "cagdas-turk-lehceleri-ve-edebiyatlari": { istihdam: 54.3, isBulmaAy: 17.9, kazanc: "Çok düşük" }, + "calisma-ekonomisi-ve-endustri-iliskileri": { istihdam: 71.2, isBulmaAy: 16.7, kazanc: "Orta" }, + "cevre-muhendisligi": { istihdam: 80.2, isBulmaAy: 14.6, kazanc: "Orta" }, + "cizgi-film-ve-animasyon": { istihdam: 55.1, isBulmaAy: 13.1, kazanc: "Orta" }, + "cocuk-gelisimi": { istihdam: 63.7, isBulmaAy: 9.8, kazanc: "Çok düşük" }, + "cografya": { istihdam: 64.2, isBulmaAy: 17.2, kazanc: "Çok düşük" }, + "cografya-ogretmenligi": { istihdam: 78.0, isBulmaAy: 15.3, kazanc: "Düşük" }, + "deniz-ulastirma-isletme-muhendisligi": { istihdam: 36.6, isBulmaAy: 20.6, kazanc: "Çok yüksek" }, + "denizcilik-isletmeleri-yonetimi": { istihdam: 80.2, isBulmaAy: 10.0, kazanc: "Orta" }, + "dil-ve-konusma-terapisi": { istihdam: 89.3, isBulmaAy: 2.4, kazanc: "Çok düşük" }, + "dilbilimi": { istihdam: 57.8, isBulmaAy: 13.3, kazanc: "Düşük" }, + "dis-hekimligi": { istihdam: 82.7, isBulmaAy: 9.6, kazanc: "Çok yüksek" }, + "ebelik": { istihdam: 86.9, isBulmaAy: 7.9, kazanc: "Orta" }, + "eczacilik": { istihdam: 87.7, isBulmaAy: 4.6, kazanc: "Orta" }, + "egzersiz-ve-spor-bilimleri": { istihdam: 72.5, isBulmaAy: 13.0, kazanc: "Çok düşük" }, + "ekonometri": { istihdam: 74.7, isBulmaAy: 16.1, kazanc: "Orta" }, + "ekonomi": { istihdam: 80.2, isBulmaAy: 11.7, kazanc: "Çok yüksek" }, + "ekonomi-ve-finans": { istihdam: 76.4, isBulmaAy: 13.2, kazanc: "Orta" }, + "elektrik-elektronik-muhendisligi": { istihdam: 85.4, isBulmaAy: 11.3, kazanc: "Çok yüksek" }, + "elektrik-muhendisligi": { istihdam: 89.1, isBulmaAy: 9.5, kazanc: "Çok yüksek" }, + "elektronik-muhendisligi": { istihdam: 86.2, isBulmaAy: 11.8, kazanc: "Çok yüksek" }, + "elektronik-ve-haberlesme-muhendisligi": { istihdam: 87.4, isBulmaAy: 11.1, kazanc: "Çok yüksek" }, + "endustri-muhendisligi": { istihdam: 84.2, isBulmaAy: 10.5, kazanc: "Çok yüksek" }, + "endustriyel-tasarim": { istihdam: 69.4, isBulmaAy: 12.0, kazanc: "Orta" }, + "endustriyel-tasarim-muhendisligi": { istihdam: 73.4, isBulmaAy: 10.7, kazanc: "Orta" }, + "enerji-sistemleri-muhendisligi": { istihdam: 80.0, isBulmaAy: 14.4, kazanc: "Orta" }, + "ergoterapi": { istihdam: 78.0, isBulmaAy: 7.6, kazanc: "Çok düşük" }, + "fars-dili-ve-edebiyati": { istihdam: 50.5, isBulmaAy: 17.1, kazanc: "Çok düşük" }, + "felsefe": { istihdam: 55.9, isBulmaAy: 16.5, kazanc: "Çok düşük" }, + "fen-bilgisi-ogretmenligi": { istihdam: 67.6, isBulmaAy: 16.5, kazanc: "Çok düşük" }, + "finans-ve-bankacilik": { istihdam: 71.8, isBulmaAy: 14.2, kazanc: "Orta" }, + "fizik": { istihdam: 67.6, isBulmaAy: 15.2, kazanc: "Orta" }, + "fizik-muhendisligi": { istihdam: 75.5, isBulmaAy: 15.0, kazanc: "Çok yüksek" }, + "fizik-ogretmenligi": { istihdam: 73.8, isBulmaAy: 12.1, kazanc: "Düşük" }, + "fizyoterapi-ve-rehabilitasyon": { istihdam: 74.6, isBulmaAy: 9.8, kazanc: "Çok düşük" }, + "fotograf": { istihdam: 60.5, isBulmaAy: 16.2, kazanc: "Çok düşük" }, + "fransiz-dili-ve-edebiyati": { istihdam: 63.0, isBulmaAy: 13.0, kazanc: "Düşük" }, + "fransizca-ogretmenligi": { istihdam: 62.6, isBulmaAy: 11.1, kazanc: "Düşük" }, + "gastronomi-ve-mutfak-sanatlari": { istihdam: 65.0, isBulmaAy: 9.9, kazanc: "Çok düşük" }, + "gazetecilik": { istihdam: 67.4, isBulmaAy: 14.7, kazanc: "Düşük" }, + "geleneksel-turk-sanatlari": { istihdam: 57.6, isBulmaAy: 17.3, kazanc: "Çok düşük" }, + "gemi-insaati-ve-gemi-makineleri-muhendisligi": { istihdam: 78.6, isBulmaAy: 11.2, kazanc: "Çok yüksek" }, + "gemi-makineleri-isletme-muhendisligi": { istihdam: 38.2, isBulmaAy: 19.5, kazanc: "Çok yüksek" }, + "genetik-ve-biyomuhendislik": { istihdam: 63.6, isBulmaAy: 15.9, kazanc: "Orta" }, + "gerontoloji": { istihdam: 72.2, isBulmaAy: 14.1, kazanc: "Orta" }, + "gida-muhendisligi": { istihdam: 72.9, isBulmaAy: 12.3, kazanc: "Orta" }, + "gida-teknolojisi": { istihdam: 70.2, isBulmaAy: 11.8, kazanc: "Çok düşük" }, + "gorsel-iletisim-tasarimi": { istihdam: 66.3, isBulmaAy: 12.4, kazanc: "Düşük" }, + "grafik-sanatlar": { istihdam: 63.9, isBulmaAy: 13.8, kazanc: "Düşük" }, + "grafik-tasarimi": { istihdam: 65.9, isBulmaAy: 13.0, kazanc: "Çok düşük" }, + "gumruk-isletme": { istihdam: 76.0, isBulmaAy: 14.3, kazanc: "Düşük" }, + "halkla-iliskiler-ve-reklamcilik": { istihdam: 69.9, isBulmaAy: 13.1, kazanc: "Düşük" }, + "halkla-iliskiler-ve-tanitim": { istihdam: 68.3, isBulmaAy: 14.9, kazanc: "Düşük" }, + "harita-muhendisligi": { istihdam: 84.2, isBulmaAy: 13.7, kazanc: "Orta" }, + "havacilik-elektrik-ve-elektronigi": { istihdam: 89.9, isBulmaAy: 9.5, kazanc: "Çok yüksek" }, + "havacilik-ve-uzay-muhendisligi": { istihdam: 82.8, isBulmaAy: 9.7, kazanc: "Çok yüksek" }, + "havacilik-yonetimi": { istihdam: 75.7, isBulmaAy: 13.4, kazanc: "Orta" }, + "hemsirelik": { istihdam: 89.8, isBulmaAy: 9.2, kazanc: "Yüksek" }, + "hukuk": { istihdam: 79.0, isBulmaAy: 21.7, kazanc: "Orta" }, + "ic-mimarlik": { istihdam: 68.0, isBulmaAy: 13.2, kazanc: "Çok düşük" }, + "ic-mimarlik-ve-cevre-tasarimi": { istihdam: 67.9, isBulmaAy: 12.6, kazanc: "Çok düşük" }, + "iktisat": { istihdam: 72.3, isBulmaAy: 18.0, kazanc: "Orta" }, + "ilahiyat": { istihdam: 60.0, isBulmaAy: 15.2, kazanc: "Düşük" }, + "iletisim-bilimleri": { istihdam: 68.3, isBulmaAy: 14.8, kazanc: "Orta" }, + "iletisim-ve-tasarimi": { istihdam: 67.8, isBulmaAy: 13.5, kazanc: "Düşük" }, + "ilkogretim-matematik-ogretmenligi": { istihdam: 74.5, isBulmaAy: 12.4, kazanc: "Düşük" }, + "imalat-muhendisligi": { istihdam: 86.9, isBulmaAy: 11.2, kazanc: "Çok yüksek" }, + "ingiliz-dilbilimi": { istihdam: 69.9, isBulmaAy: 11.0, kazanc: "Düşük" }, + "ingiliz-dili-ve-edebiyati": { istihdam: 68.7, isBulmaAy: 10.8, kazanc: "Düşük" }, + "ingilizce-mutercim-ve-tercumanlik": { istihdam: 57.7, isBulmaAy: 8.6, kazanc: "Çok düşük" }, + "ingilizce-ogretmenligi": { istihdam: 79.4, isBulmaAy: 8.4, kazanc: "Düşük" }, + "insaat-muhendisligi": { istihdam: 85.0, isBulmaAy: 10.9, kazanc: "Orta" }, + "insan-kaynaklari-yonetimi": { istihdam: 69.6, isBulmaAy: 12.0, kazanc: "Düşük" }, + "is-sagligi-ve-guvenligi": { istihdam: 77.9, isBulmaAy: 11.8, kazanc: "Düşük" }, + "islami-ilimler": { istihdam: 50.4, isBulmaAy: 15.4, kazanc: "Çok düşük" }, + "isletme": { istihdam: 72.7, isBulmaAy: 17.3, kazanc: "Orta" }, + "isletme-muhendisligi": { istihdam: 84.3, isBulmaAy: 11.4, kazanc: "Çok yüksek" }, + "istatistik": { istihdam: 80.7, isBulmaAy: 16.1, kazanc: "Yüksek" }, + "jeofizik-muhendisligi": { istihdam: 78.7, isBulmaAy: 15.5, kazanc: "Yüksek" }, + "jeoloji-muhendisligi": { istihdam: 79.6, isBulmaAy: 13.9, kazanc: "Yüksek" }, + "kamu-yonetimi": { istihdam: 71.1, isBulmaAy: 22.7, kazanc: "Orta" }, + "karsilastirmali-edebiyat": { istihdam: 62.8, isBulmaAy: 12.6, kazanc: "Düşük" }, + "kimya": { istihdam: 74.2, isBulmaAy: 11.8, kazanc: "Orta" }, + "kimya-muhendisligi": { istihdam: 79.9, isBulmaAy: 11.4, kazanc: "Çok yüksek" }, + "kimya-ogretmenligi": { istihdam: 73.8, isBulmaAy: 11.7, kazanc: "Düşük" }, + "klasik-arkeoloji": { istihdam: 63.1, isBulmaAy: 15.4, kazanc: "Düşük" }, + "kontrol-ve-otomasyon-muhendisligi": { istihdam: 88.0, isBulmaAy: 8.8, kazanc: "Çok yüksek" }, + "kore-dili-ve-edebiyati": { istihdam: 55.6, isBulmaAy: 14.2, kazanc: "Orta" }, + "kultur-varliklarini-koruma-ve-onarim": { istihdam: 59.9, isBulmaAy: 11.4, kazanc: "Çok düşük" }, + "lojistik-yonetimi": { istihdam: 81.3, isBulmaAy: 11.7, kazanc: "Orta" }, + "maden-muhendisligi": { istihdam: 87.5, isBulmaAy: 8.5, kazanc: "Çok yüksek" }, + "makine-muhendisligi": { istihdam: 85.8, isBulmaAy: 10.8, kazanc: "Çok yüksek" }, + "maliye": { istihdam: 72.8, isBulmaAy: 19.3, kazanc: "Düşük" }, + "malzeme-bilimi-ve-muhendisligi": { istihdam: 81.1, isBulmaAy: 14.4, kazanc: "Yüksek" }, + "matematik": { istihdam: 66.6, isBulmaAy: 12.7, kazanc: "Düşük" }, + "matematik-muhendisligi": { istihdam: 89.8, isBulmaAy: 10.3, kazanc: "Çok yüksek" }, + "matematik-ogretmenligi": { istihdam: 79.5, isBulmaAy: 12.2, kazanc: "Orta" }, + "matematik-ve-bilgisayar-bilimleri": { istihdam: 75.0, isBulmaAy: 12.4, kazanc: "Yüksek" }, + "mekatronik-muhendisligi": { istihdam: 83.2, isBulmaAy: 11.7, kazanc: "Çok yüksek" }, + "metalurji-ve-malzeme-muhendisligi": { istihdam: 83.8, isBulmaAy: 12.5, kazanc: "Çok yüksek" }, + "mimarlik": { istihdam: 78.1, isBulmaAy: 11.7, kazanc: "Düşük" }, + "molekuler-biyoloji-ve-genetik": { istihdam: 60.3, isBulmaAy: 16.1, kazanc: "Düşük" }, + "muhasebe-ve-finans-yonetimi": { istihdam: 74.4, isBulmaAy: 13.2, kazanc: "Düşük" }, + "odyoloji": { istihdam: 74.9, isBulmaAy: 9.6, kazanc: "Çok düşük" }, + "okul-oncesi-ogretmenligi": { istihdam: 75.2, isBulmaAy: 11.1, kazanc: "Düşük" }, + "orman-endustrisi-muhendisligi": { istihdam: 75.9, isBulmaAy: 14.3, kazanc: "Orta" }, + "orman-muhendisligi": { istihdam: 75.4, isBulmaAy: 11.8, kazanc: "Düşük" }, + "otomotiv-muhendisligi": { istihdam: 85.9, isBulmaAy: 13.3, kazanc: "Çok yüksek" }, + "ozel-egitim-ogretmenligi": { istihdam: 90.8, isBulmaAy: 4.4, kazanc: "Orta" }, + "pazarlama": { istihdam: 75.0, isBulmaAy: 10.1, kazanc: "Düşük" }, + "petrol-ve-dogalgaz-muhendisligi": { istihdam: 87.6, isBulmaAy: 11.7, kazanc: "Çok yüksek" }, + "peyzaj-mimarligi": { istihdam: 65.0, isBulmaAy: 13.3, kazanc: "Çok düşük" }, + "pilotaj": { istihdam: 85.1, isBulmaAy: 10.7, kazanc: "Çok yüksek" }, + "protohistorya-ve-on-asya-arkeolojisi": { istihdam: 62.8, isBulmaAy: 17.5, kazanc: "Düşük" }, + "psikoloji": { istihdam: 64.5, isBulmaAy: 15.4, kazanc: "Çok düşük" }, + "radyo-televizyon-ve-sinema": { istihdam: 67.0, isBulmaAy: 14.3, kazanc: "Çok düşük" }, + "rehberlik-ve-psikolojik-danismanlik": { istihdam: 77.6, isBulmaAy: 15.0, kazanc: "Düşük" }, + "reklamcilik": { istihdam: 73.9, isBulmaAy: 12.9, kazanc: "Düşük" }, + "rekreasyon": { istihdam: 71.1, isBulmaAy: 14.4, kazanc: "Çok düşük" }, + "rekreasyon-yonetimi": { istihdam: 64.3, isBulmaAy: 12.8, kazanc: "Çok düşük" }, + "rus-dili-ve-edebiyati": { istihdam: 66.5, isBulmaAy: 13.2, kazanc: "Orta" }, + "saglik-yonetimi": { istihdam: 69.7, isBulmaAy: 14.1, kazanc: "Düşük" }, + "sanat-tarihi": { istihdam: 59.6, isBulmaAy: 17.2, kazanc: "Çok düşük" }, + "sanat-ve-kultur-yonetimi": { istihdam: 62.3, isBulmaAy: 14.8, kazanc: "Düşük" }, + "sehir-ve-bolge-planlama": { istihdam: 73.0, isBulmaAy: 14.7, kazanc: "Düşük" }, + "sermaye-piyasasi": { istihdam: 79.7, isBulmaAy: 14.3, kazanc: "Çok yüksek" }, + "sigortacilik": { istihdam: 74.7, isBulmaAy: 13.1, kazanc: "Düşük" }, + "sinif-ogretmenligi": { istihdam: 86.0, isBulmaAy: 9.8, kazanc: "Orta" }, + "siyaset-bilimi-ve-kamu-yonetimi": { istihdam: 68.8, isBulmaAy: 19.9, kazanc: "Düşük" }, + "siyaset-bilimi-ve-uluslararasi-iliskiler": { istihdam: 71.7, isBulmaAy: 17.4, kazanc: "Orta" }, + "sosyal-bilgiler-ogretmenligi": { istihdam: 66.0, isBulmaAy: 18.0, kazanc: "Çok düşük" }, + "sosyal-hizmet": { istihdam: 66.6, isBulmaAy: 16.9, kazanc: "Düşük" }, + "sosyoloji": { istihdam: 57.6, isBulmaAy: 19.1, kazanc: "Düşük" }, + "su-urunleri-muhendisligi": { istihdam: 77.5, isBulmaAy: 14.8, kazanc: "Düşük" }, + "tarih": { istihdam: 60.6, isBulmaAy: 18.4, kazanc: "Çok düşük" }, + "tarih-ogretmenligi": { istihdam: 69.7, isBulmaAy: 19.5, kazanc: "Düşük" }, + "tarim-ekonomisi": { istihdam: 65.4, isBulmaAy: 18.3, kazanc: "Düşük" }, + "tarim-makineleri-ve-teknolojileri-muhendisligi": { istihdam: 74.5, isBulmaAy: 9.4, kazanc: "Düşük" }, + "tarimsal-biyoteknoloji": { istihdam: 66.9, isBulmaAy: 17.1, kazanc: "Düşük" }, + "tarimsal-yapilar-ve-sulama": { istihdam: 74.6, isBulmaAy: 17.0, kazanc: "Düşük" }, + "tarla-bitkileri": { istihdam: 72.0, isBulmaAy: 16.9, kazanc: "Düşük" }, + "tekstil-muhendisligi": { istihdam: 76.5, isBulmaAy: 9.1, kazanc: "Yüksek" }, + "tekstil-ve-moda-tasarimi": { istihdam: 59.9, isBulmaAy: 13.4, kazanc: "Çok düşük" }, + "televizyon-haberciligi-ve-programciligi": { istihdam: 71.4, isBulmaAy: 13.6, kazanc: "Düşük" }, + "tip": { istihdam: 95.5, isBulmaAy: 3.9, kazanc: "Çok yüksek" }, + "toprak-bilimi-ve-bitki-besleme": { istihdam: 72.3, isBulmaAy: 16.4, kazanc: "Düşük" }, + "turizm-isletmeciligi": { istihdam: 71.7, isBulmaAy: 13.1, kazanc: "Düşük" }, + "turizm-rehberligi": { istihdam: 58.6, isBulmaAy: 13.0, kazanc: "Çok düşük" }, + "turk-dili-ve-edebiyati": { istihdam: 56.3, isBulmaAy: 19.3, kazanc: "Çok düşük" }, + "turk-dili-ve-edebiyati-ogretmenligi": { istihdam: 72.9, isBulmaAy: 16.3, kazanc: "Düşük" }, + "turk-halkbilimi": { istihdam: 59.5, isBulmaAy: 17.1, kazanc: "Çok düşük" }, + "turkce-ogretmenligi": { istihdam: 69.5, isBulmaAy: 16.9, kazanc: "Düşük" }, + "ucak-bakim-ve-onarim": { istihdam: 89.1, isBulmaAy: 10.3, kazanc: "Çok yüksek" }, + "ucak-muhendisligi": { istihdam: 81.0, isBulmaAy: 10.2, kazanc: "Çok yüksek" }, + "uluslararasi-finans-ve-bankacilik": { istihdam: 78.1, isBulmaAy: 13.5, kazanc: "Çok yüksek" }, + "uluslararasi-iliskiler": { istihdam: 70.9, isBulmaAy: 17.5, kazanc: "Orta" }, + "uluslararasi-isletme-yonetimi": { istihdam: 76.5, isBulmaAy: 13.6, kazanc: "Orta" }, + "uluslararasi-ticaret-ve-finansman": { istihdam: 77.4, isBulmaAy: 13.1, kazanc: "Orta" }, + "uluslararasi-ticaret-ve-isletmecilik": { istihdam: 78.4, isBulmaAy: 11.9, kazanc: "Orta" }, + "uluslararasi-ticaret-ve-lojistik": { istihdam: 75.5, isBulmaAy: 12.5, kazanc: "Düşük" }, + "uzay-muhendisligi": { istihdam: 85.9, isBulmaAy: 11.8, kazanc: "Çok yüksek" }, + "veteriner": { istihdam: 77.8, isBulmaAy: 12.9, kazanc: "Orta" }, + "yazilim-muhendisligi": { istihdam: 76.7, isBulmaAy: 9.8, kazanc: "Çok yüksek" }, + "yeni-medya-ve-iletisim": { istihdam: 69.7, isBulmaAy: 12.6, kazanc: "Düşük" }, + "yiyecek-ve-icecek-isletmeciligi": { istihdam: 72.2, isBulmaAy: 13.5, kazanc: "Düşük" }, + "yonetim-bilisim-sistemleri": { istihdam: 76.0, isBulmaAy: 12.1, kazanc: "Yüksek" }, + "zootekni": { istihdam: 75.5, isBulmaAy: 15.5, kazanc: "Düşük" }, + }, + onlisans: { + "acil-durum-ve-afet-yonetimi": { istihdam: 75.8, isBulmaAy: 15.3, kazanc: "Yüksek" }, + "agiz-ve-dis-sagligi": { istihdam: 66.5, isBulmaAy: 13.7, kazanc: "Düşük" }, + "alternatif-enerji-kaynaklari-teknolojisi": { istihdam: 75.7, isBulmaAy: 13.3, kazanc: "Orta" }, + "ameliyathane-hizmetleri": { istihdam: 64.7, isBulmaAy: 14.3, kazanc: "Düşük" }, + "anestezi": { istihdam: 66.1, isBulmaAy: 14.8, kazanc: "Orta" }, + "ascilik": { istihdam: 62.0, isBulmaAy: 10.8, kazanc: "Orta" }, + "avcilik-ve-yaban-hayati": { istihdam: 78.0, isBulmaAy: 15.2, kazanc: "Orta" }, + "bahce-tarimi": { istihdam: 62.2, isBulmaAy: 18.8, kazanc: "Düşük" }, + "bankacilik-ve-sigortacilik": { istihdam: 60.5, isBulmaAy: 16.8, kazanc: "Orta" }, + "basim-ve-yayim-teknolojileri": { istihdam: 65.2, isBulmaAy: 15.1, kazanc: "Düşük" }, + "bilgisayar-destekli-tasarim-ve-animasyon": { istihdam: 57.0, isBulmaAy: 14.1, kazanc: "Düşük" }, + "bilgisayar-programciligi": { istihdam: 67.5, isBulmaAy: 16.0, kazanc: "Yüksek" }, + "bilgisayar-teknolojisi": { istihdam: 69.0, isBulmaAy: 15.1, kazanc: "Orta" }, + "bilisim-guvenligi-teknolojisi": { istihdam: 67.3, isBulmaAy: 12.1, kazanc: "Orta" }, + "bitki-koruma": { istihdam: 65.0, isBulmaAy: 17.0, kazanc: "Çok düşük" }, + "biyomedikal-cihaz-teknolojisi": { istihdam: 73.3, isBulmaAy: 13.7, kazanc: "Orta" }, + "buro-yonetimi-ve-yonetici-asistanligi": { istihdam: 59.4, isBulmaAy: 18.2, kazanc: "Orta" }, + "cagri-merkezi-hizmetleri": { istihdam: 58.8, isBulmaAy: 16.7, kazanc: "Düşük" }, + "cevre-koruma-ve-kontrol": { istihdam: 61.6, isBulmaAy: 16.2, kazanc: "Orta" }, + "ceza-infaz-ve-guvenlik-hizmetleri": { istihdam: 65.2, isBulmaAy: 14.8, kazanc: "Düşük" }, + "cocuk-gelisimi": { istihdam: 47.3, isBulmaAy: 16.0, kazanc: "Çok düşük" }, + "cografi-bilgi-sistemleri": { istihdam: 69.9, isBulmaAy: 14.4, kazanc: "Orta" }, + "deniz-ulastirma-ve-isletme": { istihdam: 63.7, isBulmaAy: 16.2, kazanc: "Yüksek" }, + "deniz-ve-liman-isletmeciligi": { istihdam: 70.2, isBulmaAy: 14.1, kazanc: "Orta" }, + "dis-protez-teknolojisi": { istihdam: 66.7, isBulmaAy: 11.9, kazanc: "Düşük" }, + "dis-ticaret": { istihdam: 68.5, isBulmaAy: 15.9, kazanc: "Orta" }, + "diyaliz": { istihdam: 64.0, isBulmaAy: 14.6, kazanc: "Orta" }, + "dogalgaz-ve-tesisati-teknolojisi": { istihdam: 83.6, isBulmaAy: 14.6, kazanc: "Yüksek" }, + "eczane-hizmetleri": { istihdam: 61.1, isBulmaAy: 11.6, kazanc: "Düşük" }, + "elektrik": { istihdam: 83.7, isBulmaAy: 13.3, kazanc: "Yüksek" }, + "elektrik-enerjisi-uretim-iletim-ve-dagitimi": { istihdam: 87.4, isBulmaAy: 13.3, kazanc: "Çok yüksek" }, + "elektronik-haberlesme-teknolojisi": { istihdam: 83.3, isBulmaAy: 15.0, kazanc: "Çok yüksek" }, + "elektronik-teknolojisi": { istihdam: 82.9, isBulmaAy: 14.2, kazanc: "Çok yüksek" }, + "elektronorofizyoloji": { istihdam: 67.1, isBulmaAy: 14.5, kazanc: "Düşük" }, + "emlak-yonetimi": { istihdam: 62.5, isBulmaAy: 17.9, kazanc: "Orta" }, + "endustriyel-kalipcilik": { istihdam: 83.6, isBulmaAy: 13.4, kazanc: "Çok yüksek" }, + "engelli-bakimi-ve-rehabilitasyon": { istihdam: 52.6, isBulmaAy: 14.4, kazanc: "Düşük" }, + "evde-hasta-bakimi": { istihdam: 63.7, isBulmaAy: 15.4, kazanc: "Yüksek" }, + "fizyoterapi": { istihdam: 61.7, isBulmaAy: 15.1, kazanc: "Düşük" }, + "fotografcilik-ve-kameramanlik": { istihdam: 62.5, isBulmaAy: 18.9, kazanc: "Yüksek" }, + "geleneksel-el-sanatlari": { istihdam: 50.6, isBulmaAy: 17.1, kazanc: "Çok düşük" }, + "gemi-insaati": { istihdam: 76.9, isBulmaAy: 12.4, kazanc: "Yüksek" }, + "gemi-makineleri-isletmeciligi": { istihdam: 69.5, isBulmaAy: 14.5, kazanc: "Yüksek" }, + "gida-kalite-kontrolu-ve-analizi": { istihdam: 56.3, isBulmaAy: 14.5, kazanc: "Düşük" }, + "gida-teknolojisi": { istihdam: 54.8, isBulmaAy: 14.9, kazanc: "Düşük" }, + "giyim-uretim-teknolojisi": { istihdam: 48.5, isBulmaAy: 15.3, kazanc: "Düşük" }, + "grafik-tasarimi": { istihdam: 62.2, isBulmaAy: 13.5, kazanc: "Düşük" }, + "halkla-iliskiler-ve-tanitim": { istihdam: 66.9, isBulmaAy: 17.8, kazanc: "Yüksek" }, + "harita-ve-kadastro": { istihdam: 72.6, isBulmaAy: 13.8, kazanc: "Orta" }, + "ic-mekan-tasarimi": { istihdam: 57.5, isBulmaAy: 13.7, kazanc: "Çok düşük" }, + "iklimlendirme-ve-sogutma-teknolojisi": { istihdam: 83.5, isBulmaAy: 14.0, kazanc: "Yüksek" }, + "ilahiyat": { istihdam: 49.6, isBulmaAy: 22.7, kazanc: "Orta" }, + "ilk-ve-acil-yardim": { istihdam: 73.1, isBulmaAy: 14.2, kazanc: "Yüksek" }, + "insaat-teknolojisi": { istihdam: 75.0, isBulmaAy: 15.3, kazanc: "Düşük" }, + "insan-kaynaklari-yonetimi": { istihdam: 65.3, isBulmaAy: 15.1, kazanc: "Yüksek" }, + "internet-ve-ag-teknolojileri": { istihdam: 77.1, isBulmaAy: 14.0, kazanc: "Çok yüksek" }, + "isletme-yonetimi": { istihdam: 65.7, isBulmaAy: 17.3, kazanc: "Orta" }, + "kimya-teknolojisi": { istihdam: 62.6, isBulmaAy: 13.8, kazanc: "Orta" }, + "kontrol-ve-otomasyon-teknolojisi": { istihdam: 83.9, isBulmaAy: 14.1, kazanc: "Çok yüksek" }, + "kulturel-miras-ve-turizm": { istihdam: 51.9, isBulmaAy: 20.9, kazanc: "Çok yüksek" }, + "kuyumculuk-ve-taki-tasarimi": { istihdam: 57.2, isBulmaAy: 16.6, kazanc: "Çok düşük" }, + "laborant-ve-veteriner-saglik": { istihdam: 67.4, isBulmaAy: 16.5, kazanc: "Yüksek" }, + "laboratuvar-teknolojisi": { istihdam: 58.2, isBulmaAy: 14.0, kazanc: "Düşük" }, + "lojistik": { istihdam: 70.4, isBulmaAy: 14.6, kazanc: "Orta" }, + "makine": { istihdam: 81.8, isBulmaAy: 14.1, kazanc: "Çok yüksek" }, + "makine-resim-ve-konstruksiyonu": { istihdam: 80.7, isBulmaAy: 12.5, kazanc: "Yüksek" }, + "marka-iletisimi": { istihdam: 67.8, isBulmaAy: 16.1, kazanc: "Çok yüksek" }, + "medya-ve-iletisim": { istihdam: 64.8, isBulmaAy: 17.0, kazanc: "Yüksek" }, + "mekatronik": { istihdam: 80.4, isBulmaAy: 14.1, kazanc: "Çok yüksek" }, + "mimari-dekoratif-sanatlar": { istihdam: 54.6, isBulmaAy: 17.9, kazanc: "Çok düşük" }, + "mimari-restorasyon": { istihdam: 60.9, isBulmaAy: 16.2, kazanc: "Düşük" }, + "mobilya-ve-dekorasyon": { istihdam: 76.8, isBulmaAy: 16.7, kazanc: "Orta" }, + "moda-tasarimi": { istihdam: 53.6, isBulmaAy: 13.7, kazanc: "Düşük" }, + "muhasebe-ve-vergi-uygulamalari": { istihdam: 63.2, isBulmaAy: 16.2, kazanc: "Düşük" }, + "odyometri": { istihdam: 68.3, isBulmaAy: 14.2, kazanc: "Düşük" }, + "optisyenlik": { istihdam: 68.8, isBulmaAy: 9.9, kazanc: "Çok düşük" }, + "organik-tarim": { istihdam: 61.1, isBulmaAy: 19.3, kazanc: "Düşük" }, + "ormancilik-ve-orman-urunleri": { istihdam: 79.6, isBulmaAy: 14.5, kazanc: "Orta" }, + "ortopedik-protez-ve-ortez": { istihdam: 66.8, isBulmaAy: 13.2, kazanc: "Orta" }, + "otomotiv-teknolojisi": { istihdam: 82.9, isBulmaAy: 14.3, kazanc: "Yüksek" }, + "ozel-guvenlik-ve-koruma": { istihdam: 77.2, isBulmaAy: 14.0, kazanc: "Yüksek" }, + "patoloji-laboratuvar-teknikleri": { istihdam: 62.7, isBulmaAy: 15.6, kazanc: "Düşük" }, + "pazarlama": { istihdam: 68.6, isBulmaAy: 15.3, kazanc: "Orta" }, + "perakende-satis-ve-magaza-yonetimi": { istihdam: 76.3, isBulmaAy: 19.2, kazanc: "Çok yüksek" }, + "peyzaj-ve-sus-bitkileri-yetistiriciligi": { istihdam: 56.6, isBulmaAy: 18.4, kazanc: "Düşük" }, + "posta-hizmetleri": { istihdam: 61.3, isBulmaAy: 17.7, kazanc: "Düşük" }, + "radyo-ve-televizyon-teknolojisi": { istihdam: 70.7, isBulmaAy: 16.1, kazanc: "Orta" }, + "radyoterapi": { istihdam: 65.5, isBulmaAy: 14.1, kazanc: "Düşük" }, + "rayli-sistemler-isletmeciligi": { istihdam: 81.2, isBulmaAy: 13.8, kazanc: "Yüksek" }, + "sac-bakimi-ve-guzellik-hizmetleri": { istihdam: 55.2, isBulmaAy: 11.9, kazanc: "Çok düşük" }, + "saglik-bilgi-sistemleri-teknikerligi": { istihdam: 58.2, isBulmaAy: 12.6, kazanc: "Çok düşük" }, + "saglik-kurumlari-isletmeciligi": { istihdam: 73.7, isBulmaAy: 17.6, kazanc: "Çok yüksek" }, + "sivil-hava-ulastirma-isletmeciligi": { istihdam: 71.6, isBulmaAy: 13.9, kazanc: "Yüksek" }, + "sivil-havacilik-kabin-hizmetleri": { istihdam: 71.7, isBulmaAy: 11.7, kazanc: "Çok yüksek" }, + "sivil-savunma-ve-itfaiyecilik": { istihdam: 82.8, isBulmaAy: 12.6, kazanc: "Yüksek" }, + "sosyal-guvenlik": { istihdam: 58.5, isBulmaAy: 15.3, kazanc: "Çok düşük" }, + "sosyal-hizmetler": { istihdam: 56.0, isBulmaAy: 22.2, kazanc: "Orta" }, + "sut-ve-urunleri-teknolojisi": { istihdam: 59.5, isBulmaAy: 17.0, kazanc: "Düşük" }, + "tapu-ve-kadastro": { istihdam: 71.7, isBulmaAy: 13.0, kazanc: "Orta" }, + "tekstil-teknolojisi": { istihdam: 55.6, isBulmaAy: 15.4, kazanc: "Düşük" }, + "tibbi-dokumantasyon-ve-sekreterlik": { istihdam: 67.6, isBulmaAy: 15.9, kazanc: "Yüksek" }, + "tibbi-goruntuleme-teknikleri": { istihdam: 70.7, isBulmaAy: 14.2, kazanc: "Orta" }, + "tibbi-laboratuvar-teknikleri": { istihdam: 62.0, isBulmaAy: 15.8, kazanc: "Orta" }, + "tibbi-tanitim-ve-pazarlama": { istihdam: 60.7, isBulmaAy: 14.9, kazanc: "Düşük" }, + "tibbi-ve-aromatik-bitkiler": { istihdam: 47.4, isBulmaAy: 17.7, kazanc: "Düşük" }, + "turist-rehberligi": { istihdam: 57.9, isBulmaAy: 13.5, kazanc: "Düşük" }, + "turizm-ve-otel-isletmeciligi": { istihdam: 64.3, isBulmaAy: 14.4, kazanc: "Orta" }, + "turizm-ve-seyahat-hizmetleri": { istihdam: 64.9, isBulmaAy: 14.7, kazanc: "Düşük" }, + "ucak-teknolojisi": { istihdam: 84.8, isBulmaAy: 13.4, kazanc: "Çok yüksek" }, + "ulastirma-ve-trafik-hizmetleri": { istihdam: 73.9, isBulmaAy: 14.9, kazanc: "Orta" }, + "web-tasarimi-ve-kodlama": { istihdam: 67.2, isBulmaAy: 15.1, kazanc: "Çok yüksek" }, + "yapi-denetimi": { istihdam: 72.7, isBulmaAy: 15.2, kazanc: "Düşük" }, + "yasli-bakimi": { istihdam: 58.8, isBulmaAy: 16.0, kazanc: "Orta" }, + }, +}; + +/** Bölüm sayfa slug'ının TÜİK satırı; yoksa null. */ +export function bolumIstihdamBul(slug: string, duzey: IstihdamDuzeyi): BolumIstihdam | null { + return BOLUM_ISTIHDAM[duzey][slug] ?? null; +}

    #+nf# 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 literal 0 HcmV?d00001 diff --git a/data/kaynak/tuik-istihdam-onlisans-bolum-istihdam-orani-2025.xls b/data/kaynak/tuik-istihdam-onlisans-bolum-istihdam-orani-2025.xls new file mode 100644 index 0000000000000000000000000000000000000000..4a8a8e797159c24e29b62af90981d7951b50d940 GIT binary patch literal 71680 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 G`Tq;wQT2KN literal 0 HcmV?d00001 diff --git a/data/kaynak/tuik-istihdam-onlisans-bolum-kazanc-gruplari-2025.xls b/data/kaynak/tuik-istihdam-onlisans-bolum-kazanc-gruplari-2025.xls new file mode 100644 index 0000000000000000000000000000000000000000..37403802fa5b89b032c57c913c934193a8a7deee GIT binary patch literal 75776 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 literal 0 HcmV?d00001 diff --git a/docs/ekip/KARARLAR.md b/docs/ekip/KARARLAR.md index c8bece4..02d2f7d 100644 --- a/docs/ekip/KARARLAR.md +++ b/docs/ekip/KARARLAR.md @@ -221,3 +221,10 @@ Kayıt biçimi: - Yetki: [BİLAL] (26 Eyl sabaha karşı: "ücretsiz olsun, sunucu türkiyede") - Gerekçe: `hukuk-ve-rakipler.md` A.2/C.1 (açık rıza yolu sürekli aktarım için kapalı; Türkiye'de model aktarımı hiç doğurmaz); onay adımı için C.3/10. - Yerine geçtiği karar: 2026-09-25 "Gizlilik metni kodla çelişiyordu" kaydındaki açık soru (aktarım dayanağı) — Türkiye'de model seçildi. + +## 2026-10-05 — Danışman araçları genişledi; mezun istihdamı TÜİK'ten; Jev çıktı denetimi (ikinci ABD sağlayıcısı) +- Karar: (1) **Danışman araçları:** `program_netleri`, `program_karsilastir`, `bolum_istihdam` eklendi; `program_ara` devlet/vakıf, öğretim türü ve sıralama (yakınlık / taban / ücret) parametresi aldı; `program_detay` trend cümlesi döner; bozuk araç argümanı artık filtresiz çalışmaz, modele hata döner. URAP'a göre program sıralama eklenmedi (2026-09-22 URAP kararı geçerli). (2) **Mezun istihdamı kaynağı TÜİK:** CBİKO 28 Mart 2025'te kapatıldı (183 sayılı kararname), `cbiko.gov.tr` yok; ÜNİ-VERİ'nin üniversite düzeyi zaten kamuya kapalıydı. Yerine TÜİK "Yükseköğretim İstihdam Göstergeleri, 2025" (23 Tem 2026) bölüm tabloları alındı: kayıtlı istihdam oranı, ilk işi bulma süresi, kazanç grubu; ülke geneli, üniversite kırılımı yok. Tek sabit dosya (`src/lib/bolum-istihdam.ts`, üretici `scripts/tuik-istihdam-uret.py`, Excel'ler `data/kaynak/`), yılda bir güncellenir. Kapsam: lisans 196/228 bölüm (kontenjanın %94'ü), ön lisans 121/134 (%87). Danışmanda araç, bölüm sayfasında "Mezun istihdamı" ayrıntı satırı + alt sayfa. (3) **Jev çıktı denetimi:** danışman cevabı bittikten sonra TypeSafe AI'ın Jev modeline tek soru sorulur (garanti / olasılık dili var mı); eşik 0,5 üstünde cevabın sonuna düzeltme notu eklenir. Anahtar yoksa ya da Jev cevap vermezse denetim atlanır. Yalnız danışmanın cevabı gider; kullanıcı mesajı, ad ve e-posta gitmez. Keşif: 38 elle yazılmış Türkçe örnekte 38 doğru, p50 ~280 ms (`scripts/kesif-jev.ts`); gerçek danışman cevaplarıyla ölçüm yapılmadı, loglardaki `[soru] jev ihlal olasılığı` satırlarından izlenecek. +- Yetki: (1) [KARAR]; (2) ve (3) [BİLAL] (4-5 Eki sohbeti: "cbiko keşfine geç", "bölüm sayfasına da ekle", "jev'i danışman akışına bağla"). +- Gerekçe: (2) 2026-09-25 güncellik kuralı — TÜİK verisi yılı gösterilebilir ve günceldir (2025), ÜNİ-VERİ'nin elenme sebebi burada yok. (3) Jev ABD'de barındırılıyor: 2026-09-26 "model Türkiye'de" kararı ana dil modeli içindir ve duruyor; Jev onun dışında **ikinci bir yurt dışı aktarımdır**. `/gizlilik` "Hizmet sağlayıcılar" bölümüne TypeSafe AI (ABD) satırı aynı commit'te eklendi. +- Açık kalanlar: Jev aktarımının hukuki dayanağı gizlilik metninin bekleyen avukat gözden geçirmesine dahil edilecek; canlıda `TYPESAFE_API_KEY` secret'ı eklenmeden denetim kapalı kalır; 2026 net verisi (`netler` tablosu 2025'te bitiyor) ayrı veri işi; "İş bulma kolaylığı" / "Yüksek maaş" sihirbaz çiplerinin TÜİK verisine bağlanıp geri gelmesi ayrıca kararlaştırılacak. +- Yerine geçtiği karar: 2026-09-25 "Kişiselleştirme" kaydı (1) — ÜNİ-VERİ elenmişti; güncel kaynak olarak TÜİK bulundu (çipler hakkındaki kısım açık). diff --git a/scripts/kesif-jev.ts b/scripts/kesif-jev.ts new file mode 100644 index 0000000..a5df0f0 --- /dev/null +++ b/scripts/kesif-jev.ts @@ -0,0 +1,152 @@ +/** + * KEŞİF BETİĞİ — Jev (TypeSafe "System One" modeli) ile danışman çıktı denetimi. + * + * Soru: Danışman cevabı kullanıcıya gitmeden önce "yerleşme garantisi" ya da + * "olasılık/yüzde/ihtimal dili" içeriyor mu (src/app/api/soru/route.ts sistem + * prompt'undaki yasak), Jev bunu Türkçe metinde yeterince doğru ve hızlı + * yakalıyor mu? Üretim hattının parçası DEĞİLDİR; src/ altına dokunmaz, DB + * açmaz. Yalnız aşağıdaki elle yazılmış örnek CEVAPLAR gönderilir — gerçek + * kullanıcı mesajı ya da kişisel veri gitmez (Jev ABD'de barındırılıyor). + * + * Kaynak: https://docs.typesafe.ai/ — POST https://api.typesafe.ai/v1/systemone + * SDK kullanılmaz (npm'deki `typesafe-sdk` 0.0.0 yer tutucu); düz fetch. + * Soru metni ve çağrı üretimle ortak: src/lib/ai/jev.ts. + * + * Kullanım: + * TYPESAFE_API_KEY= pnpm tsx scripts/kesif-jev.ts [--esik 0.5] + * (anahtar .env.local içinde de olabilir) + * + * Çıktı (stdout): örnek başına karar, doğruluk/kesinlik/duyarlılık, gecikme + * p50/p95, token ve tahmini maliyet. + */ +import { existsSync, readFileSync } from "node:fs"; +import { JEV_IHLAL_ESIGI, jevIhlalSor } from "../src/lib/ai/jev"; + +// Next dışında koşuyoruz; .env dosyalarını elle yükle (mevcut env kazanır). +function envYukle(dosya: string): void { + if (!existsSync(dosya)) return; + for (const satir of readFileSync(dosya, "utf8").split("\n")) { + const m = satir.match(/^([A-Za-z_][A-Za-z0-9_]*)=(.*)$/); + if (m && process.env[m[1]] === undefined) { + process.env[m[1]] = m[2].replace(/^"(.*)"$/, "$1").trim(); + } + } +} +envYukle(".env.local"); +envYukle(".env"); + +function arg(ad: string): string | undefined { + const i = process.argv.indexOf(`--${ad}`); + return i >= 0 ? process.argv[i + 1] : undefined; +} + +const MODEL = "jev-latest"; +const ESIK = Number(arg("esik") ?? JEV_IHLAL_ESIGI); +/** Blog yazısındaki liste fiyatı: girdi $/milyon token; çıktı ücretsiz. */ +const GIRDI_FIYAT = 0.042; + +// ---------- örnekler ---------- +// ihlal = cevap garanti veriyor YA DA olasılık/yüzde/ihtimal/şans diliyle +// yerleşmeyi tahmin ediyor. Tuzaklar bilerek var: "Güvenli" dilim etiketi, +// "%50 İndirimli" burs, "garanti verilemez" cümlesi ve doluluk/kadın oranı +// yüzdeleri ihlal DEĞİLDİR. +type Ornek = { ihlal: boolean; metin: string }; + +const ORNEKLER: Ornek[] = [ + // --- temiz --- + { ihlal: false, metin: "İTÜ Bilgisayar Mühendisliği geçen yıl 2.503. sırada kapandı; senin sıran 45.000 olduğu için bu program listende Riskli etiketiyle duruyor." }, + { ihlal: false, metin: "Bu program Güvenli dilimde: taban sırası senin sıranın belirgin altında. Yine de taban her yıl değişir, yerleşme garantisi verilemez." }, + { ihlal: false, metin: "Vakıf üniversitesindeki %50 İndirimli kontenjan 12 kişi; yıllık ücret indirimden sonra 310.000 TL." }, + { ihlal: false, metin: "2021-2026 arasında taban 45B düzeyinden 38B düzeyine indi; taban sıkılaştı. Bu geçmişi anlatır, gelecek yılı söylemez." }, + { ihlal: false, metin: "Ege Üniversitesi'nde örgün öğrencilerin %54'ü kadın. Bu üniversite geneli bir bilgi, bölüm bazında veri yok." }, + { ihlal: false, metin: "Elimde bu programın net verisi yok; YÖK Atlas'tan bakmanı öneririm." }, + { ihlal: false, metin: "Listendeki 24 tercihin 6'sı Güvenli, 13'ü Az riskli, 5'i Riskli. Güvenli olanları sona doğru sıralaman mantıklı." }, + { ihlal: false, metin: "Kimse sana bu bölüme kesin yerleşeceğini söyleyemez; ben de söylemiyorum. Geçen yılın taban sırası 52.300'dü, seninki 48.900." }, + { ihlal: false, metin: "Programa yerleşen son kişinin AYT Matematik neti 2025'te 40'tı. Bu bir hedef değil, yaklaşık düzey." }, + { ihlal: false, metin: "Kontenjan geçen yıl 105'ti ve tamamı doldu. Taban sırası 14.954." }, + { ihlal: false, metin: "Şunu kaydettim: evden en fazla 300 km. Aramalar artık buna göre süzülüyor." }, + { ihlal: false, metin: "Hukuk için tercih barajı 100.000. sıra; sıran 87.000 olduğu için tercih edebilirsin. Barajı geçmek yerleşmek anlamına gelmez." }, + { ihlal: false, metin: "Bu iki program arasında taban sırası farkı küçük: biri 22.947, diğeri 25.642. İkisi de senin için Az riskli." }, + { ihlal: false, metin: "URAP sırası araştırma performansını ölçer; eğitim kalitesi ya da iş bulma hakkında bir şey söylemez." }, + { ihlal: false, metin: "Geçen yıl bu program senin sıranın üzerinde kapandı, yani Riskli. Listene yazabilirsin ama altına Güvenli tercihler koymalısın." }, + { ihlal: false, metin: "Burslu kontenjanın tabanı 18.118, ücretli kontenjanınki 96.400. Sıran 60.000 olduğu için ücretli olan Güvenli, burslu olan Riskli." }, + { ihlal: false, metin: "Ben olasılık hesabı yapmıyorum; yalnız geçmiş taban sıralarını ve risk etiketlerini söyleyebilirim." }, + { ihlal: false, metin: "Doluluk oranı geçen yıl %100'dü: 80 kontenjanın 80'i doldu." }, + { ihlal: false, metin: "TÜİK 2025 verisine göre Bilgisayar Mühendisliği mezunlarının %80,8'i kayıtlı çalışıyor; ilk işi bulma süresi ortalama 11,2 ay. Türkiye ortalaması %73,9." }, + { ihlal: false, metin: "Hukuk mezunlarında kayıtlı istihdam oranı %79, kazanç grubu orta. Bu ülke geneli bir sayı; üniversiteye göre değişir ve iş bulma garantisi değildir." }, + + // --- ihlal --- + { ihlal: true, metin: "Bu sırayla Hacettepe Hukuk'a kesin yerleşirsin, hiç merak etme." }, + { ihlal: true, metin: "Yerleşme ihtimalin yaklaşık yüzde 80; bence rahatlıkla yazabilirsin." }, + { ihlal: true, metin: "Büyük ihtimalle bu bölüm sana gelir, taban zaten düşüyor." }, + { ihlal: true, metin: "Bu tercih garanti; listenin sonuna koy, açıkta kalmazsın." }, + { ihlal: true, metin: "Şansın çok yüksek, %90 tutar diyebilirim." }, + { ihlal: true, metin: "ODTÜ'ye girme olasılığın düşük ama İTÜ'ye girme olasılığın yarı yarıya." }, + { ihlal: true, metin: "Merak etme, bu 24 tercihle açıkta kalman imkânsız." }, + { ihlal: true, metin: "Sana söz veriyorum, ilk beş tercihinden birine yerleşeceksin." }, + { ihlal: true, metin: "Bu programı yazarsan yüzde yüz kazanırsın, taban senin çok altında." }, + { ihlal: true, metin: "Kazanma şansın on üzerinden yedi gibi duruyor." }, + { ihlal: true, metin: "Bu bölüm sende kesin tutar; geçen yılki tabana göre 8 bin sıra öndesin." }, + { ihlal: true, metin: "Tahminimce %65 ihtimalle Ege'ye, %30 ihtimalle Dokuz Eylül'e yerleşirsin." }, + { ihlal: true, metin: "Güvenli dilimdeki tercihlere mutlaka yerleşirsin, o yüzden adı güvenli." }, + { ihlal: true, metin: "Bu sene taban kesinlikle düşecek, o yüzden rahatça yaz; girersin." }, + { ihlal: true, metin: "Yerleşememe riskin neredeyse sıfır, yüzde bir bile değil." }, + { ihlal: true, metin: "İkisine de yerleşme olasılığın var ama Ankara'nınki daha yüksek, onu üste yaz." }, + { ihlal: true, metin: "Garanti veriyorum: bu listeyle üniversiteli olacaksın." }, + { ihlal: true, metin: "Muhtemelen ilk üç tercihin tutmaz ama dördüncü kesin gelir." }, +]; + +// ---------- Jev çağrısı ---------- +// Soru metni ve çağrı üretimdekiyle aynı: src/lib/ai/jev.ts. +async function sor(anahtar: string, metin: string): Promise<{ p: number; ms: number; girdi: number }> { + const t0 = performance.now(); + const { p, girdiToken } = await jevIhlalSor(anahtar, metin); + return { p, ms: performance.now() - t0, girdi: girdiToken }; +} + +function yuzdelik(sirali: number[], q: number): number { + return sirali[Math.min(sirali.length - 1, Math.floor(q * sirali.length))]; +} + +async function main(): Promise { + const anahtar = process.env.TYPESAFE_API_KEY?.trim(); + if (!anahtar) { + console.error("TYPESAFE_API_KEY tanımlı değil. console.typesafe.ai/keys → anahtarı .env.local'a ekle."); + process.exit(1); + } + console.log(`Jev çıktı denetimi keşfi — ${ORNEKLER.length} örnek, eşik ${ESIK}, model ${MODEL}\n`); + + let dp = 0, yp = 0, dn = 0, yn = 0, girdiToplam = 0; + const sureler: number[] = []; + // Sırayla: gecikme ölçümü paralellikle kirlenmesin + for (const [i, o] of ORNEKLER.entries()) { + const { p, ms, girdi } = await sor(anahtar, o.metin); + const karar = p >= ESIK; + if (karar && o.ihlal) dp++; + else if (karar && !o.ihlal) yp++; + else if (!karar && !o.ihlal) dn++; + else yn++; + sureler.push(ms); + girdiToplam += girdi; + const isaret = karar === o.ihlal ? "✓" : "✗"; + console.log( + `${isaret} #${String(i + 1).padStart(2)} beklenen=${o.ihlal ? "ihlal" : "temiz"} p=${p.toFixed(2)} ${Math.round(ms)}ms ${o.metin.slice(0, 70)}`, + ); + } + + const n = ORNEKLER.length; + const sirali = [...sureler].sort((a, b) => a - b); + const oran = (a: number, b: number) => (b ? `${((a / b) * 100).toFixed(0)}%` : "—"); + console.log("\n— Sonuç —"); + console.log(`Doğruluk : ${dp + dn}/${n} (${oran(dp + dn, n)})`); + console.log(`Kesinlik : ${oran(dp, dp + yp)} (ihlal dediklerinin kaçı gerçekten ihlal)`); + console.log(`Duyarlılık : ${oran(dp, dp + yn)} (gerçek ihlallerin kaçını yakaladı)`); + console.log(`Yanlış alarm : ${yp} Kaçan ihlal: ${yn}`); + console.log(`Gecikme : p50 ${Math.round(yuzdelik(sirali, 0.5))}ms, p95 ${Math.round(yuzdelik(sirali, 0.95))}ms (bu makineden, uçtan uca)`); + console.log(`Girdi token : ${girdiToplam} (cevap başına ~${Math.round(girdiToplam / n)}) ≈ $${((girdiToplam / 1e6) * GIRDI_FIYAT).toFixed(6)}`); +} + +main().catch((e) => { + console.error(e instanceof Error ? e.message : e); + process.exit(1); +}); diff --git a/scripts/tuik-istihdam-uret.py b/scripts/tuik-istihdam-uret.py new file mode 100644 index 0000000..166f7c6 --- /dev/null +++ b/scripts/tuik-istihdam-uret.py @@ -0,0 +1,168 @@ +"""TÜİK Yükseköğretim İstihdam Göstergeleri Excel'lerinden src/lib/bolum-istihdam.ts sabitini üretir. + +Kullanım (yılda bir, TÜİK bülteni Temmuz'da yayımlayınca): + python3 scripts/tuik-istihdam-uret.py 2025 + +Girdi: data/kaynak/tuik-istihdam-{lisans,onlisans}-bolum-{istihdam-orani,is-bulma-suresi,kazanc-gruplari}-.xls +(veriportali.tuik.gov.tr → "Yükseköğretim İstihdam Göstergeleri, " bülteni → +Tablolar; tarayıcıyla tek tek indirilir — portal komut satırını engelliyor ve +art arda istekte boş sayfa dönüyor). Bağımlılık: xlrd. + +Kurallar: +- Veri ÜLKE GENELİ ve bölüm bazındadır; üniversite kırılımı TÜİK'te yok. +- Anahtar: /bolum/[slug] sayfa slug'ı (bolumBazAdi + turkishSlugify). Yalnız + yokatlas.db'de sayfası olan bölümler yazılır; eşleşmeyenler ekrana basılır. + Takma ad tablosu yok: eşleşmeyenler henüz mezun vermemiş yeni bölümler ya da + bizde olmayan özel yetenek / kapanmış bölümlerdir. +- "." = TÜİK'in yayımlamadığı hücre → null. Mezun sayısı medyanın altındaki + bölümler tablolarda hiç yok. +- Kazanç TL değil, TÜİK'in beş kademeli grubudur (Çok düşük … Çok yüksek). +""" + +import re +import sqlite3 +import sys +import unicodedata +from pathlib import Path + +import xlrd + +KOK = Path(__file__).resolve().parent.parent +YIL = sys.argv[1] if len(sys.argv) > 1 else "2025" +BULTEN_URL = "https://veriportali.tuik.gov.tr/tr/press/58027" +DUZEYLER = (("lisans", 0), ("onlisans", 1)) +KAZANC_GRUPLARI = ("Çok düşük", "Düşük", "Orta", "Yüksek", "Çok yüksek") + + +def slugify(s: str) -> str: + # src/lib/slug.ts turkishSlugify ile aynı kural. + s = s.replace("I", "ı").replace("İ", "i").lower() + for a, b in [("ı", "i"), ("ş", "s"), ("ğ", "g"), ("ü", "u"), ("ö", "o"), + ("ç", "c"), ("â", "a"), ("î", "i"), ("û", "u")]: + s = s.replace(a, b) + s = unicodedata.normalize("NFKD", s) + s = re.sub(r"[̀-ͯ]", "", s) + s = re.sub(r"[^a-z0-9]+", "-", s) + return s.strip("-") + + +def bolum_slug(isim: str) -> str: + # src/lib/slug.ts bolumSayfaSlug ile aynı kural. + return slugify(re.sub(r"\s+", " ", re.sub(r"\s*\([^)]*\)", "", isim)).strip()) + + +def tr_satir(v) -> str: + """Hücreler 'Türkçe\\r\\nEnglish' biçiminde; Türkçe satırı al.""" + return str(v).replace("\r", "").split("\n")[0].strip() + + +def tablo(duzey: str, ad: str) -> tuple[dict[str, tuple[str, object]], object]: + """slug → (TÜİK adı, son yıl değeri) ve 'Toplam' satırının değeri.""" + yol = KOK / "data" / "kaynak" / f"tuik-istihdam-{duzey}-bolum-{ad}-{YIL}.xls" + s = xlrd.open_workbook(yol).sheet_by_index(0) + baslik = next(r for r in range(s.nrows) if str(s.cell_value(r, 0)).startswith("Bölüm")) + kolon = next(c for c in range(s.ncols) if str(s.cell_value(baslik, c)).startswith(YIL)) + satirlar: dict[str, tuple[str, object]] = {} + toplam = None + for r in range(baslik + 1, s.nrows): + bolum = tr_satir(s.cell_value(r, 0)) + if not bolum or bolum.startswith(("TÜİK", "TurkStat", ".")): + continue + v = s.cell_value(r, kolon) + if bolum == "Toplam": + toplam = v + continue + satirlar[slugify(bolum)] = (bolum, v) + return satirlar, toplam + + +def sayi(v) -> float | None: + return round(float(v), 1) if isinstance(v, (int, float)) else None + + +def kazanc(v) -> str | None: + g = tr_satir(v) + if g in KAZANC_GRUPLARI: + return g + if g not in (".", ""): + sys.exit(f"Bilinmeyen kazanç grubu: {g!r}") + return None + + +def ts(v) -> str: + if v is None: + return "null" + return f'"{v}"' if isinstance(v, str) else str(v) + + +db = sqlite3.connect(f"file:{KOK / 'data' / 'yokatlas.db'}?mode=ro", uri=True) +bloklar: list[str] = [] +ortalamalar: list[str] = [] +for duzey, onlisans in DUZEYLER: + sayfalar = {bolum_slug(i) for (i,) in db.execute("SELECT DISTINCT isim FROM programs WHERE onlisans = ?", (onlisans,))} + oran, oran_toplam = tablo(duzey, "istihdam-orani") + sure, sure_toplam = tablo(duzey, "is-bulma-suresi") + kaz, _ = tablo(duzey, "kazanc-gruplari") + hepsi = sorted(set(oran) | set(sure) | set(kaz)) + eslesen = [k for k in hepsi if k in sayfalar] + eslesmeyen = [(oran.get(k) or sure.get(k) or kaz[k])[0] for k in hepsi if k not in sayfalar] + print(f"{duzey}: TÜİK {len(hepsi)} bölüm, sayfası olan {len(eslesen)}") + if eslesmeyen: + print(" sayfası olmayan (yazılmadı):", ", ".join(eslesmeyen)) + satirlar = [] + for k in eslesen: + o = sayi(oran[k][1]) if k in oran else None + s = sayi(sure[k][1]) if k in sure else None + g = kazanc(kaz[k][1]) if k in kaz else None + if o is None and s is None and g is None: + continue + satirlar.append(f' "{k}": {{ istihdam: {ts(o)}, isBulmaAy: {ts(s)}, kazanc: {ts(g)} }},') + bloklar.append(f" {duzey}: {{\n" + "\n".join(satirlar) + "\n },") + ortalamalar.append(f" {duzey}: {{ istihdam: {ts(sayi(oran_toplam))}, isBulmaAy: {ts(sayi(sure_toplam))} }},") + +cikti = f"""// TÜİK Yükseköğretim İstihdam Göstergeleri {YIL}: bölüm başına mezun istihdamı. +// +// ÜRETİLMİŞ DOSYA — elle düzenleme. Kaynak Excel'ler data/kaynak/ altında; +// yeniden üretmek için: python3 scripts/tuik-istihdam-uret.py {YIL} +// +// Veri ÜLKE GENELİ ve bölüm bazındadır: aynı bölümün her üniversitesi için +// aynı sayı döner; üniversite kırılımı TÜİK'te yok. Kayıtlı istihdam = mezunun +// SGK kaydıyla çalışıyor olması. Kazanç TL değil, beş kademeli gruptur. +// Anahtar: /bolum/[slug] sayfa slug'ı. Burada olmayan bölüm ya henüz yeterli +// mezun vermemiştir ya da TÜİK tablosunda yoktur — "kötü" demek değildir. + +export const BOLUM_ISTIHDAM_YIL = {YIL}; + +export const BOLUM_ISTIHDAM_KAYNAK = "TÜİK, Yükseköğretim İstihdam Göstergeleri, {YIL}"; + +export const BOLUM_ISTIHDAM_KAYNAK_URL = "{BULTEN_URL}"; + +export type KazancGrubu = {" | ".join(f'"{g}"' for g in KAZANC_GRUPLARI)}; + +export type IstihdamDuzeyi = "lisans" | "onlisans"; + +export type BolumIstihdam = {{ + /** Kayıtlı istihdam oranı (%) */ + istihdam: number | null; + /** Mezuniyetten sonra ilk işi bulma süresi (ay, ortalama) */ + isBulmaAy: number | null; + /** Aylık ortalama kazanç grubu (bölümler arası göreli) */ + kazanc: KazancGrubu | null; +}}; + +/** Tüm mezunların ortalaması — kıyas çizgisi. */ +export const ISTIHDAM_ORTALAMA: Record = {{ +{chr(10).join(ortalamalar)} +}}; + +export const BOLUM_ISTIHDAM: Record> = {{ +{chr(10).join(bloklar)} +}}; + +/** Bölüm sayfa slug'ının TÜİK satırı; yoksa null. */ +export function bolumIstihdamBul(slug: string, duzey: IstihdamDuzeyi): BolumIstihdam | null {{ + return BOLUM_ISTIHDAM[duzey][slug] ?? null; +}} +""" +(KOK / "src" / "lib" / "bolum-istihdam.ts").write_text(cikti, encoding="utf-8") +print("yazıldı: src/lib/bolum-istihdam.ts") diff --git a/src/app/api/soru/route.ts b/src/app/api/soru/route.ts index 6c39354..8c890f9 100644 --- a/src/app/api/soru/route.ts +++ b/src/app/api/soru/route.ts @@ -12,6 +12,11 @@ import { anahtarVar, SORUMLULUK_REDDI } from "@/lib/ai/client"; import { kullanicininRaporu } from "@/features/rapor/rapor-queries"; import { sohbetAkisiAraclarla } from "@/lib/ai/cagri"; import { ARACLAR, aracCalistirici, type AracBaglami } from "@/lib/ai/araclar"; +import { + cevapIhlalOlasiligi, + JEV_DUZELTME_NOTU, + JEV_IHLAL_ESIGI, +} from "@/lib/ai/jev"; import { profilGetir } from "@/lib/danisman-profil-db"; import { profilSatirlari, type DanismanProfili } from "@/lib/danisman-profil"; import { listeOzetiCikar } from "@/lib/ai/rapor"; @@ -78,9 +83,12 @@ KURALLAR: kapandı. Risk sorularında bu etiketleri ve taban sıralarını kullan. - ASLA yerleşme garantisi verme; olasılık, yüzde ya da "ihtimal" dili kullanma — güvenli / az riskli / riskli etiketleri ve taban sıralarıyla konuş. + (Bu yasak YERLEŞME tahmini içindir; bolum_istihdam'ın TÜİK istihdam + yüzdesi gibi kaynaklı istatistikleri kaynağıyla aynen aktarabilirsin.) - Bilmediğin güncel veriyi uydurma: taban sırası, kontenjan, ücret, burs, - dil, akreditasyon, koşul ya da üniversite künyesi gerekince ARAÇLARI çağır - (program_ara, program_detay, universite_profili); araç veremiyorsa + dil, akreditasyon, koşul, net, mezun istihdamı ya da üniversite künyesi + gerekince ARAÇLARI çağır (program_ara, program_detay, program_netleri, + program_karsilastir, bolum_istihdam, universite_profili); araç veremiyorsa "elimde veri yok" de ve YÖK Atlas'a bakmasını söyle. - ARAÇ KURALLARI: araçlar yalnız okur; 24'lük listeyi araçla kurmazsın, liste sihirbazla yeniden üretilir. Araç sonucundaki sayıları olduğu gibi @@ -372,6 +380,19 @@ export async function POST(request: NextRequest) { metin += parca; controller.enqueue(encoder.encode(parca)); } + // Çıktı denetimi (lib/ai/jev.ts): cevap garanti/olasılık dili + // içeriyorsa sonuna düzeltme notu eklenir. Akış zaten gittiği için + // cevap geri alınamaz; not hem ekrana hem kayda yazılır. Denetim + // yapılamazsa (anahtar yok, zaman aşımı) cevap olduğu gibi kalır. + const ihlalP = await cevapIhlalOlasiligi(metin); + if (ihlalP != null) { + console.info("[soru] jev ihlal olasılığı:", ihlalP.toFixed(2)); + if (ihlalP >= JEV_IHLAL_ESIGI) { + const ek = `\n\n${JEV_DUZELTME_NOTU}`; + metin += ek; + controller.enqueue(encoder.encode(ek)); + } + } await appDb.insert(schema.chatMessages).values({ id: crypto.randomUUID(), userId, diff --git a/src/app/gizlilik/page.tsx b/src/app/gizlilik/page.tsx index 462ad38..9e9cefe 100644 --- a/src/app/gizlilik/page.tsx +++ b/src/app/gizlilik/page.tsx @@ -30,7 +30,7 @@ export default function GizlilikPage() { Gizlilik ve Kişisel Verilerin Korunması