import "server-only"; import { eq } from "drizzle-orm"; import { appDb, schema } from "@/lib/appdb"; import { anahtarVar } from "@/lib/ai/client"; import type { RaporSonuc } from "@/features/rapor/types/rapor"; // Kullanıcının kayıtlı raporunu okuyan TEK kapı. Rapor tablosunu okuyan her // yer (sayfalar, action'lar, soru API'si) buradan geçmeli; doğrudan // appDb.query.reports.findFirst kullanma. // // Neden: dev'de API anahtarı yokken üretilen mock rapor DB'ye kaydediliyor // (akışın tamamı anahtarsız test edilebilsin diye — bilinçli). Ama anahtar // sonradan eklenince kullanıcı başına tek rapor kuralı yüzünden o bayat mock, // gerçek Yapay Zeka çıktısıymış gibi servis edilmeye devam ediyordu. Gerçek AI // aktifken mock üretimi bir rapor "yok" sayılır; kullanıcı yeni (gerçek) // listeyi üretir ve kayıt üzerine yazılır. function bayatMockMu(sonuc: RaporSonuc): boolean { const mockUretimi = sonuc.devMock === true || // devMock alanı eklenmeden önce kaydedilmiş mock raporlar sonuc.genelDegerlendirme?.startsWith("(Dev mock"); if (!mockUretimi) return false; const mockHalaAktif = process.env.NODE_ENV !== "production" && !anahtarVar(); return !mockHalaAktif; } export async function kullanicininRaporu(userId: string) { const satir = await appDb.query.reports.findFirst({ where: eq(schema.reports.userId, userId), }); if (satir?.result && bayatMockMu(satir.result as RaporSonuc)) return null; return satir ?? null; }