# Yemeksepeti API v2 Listener — Kurulum Rehberi

## 🔧 Gereksinimler

- **Python 3.8+** (Windows'ta `python --version` ile kontrol edin)
- **pip** (Python paket yöneticisi)

---

## 1. Python Paketlerini Kur

Komut satırında (CMD veya PowerShell):

```bash
cd rpa\yemeksepeti
pip install requests python-dotenv
```

---

## 2. `.env` Dosyasını Oluştur

`.env.example` dosyasını kopyalayarak `.env` oluşturun:

```bash
copy .env.example .env
```

---

## 3. Kimlik Doğrulama (İKİ YÖNTEM)

### Yöntem 1: OAuth 2.0 Otomatik Login (ÖNERİLEN ✅)

`.env` dosyasına Yemeksepeti Vendor Panel giriş bilgilerinizi yazın:

```env
YS_USERNAME=sizin_kullanici_adiniz
YS_PASSWORD=sizin_sifreniz
```

> ✅ Bu yöntemle token **otomatik olarak alınır ve süresi dolmadan yenilenir**. Elle müdahale gerekmez!
>
> Token geçerlilik süresi ~2 saattir. Sistem süresi dolmadan 5 dakika önce kendisi yeni token alır.

---

### Yöntem 2: Statik Token (Yedek / Fallback)

OAuth bilgileri tanımlı değilse veya login başarısız olursa bu yöntem kullanılır:

1. **Chrome** ile Yemeksepeti Vendor paneline giriş yapın
2. **F12** → **Application** sekmesi → **Cookies** → `accessToken` değerini kopyalayın
3. `.env` dosyasındaki `YS_ACCESS_TOKEN=` satırına yapıştırın

> ⚠️ Statik token belirli bir süre sonra expire olur. Expire olursa tekrar aynı adımları uygulayın ve `.env`'deki token'ı güncelleyin. **Servisi yeniden başlatmanıza gerek yok** — servis `.env` dosyasını otomatik yeniden okur (hot-reload).

---

## 4. Servisi Çalıştır

```bash
cd rpa\yemeksepeti
python ys_api_listener.py
```

### OAuth Modunda Beklenen Çıktı

```
╔══════════════════════════════════════════════════════════╗
║   Yemeksepeti Vendor API v2 — Sipariş Listener         ║
║   Çıkış: Ctrl+C                                       ║
╚══════════════════════════════════════════════════════════╝

[...] INFO     🔐 OAuth 2.0 modu aktif (YS_USERNAME/YS_PASSWORD tanımlı).
[...] INFO     ✅ OAuth login başarılı! Token alındı (geçerlilik: 120 dk, yenileme: 5 dk önce)
[...] INFO     SQLite veritabanı hazır: ...processed_orders.db
[...] INFO     🚀 Yemeksepeti API Listener başlatıldı
[...] INFO        Auth     : OAuth 2.0
```

### Statik Token Modunda Beklenen Çıktı

```
[...] INFO     🔑 Statik token modu (YS_ACCESS_TOKEN).
[...] INFO     🚀 Yemeksepeti API Listener başlatıldı
[...] INFO        Auth     : Statik Token
```

---

## 5. Arka Planda Çalıştırma (Opsiyonel)

### Windows — Başlangıçta otomatik çalıştırma

`start_listener.bat` dosyası oluşturun:

```bat
@echo off
title Yemeksepeti API Listener
cd /d "%~dp0"
python ys_api_listener.py
pause
```

Bu `.bat` dosyasını `shell:startup` klasörüne kısayol olarak ekleyebilirsiniz.

---

## 6. Yapılandırma Seçenekleri

`.env` dosyasındaki ayarlar:

| Değişken | Açıklama | Varsayılan |
|---|---|---|
| `YS_USERNAME` | OAuth 2.0 kullanıcı adı | - |
| `YS_PASSWORD` | OAuth 2.0 şifre | - |
| `YS_ACCESS_TOKEN` | Statik JWT Token (yedek) | - |
| `YS_API_BASE` | Yemeksepeti API adresi | `https://vendor-api-tr...` |
| `YS_LOGIN_URL` | OAuth login endpoint | `https://vendor-api-tr.../v2/login` |
| `TOKEN_REFRESH_MARGIN` | Yenileme marjı (saniye) | `300` (5 dk) |
| `API_ORDERS_URL` | Panel sipariş endpoint'i | `https://panel.toptansu.com.tr/...` |
| `API_STATUS_URL` | Panel bot durum endpoint'i | `https://panel.toptansu.com.tr/...` |
| `POLL_INTERVAL` | Sorgulama aralığı (saniye) | `1` |
| `LOG_LEVEL` | Log seviyesi | `INFO` |
| `BOT_NAME` | Bot ismi (heartbeat) | `ys-api-listener` |

---

## 7. Log Dosyaları

Loglar `rpa/yemeksepeti/logs/ys_listener.log` dosyasına yazılır (5 MB × 3 yedek, otomatik döner).

---

## 8. Sorun Giderme

| Sorun | Çözüm |
|---|---|
| `OAuth login başarısız` | `YS_USERNAME` ve `YS_PASSWORD`'ı kontrol edin |
| `Token geçersiz (401/403)` | OAuth bilgileri doğru mu? Fallback: `.env`'deki token'ı yenileyin |
| `Bağlantı hatası` | İnternet bağlantınızı kontrol edin |
| `Modül bulunamadı` | `pip install requests python-dotenv` |
| Sipariş panelde görünmüyor | `logs/ys_listener.log` dosyasını kontrol edin |

---

## 9. Durdurmak İçin

Konsolda **Ctrl+C** tuşlayın. Servis düzgünce kapanır.
