fix(olcum): huninin paydası ile payı aynı birimde olsun
Denetim Y1: `sihirbaz_adim{1}` `olayBirKez` ile oturum başına tekildi,
`{2}`/`{3}` ise her ileri geçişte atılıyor. Sihirbazı ikinci kez açan
öğrencide (ör. /sonuc'ta "Tercihlerini güncelle") payda 1'de kalıp pay 2
olduğu için 1→2 geçiş oranı %200 görünüyordu. `olayBirKez` → `olay`;
mount zaten "sihirbaz bir kez açıldı"ya eşit, 1→2→1→2 gezinmesi unmount
etmediği için tekrar düşmez.
Kodun kendi yazılı kuralı bunu zaten söylüyordu (lib/analitik.ts:22-24,
`liste_uretim_basladi`): aynı oturumdaki ikinci deneme de sayılmalı,
yoksa payda başarıdan küçük kalır.
KABUL KRİTERİ DÜZELTMESİ: CEO kararı P4/(1) "sihirbaz açılışında tam bir
kez düşer, 1→2→1→2 gidip gelmede tekrar düşmez" diyordu. Denetim bu
kriterin mevcut olay sözleşmesiyle çeliştiğini gösterdi; geçerli kriter
artık "her sihirbaz AÇILIŞINDA bir kez düşer" — oturum içindeki ikinci
açılış da sayılır. 1→2→1→2 gezinmesinde tekrar düşmeme şartı korunuyor.
SERİ KIRILMASI (ikinci, daha önce yazılmamıştı): `paket_goruntulendi`
allowlist'i 3'ten 13 değere çıktığı için tekilleştirme anahtarı çeşitlendi
— olayın oturum başına atılabilme tavanı 4'ten 14'e çıktı ve "diger"
kovası artık yalnız gerçekten bilinmeyen yüzeyleri taşıyor. Bu tarihten
önceki/sonraki toplamlar karşılaştırılamaz. Kod değişmedi, yalnız dosyaya
not düşüldü.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -13,6 +13,12 @@ import { olayBirKez } from "@/lib/analitik";
|
|||||||
// Serbest metin analitiğe sızmasın: bilinmeyen değerler "diger"e düşer.
|
// Serbest metin analitiğe sızmasın: bilinmeyen değerler "diger"e düşer.
|
||||||
// Yeni bir /paket linki eklerken değerini önce buraya yaz, sonra href'e koy —
|
// Yeni bir /paket linki eklerken değerini önce buraya yaz, sonra href'e koy —
|
||||||
// listede olmayan her kaynak "diger"e düşer ve yüzey görünmez kalır.
|
// listede olmayan her kaynak "diger"e düşer ve yüzey görünmez kalır.
|
||||||
|
//
|
||||||
|
// SERİ KIRILMASI: liste 3'ten 13 değere çıktığı için tekilleştirme anahtarı
|
||||||
|
// da (aşağıda `kaynak`) çeşitlendi; `paket_goruntulendi`nin oturum başına
|
||||||
|
// atılabilme tavanı 4'ten 14'e çıktı ve "diger" kovası artık yalnız gerçekten
|
||||||
|
// bilinmeyen yüzeyleri taşıyor (eskiden 10 bilinen yüzey de oradaydı).
|
||||||
|
// Bu tarihten önceki/sonraki toplamlar ve "diger" payı karşılaştırılamaz.
|
||||||
const KAYNAKLAR = [
|
const KAYNAKLAR = [
|
||||||
// Kilitli liste satırı / kilit kartı (`listem-govde`)
|
// Kilitli liste satırı / kilit kartı (`listem-govde`)
|
||||||
"kilit",
|
"kilit",
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ import { Button } from "@/components/ui/button";
|
|||||||
import { IlSecimHaritasi } from "./il-secim-haritasi";
|
import { IlSecimHaritasi } from "./il-secim-haritasi";
|
||||||
import { normalizeIlAdi } from "@/lib/harita";
|
import { normalizeIlAdi } from "@/lib/harita";
|
||||||
import { onbellekliJsonGetir } from "@/lib/istek-cache";
|
import { onbellekliJsonGetir } from "@/lib/istek-cache";
|
||||||
import { olay, olayBirKez } from "@/lib/analitik";
|
import { olay } from "@/lib/analitik";
|
||||||
import { trBaslikDuzeni } from "@/lib/slug";
|
import { trBaslikDuzeni } from "@/lib/slug";
|
||||||
import type { SihirbazFacetleri } from "@/types/yokatlas";
|
import type { SihirbazFacetleri } from "@/types/yokatlas";
|
||||||
import { ONCELIKLER, UNIVERSITE_TIPI_ETIKET, type SihirbazSecimleri, type UniversiteTipi } from "@/features/sihirbaz/sihirbaz-sabitler";
|
import { ONCELIKLER, UNIVERSITE_TIPI_ETIKET, type SihirbazSecimleri, type UniversiteTipi } from "@/features/sihirbaz/sihirbaz-sabitler";
|
||||||
@@ -146,13 +146,18 @@ export function SihirbazAdimlar({
|
|||||||
// hiç düşmüyordu — payda `sira_girildi`den türetilmek zorunda kalıyordu.
|
// hiç düşmüyordu — payda `sira_girildi`den türetilmek zorunda kalıyordu.
|
||||||
// Modal kapanınca bileşen unmount olduğu için mount = "1. adım görüldü";
|
// Modal kapanınca bileşen unmount olduğu için mount = "1. adım görüldü";
|
||||||
// 1→2→1→2 gidip gelmek unmount etmediğinden tekrar tetiklenmez.
|
// 1→2→1→2 gidip gelmek unmount etmediğinden tekrar tetiklenmez.
|
||||||
// `olayBirKez` oturum başına da tekilleştirir: aynı sekmede sihirbazı
|
//
|
||||||
// ikinci kez açmak paydayı şişirmez (bkz. lib/analitik.ts).
|
// Bilerek `olayBirKez` KULLANILMAZ (bkz. lib/analitik.ts:22-24, aynı kural
|
||||||
|
// `liste_uretim_basladi` için yazılı): `:220`'deki ileri geçiş olayı
|
||||||
|
// (`adim:2`, `adim:3`) her geçişte atılıyor. Paydayı oturum başına tekil
|
||||||
|
// yapsaydık sihirbazı ikinci kez açan öğrencide pay 2, payda 1 kalır ve
|
||||||
|
// 1→2 geçiş oranı %100'ü aşardı. Payda ile pay aynı birimde olmalı:
|
||||||
|
// sihirbaz her açıldığında `adim:1` de düşer.
|
||||||
//
|
//
|
||||||
// SERİ KIRILMASI: bu satırın canlıya çıktığı tarihten önce `sihirbaz_adim`
|
// SERİ KIRILMASI: bu satırın canlıya çıktığı tarihten önce `sihirbaz_adim`
|
||||||
// serisinde `adim:1` hiç yok; öncesi/sonrası karşılaştırılamaz.
|
// serisinde `adim:1` hiç yok; öncesi/sonrası karşılaştırılamaz.
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
olayBirKez("sihirbaz_adim", { adim: 1 }, "adim1");
|
olay("sihirbaz_adim", { adim: 1 });
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const [facetYukleniyor, setFacetYukleniyor] = useState(false);
|
const [facetYukleniyor, setFacetYukleniyor] = useState(false);
|
||||||
|
|||||||
Reference in New Issue
Block a user