v2 #10
@@ -41,6 +41,7 @@ import {
|
||||
SATIR_BUTON_HUCRE,
|
||||
SATIR_DUGME_BOYU,
|
||||
SATIR_ALT_GRUP,
|
||||
SATIR_CIP,
|
||||
SATIR_IKINCIL_LINK,
|
||||
SATIR_META,
|
||||
SATIR_MOBIL_SAYI,
|
||||
@@ -267,6 +268,10 @@ export function RaporListesi({
|
||||
unitur={p?.unitur}
|
||||
onClick={(e) => e.stopPropagation()}
|
||||
/>
|
||||
{/* Burs/dil/öğretim türü: aynı adlı satırları ayırt eder (§4.15 çip) */}
|
||||
{p?.varyant ? (
|
||||
<span className={SATIR_CIP}>{p.varyant}</span>
|
||||
) : null}
|
||||
{p?.il ? (
|
||||
<Link
|
||||
href={ilSayfaHref(p.il)}
|
||||
|
||||
@@ -2,6 +2,8 @@ import "server-only";
|
||||
import { desc, eq, sql } from "drizzle-orm";
|
||||
import { appDb, schema } from "@/lib/appdb";
|
||||
import { anahtarVar } from "@/lib/ai/client";
|
||||
import { programOzellikleriGetir } from "@/lib/program-ozellik";
|
||||
import { varyantEtiketi } from "@/lib/program-varyant";
|
||||
import type { RaporSonuc } from "./types/rapor";
|
||||
|
||||
// Rapor feature'ının sorgu kapısı: kayıtlı rapor, sohbet geçmişi ve girişsiz
|
||||
@@ -37,9 +39,23 @@ export async function kullanicininRaporu(userId: string) {
|
||||
where: eq(schema.reports.userId, userId),
|
||||
});
|
||||
if (satir?.result && bayatMockMu(satir.result as RaporSonuc)) return null;
|
||||
if (satir?.result) varyantlariEkle(satir.result as RaporSonuc);
|
||||
return satir ?? null;
|
||||
}
|
||||
|
||||
// Kayıtlı raporun program satırlarına burs/dil/öğretim türü etiketi (okuma
|
||||
// anında, tek sorgu): rapor JSON'u üretim anında bunu taşımıyor, eski
|
||||
// kayıtlar da bu yoldan kazanır. yokatlas.db salt okunur; app.db'ye yazılmaz.
|
||||
function varyantlariEkle(sonuc: RaporSonuc): void {
|
||||
const idler = Object.keys(sonuc.programlar ?? {});
|
||||
if (idler.length === 0) return;
|
||||
const ozellikler = programOzellikleriGetir(idler);
|
||||
for (const id of idler) {
|
||||
const o = ozellikler[id];
|
||||
sonuc.programlar[id].varyant = o ? varyantEtiketi(o) : null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Kullanıcının danışman sohbet geçmişi: en YENİ 100 mesaj, eskiden yeniye.
|
||||
* created_at saniye çözünürlüklü; aynı saniyedeki soru-cevap sırası rowid ile
|
||||
|
||||
@@ -58,6 +58,9 @@ export type RaporSonuc = {
|
||||
efektifSira?: number | null;
|
||||
siraGecmisi?: (number | null)[];
|
||||
ilkYil?: number;
|
||||
/** Burs/dil/öğretim türü etiketi; DB'ye yazılmaz, okuma anında
|
||||
* program_ozellik'ten eklenir (rapor-queries kullanicininRaporu) */
|
||||
varyant?: string | null;
|
||||
}
|
||||
>;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user