content(rehber): gece vardiyasının 14 yeni yazısı + 2 düzeltme, ekip raporları ve kurallar
14 yeni rehber yazısı (hepsi editör denetiminden geçti, 46 yazıda 829 iç link tarandı, 0 kırık hedef; 180+ DB rakamı yazıların kendi filtreleriyle yeniden koşuldu): taban-siralamalari-alti-yilda-nasil-degisti · kac-net-ile-hangi-bolum · siralama-bandlari-hangi-kapilar-acilir · ayni-bolum-farkli-universite-siralama-farki · hangi-bolumlerin-kontenjani-azaldi · yeni-acilan-bolumler-nasil-degerlendirilir · bilgisayar-mi-yazilim-muhendisligi-mi · kktc-universiteleri-okunur-mu · yapay-zekaya-tercih-sordum-guvenilir-mi · ek-madde-1-puanim-yetiyor-mu · universitede-ilk-hafta-ders-kaydi-muafiyet-kayit-dondurma · yks-2027-takvimi · rehber-ogretmenler-icin-veri-kaynaklari · bolumumu-sevmedim-hangi-kapilar-var İki canlı yazı düzeltildi: - veliler-icin-tercih-rehberi: veli diliyle kapanış; altındaki "sıralamanı gir" kutusu artık veliye ölü uç değil - bos-kontenjanlar-ne-anlatiyor: "birkaç yüz kişilik fark" aslında ~9 bin (ÖSYM 265.356 ↔ bizim 256.532); payda açıklaması tersti — ek kontenjan paydaya girseydi oran düşerdi. guncelleme alanı eklendi (sitemap lastmod). Kurallar (AGENTS.md): - Yayın sonrası arama motoru bildirimi: URL denetimi yalnız canlıda 200 dönen adrese; kota sayacı; mülk/hesap notu; sitemap grep kuralı - Yıkıcı git komutları yasak: reset/checkout --/restore/clean/stash - Tarayıcı açma: tasarımcı ve UX gerekli gördüğünde açabilir (yetenek için .claude/agents/tasarimci.md'ye tarayıcı araçları eklendi) docs/gece-vardiyasi/2026-09-22/ — 34 rapor: CEO kararları ve kapanış turu, marka/ödeme analizi, sıfır ödeme teşhisi, SEO konu planı, veri kalitesi, editör denetimi, CTO şartnamesi, yazılımcı ve güvenlik raporları, SABAH-OZETI. docs/ekip/YAYIN-KUYRUGU.md — Search Console bildirim kuyruğu. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
296
docs/gece-vardiyasi/2026-09-22/31-guvenlik-satici-kimligi.md
Normal file
296
docs/gece-vardiyasi/2026-09-22/31-guvenlik-satici-kimligi.md
Normal file
@@ -0,0 +1,296 @@
|
||||
# 31 — Güvenlik & uyum: satıcı kimliği (A8), G3'ün delta-0 ledger satırı, iki kısa uyum kontrolü
|
||||
|
||||
> Rol: `guvenlik-uyum` · Gece vardiyası, 22 Eylül 2026 · Okuyucu: CTO (şartname eki) → CEO → sabah Bilal
|
||||
> Yöntem: yalnız okuma. Kod okundu, **hiçbir kod/içerik dosyasına dokunulmadı**; bu rapor dışında dosya oluşturulmadı.
|
||||
> Mevzuat kaynakları resmigazete.gov.tr'den **tam metin olarak indirildi ve okundu** — aşağıda madde madde alıntılı.
|
||||
> İşaretler: **[D]** doğrulandı (dosya:satır / mevzuat metni) · **[Ç]** koddan çıkarım · **doğrulanmalı**
|
||||
> Hukuki değerlendirme taslaktır: **avukat/mali müşavir teyidi gerekir.** Metin değişikliği her zaman `[BİLAL]`.
|
||||
|
||||
---
|
||||
|
||||
## Özet (5 madde)
|
||||
|
||||
1. **KRİTİK — Bu vardiyada yapılan işin bir kısmı çalışma ağacından silindi ve hiçbir commit'te yok.** Oturumumun başında `git status` dört dosyayı `M` gösteriyordu (`AGENTS.md`, `docs/ekip/KARARLAR.md`, `docs/ekip/BACKLOG.md`, `content/rehber/veliler-icin-tercih-rehberi.md`); rapor yazarken aynı dosyalar **temiz**, içerikleri HEAD'e dönmüş. `git reflog`'da `HEAD@{2}: reset: moving to HEAD~1` var [D] ve o resetin ardından hiçbir commit bu dosyalara dokunmuyor [D]. `git fsck --lost-found` içindeki dangling blob'ların hiçbirinde kayıp içerik yok [D] — yani **git'ten geri alınamaz**. Somut kayıp: KARARLAR.md'deki iki adet 22 Eylül karar kaydı, AGENTS.md'ye eklenen Search Console bölümü, veli yazısının yeni kapanışı + karşılaştırma tablosu, BACKLOG güncellemesi. İki karar kaydının **tam metni bu raporun §5 ekinde** duruyor (oturumumun ilk okumasından); diğerleri yeniden yazılmalı. Bu, CEO'nun aynı gece koyduğu C2 kuralının ve PROTOKOL md.3'ün ihlalidir.
|
||||
2. **A8 için yeni sayfa GEREKMİYOR — mevzuat zaten yeri söylüyor: "iletişim" başlığı.** Yürürlükteki yönetmelik (RG 29.12.2022/32058, MADDE 5/1) satıcı kimliğini *"kendine ait elektronik ticaret ortamının ana sayfasında doğrudan ulaşılabilecek şekilde **'iletişim' başlığı altında**"* istiyor [D]. Bizde `/iletisim` sayfası var, başlığı zaten "İletişim" ve footer'dan her sayfada linkli (`src/components/site-footer.tsx:151-156`, ana sayfada `src/app/page.tsx:659`) [D]. Yani **tek iş: mevcut `/iletisim` sayfasına bir blok eklemek.** Kurucunun "sade" talimatına birebir uyuyor; `/hakkinda` benzeri yeni yüzey açmaya gerek yok.
|
||||
3. **Bilal'in dolduracağı alan 5 — ama CEO'nun listesindeki alanlar tam olarak bunlar değil.** CEO "unvan, adres, vergi dairesi/no, MERSİS" demişti; yönetmelik **vergi dairesi adını istemiyor**, buna karşılık **telefon numarası ve KEP adresini zorunlu tutuyor** [D]. Ayıklanmış 5 alan: ① ticaret unvanı **veya** ad-soyad, ② merkez (iş yeri) adresi, ③ MERSİS no *(tacir)* **ya da** vergi kimlik no *(esnaf)* — tek alan, ④ telefon numarası, ⑤ KEP adresi. E-posta zaten var (`destek@kolaytercih.com`). Kopyalanmaya hazır metin §1.4'te, şahıs/şirket iki varyantıyla.
|
||||
4. **G3'ün delta-0 satırı muhasebeyi de idempotency'yi de bozmuyor; tek gerçek risk iade dalı — ve orada sızıntı garanti.** `listeRevize` zaten `hasPaket` kapısının arkasında (`rapor-actions.ts:256`) olduğu için G3'ten sonra **her başarısız revizyon istisnasız 3 bedava kredi** yazar; `revisionCount` yalnız başarıda arttığı için MAX_REVIZYON tavanı, requestId her denemede tazelendiği için de UNIQUE kısıtı bu döngüyü durdurmaz [D]. Karar ve tek paragraflık gerekçe §2'de.
|
||||
5. **Aynı mevzuat taramasında, satıcı kimliğinin yanında üç zorunluluk daha eksik çıktı** (hepsi grep = 0): "işlem rehberi" başlığı (Yön. m.7), **sipariş teyidi bildirimi** (Yön. m.9 — ödeme sonrası alıcıya e-posta/SMS **zorunlu**, bu T5'i "tetik"ten "yükümlülük"e taşır), ve ön bilgilendirmede cayma istisnası + tüketici hakem heyeti cümlesi (Mesafeli Sözleşmeler Yön. m.5/1-h ve -k). Ayrıca **ETBİS kaydı** faaliyete başlamadan önce zorunlu (Tebliğ m.5/1-a) [D]. Bunlar Bilal'e yeni soru üretmiyor — §1.5'te kime düştüğü yazılı.
|
||||
|
||||
---
|
||||
|
||||
## 0 · Kritik bulgu: çalışma ağacında veri kaybı (bu gece, benim oturumum sırasında)
|
||||
|
||||
### Kanıt
|
||||
|
||||
| Zaman | Gözlem | Kaynak |
|
||||
|---|---|---|
|
||||
| Oturum başı | `M AGENTS.md`, `M content/rehber/veliler-icin-tercih-rehberi.md`, `M docs/ekip/BACKLOG.md`, `M docs/ekip/KARARLAR.md` | Görev metnindeki `gitStatus` anlık görüntüsü |
|
||||
| Oturum başı + ~2 dk | `tail -n 150 docs/ekip/KARARLAR.md` → dosyada **iki adet 22 Eylül kaydı** vardı | Bu oturumun ilk okuma çıktısı [D] |
|
||||
| Rapor yazarken | `grep -c "^## 2026-09-22" docs/ekip/KARARLAR.md` = **0**; `git status --porcelain -uno` = **boş** | [D] |
|
||||
| — | `git reflog`: `HEAD@{2}: reset: moving to HEAD~1` | [D] |
|
||||
| — | Reset sonrası commit'lerin hiçbiri bu 4 dosyaya dokunmuyor (`git show --stat` × 8 commit) | [D] |
|
||||
| — | `git fsck --lost-found`: 9 dangling nesne; AGENTS.md adayları **29 satır ve Search Console içermiyor**, KARARLAR adayları 21 Eylül'de bitiyor | [D] |
|
||||
|
||||
**Okuma [Ç]:** aynı çalışma ağacında çalışan kod ajanı `git reset --hard HEAD~1` (veya eşdeğeri) koştu. Untracked dosyalar (yeni rehber yazıları, `docs/gece-vardiyasi/`) sağ kaldı; **izlenen dosyalardaki commit'lenmemiş değişiklikler yandı.** Bu, kod ajanının kendi işini değil, başkasının işini sildi.
|
||||
|
||||
### Ne kaybedildi, ne kurtarılabilir
|
||||
|
||||
| Dosya | Kaybolan iş | Kurtarma |
|
||||
|---|---|---|
|
||||
| `docs/ekip/KARARLAR.md` | 2 adet 22 Eylül karar kaydı (sevk sırası P1–P5; `/sonuc` önizlemesi ve yeniden tasarımların ertelenmesi) | **Tam metin §5'te** — kopyala-yapıştır |
|
||||
| `AGENTS.md` | Search Console bölümü (kota sayacı + sitemap kuralı) | `docs/gece-vardiyasi/2026-09-22/25-seo-duzeltme.md` §2 kuralın **gerekçesini ve iki ayağını** anlatıyor; metin oradan yeniden yazılabilir |
|
||||
| `content/rehber/veliler-icin-tercih-rehberi.md` | Veli dilli kapanış + karşılaştırma tablosu (`grep "birlikte doldurmanız"` = 0, tabloya ait `^|` satırı = 0) | `21-yazar-veli-kapanisi.md` yalnız **özet + 1 alıntı cümle** taşıyor → **yazının kendisi yeniden yazılmalı** |
|
||||
| `docs/ekip/BACKLOG.md` | 22 Eylül güncellemesi | `urun-yoneticisi`'nin backlog senkronu turunda (D-13) yeniden üretilir |
|
||||
|
||||
### Öneri (yeni Bilal maddesi değil; süreç maddesi)
|
||||
|
||||
- **Şimdi:** §5'teki iki karar kaydı KARARLAR.md'ye geri yapıştırılsın (sahibi `ceo`/orkestratör).
|
||||
- **Bu gece:** C2 kuralına tek cümle eklensin → *"Kod ajanı `git reset --hard`, `git checkout -- <yol>`, `git clean`, `git stash` kullanamaz; dal değiştirmesi gerekiyorsa önce `git status -uno` boş olmalıdır."* Mevcut C2 "dokunma" diyor ama **dokunmadan da silinebileceğini** söylemiyor; bu gece tam olarak o oldu.
|
||||
- **Kalıcı:** gece vardiyasında `docs/` ve `content/` yazan ajanlar işlerini **commit'siz bırakmasın**; en azından `git stash create` değil, kendi dalında lokal commit. (Untracked dosyalar bu geceki resetten sağ çıktı — kayıp yalnız izlenen dosyalarda oldu.)
|
||||
|
||||
---
|
||||
|
||||
## 1 · Görev 1 — Satıcı kimliği (A8)
|
||||
|
||||
### 1.1 Mevzuat: neyi kim zorunlu tutuyor (resmî metinden)
|
||||
|
||||
**Kaynak A — Elektronik Ticaret Aracı Hizmet Sağlayıcı ve Elektronik Ticaret Hizmet Sağlayıcılar Hakkında Yönetmelik**, Ticaret Bakanlığı, **RG 29.12.2022 / 32058** [D — tam metin indirildi]. *Not: 2015 tarihli eski yönetmelik bu metnin **MADDE 34** ile yürürlükten kaldırılmıştır [D]; internette dolaşan "2015 yönetmeliği" özetleri artık geçersiz.*
|
||||
|
||||
> **MADDE 5- (1)** ETHS, kendine ait elektronik ticaret ortamının ana sayfasında doğrudan ulaşılabilecek şekilde **"iletişim" başlığı altında** aşağıdaki bilgileri eksiksiz olarak bulundurur:
|
||||
> a) **Tacir için** ticaret unvanı, MERSİS numarası ve merkez adresi; **esnaf ve sanatkâr için** adı ve soyadı, vergi kimlik numarası ve merkez adresi.
|
||||
> b) **KEP adresi, elektronik posta adresi, telefon numarası** ve varsa işletme adı ile tescilli markası.
|
||||
> c) Mensubu olduğu meslek odası, meslekle ilgili davranış kuralları ve bunlara elektronik olarak ne şekilde ulaşılabileceğine ilişkin bilgiler.
|
||||
|
||||
ETHS tanımı (m.4/h): *"…**kendine ait elektronik ticaret ortamında** mal veya hizmetlerinin teminine yönelik sözleşme yapan ya da sipariş alan hizmet sağlayıcı"* → KolayTercih birebir bu [D]. Kapsam dışı sayılanlar listesi (m.2/2) bankalar, sigorta, şans oyunları vb.; bizi kapsam dışına çıkaran bir istisna **yok** [D].
|
||||
|
||||
**Kaynak B — Mesafeli Sözleşmeler Yönetmeliği**, **RG 27.11.2014 / 29188**, MADDE 5 (ön bilgilendirme) [D — tam metin indirildi]. Sözleşme kurulmadan önce **tamamı** verilmek zorunda olanlardan bizde eksik olanlar:
|
||||
|
||||
| Bent | Zorunlu bilgi | Bizde |
|
||||
|---|---|---|
|
||||
| a | Mal/hizmetin temel nitelikleri | **var** (`/kosullar` "Hizmetin kapsamı", `/paket`) |
|
||||
| **b** | **Satıcı/sağlayıcının adı veya unvanı, varsa MERSİS numarası** | **YOK** (grep = 0) |
|
||||
| **c** | **Açık adres, telefon numarası ve benzeri iletişim bilgileri** | **kısmen** — yalnız e-posta (`src/app/iletisim/page.tsx:26-33`) |
|
||||
| ç | Şikâyet için farklı iletişim bilgisi varsa | yok (gerek de yok, aynı adres) |
|
||||
| **d** | **Tüm vergiler dâhil toplam fiyat** | fiyat var, **"KDV dâhil" ibaresi yok** (grep `kdv` = 0) |
|
||||
| f | Ödeme/ifa bilgileri | var |
|
||||
| g | Cayma hakkının şartları, süresi, usulü | var (`/kosullar#iade`) |
|
||||
| ğ | Cayma bildiriminin yapılacağı açık adres/e-posta | e-posta var, adres yok |
|
||||
| **h** | **m.15 uyarınca cayma hakkının kullanılamadığı hâllerde bu bilgi** | **YOK** |
|
||||
| **k** | **Tüketici Hakem Heyeti / Tüketici Mahkemesine başvurabileceği bilgisi** | **YOK** |
|
||||
|
||||
m.15/1 ilgili bentleri [D]: *"ğ) Elektronik ortamda anında ifa edilen hizmetler veya tüketiciye anında teslim edilen gayrimaddi mallara ilişkin sözleşmeler"* ve *"h) Cayma hakkı süresi sona ermeden önce, tüketicinin onayı ile ifasına başlanan hizmetlere ilişkin sözleşmeler"*. Yani **hukuken cayma hakkı vermek zorunda değiliz**; `/kosullar`'daki 14 günlük koşulsuz iade mevzuatın üstünde, gönüllü bir taahhüt — iyi, korunmalı. Ama **"kanunen cayma hakkın yok, buna rağmen biz 14 gün veriyoruz"** cümlesinin yazılması m.5/1-h gereği zorunlu.
|
||||
|
||||
**Kaynak C — Elektronik Ticaret Bilgi Sistemi ve Bildirim Yükümlülükleri Hakkında Tebliğ**, **RG 11.08.2017 / 30151**, MADDE 5/1 [D]:
|
||||
|
||||
> *"(1) Aşağıda belirtilen gerçek veya tüzel kişiler **faaliyete başlamadan önce ETBİS'e kayıt olur**: a) **Kendilerine ait elektronik ticaret ortamında faaliyet gösteren hizmet sağlayıcılar.** …"* — kayıt için girilen bilgi: *"Gerçek veya tüzel kişi tacirler için MERSİS numarası ve vergi kimlik numarası, esnaf ve sanatkârlar için T.C. kimlik numarası ve vergi kimlik numarası"* + alan adı.
|
||||
|
||||
→ **KolayTercih ödeme alıyor ve ETBİS kaydı gerektiren tarife birebir uyuyor.** Tebliğin sonraki değişiklikleri **doğrulanmalı** (2017 metni okundu; 2022–2023 e-ticaret paketinden sonra güncellenmiş olabilir). Sitede gösterilmesi gereken bir "ETBİS rozeti/bandı" yükümlülüğü **bu metinde yok** — uydurmuyorum, aramada çıkmadı [D].
|
||||
|
||||
### 1.2 Şahıs mı şirket mi — hangi alan değişir
|
||||
|
||||
Mevzuat "şahıs/şirket" değil **tacir / esnaf-sanatkâr** ayrımı yapıyor. Pratik karşılığı:
|
||||
|
||||
| Durum | ①Kim | ②Adres | ③Numara | ④Telefon | ⑤KEP | Meslek odası (m.5/1-c) |
|
||||
|---|---|---|---|---|---|---|
|
||||
| **Şahıs işletmesi — esnaf ve sanatkâr** (esnaf odasına kayıtlı) | **Ad ve soyad** | İş yeri (merkez) adresi | **Vergi kimlik numarası** | zorunlu | zorunlu | Esnaf ve sanatkârlar odası adı |
|
||||
| **Şahıs işletmesi — tacir** (ticaret siciline kayıtlı) | **Ticaret unvanı** (ör. "Bilal Gürşen — KolayTercih") | Ticaret siciline tescilli merkez adresi | **MERSİS numarası** | zorunlu | zorunlu | Ticaret odası adı |
|
||||
| **Limited / anonim şirket** | **Ticaret unvanı** (…Ltd. Şti.) | Tescilli merkez adresi | **MERSİS numarası** | zorunlu | zorunlu | Ticaret odası adı |
|
||||
| **Hiç kaydı olmayan gerçek kişi** | — | — | — | — | — | — |
|
||||
|
||||
**Son satır hakkında uyarı:** 2022 yönetmeliğinin m.5/1'inde — 2015'teki hâlinin aksine — *kendi sitesinde satış yapan* "tacir veya esnaf olmayan" hizmet sağlayıcı için bir fıkra **yok** [D]; süreklilik arz eden, kazanç amaçlı satış zaten ticari faaliyet sayıldığı için vergi mükellefiyeti doğurur. Yani "hiçbir kaydı olmayan gerçek kişi olarak satmaya devam etmek" mevzuatın öngördüğü bir seçenek değil. **Mali müşavir teyidi gerekir** — bu cümle hukuki görüş değil, metinden okunan bir boşluk tespitidir.
|
||||
|
||||
**Pratik sonuç:** üç geçerli durumda da **alan sayısı 5** ve yalnız ①/③ değişiyor. Bu yüzden aşağıdaki taslak tek metin; Bilal hangi satırı yazacağını `TODO-BILAL` notundan seçiyor.
|
||||
|
||||
### 1.3 Nereye konacak — yeni sayfa gerekmiyor
|
||||
|
||||
| Ne | Nereye | Neden |
|
||||
|---|---|---|
|
||||
| **Satıcı kimliği bloğu (5 alan)** | **`src/app/iletisim/page.tsx`** — mevcut `<h1>İletişim</h1>`'in altına, e-posta butonunun **altına**, "Kart bilgini asla e-postayla paylaşma" notunun üstüne | Yönetmelik m.5/1 bilgileri **"iletişim" başlığı altında** istiyor; sayfa zaten bu adı taşıyor ve `SiteFooter` sayesinde **ana sayfa dâhil 12 sayfada** doğrudan linkli (`site-footer.tsx:151-156`, `page.tsx:659`) [D]. Yeni sayfa açmak hem gereksiz hem de mevzuatın istediği başlıktan uzaklaştırır |
|
||||
| **`/kosullar`'a 3 cümle** | `src/app/kosullar/page.tsx` — "Ücretlendirme" bölümünün sonuna 1 cümle, "İade ve cayma" bölümünün başına 2 cümle | Mesafeli Sözleşmeler Yön. m.5/1-b, -d, -h, -k boşlukları. Yeni bölüm bile değil, mevcut `<section>`'ların içine cümle |
|
||||
| **Footer** | **değişiklik gerekmiyor** | "İletişim" linki zaten her sayfada, `Yasal sayfalar` nav'ında (`site-footer.tsx:151-156`) [D] |
|
||||
| **Gizlilik** | `src/app/gizlilik/page.tsx` — "Hangi verileri işliyoruz?" bölümünün başına 1 cümle | KVKK aydınlatmasında **veri sorumlusunun kimliği** bulunmak zorundadır; bugün gizlilik metni de veri sorumlusunu adlandırmıyor [D]. Aynı 5 alandan besleniyor, ek bilgi istemiyor |
|
||||
|
||||
### 1.4 Kopyalanmaya hazır metin
|
||||
|
||||
> Yazılımcıya not: bunlar **düz metin**tir. `/iletisim` ve `/kosullar` sayfalarındaki mevcut `<section>` + `<h2 className="font-heading text-lg font-bold text-slate-900">` desenini kullan; yeni bileşen, yeni badge, yeni kart tasarlama. Tarih satırı `/kosullar`'daki "Son güncelleme" satırıyla aynı biçimde.
|
||||
|
||||
#### (A) `/iletisim` — yeni bölüm: "Satıcı bilgileri"
|
||||
|
||||
```
|
||||
Satıcı bilgileri
|
||||
|
||||
Unvan: TODO-BILAL: Ticaret unvanın (ör. "Bilal Gürşen — KolayTercih"); şirket değil de esnaf/sanatkâr olarak kayıtlıysan ad ve soyadın
|
||||
Adres: TODO-BILAL: İş yeri (merkez) adresin — mahalle/cadde/no, ilçe, il, posta kodu
|
||||
TODO-BILAL: Tacirsen "MERSİS No: ……" satırı; esnaf ve sanatkârsan "Vergi Kimlik No: ……" satırı (yalnız biri yazılır)
|
||||
Telefon: TODO-BILAL: Alıcının sana ulaşabileceği telefon numarası
|
||||
KEP adresi: TODO-BILAL: Tebligata elverişli KEP adresin (PTT'den alınır)
|
||||
E-posta: destek@kolaytercih.com
|
||||
|
||||
Bu sayfadaki bilgiler, 29/12/2022 tarihli ve 32058 sayılı Resmî Gazete'de yayımlanan
|
||||
Elektronik Ticaret Aracı Hizmet Sağlayıcı ve Elektronik Ticaret Hizmet Sağlayıcılar
|
||||
Hakkında Yönetmelik uyarınca yayımlanmaktadır.
|
||||
```
|
||||
|
||||
**Alan sayısı: 5.** (E-posta zaten kodda, mevzuat atfı sabit.)
|
||||
Ayıklananlar ve gerekçeleri: *vergi dairesi adı* → yönetmelik VKN istiyor, daire adını istemiyor, piyasa alışkanlığı; *işletme adı / tescilli marka* → "varsa" (m.5/1-b), tescil yoksa yazılmaz, `marka` ajanının A9 raporu sonuçlanınca bakılır; *meslek odası* → kayıt olunan odaya göre tek satır, Bilal ③'ü yazarken aynı belgeden okuyacağı için ayrı soru sayılmadı; **yazılırsa** "Meslek odası: …" satırı aynı bloğun sonuna eklenir.
|
||||
|
||||
#### (B) `/kosullar` → "Ücretlendirme" bölümünün sonuna eklenecek cümle
|
||||
|
||||
```
|
||||
Satıcı bilgileri (unvan, adres, vergi/MERSİS numarası ve iletişim) iletişim sayfasında
|
||||
yer alır. Paket fiyatı, tüm vergiler dâhil toplam bedeldir.
|
||||
```
|
||||
|
||||
*("iletişim sayfasında" ifadesi `/iletisim`'e link olacak — `/kosullar`'daki mevcut `<Link className="text-primary underline">` deseniyle.)*
|
||||
|
||||
#### (C) `/kosullar` → "İade ve cayma" bölümünün **başına** eklenecek iki cümle
|
||||
|
||||
```
|
||||
Paket, elektronik ortamda anında ifa edilen bir hizmettir; Mesafeli Sözleşmeler
|
||||
Yönetmeliği'nin 15 inci maddesi uyarınca bu tür sözleşmelerde kanunen cayma hakkı
|
||||
bulunmaz. Buna rağmen aşağıdaki koşullarda 14 günlük koşulsuz iade hakkını kendi
|
||||
irademizle tanıyoruz.
|
||||
```
|
||||
|
||||
#### (D) `/kosullar` → en sona eklenecek yeni bölüm (tek cümle)
|
||||
|
||||
```
|
||||
Uyuşmazlık hâlinde
|
||||
|
||||
Satın alımından doğan uyuşmazlıklarda, parasal sınırlara göre yerleşim yerindeki
|
||||
Tüketici Hakem Heyetine veya Tüketici Mahkemesine başvurabilirsin.
|
||||
```
|
||||
|
||||
#### (E) `/gizlilik` → "Hangi verileri işliyoruz?" paragrafının **başına** eklenecek cümle
|
||||
|
||||
```
|
||||
Bu metindeki işlemler bakımından veri sorumlusu, iletişim sayfasında unvanı ve adresi
|
||||
yayımlanan KolayTercih satıcısıdır.
|
||||
```
|
||||
|
||||
> Böylece Bilal'in doldurduğu 5 alan **tek yerde** duruyor; diğer üç sayfa ona atıf yapıyor. Bilgi değişirse tek dosya güncelleniyor (yönetmelik m.5/5: değişiklikler değişikliğin olduğu gün güncellenir — tek kaynak bunu da kolaylaştırıyor).
|
||||
|
||||
### 1.5 Aynı taramada çıkan, Bilal'e soru üretmeyen zorunluluklar
|
||||
|
||||
| Ne | Mevzuat | Bugün | Kime |
|
||||
|---|---|---|---|
|
||||
| **"İşlem rehberi" başlığı** — sözleşmenin kurulması için teknik adımlar, sözleşmenin saklanıp saklanmayacağı, hata düzeltme araçları, varsa alternatif uyuşmazlık çözümü | Yön. **m.7/1**, ana sayfadan doğrudan ulaşılabilir "işlem rehberi" başlığı altında [D] | grep `işlem rehberi` = **0** | `cto` → `yazilimci`. `/kosullar`'a üçüncü bir bölüm olarak yazılabilir, **yeni sayfa gerekmez**; içerik hazır: sıralama → sihirbaz → giriş → paket → iyzico |
|
||||
| **Sipariş teyidi** — "siparişi aldığını, ortam üzerinden **ve ayrıca** e-posta, SMS veya telefondan en az biriyle gecikmeksizin alıcıya bildirir" | Yön. **m.9/1** [D] | `/odeme/sonuc` ekranı var ama **alıcıya e-posta yok** (`src/lib/eposta.ts` yalnız magic-link + kredi hatırlatma) [D] | **T5'in sınıfı değişiyor:** "test ödemesi başarılı olursa" tetiği değil, **mevcut yükümlülük**. T5 zaten satıcı kimliği satırlarıyla aynı commit'e bağlıydı → sırası doğru, adı düzeltilmeli |
|
||||
| **Sözleşme şartlarının alıcıya kalıcı biçimde verilmesi** (basılabilir/saklanabilir) | Yön. **m.8/1-d** [D] | Yok | Aynı e-posta ile kapanır (paket adı + tutar + tarih + `/kosullar` özeti) |
|
||||
| **ETBİS kaydı** | Tebliğ **m.5/1-a**: faaliyete başlamadan önce [D] | Durum bilinmiyor — koddan görülemez | Bilal'in tek maddesiyle **aynı zincir** (kayıt olmadan ③ numarası zaten yazılamaz). Ayrı madde açılmadı |
|
||||
|
||||
---
|
||||
|
||||
## 2 · Görev 2 — G3'ün delta-0 ledger satırı
|
||||
|
||||
**Değerlendirme (tek paragraf).** Tutarı 0 olan ledger satırı ne mutabakatı ne bakiyeyi bozar: bakiye hiçbir yerde defterden toplanmıyor, tek kaynağı `user.credit_balance` kolonu (`src/lib/credits.ts:56-72`; `grep -rn delta src scripts` → defteri toplayan tek bir okuyucu yok) [D]; haftalık iyzico mutabakat sorgusu ise yalnız `reason IN ('purchase','topup')` ve `ref_id = orders.id` üzerinden çalışıyor (`docs/odeme/iyzico.md:82-88`) [D] — `report_generate` satırının `refId`'si istemcinin ürettiği `requestId` olduğu için bu sorguya hiç girmez, yani 0 TL'lik hareket iyzico tarafında görünmez bile. Idempotency de yerinde kalır: UNIQUE indeks `ledger_reason_ref` **`(reason, ref_id)`** üzerindedir, `delta` üzerinde değil (`src/lib/appdb/schema.ts:131`) [D]; `amount = 0` iken de satır aynı `refId` ile yazıldığından ikinci çağrı yine `DUPLICATE` döner ve `rapor-actions.ts:168-205`'teki "iade edilmiş / mevcut rapor / hâlâ uçuşta" üçlü dalı aynen çalışır; `spendCredits`'in `WHERE creditBalance >= 0` koşulu da paketli kullanıcı kredisi sıfırken geçer, yani `INSUFFICIENT` yanlış alarmı olmaz [Ç — bakiyenin negatife düşebildiği tek yol yok; tüm harcama yolları `gte` ile korunuyor]. **Sorun tek yerde:** iade dalı koşullanmazsa `grantCredits({ delta: RAPOR_KREDI, reason: "refund" })` paketliye **gerçek** 3 kredi basar (`rapor-actions.ts:212-218` ve `:339-345`), ve `listeRevize` zaten `hasPaket` kapısının arkasında olduğu için (`:256`) G3'ten sonra **her başarısız revizyon istisnasız bedava 3 kredi** demektir; `revisionCount` yalnız başarılı üretimde arttığından (`:344-352`) MAX_REVIZYON=2 tavanı döngüyü durdurmaz, `requestId` her denemede tazelendiğinden UNIQUE de durdurmaz — ve G3'ten sonra krediler yalnız sohbete gideceği için bu doğrudan "başkasının parasıyla LLM çağırma" bütçesine dönüşür. Başarısızlık ayrıca tamamen şansa bağlı değil: revizyon geri bildirimi serbest metin ve prompt'a giriyor, model iki denemede de dilim sayılarını tutturamazsa `RaporUretimHatasi` fırlıyor (`src/lib/ai/rapor.ts:338-345`) [Ç — kullanıcı yönlendirmeli başarısızlık **OLASI**, sağlayıcı kaynaklı başarısızlık ise **DOĞRULANDI** biçimde aynı dala düşüyor].
|
||||
|
||||
**KARAR: "şu koşulla sorun yok."** Koşul üç satır:
|
||||
|
||||
1. İade dalı aynı koşula bağlanır: `delta: hasPaket ? 0 : RAPOR_KREDI` (her iki `grantCredits` çağrısı — `rapor-actions.ts:212-218`, `:339-345`). Çağrı yine **kaldırılmaz**; `refund` satırı `refId` ile yazılmaya devam etsin ki `:168-180` ve `:298-312`'deki "önceki deneme iade edilmişti" dalı çalışmaya devam etsin.
|
||||
2. Dönüş değerindeki bakiye de koşullanır: `kredi: user.creditBalance - RAPOR_KREDI` (`:243` ve `:363`) → `- (hasPaket ? 0 : RAPOR_KREDI)`. Yoksa paketlinin bakiyesi ekranda **3 eksik** görünür; kullanıcı "kredim yandı" diye destek yazar. (Sızıntı değil, görüntü hatası — ama G3'ün tüm vaadi "kredin yanmıyor" olduğu için tam da yanlış yerde bir hata.)
|
||||
3. `hasPaket` değeri **tek yerden**, zaten okunmuş `user` nesnesinden alınsın (`listeOlusturKilitli`'ye `user` geliyor, `listeRevize`'de `user.hasPaket` kapısı var) — ikinci bir DB okuması eklenmesin; aksi hâlde harcama ile iade farklı `hasPaket` görebilir.
|
||||
|
||||
**Ek not (kapsam dışı, kayda geçsin):** G3 sonrası paketli kullanıcı için `krediBittiIsaretle` hiç tetiklenmez (`INSUFFICIENT` dönmez) — bu **doğru** davranış, kredi hatırlatma e-postası paketliye gitmemeli. `/api/soru` tarafı (sohbet, 1 kredi) G3'ten etkilenmiyor ve etkilenmemeli [D].
|
||||
|
||||
---
|
||||
|
||||
## 3 · Görev 3 — İki kısa uyum kontrolü
|
||||
|
||||
**(a) Veli yazısının kapanışı.** KVKK ve ticari ileti açısından **hiçbir şey değişmiyor**: metin yeni bir veri alanı toplamıyor, yeni form/izin kutusu eklemiyor, e-posta adresi istemiyor; altındaki `CtaSiraForm` zaten var olan bileşen ve sıralama girişi gizlilik metninde hâlihazırda beyan edilmiş bir veri kategorisi (`src/app/gizlilik/page.tsx:39-46`) [D]. — *Ama:* §0'da anlatıldığı üzere **bu değişiklik şu an çalışma ağacında yok**; `grep "birlikte doldurmanız"` = 0, tablo satırı = 0 [D]. Uyum açısından temiz, ama iş kayıp.
|
||||
|
||||
**(b) Search Console kuralının Bilal'in Google oturumunu kullanması.** İki ayrı soru:
|
||||
|
||||
- **KVKK/veri:** Search Console'da kişisel veri yok (URL'ler, toplulaştırılmış sorgu/gösterim verisi). Kullanıcı verisi dışarı çıkmıyor. **Uyum sorunu yok.**
|
||||
- **Güvenlik:** sorun var, ama düşündüğümüz yerde değil. Ajanın kullandığı oturum Bilal'in **kişisel Google hesabı**; aynı tarayıcı oturumundan Gmail, Drive ve Google hesabı ayarları da erişilebilir durumda. PROTOKOL md.5 açıkça *"Kullanıcının açık oturumlarına (Gmail vb.) girme"* diyor [D] — yani kural, korumayı **ajanın kendini tutmasına** bırakıyor; teknik bir sınır yok. Bir yanlış sekme, bir prompt enjeksiyonu (SC arayüzünde değil ama aynı profilde açılan herhangi bir sayfada) ya da bir "yardımcı olayım" refleksi kapsamı e-posta kutusuna taşır. **Önem: orta.**
|
||||
**Öneri (tek satır, yeni Bilal maddesi değil — zaten E3'ün içinde):** CEO'nun C4'teki çözümü "birinci hesabı mülke tam yetkili ekle" — bu hesap değiştirme sürtünmesini çözüyor ama **yetki genişliği sorununu çözmüyor**. Aynı 2 dakikada yapılabilecek daha iyisi: mülke **ajanın kullanacağı, Gmail'i olmayan ayrı bir Google hesabı** "tam yetkili kullanıcı" olarak eklensin; ajan yalnız o profille çalışsın. Bilal'in kişisel hesabı mülkün sahibi olarak kalır.
|
||||
- **Ayrıca:** kuralın kendisi şu an `AGENTS.md`'de **yok** (§0). Yani bu gece "kapandı" sayılan C4 maddesinin üçte ikisi kayıp.
|
||||
|
||||
---
|
||||
|
||||
## 4 · Bulgu tablosu
|
||||
|
||||
Önem: **kritik** = para/veri kaybı ya da hemen istismar edilebilir · **yüksek** = mevzuat ihlali / gelir sızıntısı · **orta/düşük** = düzeltilmeli, acil değil.
|
||||
Kesinlik: **DOĞRULANDI** = dosya:satır ya da mevzuat metniyle gösterildi · **OLASI** = koddan çıkarım, koşturarak denenmedi.
|
||||
|
||||
| # | Dosya:satır / kaynak | Sorun | Somut istismar / ihlal senaryosu | Önem | Düzeltme | Kesinlik |
|
||||
|---|---|---|---|---|---|---|
|
||||
| **B1** | `git reflog HEAD@{2}` · `docs/ekip/KARARLAR.md` · `AGENTS.md` · `content/rehber/veliler-icin-tercih-rehberi.md` | Aynı çalışma ağacındaki kod ajanı `reset` ile commit'lenmemiş değişiklikleri sildi; hiçbir commit'te ve dangling nesnede yok | Gece vardiyasında üretilen karar kayıtları, kural metni ve bir yazının yeniden yazımı kayboldu; kayıp fark edilmeden sabah özeti "kapandı" diyecekti | **kritik** | §5'teki iki karar kaydı geri yapıştırılsın; C2'ye "reset/checkout/clean/stash yasak" cümlesi eklensin; `docs/`+`content/` ajanları lokal commit atsın | DOĞRULANDI |
|
||||
| **B2** | `src/features/rapor/rapor-actions.ts:212-218` ve `:339-345` (G3 sonrası) | İade dalı `hasPaket` koşuluna bağlanmazsa, harcaması 0 olan paketliye 3 **gerçek** kredi yazılır | Paketli kullanıcı revizyon isteğini modelin iki denemede de doğrulayamayacağı biçimde yazar → `RaporUretimHatasi` → +3 kredi; `revisionCount` başarısızlıkta artmadığı ve `requestId` her denemede tazelendiği için döngü sınırsız; krediler sohbete gidince başkasının parasıyla LLM çağrılır | **yüksek** | `delta: hasPaket ? 0 : RAPOR_KREDI` (çağrı kaldırılmaz) | DOĞRULANDI (kod) / OLASI (kullanıcı yönlendirmeli başarısızlık oranı) |
|
||||
| **B3** | `rapor-actions.ts:243` ve `:363` | Dönen `kredi` alanı koşulsuz `- RAPOR_KREDI` | Paketli kullanıcı liste üretince ekranda bakiyesini 3 eksik görür; G3'ün tüm vaadi "kredin yanmıyor" olduğu için tam ters mesaj + destek yükü | orta | `- (hasPaket ? 0 : RAPOR_KREDI)` | DOĞRULANDI |
|
||||
| **B4** | `src/app/iletisim/page.tsx` (tamamı) · grep `mersis\|vergi kimlik\|ticaret unvan\|KEP` = **0** | Satıcı kimliği sitenin hiçbir yerinde yok | Yön. (RG 32058) m.5/1 ihlali: ödeme alan bir ETHS, "iletişim" başlığı altında unvan/adres/numara/telefon/KEP bulundurmak zorunda. Aynı eksik Mesafeli Sözleşmeler Yön. m.5/1-b ve -c'yi de ihlal ediyor → tüketici şikâyetinde ön bilgilendirme yapılmamış sayılır | **yüksek** | §1.4 (A) + (B) | DOĞRULANDI |
|
||||
| **B5** | `src/lib/eposta.ts` (yalnız 2 şablon) · `src/lib/odeme.ts:78-82` | Alıcıya sipariş teyidi gönderilmiyor | Yön. m.9/1: sipariş alındığı, ortam üzerinden **ve ayrıca** e-posta/SMS/telefondan bildirilmek zorunda. Bugün alıcı ödediğine dair elinde tek bir kayıt olmadan kalıyor; itiraz/chargeback'te satıcı tarafında delil de yok | **yüksek** | T5 e-postası (satıcı kimliği satırları + tutar + tarih + `/kosullar` özeti — m.8/1-d'yi de kapatır) | DOĞRULANDI |
|
||||
| **B6** | `src/app/kosullar/page.tsx:61-83` | Cayma hakkının kanunen bulunmadığı bilgisi yok | Mesafeli Sözleşmeler Yön. m.5/1-h ihlali. Ters yönde de zararlı: 14 günlük gönüllü iadeyi "kanuni hak" sanan kullanıcı, kapsam dışı bir talepte reddedilince haksızlığa uğradığını düşünür | orta | §1.4 (C) | DOĞRULANDI |
|
||||
| **B7** | `src/app/kosullar/page.tsx` (tamamı) | Tüketici hakem heyeti / mahkeme başvuru bilgisi yok | Mesafeli Sözleşmeler Yön. m.5/1-k ihlali | orta | §1.4 (D) | DOĞRULANDI |
|
||||
| **B8** | grep `işlem rehberi` = 0 | "İşlem rehberi" başlığı yok | Yön. m.7/1 ihlali: teknik adımlar, sözleşmenin saklanıp saklanmayacağı, hata düzeltme araçları ana sayfadan ulaşılabilir olmalı | orta | `/kosullar`'a üçüncü bölüm (yeni sayfa değil) | DOĞRULANDI |
|
||||
| **B9** | grep `kdv\|vergiler dahil` = 0 · `paket-satinal.tsx:67,167` | Fiyatın vergiler dâhil olduğu yazmıyor | Mesafeli Sözleşmeler Yön. m.5/1-d: toplam fiyat **tüm vergiler dâhil** bildirilmeli | düşük | §1.4 (B)'deki ikinci cümle | DOĞRULANDI |
|
||||
| **B10** | `src/app/gizlilik/page.tsx:35-47` | Aydınlatma metninde veri sorumlusunun kimliği yok | KVKK aydınlatma yükümlülüğü, veri sorumlusunun kimliğinin bildirilmesini içerir; ayrıca veri silme talebinin **kime** yapılacağı da belirsiz kalıyor | orta | §1.4 (E) | DOĞRULANDI |
|
||||
| **B11** | ETBİS Tebliği m.5/1-a · koddan görülemez | ETBİS kaydının varlığı bilinmiyor | Kendine ait e-ticaret ortamında **faaliyete başlamadan önce** kayıt zorunlu; kayıtsız satış idari yaptırım riski | **yüksek** | Bilal'in tek maddesiyle aynı zincir (kayıt olmadan MERSİS/VKN satırı zaten yazılamaz) | DOĞRULANDI (yükümlülük) / bilinmiyor (bizim durumumuz) |
|
||||
| **B12** | PROTOKOL md.5 · `24-ceo-kapanis.md` §C4 | Search Console işi Bilal'in kişisel Google oturumundan yürüyor | Ajan, mülke erişmek için açılan oturumdan Gmail/Drive'a da erişebilir durumda; teknik sınır yok, yalnız kural var | orta | Mülke Gmail'i olmayan ayrı bir hesap "tam yetkili" eklensin; ajan yalnız o profille çalışsın | DOĞRULANDI (yapılandırma) |
|
||||
|
||||
---
|
||||
|
||||
## 5 · Metin × kod uyumsuzlukları
|
||||
|
||||
| Metin ne diyor | Kod / gerçek ne | Nerede |
|
||||
|---|---|---|
|
||||
| `/kosullar`: *"Tercih Dönemi Paketi tek seferlik bir satın almadır"* | Paket etiketi A2 ile **"KolayTercih Paketi"** (ya da `marka`'nın önerdiği "Tercih Listesi Paketi") olacak; `/kosullar` metni eski adı yazmaya devam ediyor | `src/app/kosullar/page.tsx:50-57` × `src/lib/credits.ts:7` + `24-ceo-kapanis.md` A2 · **A2 commit'ine `/kosullar` de dâhil edilmeli** |
|
||||
| `/kosullar`: *"14 gün içinde koşulsuz iade talep edebilirsin"* — kanuni hak gibi okunuyor | Kanunen cayma hakkı **yok** (Mesafeli Söz. Yön. m.15/1-ğ,h); bu gönüllü bir taahhüt | B6 |
|
||||
| `/gizlilik`: *"sana hizmetle ilgili e-posta (giriş bağlantısı, **ödeme bilgilendirmesi**) göndermek"* | Ödeme bilgilendirmesi e-postası **yok**; `src/lib/eposta.ts` yalnız magic-link ve kredi hatırlatma taşıyor | B5. Metin var olmayan bir gönderimi beyan ediyor — T5 yapılınca uyum kendiliğinden kurulur |
|
||||
| `/iletisim`: *"Ödeme, iade, **hesap silme** ya da başka bir konuda"* | Hesap silme yolu var (e-posta), ama talebin **muhatabı** kim olduğu (veri sorumlusu) hiçbir yerde yazmıyor | B10 |
|
||||
| `/kosullar` üstündeki kod yorumu: *"MVP taslağıdır; yayına almadan önce hukuki gözden geçirme gerekir"* | Hukukçu tutulmayacağı **karara bağlandı** (KARARLAR 2026-09-21). Yorum, var olmayan bir kapıya işaret ediyor | `src/app/kosullar/page.tsx:15`. Metin düzeltilirken yorum da güncellenmeli: *"içeride sürdürülür; son revizyon: …"* |
|
||||
| `24-ceo-kapanis.md` T5: makbuz e-postası **tetiğe** bağlı ("test ödemesi başarılı olursa") | Yön. m.9/1 bunu **yürürlükteki yükümlülük** kılıyor; tetik değil | B5 |
|
||||
|
||||
---
|
||||
|
||||
## Ek · Kaybolan KARARLAR.md kayıtlarının tam metni (§0 kurtarma)
|
||||
|
||||
> Bu iki blok, oturumumun ilk okumasında `docs/ekip/KARARLAR.md`'nin sonunda duruyordu ve şu an dosyada yok. Olduğu gibi dosyanın **sonuna** geri yapıştırılabilir. Sahibi `ceo`; ben dosyaya yazmadım.
|
||||
|
||||
```
|
||||
## 2026-09-22 — Sevk sorunu: sıra "önce çelişkiyi kaldır, sonra ölü ucu bağla", yeniden tasarım ertelendi
|
||||
- Karar: 22 Eyl gündüz oturumunda dört ajanın (analitik/tasarım/marka/yapay zekâ) tek soruya verdiği dört farklı "en yüksek etkili iş" önerisi şu sıraya kondu ve bu hafta **5 iş** onaylandı: **P1** sezon çelişkisi (`icerik/sezon-celiskisi`), **P2** `liste_uretim_basladi` olayı (`olcum/liste-uretim-basladi`), **P3** + ölü ucu (`funnel/arti-olu-ucu`), **P4** girişli kullanıcıya kalıcı `/listem` girişi + giriş callback'i (`funnel/listem-girisi`), **P5** tadımlık CTA'sının yanlış vaadi ve hedefi (`icerik/tadimlik-vaat`). Hepsi S; P2 önce merge edilir ve P3/P4 ile **aynı yayında** çıkar (payda olmadan huni değişikliği okunamaz). Sezon dışı olduğu için A/B yok, oran yok: kabul ölçüsü **adet** (haftalık olay sayısı).
|
||||
- Yetki: [KARAR] (P2, P3, P4; P1 ve P5'in yanlış/çelişkili cümleyi kaldıran kısmı) · [BİLAL] (P1'de bandın yeni sezon metni, P5'te tadımlık CTA'sının yeni cümlesi — ayrı `[Bilal]` commit'i olarak hazırlanır)
|
||||
- Gerekçe: Dört iddia da koddan doğrulandı — navbar'da `/listem` linki yok ve giriş callback'i `"/"` (`src/components/site-header.tsx:8-38`, `src/features/kullanici/components/user-nav.tsx:45-64`, `src/features/kullanici/components/giris-karti.tsx:18-19`); + kapısı sihirbazın 3 adımını doldurtup `profilTamamlandi`'nın `null` dalında bırakıyor (`src/features/liste/components/program-ekle-butonu.tsx:82`, `liste-cekmecesi.tsx:293`, `use-tercih-profili.ts:346`, toast `tercih-profili-kapisi.tsx:238`) ve bu, 30g'deki en büyük sıra kaynağı (14/28 olay, `01-ai-listesi-hunisi` §1d); üst bant bugün "Tercih dönemi sona erdi" (`src/components/site-top-banner.tsx:7-8,64`) derken aynı sayfada CTA "Tercih dönemi bitmeden yerini al" diyor (`src/features/pazarlama/components/hero-focus-button.tsx:45,65` — her iki dalda da); tadımlık CTA'sı "24 satırın tamamı için giriş yap" diyor ama maske 3 satır açıyor ve callback `/sonuc`'a düşüyor (`tadimlik-satiri.tsx:111,186`, `src/lib/rapor-maske.ts:12`).
|
||||
- Yerine geçtiği karar: —
|
||||
|
||||
## 2026-09-22 — `/sonuc`'ta LLM'siz 24 satırlık önizleme ve diğer yeniden tasarımlar bu hafta yapılmaz
|
||||
- Karar: Yapay zekâ mühendisinin "senin 24'lük iskeletin" önizlemesi (0 LLM, `04-uretim-engelleri` §3), tasarımcının Ö2 (mobil katalog satırı), Ö4 (`/sonuc` sıralamasının tersine çevrilmesi) ve markanın H2/H3 (hero alt başlığı, katalog CTA metni) işleri **ertelendi**; sıradaki turda önce CTO şartnamesi yazılır. Ertelemeyen tek istisna `/sonuc` H1'i (`src/app/sonuc/page.tsx:98-102` arasında bugün hiç `<h1>` yok) — gelecek turun ilk işidir. Deneme maskesinin gevşetilmesi (3→8 satır) gelir modeli kararıdır, Bilal'e bırakıldı.
|
||||
- Yetki: [KARAR] (erteleme) · [BİLAL] (maske/gelir kararı)
|
||||
- Gerekçe: Sezon 10 Ağu 2026'da kapandı; hız ~95 ziyaret/hafta ve haftada ~0,5 liste (`01-ai-listesi-hunisi` §5.1). Bu hacimde hiçbir oran makul sürede okunamıyor (`§5.2`: en iyi aday bile ~6 hafta, `/listem`→liste ~36 hafta) ve A/B her kolu 47 ziyaret/haftaya düşürür. Bu hafta onaylanan 5 iş "ölçülemeyecek deney" değil, koddan kesin gösterilmiş **kusur ve çelişki** düzeltmesidir. Kurucunun inceleme kapasitesi günde 1–2 saat (`docs/urun/vizyon.md`); onaylanan iş = inceleme borcu.
|
||||
- Yerine geçtiği karar: —
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Kaynakça (hepsi bu turda açılıp okundu)
|
||||
|
||||
| Kaynak | Adres | Not |
|
||||
|---|---|---|
|
||||
| Elektronik Ticaret Aracı Hizmet Sağlayıcı ve Elektronik Ticaret Hizmet Sağlayıcılar Hakkında Yönetmelik | `resmigazete.gov.tr/eskiler/2022/12/20221229-5.htm` (RG 29.12.2022/32058) | m.2, m.4/h, **m.5**, m.7, m.8, m.9, **m.34** okundu |
|
||||
| Mesafeli Sözleşmeler Yönetmeliği | `resmigazete.gov.tr/eskiler/2014/11/20141127-6.htm` (RG 27.11.2014/29188) | **m.5**, **m.15** okundu. *Sonraki değişiklikleri kontrol edilmedi → **doğrulanmalı*** |
|
||||
| Elektronik Ticaret Bilgi Sistemi ve Bildirim Yükümlülükleri Hakkında Tebliğ | `resmigazete.gov.tr/eskiler/2017/08/20170811-7.htm` (RG 11.08.2017/30151) | **m.5**, m.6 okundu. *2022–23 e-ticaret paketinden sonraki hâli → **doğrulanmalı*** |
|
||||
| Elektronik Ticaretin Düzenlenmesi Hakkında Kanun (6563) | `mevzuat.gov.tr` — MevzuatNo=6563 | Yönetmeliğin dayanağı; künye doğrulandı, madde metni gömülü fontu çözülemediği için **alıntılanmadı** |
|
||||
|
||||
**Yapılmayanlar (sınır gereği):** canlıya istek/tarama/ödeme denemesi yok; secret değeri okunmadı; `pnpm audit` **koşturulmadı** (disk kuralı: `pnpm install`/`build` yasak, lockfile'sız audit anlamsız) — bağımsız bir bağımlılık turunda yapılmalı.
|
||||
|
||||
---
|
||||
|
||||
## Bilal'den istenen (1 madde — CEO'nun indirdiği tek madde; artırılmadı)
|
||||
|
||||
1. **Satıcı kimliği: 5 satır.** `/iletisim` sayfasına girecek beş alanı yaz — ① ticaret unvanın *(ya da esnaf/sanatkâr kaydındaysan ad-soyad)*, ② iş yeri merkez adresin, ③ **MERSİS numaran** *(tacirsen)* **ya da vergi kimlik numaran** *(esnafsan)*, ④ telefon numaran, ⑤ KEP adresin. Metin `docs/gece-vardiyasi/2026-09-22/31-guvenlik-satici-kimligi.md` §1.4'te hazır, `TODO-BILAL` yerlerine yapıştırılacak. *Vergi dairesi adı listeden çıktı (mevzuat istemiyor), yerine telefon ve KEP girdi.* **~5 dk.** — Bu bilgileri üretemiyorsan (kayıt henüz yoksa) tek cevap yeter: *"esnaf/tacir/şirket değilim"*; o zaman sıradaki iş mali müşavirle 1 görüşme olur, sayfa bekler.
|
||||
|
||||
---
|
||||
|
||||
## Ek 2 · §0'a düzeltme (rapor yazıldıktan sonra, aynı tur içinde)
|
||||
|
||||
Raporu kapattıktan sonraki kontrolde durum kısmen değişti — kayıp **tamamen** değil, **kısmen** onarıldı:
|
||||
|
||||
| Dosya | §0'daki durum | Şu anki durum (son kontrol) |
|
||||
|---|---|---|
|
||||
| `AGENTS.md` | Search Console bölümü kayıp | **Geri geldi** — paralel çalışan ajan bölümü yeniden yazdı (`git diff AGENTS.md` = +13 satır, "Yayın sonrası arama motoru bildirimi (zorunlu)"). Not: yeni metinde CEO'nun C4'teki `curl \| grep -c <slug>` sitemap kuralı **yok**; `25-seo-duzeltme.md` §2'deki iki ayaklı kural da yok — yerine "canlıda 200 dönen adres" kuralı var. **Bu iki kural aynı şey değil**, eksik olan ayak yeniden yazılmalı |
|
||||
| `docs/ekip/KARARLAR.md` | 2 adet 22 Eylül kaydı kayıp | **Hâlâ kayıp** (`grep "^## 2026-09-22"` = 0). §5'teki metin geri yapıştırılmalı |
|
||||
| `docs/ekip/BACKLOG.md` | 22 Eylül güncellemesi kayıp | **Hâlâ kayıp** (HEAD ile fark yok) |
|
||||
| `content/rehber/veliler-icin-tercih-rehberi.md` | Veli kapanışı + tablo kayıp | **Hâlâ kayıp** (`grep "birlikte doldurmanız"` = 0, tablo satırı = 0) |
|
||||
|
||||
**B1 bulgusunun önemi düşmüyor:** kaybın kendisi gerçekleşti, üç dosyada hâlâ duruyor ve onarım şans eseri (başka bir ajanın aynı işi tekrar yapması) oldu. §0'daki iki süreç önerisi aynen geçerli.
|
||||
Reference in New Issue
Block a user