fix(olcum): otomatik üretimin kaynağı gerçek yüzeyden gelir (G3)
/sonuc'taki otomatik üretim kaynağı sabit "giris_donusu" yazıyordu; oysa ?sihirbaz=1 üreten hiçbir yer giriş dönüşü değil — gerçek giriş dönüşü /listem'e doğrudan iniyor, /sonuc'a uğramıyor. Hero, CTA formu, arama kartı, + kapısı, boş liste ekranı ve rapor-yok CTA'sı tek yanlış kovada toplanıyordu, yani P2'nin ölçmek istediği soru ölçülmüyordu. Etiket artık ?sihirbaz=1'i üreten tarafta kuruluyor ve /sonuc üzerinden geçiriliyor; kapıdan gelenler tetikten türetiliyor. giris_donusu yalnız gerçek callback yolunda kalıyor. Güvenlik denetimi G3 · docs/ekip-raporlari/2026-09-22/07-guvenlik-denetimi.md Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -169,7 +169,7 @@ export function CtaSiraForm({
|
||||
const yeniProfil = { sira, tur, secimler };
|
||||
tercihProfiliYaz(yeniProfil);
|
||||
setAcik(false);
|
||||
router.push(sonucHref(girisli ? { sihirbaz: "1" } : { hazir: "1" }));
|
||||
router.push(sonucHref(girisli ? { sihirbaz: "1", kaynak: "cta" } : { hazir: "1" }));
|
||||
}
|
||||
|
||||
function acikDegisti(v: boolean) {
|
||||
|
||||
@@ -101,7 +101,7 @@ export function HeroForm() {
|
||||
const profil = { sira, tur, secimler };
|
||||
tercihProfiliYaz(profil);
|
||||
setModalAcik(false);
|
||||
router.push(sonucHref(girisli ? { sihirbaz: "1" } : { hazir: "1" }));
|
||||
router.push(sonucHref(girisli ? { sihirbaz: "1", kaynak: "hero" } : { hazir: "1" }));
|
||||
}
|
||||
|
||||
// Kayıtlı profil varsa sihirbazı atla, doğrudan sonuç sayfasına götür.
|
||||
|
||||
@@ -12,11 +12,14 @@ export async function SonucSihirbazi({
|
||||
sira,
|
||||
tur,
|
||||
otomatikAc,
|
||||
kaynak,
|
||||
secimlerHazir,
|
||||
}: {
|
||||
sira: number;
|
||||
tur: PuanTuruKey;
|
||||
otomatikAc: boolean;
|
||||
/** ?sihirbaz=1'i üreten yüzey; otomatik üretimin ölçüm etiketi olur. */
|
||||
kaynak?: string;
|
||||
secimlerHazir: boolean;
|
||||
}) {
|
||||
// Kullanıcının kayıtlı raporu var mı? Yalnızca CTA'nın hangi hâlde render
|
||||
@@ -35,6 +38,7 @@ export async function SonucSihirbazi({
|
||||
girisliMi={Boolean(session)}
|
||||
raporVar={Boolean(raporSatiri?.result)}
|
||||
otomatikAc={otomatikAc}
|
||||
kaynak={kaynak}
|
||||
secimlerHazir={secimlerHazir}
|
||||
/>
|
||||
);
|
||||
|
||||
@@ -58,6 +58,7 @@ export function SihirbazBolumu({
|
||||
girisliMi,
|
||||
raporVar,
|
||||
otomatikAc,
|
||||
kaynak,
|
||||
secimlerHazir,
|
||||
}: {
|
||||
sira: number;
|
||||
@@ -68,6 +69,7 @@ export function SihirbazBolumu({
|
||||
raporVar: boolean;
|
||||
/** ?sihirbaz=1 ile gelindiyse modalı otomatik aç */
|
||||
otomatikAc?: boolean;
|
||||
kaynak?: string;
|
||||
/** ?hazir=1 (hero sihirbazından girişsiz geliş): seçimler storage'da,
|
||||
panel giriş CTA'sına döner. URL'den gelir ki SSR'da doğru panel
|
||||
render edilsin. */
|
||||
@@ -222,7 +224,11 @@ export function SihirbazBolumu({
|
||||
if (otomatikGonder && !otomatikBasladi.current) {
|
||||
otomatikBasladi.current = true;
|
||||
// replace: geri tuşu bu sayfaya dönünce tekrar /listem'e sekmesin
|
||||
router.replace(listemUretHref("giris_donusu"));
|
||||
// Etiket ?sihirbaz=1'i ÜRETEN yüzeyden gelir. Eskiden burası sabit
|
||||
// "giris_donusu" yazıyordu; oysa gerçek giriş dönüşü /listem'e
|
||||
// doğrudan iner, /sonuc'a hiç uğramaz — hero, katalog, arama, + ve
|
||||
// ödeme-sonrası tek yanlış kovada toplanıyordu.
|
||||
router.replace(listemUretHref(kaynak ?? "bilinmiyor"));
|
||||
}
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [otomatikGonder]);
|
||||
|
||||
Reference in New Issue
Block a user