From 4b87a3e71ed555a061d0e8b8c92cf4c3cf3cdaf0 Mon Sep 17 00:00:00 2001 From: bilalgursen Date: Mon, 21 Sep 2026 05:23:40 +0300 Subject: [PATCH] =?UTF-8?q?fix(analitik):=20program=5Feklendi=20yaln=C4=B1?= =?UTF-8?q?z=20ger=C3=A7ek=20eklemede=20at=C4=B1ls=C4=B1n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Olay, profilsiz ziyaretçide program listeye girmeyip profil kapısı açıldığında da atılıyordu (kapiAcildi dalı else'e düşüyordu); seri "ekleme"yi değil "+ tıklaması"nı ölçüyordu (09-analitik-tur2, S6). - Buton: yalnız sonuc.eklendi iken {kaynak, yol: "dogrudan"}. - profilTamamlandi: bekleyen program listeye girdiyse (ekle() true) {kaynak, yol: "kapi"}. - OlayAdi yorumuna seri kırılması notu. Davranış değişmez: profilsiz + hâlâ kapıyı açar. Co-Authored-By: Claude Fable 5.1 --- src/features/liste/components/program-ekle-butonu.tsx | 7 +++++-- src/features/liste/hooks/use-tercih-profili.ts | 10 +++++++++- src/lib/analitik.ts | 3 +++ 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/features/liste/components/program-ekle-butonu.tsx b/src/features/liste/components/program-ekle-butonu.tsx index 46a077e..6a1a30d 100644 --- a/src/features/liste/components/program-ekle-butonu.tsx +++ b/src/features/liste/components/program-ekle-butonu.tsx @@ -52,8 +52,11 @@ export function ProgramEkleButonu({ toast.info(`Listen ${MANUEL_LISTE_MAX} tercihe ulaştı.`); } else if (sonuc.zatenVar) { toast.info("Bu program zaten seçtiklerinde."); - } else { - olay("program_eklendi", { kaynak }); + } else if (sonuc.eklendi) { + // Yalnız gerçek eklemede: profilsiz + kapıyı açar (kapiAcildi) ve + // program o an listeye girmez — o yolun olayı kapı tamamlanınca + // profilTamamlandi içinden {yol: "kapi"} ile atılır. + olay("program_eklendi", { kaynak, yol: "dogrudan" }); } } diff --git a/src/features/liste/hooks/use-tercih-profili.ts b/src/features/liste/hooks/use-tercih-profili.ts index d3e5a3f..6b12716 100644 --- a/src/features/liste/hooks/use-tercih-profili.ts +++ b/src/features/liste/hooks/use-tercih-profili.ts @@ -5,6 +5,7 @@ import { useSyncExternalStore } from "react"; import type { Program } from "@/types/yokatlas"; +import { olay } from "@/lib/analitik"; import { PROFIL_DEGISTI_EVENT, sonucHref, type TercihProfili } from "@/features/sihirbaz/sihirbaz-sabitler"; import { tercihProfiliOku, tercihProfiliTamamlandiMi } from "@/features/sihirbaz/sihirbaz-profil"; import { @@ -250,7 +251,14 @@ export function profilTamamlandi( const bekleyen = durum.bekleyen; const hedef = durum.bekleyenHedef; if (bekleyen) { - ekle(programdanManuelTercih(bekleyen.program, profil.sira, bekleyen.kaynak)); + const eklendi = ekle( + programdanManuelTercih(bekleyen.program, profil.sira, bekleyen.kaynak), + ); + // Kapıdan geçen +: program ancak şimdi listeye girdi. Butondaki + // {yol: "dogrudan"} atışının eşi; liste doluysa/zaten varsa atılmaz. + if (eklendi) { + olay("program_eklendi", { kaynak: bekleyen.kaynak, yol: "kapi" }); + } } durum = { ...durum, diff --git a/src/lib/analitik.ts b/src/lib/analitik.ts index b7dedb5..604d74e 100644 --- a/src/lib/analitik.ts +++ b/src/lib/analitik.ts @@ -20,6 +20,9 @@ export type OlayAdi = | "liste_olusturuldu" | "liste_guncellendi" | "liste_revize" + // Seri kırılması: bu düzeltmenin canlıya çıktığı tarihten önce = + + // tıklaması (kapı açılsa da atılıyordu), sonrası = gerçek ekleme + // ({yol: "dogrudan" | "kapi"}); seriler karşılaştırılamaz. | "program_eklendi" | "netler_goruntulendi" | "danisman_sorusu"