- Program/PUAN_TURLERI/DilimKey/RankResults/UniturGrubu/ProgramNetSatiri/ SihirbazFacetleri artık src/types/yokatlas.ts'te; lib/db.ts yalnızca sorgu fonksiyonları barındırıyor - RaporSonuc/RaporKapsam/RaporParams/MaskeliRapor src/features/rapor/types/ rapor.ts'e taşındı; ölü kalan TercihSchema/RaporSchema silindi - 11 lib dosyasına import "server-only" eklendi; scripts'in düz node ile import ettiği dosyalara (db, appdb, rapor-havuzu, tadimlik-havuzu, ai/client, ai/cagri, credits) bilinçli eklenmedi - Davranış değişikliği yok; pnpm build yeşil Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
35 lines
1.5 KiB
TypeScript
35 lines
1.5 KiB
TypeScript
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;
|
||
} |