> **Kuruluma başlıyorsan `00-BURADAN-BASLA.md` dosyasını aç.**
> Bu dosya referans; oradaki 6 adım seni buraya yönlendiriyor.

# MAGOSTORE MARKETPLACE

Botble/Laravel tabanlı çok satıcılı pazaryeri. Bu paket, projenin bugüne kadar
yapılan yazılım, mimari ve tasarım işini içeriyor.

**Nereden başlanır:** `12-ILK-URUN-CIKIS-REHBERI.md` — sırayla git, kutucukları
işaretle. Diğer dokümanlar referans; runbook seni onlara yönlendiriyor.

**İki iş var:**
1. Botble ile hızlı canlıya çıkış → `12-ILK-URUN-CIKIS-REHBERI.md`
2. Paralel sıfırdan yazım → `sifirdan/00-MIMARI.md`

---

## Paket içeriği

```
00-eksik-dosyalar/     Yedekte OLMAYAN kritik dosyalar — İLK BUNU OKU
00-YOL-HARITASI.md     Tüm fazlar, durum tablosu
01-FAZ1-...            cPanel kurulumu, 11 adım
02-FAZ2-...            İş kuralları karar seti (11 karar onay bekliyor)
03..06-FAZ3...         Para mimarisi, iyzico, alt üye, kargo, iş günü
08-FAZ3-KAPANIS.md     Para akışı uçtan uca + devreye alma sırası
09-FAZ4-...            Ortak katalog ve buybox

app/                   35 PHP sınıfı
database/migrations/   7 migration
tasarim/               4 ekran prototipi + jeton sistemi
tema/                  CANLI SİTEYE KURULACAK tasarım dosyaları
10-TEMA-KURULUM.md     Tasarımı canlıya alma, 7 adım (admin/satıcı/müşteri)
11-BAGIMSIZLASMA.md    Sürüm dondurma + Botble yüzeyini küçültme stratejisi
12-ILK-URUN-...        ⭐ BUGÜN İZLENECEK RUNBOOK — 8 aşama, ilk siparişe kadar
sifirdan/              İkinci iş: sıfırdan yazım mimarisi (Laravel + Filament)
magostore-rebrand.php     Marka değişim betiği
magostore-temizlik.sh     Yedek temizleme betiği
env.magostore.example     .env şablonu
komisyon-ve-kesintiler.xlsx   Komisyon tablosu + hakediş simülasyonu
```

---

## Devreye alma sırası

```bash
# 0) Eksik dosyaları kur (artisan yok, bu olmadan hiçbir komut çalışmaz)
cp 00-eksik-dosyalar/artisan ~/magostore/
cp 00-eksik-dosyalar/bootstrap/providers.php ~/magostore/bootstrap/
cp -r 00-eksik-dosyalar/database ~/magostore/
chmod +x ~/magostore/artisan

# 1) Yedeği temizle (273 MB çöp var), cPanel'e kur
bash magostore-temizlik.sh --apply
# → 01-FAZ1-cpanel-kurulum.md, 11 adım

# 2) Markayı değiştir
php magostore-rebrand.php            # ön izleme
php magostore-rebrand.php --apply

# 3) Magostore kodunu kur
cp -r app/Magostore ~/magostore/app/
cp app/Providers/MagostoreServiceProvider.php ~/magostore/app/Providers/
cp app/Console/Commands/*.php ~/magostore/app/Console/Commands/
cp database/migrations/*.php ~/magostore/database/migrations/

# bootstrap/providers.php içine ekle:
#   App\Providers\MagostoreServiceProvider::class,

php artisan migrate
php artisan optimize:clear && php artisan config:cache

# 4) TASARIMI KUR (bkz. 10-TEMA-KURULUM.md — bir öğleden sonra iş)
cp -r tema/public/css/magostore.css   ~/magostore/platform/themes/farmart/public/css/
cp tema/functions/magostore.php       ~/magostore/platform/themes/farmart/functions/
cp -r tema/views/*                 ~/magostore/platform/themes/farmart/views/
cp -r tema/partials/*              ~/magostore/platform/themes/farmart/partials/
# functions/functions.php sonuna:  require __DIR__ . '/magostore.php';
php artisan cms:theme:assets:publish && php artisan optimize:clear
# sonra panelden renkleri gir — değerler 10-TEMA-KURULUM.md'de

# 5) Resmî tatilleri gir (bkz. 06-FAZ3c)
# 6) Satıcıları iyzico'ya kaydet
php artisan magostore:sync-submerchants
```

### Cron

```
* * * * *      php ~/magostore/artisan schedule:run
*/10 * * * *   php ~/magostore/artisan magostore:reconcile-payments
30 8 * * *     php ~/magostore/artisan magostore:sync-submerchants
0 9 * * 1-5    php ~/magostore/artisan magostore:approve-due
15 3 * * *     php ~/magostore/artisan magostore:recompute-buybox --stale=24
```

**`magostore:approve-due` çalışmazsa satıcılar hiç para almaz.** iyzico kontrol
panelinde ürün onayı fonksiyonu yok, onay yalnızca API'den verilebiliyor.
Bu komutu izlemeye al.

---

## ⚠ Kurulumdan hemen sonra yapılacak

`composer.json` içinde **14 paket `*@dev`** olarak işaretli — yani "en son
geliştirme sürümü". Biri `composer update` çalıştırırsa ne indiğini kimse
bilmiyor. Gerçek kilit `composer.lock` dosyası.

```
1. composer.lock'u sürüm kontrolüne al, ASLA silme
2. composer install  → evet    composer update → YASAK
3. Ayda bir: composer audit  (hiçbir şey değiştirmez, açık listeler)
```

Detay: `11-BAGIMSIZLASMA.md`

## Durum

| Faz | Durum |
|---|---|
| 0 · Temizlik ve marka | ✅ betikler hazır |
| 1 · cPanel kurulumu | ✅ rehber hazır |
| 2 · İş kuralları | ⏳ 11 ticari karar bekliyor |
| 3 · Para akışı + iyzico | ✅ kod tamam, sandbox doğrulaması bekliyor |
| 4 · Katalog + buybox | ◐ motor tamam, okuma yolu bağlanacak |
| 5 · Hakediş v2 | ⏸ |
| 6 · Reklam | ⏸ |
| 7 · Fraud, uyuşmazlık, SLA | ⏸ |
| 8 · Yapay zekâ | ⏸ |
| Tasarım | ✅ 4 prototip + jetonlar |
| Tasarımın canlıya alınması | ✅ tema dosyaları hazır, 5 adım |

---

## Canlıya çıkmanın önündeki engeller

Altısından **dördü kod dışı** ve paralel yürütülebilir:

1. **Satıcı sözleşmesindeki ticari temsilci maddesi** — avukat.
   Bu madde olmadan havuz/temsilci modeli hukuki dayanağını kaybediyor.
2. **Faz 2'deki 11 ticari karar** — yönetim. `komisyon-ve-kesintiler.xlsx`
   içindeki `Karar Takip` sekmesinde kırmızı işaretli.
3. **Sandbox'ın pazaryeri olarak tanımlanması** — iyzico'nun manuel işlemi,
   entegrasyon@iyzico.com. Bugün yazılmazsa kod hazır olsa da test edilemez.
4. **Stopaj matrahı teyidi** — mali müşavir. iyzico dokümanındaki örnek bizim
   formülle uyuşmuyor, %4,1 fark var. Detay: `04-FAZ3a-REVIZE`.
5. **En az bir kargo entegrasyonu** — Yurtiçi/Aras/MNG/Sürat/PTT.
6. **ETBİS kaydı** — idari.

---

## Mimari kararlar — özet

Bunlar sonradan değiştirilmesi pahalı olan kararlar. Gerekçeleri ilgili
dokümanlarda.

**Para çift taraflı defterde tutuluyor.** `mp_customer_revenues.current_balance`
gibi satır üzerinde bakiye tutan yapı kullanılmıyor; bozulunca geri
hesaplanamıyor. Defter tek gerçek kaynak, mevcut tablolar projeksiyon.

**Hakediş fişi teslim anında yazılıyor, ödeme anında değil.** Yasal zorunluluk:
6563 s. Kanun ödeme yükümlülüğünü "bedelin tasarrufa girdiği **ve** siparişin
alıcıya ulaştığı" tarihe bağlıyor.

**İade mahsupla çözülüyor, para tutarak değil.** Cayma hakkı 14 gün ama ödeme
5 iş günü içinde zorunlu — yani parayı iade penceresi kapanmadan ödemek
gerekiyor. Borç ve alacak aynı hesapta yaşadığı için mahsup kendiliğinden
oluyor.

**Bakiye önbelleği artımlı değil, her seferinde defterden yeniden hesaplanıyor.**
Yavaş ama kendini onarıyor.

**Buybox kararı açıklanabilir.** Gerekçe ve elenen tekliflerin sebepleri
kaydediliyor. Kapalı kutu algoritma satıcı itirazına cevap verilemez hale
getirir.

**Kataloğa otomatik eşleştirme yalnızca doğrulanmış GTIN tam eşleşmesinde.**
Başlık benzerliği sadece öneri üretiyor. Yanlış eşleştirmenin maliyeti,
eşleştirmemenin maliyetinden kat kat yüksek.

**Eklenti dosyalarına dokunulmadı.** Bağlantı Botble'ın hook sistemi üzerinden.
Güncelleme geldiğinde bu kod kırılmıyor.

---

## Sıradaki iş

Yazılım tarafında: Faz 4'ün okuma yolu — kategori listesi, arama, ürün detay ve
sepetin katalog + kazanan teklif üzerinden çalışacak şekilde bağlanması.
Tahmin 4–6 hafta. Motor ve tasarım hazır olduğu için tasarım kararı içermiyor.

Bir de `09-FAZ4` dokümanının son bölümündeki not atlanmamalı: ortak katalogda
**yorumlar katalog kaydına, satıcı puanı mağazaya** ait olmalı. `ec_reviews`
şu anda ikisini tek kayıtta tutuyor; okuma yolu işiyle birlikte ayrılması
gerekiyor.
