Market
Rafta ne varsa senin verinden çıkar: hedefin, seviyen, öğün kayıtların ve sağlık beyanın hangi ürünün önüne geleceğini belirler — sonrasında sepet, ödeme, kargo ve iade tek çatı altında yürür.

Mağaza · 1/12
Marketin ana ekranı. Panodaki market vitrininden “Tümünü gör” ile ya da bir ürün kartına dokunup geri gelerek buraya düşersin.
İki yoldan birini seçersin: kategoriden dolaşmak ya da aşağıdaki kişisel rafından ilerlemek.
- Sol üstteki geri oku → Pano
- Sağ üstteki sepet ikonu → Sepet
- Kategori kartındaki “Keşfet” → o kategorinin kapısı
- Aşağıdaki kişisel raf kartları → ürünün detay sayfası
Bu ekranda ne var 5
Mağazayı açtın. En üstte dört küçük ikon var: güvenli ödeme, hızlı kargo, 14 gün cayma hakkı, 7/24 destek.
Bu şerit bir kampanya değil, alışverişin çerçevesini söyleyen sabit bir güven satırıdır.
Ekranın sırası sabittir ve içeriğe göre değişmez: güven şeridi → marka kartı → kategoriler → kişisel raf → geri bildirim → mağaza sözü. Sabit sıra alışkanlık kurar; kullanıcı üçüncü ziyarette bakmadan doğru yere kaydırır.
Aradığın bir şey yoksa yeri değişmemiştir; o bölümün koşulu sağlanmamıştır.
Buna sistemde “sabit bilgi mimarisi” (stable information architecture) denir.
Kategori kartında “105 ürün” yazıyor ve altında dört marka rozeti duruyor.
Sayı da markalar da katalogdan sayılır; elle yazılmaz.
Kök kategoriler ve her kategorinin ürün sayısı ekran ilk kez kurulurken katalogdan hesaplanır ve sıralaması kategorinin kendi sıra numarasına göre kilitlenir. Böylece katalog büyüdüğünde kart kendi kendini günceller — kimsenin bir yerde sayıyı elle artırması gerekmez.
Bir kategoride “0 ürün” görürsen bu bir arıza değil, o kategorinin gerçekten boş olduğudur.
Buna sistemde “türetilmiş sayım” (derived count) denir.
Sağ üstte sepet ikonu duruyor. Bir dönem burada hiç sepet ikonu yoktu.
Satın alma yolunun açık olup olmadığı tek bir anahtara bağlıdır.
Anahtar kapalıyken sepet ikonu çizilmez, ürün detayındaki “Sepete Ekle” yerine “Detayı incele” yazar ve sepet/ödeme rotaları mağazaya geri yönlendirilir. 2026-08-04’te anahtar açıldı çünkü gerçek kartla gerçek ödeme ve gerçek iade denemesi yapılacaktı; kapalı hâlin sözleşmesi silinmedi, testte yaşamaya devam ediyor.
Sepet ikonunu görüyorsan satın alma yolu açıktır; görmüyorsan uygulama bozuk değil, o yol kapatılmıştır.
Buna sistemde “özellik anahtarı” (feature flag) denir.
Yurt dışından giriş yaptın ve mağazanın tamamı yerine tek bir “yakında” paneli çıktı.
Marketin açık olup olmadığına ülke politikası karar verir.
Politika ekran açılır açılmaz sunucudan sorulur. Sunucudan tanınmayan bir değer gelirse erişim yükseltilmez, aksine kilitli sayılır — bozuk ya da kurcalanmış bir cevap marketi açamaz. Ağ hiç cevap vermezse son bilinen politika korunur.
Kilit “giremezsin” demek değil; o ülkede satış hattının henüz kurulmadığı anlamına gelir.
Buna sistemde “beyaz liste doğrulaması” (whitelist guard) denir.
Diğer modüllerin başında bir koç kutusu var; markette yok.
Marketin başında tek ağızdan konuşan bir koç kutusu bilerek durmaz.
Burada cümlenin yanında satılan bir şey var. Ekranın başındaki toplu bir tavsiye, 64 ürünün tamamı için verilmiş gibi okunur — oysa hüküm ürün başına verilir. Bu yüzden yapay zekâ markette kartın İÇİNDE konuşur ve her not yalnız kendi ürününü açıklar.
Bir ürün hakkında sistemin ne düşündüğünü öğrenmek istiyorsan kartın kendi cümlesine bak.
Buna ürün dilinde “ürün başına hüküm” denir.
Perde arkası — sistem nasıl karar veriyor 10
Rafa hangi ürün çıkar — 1/4: segmentin nereden geliyor
Kayıt olurken hedefini “yağ kaybı”, seviyeni “orta”, cinsiyetini “erkek” olarak girdin. Raf bunları nereden okuyor?
Segmentin üç alandan doğar: eğitim hedef etiketin, seviye kademen ve cinsiyetin.
Üçü de profil omurgandan okunur — onboarding ile profil düzenlemelerinin birleştiği tek kayıttan. Eşleme birebirdir: hedef etiketi `fat_loss` → yağ kaybı, `muscle`/`toning` → kas, `strength` → güç, `health` → sağlık; seviye `L1` → başlangıç, `L2` → orta, `L3`/`L4` → ileri. Tanınmayan ya da boş bir değer sessiz bir varsayıma düşmez: cinsiyet “belirtilmemiş”e, hedef “sağlık”a, seviye “başlangıç”a iner. Segment sunucuda türetilir; istek gövdesinde segment alanı YOKTUR, çünkü segment puanlamanın en güçlü kolu ve istemci yazabilseydi hangi ürünün rafa gireceğini kendi seçerdi.
Rafın sana yabancı geliyorsa ilk bakılacak yer profildeki hedef ve seviyedir; orayı düzelttiğinde raf bir sonraki yüklemede değişir.
Buna sistemde “profil omurgası” (profile spine) denir.
Rafa hangi ürün çıkar — 2/4: telefonun gönderdiği, sunucunun kurduğu
Raf isteği gönderildiğinde telefon sunucuya neyi anlatıyor, neyi anlatmıyor?
Telefon yalnız katalog bağlamını taşır; kararın girdilerini sunucu kendi kasasından kurar.
Gönderilenler: katalogdaki ürün kimlikleri, ürün etiketleri, ürün→alt kategori ve alt kategori→kök kategori haritaları, hafta anahtarı, bu hafta gösterilenler ve satın alınanlar. Gönderilmeyenler ve sebepleri şunlar: (a) AKTİF KAMPANYA LİSTESİ — kampanya bonusu bir indirim hakkıdır; uydurma bir kampanya gönderen telefon kendi ürününe puan ve rozet yazdırabilirdi; (b) SEGMENT — puanlamanın en güçlü kolu; (c) GÜVENLİK BAYRAKLARI (hamilelik / emzirme / yaş / kan sulandırıcı) — kararı yazan taraf kapıyı da açardı; (d) KATEGORİ BAŞINA KART SAYISI — sunucuda sabittir, istekte gelseydi sekiz öğelik meşru bir istek katalogun tamamını hesaplatan bir yüke dönüşürdü. Bu dört alan istek gövdesinde boş değerle bile kurulmaz.
Sağlık beyanını güncellemek rafı anında daraltır; bu bir kısıtlama değil, kararın telefonun elinden alınmış olmasıdır.
Buna sistemde “sunucu-otoriteli girdi” (server-authoritative input) denir.
Rafa hangi ürün çıkar — 3/4: sekiz şerit yanlış sıraya kayarsa
“Takviyeler” başlığının altında giyim kartları çıksaydı hiçbir sayım testi bunu yakalamazdı: 8 bölüm, 64 kart — sayı doğru, eşleşme yanlış.
Cevap sıraya TEK BAŞINA güvenilmeden açılır; her bölümün kimliği sorulan kategoriyle karşılaştırılır.
Uç, sorulan kategori listesiyle aynı sırada ve aynı uzunlukta cevap döndürür. İstemci iki bağımsız kontrol yapar: sayı tutuyor mu, her bölümün taşıdığı kategori kimliği beklenenle aynı mı. İkisinden biri tutmazsa HİÇBİR bölüm servis edilmez — kısmi kabul yoktur, çünkü sekiz şeritten yedisi doğru olsa bile yanlış olan tek şerit, kullanıcının yanlış ürünü gördüğü şerittir. Ayrıca kategori listesi tavanı aşarsa istemci ağa hiç çıkmadan kapanır; sessizce kırpmak, son şeritleri “ürünü yok” sanmaya götürürdü.
Raf ya bütün olarak doğru gelir ya hiç gelmez; yarım bir raf görmezsin.
Buna sistemde “kimlik doğrulamalı toplu cevap” (identity-checked batch) denir.
Rafa hangi ürün çıkar — 4/4: kartın sırası nasıl doluyor
Takviye şeridinin ilk kartında “İhtiyaç” rozeti, ikinci ve üçüncüde “Kampanya”, sonrakilerde “Keşif” yazıyor.
Her slot bir öncelik zinciriyle doldurulur ve hangi kolun doldurduğu karta yazılır.
Zincir şöyle: (1) ölçülebilir bir ihtiyaç sinyali varsa o ürün; (2) yoksa senin segmentini hedefleyen aktif bir kampanya; (3) o da yoksa segment-genel keşif; (4) hiçbiri olmazsa katalog sırasına göre deterministik doldurma. Sınıflandırmayı sunucu yapar ve karta iliştirir; cihaz kendi türetmez. Bastırılması gereken bir ürün hiç kart olmaz — kart nesnesinin “gösterilmesin” diye bir hâli yoktur, o ürün listeye hiç girmez.
Rafında hep “Keşif” rozetleri görüyorsan sistem senin hakkında ölçülebilir bir sinyal bulamamıştır: öğün ve antrenman kaydı, rafı ihtiyaç tarafına çevirir.
Buna sistemde “öncelikli slot doldurma” (priority slot fill) denir.
Fiyatı kim belirliyor — kazanan teklif
Aynı ürünü birden fazla satıcı satıyor. Kartta tek bir fiyat yazıyor; onu kim seçti?
Kazanan teklifi sunucu seçer; telefon teklif deposu okumaz.
Cihazın teklif kopyasını okumak, okunan değer kullanılmasa bile kasadan ayrışan ikinci bir gerçek üretirdi. Servis yalnız “şu ürünleri soruyorum” listesini verir. Uç tek istekte en fazla elli ürün kabul ettiği için liste ellilik dilimlere bölünür ve dilimler sırayla birleştirilir; bölme kararı değiştirmez, çünkü kazanan teklif ürün başına seçilir. Bir dilim bile kapalı dönerse istisna atılır ve sayfa fiyatsız kartlarla çizilmez.
Bir üründe fiyat göremiyorsan bu “stok yok” demek değildir; fiyat kararının o an alınamadığı anlamına gelir.
Buna sistemde “fail-closed buy box” denir.
Sepetten siparişe — para hangi adımda kesinleşir
Sepette ₺1.109,20 yazıyor, sipariş özetinde de aynı rakam çıkıyor. İkisi neden hep aynı?
Tutarı üreten tek yer vardır: ödeme ön-izleme ucu.
Sepet de sipariş özeti de aynı uca sorar; vergi, kargo ve indirim orada hesaplanır. Sepetin kendi başına çarpma yapması, ödeme ekranında farklı bir rakam çıkmasına ve kullanıcının hangisine güveneceğini bilememesine yol açardı. Ön-izleme alınamazsa sepet kalem fiyatlarından bir alt toplam gösterir ama bunu “Tahmini” diye işaretler — işaretsiz bir tahmin, kesin bir rakam gibi okunurdu.
Sepetteki tutar ile ödemedeki tutar farklı çıkarsa aradaki fark kargo ya da kupondur; ikisi de ödeme özetinde satır satır yazılıdır.
Buna sistemde “tek hesap noktası” (single pricing authority) denir.
Aynı siparişin iki kez oluşmasını ne engelliyor
Ödeme sırasında bağlantın koptu, tekrar denedin. İki sipariş mi oluştu?
Her sipariş oluşturma çağrısı benzersiz bir anahtar taşır ve aynı anahtar tekrar gelirse sunucu aynı siparişi döndürür.
Anahtar tek dokunuşa bağlıdır, düğmenin durumuna değil; yirmi dört saat içinde aynı anahtarla gelen istek tekrar olarak kabul edilir. Bunun üstünde ikinci bir koruma daha var: bu oturumda ödemesi tamamlanmış bir sipariş numarası tekrar denenirse ekran doğrudan başarıya döner, başarısız olan bir numara tekrar denenirse doğrudan hata ekranına döner — ikisinde de yeni çağrı yapılmaz.
Ödeme yarıda kaldıysa yeni sipariş açma; Siparişlerim listesinden “Ödemeyi Tamamla” ile devam et.
Buna sistemde “idempotency anahtarı” denir.
Sipariş durumu kelimeden değil koddan okunur
Ekranda “Kargolandı” yazıyor. Bu kelime nereden geliyor ve İngilizceye geçince ne oluyor?
Sunucu bir durum KODU gönderir; ekrandaki kelime o koddan üretilir.
Kodlar sabit bir listede tutulur ve eşleme tek yerde yapılır. Tanınmayan bir kod gelirse durum uydurulmaz, “tanımıyorum” kovasına düşer ve o sipariş dar sekmelerde değil yalnız “Tümü”nde görünür — çünkü hangi aşamada olduğunu bilmediğimiz bir siparişi bir sekmeye koymak yalan olurdu, listeden saklamak ise parası ödenmiş olabilecek bir siparişi yok ederdi.
Uygulamanın dilini değiştirsen de sipariş aynı sekmede kalır; sekme kelimeye değil koda bakar.
Buna sistemde “kod üzerinden durum” (code-driven status) denir.
İade mi, sorun bildirimi mi — ikisi neden ayrı
Ürün elinde ama kutu ezik geldi. İade mi açmalısın, sorun mu bildirmelisin?
İade parayla, sorun bildirimi siparişin kendisiyle ilgilenir.
İade yalnız teslim edilmiş siparişte açılır ve bir para iadesi süreci başlatır; kaydı sipariş kaydının içine yazılır ve aynı sipariş için ikinci bir bekleyen iade açılamaz. Sorun bildirimi ise dört sabit başlıktan birine düşer, destek kuyruğuna gider ve teslim şartı aramaz — kargo yolda kaybolduysa iade açılamaz ama bildirim açılabilir. İkisi aynı kutuya konsaydı, kargo sorunu bildiren kullanıcı para iadesi kuyruğuna düşerdi.
Paranı geri istiyorsan iade; siparişin kendisinde bir aksaklık varsa sorun bildirimi aç. İade ekranından sorun bildirimine, sorun ekranından iadeye geçiş bağlantısı vardır.
Buna ürün dilinde “ayrı sorumluluk, ayrı kuyruk” denir.
Rafın haftalık ritmi — neden her gün değişmiyor
Sabah baktığın raf akşam da aynı. Ertesi hafta değişmiş.
Raf hafta anahtarına bağlıdır ve gün içinde sabit kalır.
Aynı hafta içinde hesaplanmış bir raf deftere yazılır ve tekrar sorulmaz; her açılışta değişen bir raf, kullanıcının dün gördüğü ürünü bir daha bulamamasına yol açardı. Defter iki durumda geçersizdir: bir ürünü bu arada satın aldıysan ya da bir ürün güvenlik kapısında elenir hâle geldiyse — örneğin hamilelik beyanını yeni işaretlediysen. O zaman defter silinir ve raf yeniden kurulur.
Rafın hemen değişmesini istiyorsan profil ya da sağlık beyanını güncelle; sıradan bir yeniden açılış rafı değiştirmez.
Buna sistemde “haftalık önbellek + geçersizleştirme” (weekly cache invalidation) denir.
Verin ne işe yarar 7
Hedefin (yağ kaybı / kas / güç / sağlık) ve seviyen
Girersen Segmentin bu iki alandan doğar ve rafın 64 kartı bu segmente göre puanlanır; kategori dağılımı da hedefine göre değişir.
Girmezsen Segment sessizce “sağlık + başlangıç + belirtilmemiş”e düşer. Raf boş kalmaz ama sana ait olmaz: gördüğün raf, seni hiç tanımayan bir kullanıcının rafıdır.
Sağlık beyanın (gebelik / emzirme / kan sulandırıcı) ve yaşın
Girersen Uygun olmayan takviye kategorileri rafa hiç çıkmaz; eleme ürün kimliği düzeyinde ve sunucuda yapılır.
Girmezsen Kapı yalnız omurgadaki yaş ve profil bilgisiyle karar verir. Kapıya hiç ulaşılamazsa raf BOŞ kalır ve “kontrol edilemedi” yazar — eksik güvenlik bilgisiyle ürün göstermek yerine hiç göstermemek seçilmiştir.
Öğün ve antrenman kayıtların
Girersen Ölçülebilir ihtiyaç sinyalleri doğar (protein açığı, toparlanma yükü gibi) ve raftaki slotlar “İhtiyaç” rozetli kartlarla dolar.
Girmezsen İhtiyaç kolu hiç tetiklenmez; slotlar kampanya ve keşif kollarına düşer. Raf yine dolu gelir ama sana değil, segmentine göre kurulur — bunu kartların üstündeki rozetten anlarsın.
Teslimat adresin
Girersen Sipariş özetinde adres kartı dolar ve büyük düğme doğrudan ödemeye geçer.
Girmezsen Düğme ödeme yerine adres yönetimini açar. Sipariş oluşturma çağrısı adres kimliğiyle yapıldığı için adressiz sipariş kurulamaz.
Sepete eklerken oluşan teklif→ürün eşleşmesi
Girersen Sepet kaleminde ürün adı, markası ve fiyatı görünür; uygulama kapansa bile eşleşme kalır.
Girmezsen Kalem adı yerine ürün kimliği yazılır. Bu bir veri kaybı değil, defterin o kalem için boş olmasıdır: kalemi çıkarıp yeniden eklemek eşleşmeyi kurar.
İade gerekçen (en az on karakter)
Girersen Talep gönderilir, sipariş kaydına iliştirilir ve iade listesinde durumuyla birlikte görünür.
Girmezsen Gönder tuşu hiçbir şey yapmaz ve boşuna bir bekleme yaşamazsın. Kısa gerekçe, iadeyi inceleyen kişide bilgi bırakmadığı için sürecin başlamasına da izin verilmez.
Ülke politikan (sunucudaki market erişim durumu)
Girersen Mağaza tam hâliyle açılır: kategoriler, kişisel raf ve sepet yolu çizilir.
Girmezsen Sunucudan tanınmayan bir değer gelirse erişim yükseltilmez, kilitli sayılır ve mağaza yerine tek bir bilgilendirme paneli çıkar. Ağ hiç cevap vermezse son bilinen politika korunur.