refactor: ortak tipler @/types/yokatlas + features/rapor/types'a çıkarıldı, server-only korumaları eklendi (Faz 1)

- 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>
This commit is contained in:
bilalgursen
2026-08-08 01:06:06 +03:00
parent 7518baccfa
commit 820eea7eca
62 changed files with 1318 additions and 215 deletions

View File

@@ -1,11 +1,10 @@
import { NextResponse, type NextRequest } from "next/server";
import { dilimAra, rankWindowFacets } from "@/lib/db";
import {
PUAN_TURLERI,
dilimAra,
rankWindowFacets,
type DilimKey,
type PuanTuruKey,
} from "@/lib/db";
} from "@/types/yokatlas";
import { KATEGORILER } from "@/lib/kategoriler";
// Sihirbaz modalı için: sıralamaya uygun kategori/il/üniversite tipi

View File

@@ -1,10 +1,10 @@
import { NextResponse, type NextRequest } from "next/server";
import { dilimAra } from "@/lib/db";
import {
PUAN_TURLERI,
dilimAra,
type DilimKey,
type PuanTuruKey,
} from "@/lib/db";
} from "@/types/yokatlas";
const SAYFA_BOYU = 20;

View File

@@ -10,10 +10,11 @@ import {
import { anahtarVar, SORUMLULUK_REDDI } from "@/lib/ai/client";
import { kullanicininRaporu } from "@/lib/rapor-kaydi";
import { sohbetAkisi } from "@/lib/ai/cagri";
import { listeOzetiCikar, type RaporSonuc } from "@/lib/ai/rapor";
import type { RaporParams } from "@/lib/rapor-havuzu";
import { listeOzetiCikar } from "@/lib/ai/rapor";
import type { RaporSonuc } from "@/features/rapor/types/rapor";
import type { RaporParams } from "@/features/rapor/types/rapor";
import { secimOzeti } from "@/lib/sihirbaz";
import { PUAN_TURLERI } from "@/lib/db";
import { PUAN_TURLERI } from "@/types/yokatlas";
import { ACIK_SATIR } from "@/lib/rapor-maske";
const MAX_GECMIS = 12;

View File

@@ -3,7 +3,7 @@
// batch üretilmiştir — bu uç LLM'e istek atmaz, salt SELECT'tir.
import { NextResponse } from "next/server";
import { PUAN_TURLERI, type PuanTuruKey } from "@/lib/db";
import { PUAN_TURLERI, type PuanTuruKey } from "@/types/yokatlas";
import { KATEGORILER } from "@/lib/kategoriler";
import { kategoriSlugBul, tadimlikSec } from "@/lib/tadimlik-havuzu";

View File

@@ -20,7 +20,7 @@ import { RaporListesi } from "@/components/rapor-listesi";
import { useGorunumOlayi } from "@/components/use-gorunum-olayi";
import { TercihHaritasi } from "@/components/tercih-haritasi";
import { pinleriTuret } from "@/lib/harita-pinler";
import type { RaporSonuc } from "@/lib/ai/rapor";
import type { RaporSonuc } from "@/features/rapor/types/rapor";
import { SohbetClient, type DanismanOzeti, type Mesaj } from "./sohbet-client";
import { RevizyonKutusu } from "./revizyon-kutusu";

View File

@@ -6,11 +6,12 @@ import { verifySession, getCurrentUser } from "@/lib/session";
import { appDb, schema } from "@/lib/appdb";
import { kullanicininRaporu } from "@/lib/rapor-kaydi";
import { URUNLER, MAX_REVIZYON } from "@/lib/credits";
import type { RaporSonuc } from "@/lib/ai/rapor";
import type { RaporParams } from "@/lib/rapor-havuzu";
import type { RaporSonuc } from "@/features/rapor/types/rapor";
import type { RaporParams } from "@/features/rapor/types/rapor";
import { ViewportPortal } from "@/components/viewport-portal";
import { SiteFooter } from "@/components/site-footer";
import { raporMaskele, ACIK_SATIR, type MaskeliRapor } from "@/lib/rapor-maske";
import { raporMaskele, ACIK_SATIR } from "@/lib/rapor-maske";
import type { MaskeliRapor } from "@/features/rapor/types/rapor";
import type { Mesaj } from "./sohbet-client";
import { ListemGovde } from "./listem-govde";
import { ListemBosCta } from "./listem-bos-cta";

View File

@@ -18,7 +18,7 @@ import Link from "next/link";
import { ArrowRight } from "lucide-react";
import { useTercihProfili } from "@/components/manuel-liste/profil-kapisi-store";
import { PUAN_TURU_ETIKET, sonucHref } from "@/lib/sihirbaz";
import type { DilimKey, SihirbazFacetleri } from "@/lib/db";
import type { DilimKey, SihirbazFacetleri } from "@/types/yokatlas";
export type DemoVeri = {
facetler: SihirbazFacetleri;

View File

@@ -2,7 +2,8 @@ import type { Metadata } from "next";
import { Parallax } from "@/components/parallax";
import { PagePixelDivider, SectionEyebrow } from "@/components/pixel-decor";
import { SiteFooter } from "@/components/site-footer";
import { dilimAra, rankWindowFacets, type DilimKey } from "@/lib/db";
import { dilimAra, rankWindowFacets } from "@/lib/db";
import type { DilimKey } from "@/types/yokatlas";
import {
DemoKapanisCta,
DemoKumanda,

View File

@@ -3,9 +3,9 @@ import Image from "next/image";
import { redirect } from "next/navigation";
import { verifySession, getCurrentUser } from "@/lib/session";
import { kullanicininRaporu } from "@/lib/rapor-kaydi";
import { PUAN_TURLERI } from "@/lib/db";
import type { RaporSonuc } from "@/lib/ai/rapor";
import type { RaporParams } from "@/lib/rapor-havuzu";
import { PUAN_TURLERI } from "@/types/yokatlas";
import type { RaporSonuc } from "@/features/rapor/types/rapor";
import type { RaporParams } from "@/features/rapor/types/rapor";
import { YazdirButonu } from "./yazdir-butonu";
export const metadata: Metadata = {

View File

@@ -4,7 +4,7 @@ import { and, eq, sql } from "drizzle-orm";
import { getSession, getCurrentUser } from "@/lib/session";
import { appDb, schema } from "@/lib/appdb";
import { kullanicininRaporu } from "@/lib/rapor-kaydi";
import { PUAN_TURLERI, type PuanTuruKey } from "@/lib/db";
import { PUAN_TURLERI, type PuanTuruKey } from "@/types/yokatlas";
import {
spendCredits,
grantCredits,
@@ -16,9 +16,11 @@ import {
raporUret,
listeOzetiCikar,
RaporUretimHatasi,
type RaporSonuc,
} from "@/lib/ai/rapor";
import type { RaporParams } from "@/lib/rapor-havuzu";
import type {
RaporParams,
RaporSonuc,
} from "@/features/rapor/types/rapor";
import { sihirbazDogrula, type SihirbazSecimleri } from "@/lib/sihirbaz";
import { raporMaskele } from "@/lib/rapor-maske";

View File

@@ -1,10 +1,6 @@
import type { Metadata } from "next";
import {
PUAN_TURLERI,
rankWindowFacets,
searchByRank,
type PuanTuruKey,
} from "@/lib/db";
import { rankWindowFacets, searchByRank } from "@/lib/db";
import { PUAN_TURLERI, type PuanTuruKey } from "@/types/yokatlas";
import { getSession } from "@/lib/session";
import { kullanicininRaporu } from "@/lib/rapor-kaydi";
import { tadimlikSec } from "@/lib/tadimlik-havuzu";

View File

@@ -10,7 +10,7 @@ import { Button } from "@/components/ui/button";
import { PixelField } from "@/components/pixel-decor";
import { useGorunumOlayi } from "@/components/use-gorunum-olayi";
import { olay } from "@/lib/analitik";
import type { SihirbazFacetleri } from "@/lib/db";
import type { SihirbazFacetleri } from "@/types/yokatlas";
import {
SIHIRBAZ_AC_EVENT,
SIHIRBAZ_STORAGE_KEY,

View File

@@ -7,7 +7,7 @@ import {
DialogTitle,
} from "@/components/ui/dialog";
import { SihirbazAdimlarLazy } from "@/components/sihirbaz-adimlar-lazy";
import type { SihirbazFacetleri } from "@/lib/db";
import type { SihirbazFacetleri } from "@/types/yokatlas";
import type { SihirbazSecimleri } from "@/lib/sihirbaz";
/**

View File

@@ -13,7 +13,7 @@ import { UniversiteKonumHaritasi } from "@/components/universite-konum-haritasi"
import { UniversiteProgramTablosu } from "@/components/universite-program-tablosu";
import { UniLogo } from "@/components/uni-logo";
import { uniLogoYolu } from "@/lib/uni-logolar";
import type { Program } from "@/lib/db";
import type { Program } from "@/types/yokatlas";
const sayi = (n: number) => n.toLocaleString("tr-TR");