Huninin kör noktalarına altı olay (adlar kalıcı sözleşme):
- cta_form_goruntulendi: programatik sayfalardaki CTA kartı, yalnız
profilsiz dalda (görünüm hook'u; sayfa ayrımı Rybbit pathname'inden)
- sira_form_hata {kaynak: hero|cta|kapi|duzenle}: facet isteği hatası;
geçersiz sayı doğrulaması sayılmaz
- sonuc_goruntulendi {girisli, sira_kovasi}: /sonuc pathname'i maskeli,
huni adımı bu olayla kurulur; oturum başına girişli/anonim birer kez
- paket_goruntulendi {kaynak: kilit|kredi_bitti|nav|diger}: sayfaya
dokunmadan yeni paket/layout.tsx + client bileşenle; /paket linklerine
?kaynak= eklendi (listem kilit kartları, kredi-yetersiz, nav kredi pill'i)
- liste_uretim_hata {kod: HATA|ISTISNA}: AUTH/KREDI/PAKET dalları atmaz
- giris_hata {yontem: eposta|google, status}
Ham sıra ve e-posta hiçbir olaya girmez; sıra yalnız siraKovasi() ile.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
26 lines
969 B
TypeScript
26 lines
969 B
TypeScript
"use client";
|
||
|
||
// /paket görüntülenmesini ve ziyaretçiyi oraya getiren yüzeyi ölçer.
|
||
//
|
||
// Neden ayrı bileşen + layout: /paket sayfası sunucu bileşeni ve statik
|
||
// kalmalı. `useSearchParams` kullanılmaz — cacheComponents açıkken Suspense
|
||
// sınırı/CSR bailout gerektirir; parametre yalnızca ölçüm için lazım, mount
|
||
// sonrası window.location'dan okumak yeter.
|
||
|
||
import { useEffect } from "react";
|
||
import { olayBirKez } from "@/lib/analitik";
|
||
|
||
// Serbest metin analitiğe sızmasın: bilinmeyen değerler "diger"e düşer.
|
||
const KAYNAKLAR = ["kilit", "kredi_bitti", "nav"] as const;
|
||
|
||
export function PaketGorunumOlayi() {
|
||
useEffect(() => {
|
||
const ham = new URLSearchParams(window.location.search).get("kaynak");
|
||
const kaynak = KAYNAKLAR.find((k) => k === ham) ?? "diger";
|
||
// Oturum başına kaynak başına 1 kez: yenileme sayıyı şişirmesin
|
||
olayBirKez("paket_goruntulendi", { kaynak }, kaynak);
|
||
}, []);
|
||
|
||
return null;
|
||
}
|