Update terminology from "AI" to "Yapay Zeka" across multiple components for consistency and clarity. Adjusted button labels, error messages, and comments to reflect the new terminology, enhancing user understanding and maintaining uniformity throughout the application.
Some checks failed
Deploy / deploy (push) Has been cancelled
Some checks failed
Deploy / deploy (push) Has been cancelled
This commit is contained in:
@@ -229,7 +229,7 @@ export async function POST(request: NextRequest) {
|
||||
reason: "refund",
|
||||
refId: kullaniciMesajId,
|
||||
});
|
||||
console.error("[soru] AI istemcisi kurulamadı (anahtar eksik olabilir)");
|
||||
console.error("[soru] Yapay Zeka istemcisi kurulamadı (anahtar eksik olabilir)");
|
||||
return Response.json(
|
||||
{
|
||||
error:
|
||||
@@ -260,7 +260,7 @@ export async function POST(request: NextRequest) {
|
||||
});
|
||||
} catch {
|
||||
await grantCredits({ userId, delta: 1, reason: "refund", refId: kullaniciMesajId });
|
||||
return Response.json({ error: "AI'ya ulaşılamadı." }, { status: 502 });
|
||||
return Response.json({ error: "Yapay Zeka'ya ulaşılamadı." }, { status: 502 });
|
||||
}
|
||||
|
||||
const readable = new ReadableStream({
|
||||
|
||||
@@ -45,7 +45,7 @@ export default async function GirisPage({
|
||||
<>
|
||||
Kayıt olduğunda{" "}
|
||||
<span className="font-semibold">5 deneme kredisi</span>{" "}
|
||||
hesabına tanımlanır — AI danışmana ücretsiz soru sorabilirsin.
|
||||
hesabına tanımlanır — Yapay Zeka danışmana ücretsiz soru sorabilirsin.
|
||||
</>
|
||||
)}
|
||||
</p>
|
||||
|
||||
@@ -19,8 +19,8 @@ export function ListemBosCta() {
|
||||
<>
|
||||
<p className="mt-3 text-slate-600">
|
||||
{profil
|
||||
? "Sıralaman kayıtlı — birkaç adımda 24 tercihlik risk analizli listeni kur; sonra burada görüntüleyip AI danışmanla üzerinde konuşabilirsin."
|
||||
: "Sıralamanı girip birkaç adımda 24 tercihlik risk analizli listeni kur; sonra burada görüntüleyip AI danışmanla üzerinde konuşabilirsin."}
|
||||
? "Sıralaman kayıtlı — birkaç adımda 24 tercihlik risk analizli listeni kur; sonra burada görüntüleyip Yapay Zeka danışmanla üzerinde konuşabilirsin."
|
||||
: "Sıralamanı girip birkaç adımda 24 tercihlik risk analizli listeni kur; sonra burada görüntüleyip Yapay Zeka danışmanla üzerinde konuşabilirsin."}
|
||||
</p>
|
||||
<PagePixelDivider seed={67} className="mx-auto mt-6" />
|
||||
<Button
|
||||
@@ -29,7 +29,7 @@ export function ListemBosCta() {
|
||||
className="mt-6 h-12 cursor-pointer bg-orange-500 px-8 text-white hover:bg-orange-600"
|
||||
>
|
||||
<Link href={profil ? sonucHref(profil, { sihirbaz: "1" }) : "/"}>
|
||||
{profil ? "AI listeni kur" : "Sıralamanı gir, AI listeni kur"}
|
||||
{profil ? "Yapay Zeka listeni kur" : "Sıralamanı gir, Yapay Zeka listeni kur"}
|
||||
<ArrowRight className="size-4" aria-hidden />
|
||||
</Link>
|
||||
</Button>
|
||||
|
||||
@@ -74,7 +74,7 @@ export default async function ListemPage({
|
||||
<section className="mx-auto flex max-w-2xl flex-col items-center px-4 py-16 text-center">
|
||||
<Sparkles className="size-10 text-primary" aria-hidden />
|
||||
<h1 className="mt-4 font-heading text-2xl font-bold">
|
||||
Henüz AI listen yok
|
||||
Henüz Yapay Zeka listen yok
|
||||
</h1>
|
||||
<ListemBosCta />
|
||||
</section>
|
||||
@@ -118,8 +118,8 @@ export default async function ListemPage({
|
||||
) : null}
|
||||
<h1 className="max-w-2xl font-heading text-xl font-bold tracking-tight sm:text-2xl">
|
||||
{user.hasPaket
|
||||
? "AI tercih listen"
|
||||
: "Veriyi ücretsiz incele. Kararı AI ile netleştir."}
|
||||
? "Yapay Zeka tercih listen"
|
||||
: "Veriyi ücretsiz incele. Kararı Yapay Zeka ile netleştir."}
|
||||
</h1>
|
||||
{user.hasPaket ? (
|
||||
<p className="mt-2 max-w-2xl text-sm leading-6 text-slate-600">
|
||||
@@ -178,11 +178,11 @@ export default async function ListemPage({
|
||||
</span>
|
||||
<div>
|
||||
<p className="font-heading font-bold text-slate-900">
|
||||
İlk {ACIK_SATIR} tercihte AI analizini gördün
|
||||
İlk {ACIK_SATIR} tercihte Yapay Zeka analizini gördün
|
||||
</p>
|
||||
<p className="mt-1 max-w-xl text-sm text-slate-600">
|
||||
Kalan {24 - ACIK_SATIR} tercihin kişisel risk, gerekçe ve
|
||||
AI yorumu paketle açılır. Program adları ve taban
|
||||
Yapay Zeka yorumu paketle açılır. Program adları ve taban
|
||||
verileri her zaman ücretsiz.
|
||||
</p>
|
||||
</div>
|
||||
@@ -234,9 +234,9 @@ export default async function ListemPage({
|
||||
<ul className="flex flex-col gap-3 text-sm">
|
||||
{[
|
||||
"24 tercihin tamamında kişisel risk analizi",
|
||||
"Her program için kısa, gerekçeli AI yorumu",
|
||||
"Her program için kısa, gerekçeli Yapay Zeka yorumu",
|
||||
"2 liste revizyonu ve paylaşılabilir PDF",
|
||||
`${URUNLER.paket.credits} AI danışman sorusu`,
|
||||
`${URUNLER.paket.credits} Yapay Zeka danışman sorusu`,
|
||||
].map((ozellik) => (
|
||||
<li key={ozellik} className="flex items-start gap-2.5">
|
||||
<Check
|
||||
|
||||
@@ -140,7 +140,7 @@ export default function MeraklisinaPage() {
|
||||
4. Sihirbaz süzer, yapay zekâ kurar
|
||||
</h2>
|
||||
<p className="mt-2">
|
||||
“AI listemi kur” sihirbazındaki üç adım birbirinden
|
||||
“Yapay Zeka listemi kur” sihirbazındaki üç adım birbirinden
|
||||
bağımsız değildir. İlk adımda yalnızca{" "}
|
||||
<strong>sıralamanla ulaşabildiğin</strong>{" "}
|
||||
alanlar listelenir; ikinci adımdaki iller, seçtiğin alanlardaki
|
||||
|
||||
@@ -7,7 +7,7 @@ import { useTercihProfili } from "@/components/manuel-liste/profil-kapisi-store"
|
||||
import { sonucHref } from "@/lib/sihirbaz";
|
||||
|
||||
/**
|
||||
* Ödeme başarılı ama henüz AI listesi yokken gösterilen CTA: kayıtlı tercih
|
||||
* Ödeme başarılı ama henüz Yapay Zeka listesi yokken gösterilen CTA: kayıtlı tercih
|
||||
* profili olan adayı sihirbazı açık hâlde sonuç sayfasına götürür ve
|
||||
* "sıralamanı gir" metni gösterilmez; profil yoksa ana sayfadaki sıralama
|
||||
* formuna yönlendirir.
|
||||
|
||||
@@ -41,7 +41,7 @@ const OZELLIKLER = [
|
||||
{ icon: RefreshCcw, text: "2 liste revizyon hakkı" },
|
||||
{
|
||||
icon: MessageCircleQuestion,
|
||||
text: `${URUNLER.paket.credits} AI danışman sorusu (her mesaj 1 kredi)`,
|
||||
text: `${URUNLER.paket.credits} Yapay Zeka danışman sorusu (her mesaj 1 kredi)`,
|
||||
},
|
||||
] as const;
|
||||
|
||||
|
||||
@@ -192,7 +192,7 @@ export function ListePaneli({
|
||||
<p className="mt-1 text-sm text-slate-500">
|
||||
{sira.toLocaleString("tr-TR")}. sıra ·{" "}
|
||||
{kilitli
|
||||
? `tüm taban verileri açık · ${ACIK_SATIR} AI analiz örneği`
|
||||
? `tüm taban verileri açık · ${ACIK_SATIR} Yapay Zeka analiz örneği`
|
||||
: `${kredi} kredin kaldı`}
|
||||
</p>
|
||||
</div>
|
||||
@@ -248,7 +248,7 @@ export function ListePaneli({
|
||||
</p>
|
||||
<p className="mt-1 max-w-xl text-sm text-slate-600">
|
||||
Paket; kalan {24 - ACIK_SATIR} tercih için kişisel risk,
|
||||
gerekçe, PDF, 2 revizyon ve 60 AI danışman sorusunu açar.
|
||||
gerekçe, PDF, 2 revizyon ve 60 Yapay Zeka danışman sorusunu açar.
|
||||
</p>
|
||||
{kredi > 0 ? (
|
||||
<p className="mt-1 text-xs text-slate-500">
|
||||
@@ -278,7 +278,7 @@ export function ListePaneli({
|
||||
</div>
|
||||
) : null}
|
||||
|
||||
{/* AI danışman: sağ altta yüzen buton, alttan popup olarak açılır */}
|
||||
{/* Yapay Zeka danışman: sağ altta yüzen buton, alttan popup olarak açılır */}
|
||||
<SohbetPopup kredi={kredi} />
|
||||
</section>
|
||||
);
|
||||
|
||||
@@ -67,7 +67,7 @@ export default async function SonucPage({
|
||||
: [null, null];
|
||||
|
||||
const facetler = rankWindowFacets(sira, turKey);
|
||||
// AI'sız ham liste: yalnızca sıralamayla ulaşılabilen programlar (dilimli)
|
||||
// Yapay Zeka'sız ham liste: yalnızca sıralamayla ulaşılabilen programlar (dilimli)
|
||||
const hamSonuclar = searchByRank(sira, turKey, { limitPerBucket: 20 });
|
||||
// Paketsize giden rapor sunucuda maskelenir: blur yalnızca CSS olduğundan
|
||||
// kilitli satırların gerçek içeriği client'a hiç inmez.
|
||||
@@ -90,11 +90,11 @@ export default async function SonucPage({
|
||||
buraya canlı yansır. */}
|
||||
<ManuelHarita />
|
||||
|
||||
{/* AI'dan bağımsız ham tablo — haritanın hemen altında, sayfanın ana
|
||||
{/* Yapay Zeka'dan bağımsız ham tablo — haritanın hemen altında, sayfanın ana
|
||||
gövdesi; puan türü navbar'daki sıralama rozetinden değiştirilir */}
|
||||
<ProgramTablosu sonuclar={hamSonuclar} adaySira={sira} tur={turKey} />
|
||||
|
||||
{/* Sihirbaz akışı (CTA + modal + AI listesi) — blurlu AI paneli
|
||||
{/* Sihirbaz akışı (CTA + modal + Yapay Zeka listesi) — blurlu Yapay Zeka paneli
|
||||
sayfanın en altında yaşar */}
|
||||
<SihirbazBolumu
|
||||
sira={sira}
|
||||
|
||||
@@ -223,7 +223,7 @@ export function SihirbazBolumu({
|
||||
setKredi(sonuc.kredi);
|
||||
setPaketli(sonuc.hasPaket);
|
||||
tercihProfiliSil();
|
||||
// AI çıktısı bu sayfada gösterilmez: üretim animasyonu açık kalır,
|
||||
// Yapay Zeka çıktısı bu sayfada gösterilmez: üretim animasyonu açık kalır,
|
||||
// liste (paketsizse paywall'lı hâliyle) /listem'de karşılar.
|
||||
router.push("/listem");
|
||||
return;
|
||||
@@ -337,7 +337,7 @@ export function SihirbazBolumu({
|
||||
|
||||
return (
|
||||
<>
|
||||
{/* AI çıktısı (rapor listesi/haritası) bu sayfada render edilmez;
|
||||
{/* Yapay Zeka çıktısı (rapor listesi/haritası) bu sayfada render edilmez;
|
||||
panel yalnızca üretim ve kredi-yetersiz gibi geçici funnel
|
||||
durumlarını gösterir, listenin kendisi /listem'de yaşar. */}
|
||||
<div ref={bolumRef} className="relative">
|
||||
@@ -431,11 +431,11 @@ export function SihirbazBolumu({
|
||||
<PixelField seed={13} />
|
||||
</div>
|
||||
<h2 className="relative font-heading text-2xl font-bold sm:text-3xl">
|
||||
Seçimlerin hazır — AI listen bir adım uzakta
|
||||
Seçimlerin hazır — Yapay Zeka listen bir adım uzakta
|
||||
</h2>
|
||||
<p className="relative mx-auto mt-3 max-w-xl text-white/90">
|
||||
Yukarıdaki tablo her zaman ücretsiz. 5 deneme kredinle 24
|
||||
tercihlik AI listeni de kurabilirsin: ücretsiz giriş yap,
|
||||
tercihlik Yapay Zeka listeni de kurabilirsin: ücretsiz giriş yap,
|
||||
seçimlerin kayıtlı — listen otomatik kurulsun (üretim 3
|
||||
kredi, kalan 2 kredinle danışmana soru sorarsın).
|
||||
</p>
|
||||
@@ -445,7 +445,7 @@ export function SihirbazBolumu({
|
||||
className="relative mt-6 h-auto min-h-12 w-full cursor-pointer whitespace-normal bg-orange-500 px-4 py-3 text-white transition-colors duration-200 hover:bg-orange-600 sm:w-auto sm:px-8"
|
||||
>
|
||||
<Link href={girisUrl}>
|
||||
5 deneme kredinle AI listeni kur — giriş yap
|
||||
5 deneme kredinle Yapay Zeka listeni kur — giriş yap
|
||||
<ArrowRight className="size-4" aria-hidden />
|
||||
</Link>
|
||||
</Button>
|
||||
@@ -475,7 +475,7 @@ export function SihirbazBolumu({
|
||||
onClick={sihirbaziBaslat}
|
||||
className="relative mt-6 h-auto min-h-12 w-full cursor-pointer whitespace-normal bg-orange-500 px-4 py-3 text-white transition-colors duration-200 hover:bg-orange-600 sm:w-auto sm:px-8"
|
||||
>
|
||||
AI listemi kur
|
||||
Yapay Zeka listemi kur
|
||||
<ArrowRight className="size-4" aria-hidden />
|
||||
</Button>
|
||||
</section>
|
||||
@@ -492,7 +492,7 @@ export function SihirbazBolumu({
|
||||
<div className="flex-1">
|
||||
<p className="font-heading text-sm font-bold text-slate-900">
|
||||
{girisBekliyor
|
||||
? "Seçimlerin kayıtlı — AI listen hazır bekliyor"
|
||||
? "Seçimlerin kayıtlı — Yapay Zeka listen hazır bekliyor"
|
||||
: "Tek tek ekleme, yapay zekâ kursun"}
|
||||
</p>
|
||||
<p className="text-xs text-slate-500">
|
||||
@@ -549,7 +549,7 @@ export function SihirbazBolumu({
|
||||
sonSecimler ?? (bekleyen?.eslesir ? bekleyen.secimler : null)
|
||||
}
|
||||
sonButonEtiketi={
|
||||
girisliMi ? "AI listemi kur (3 kredi)" : "Giriş yap ve listeni gör"
|
||||
girisliMi ? "Yapay Zeka listemi kur (3 kredi)" : "Giriş yap ve listeni gör"
|
||||
}
|
||||
onTamamla={ilerle}
|
||||
/>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
"use client";
|
||||
|
||||
// AI danışman sohbeti — sayfa altında yüzen buton + intercom tarzı popup.
|
||||
// Yapay Zeka danışman sohbeti — sayfa altında yüzen buton + intercom tarzı popup.
|
||||
// Motion dili: panel tetikleyicisinden doğar (transform-origin sağ-alt),
|
||||
// spring ile açılır; çıkış girişten hızlı. Reduced motion'da cross-fade.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user