Danışman araçları, TÜİK mezun istihdamı ve Jev çıktı denetimi

- 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 <noreply@anthropic.com>
This commit is contained in:
bilalgursen
2026-10-05 00:15:05 +03:00
parent ab0b3a047f
commit 6564ec8948
19 changed files with 1189 additions and 25 deletions

View File

@@ -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,

View File

@@ -30,7 +30,7 @@ export default function GizlilikPage() {
Gizlilik ve Kişisel Verilerin Korunması
</h1>
<p className="mt-2 text-sm text-slate-500">
Son güncelleme: 25 Eylül 2026
Son güncelleme: 5 Ekim 2026
</p>
</Parallax>
@@ -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.
</li>
<li>
<strong>TypeSafe AI (ABD)</strong> — 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.
</li>
</ul>
<p className="mt-2">
KVKK açısından e-posta ve yapay zekâ sağlayıcısına yapılan iletim