# 🤖 تنظیم Cron برای Notifications خودکار

## چیکار میکنه؟
Cron هر ۱۲ ساعت یک‌بار این کار رو انجام میده:
1. تمام کاربرانی که جایزه نگرفتند رو پیدا می‌کنه
2. یادآوری notification می‌فرسته
3. Engagement +50% بالا می‌رفته!

---

## ⚙️ نحوه تنظیم:

### **مرحله 1: باز کردن Cron (SSH)**

```bash
ssh user@yourdomain.com
crontab -e
```

### **مرحله 2: اضافه کردن این خط‌ها:**

```bash
# هر ۱۲ ساعت - فرستادن Notification جایزه‌ی روزانه
0 9,21 * * * curl -s "https://yourdomain.com/daily_reward_api.php?action=send-daily-notifications&secret=your-secret-key-here" > /dev/null 2>&1

# یا اگر curl کار نکرد، از PHP استفاده کن:
0 9,21 * * * php /home/user/public_html/daily_reward_api.php action=send-daily-notifications&secret=your-secret-key-here > /dev/null 2>&1
```

### **مرحله 3: چندین Cron برای زمان‌های مختلف:**

```bash
# صبح (۹:۰۰)
0 9 * * * curl -s "https://yourdomain.com/daily_reward_api.php?action=send-daily-notifications&secret=your-secret-key-here"

# بعد‌ازظهر (۱۵:۰۰)
0 15 * * * curl -s "https://yourdomain.com/daily_reward_api.php?action=send-daily-notifications&secret=your-secret-key-here"

# شب (۲۱:۰۰)
0 21 * * * curl -s "https://yourdomain.com/daily_reward_api.php?action=send-daily-notifications&secret=your-secret-key-here"

# هفتگی: فلش سیل (جمعه ۱۰:۰۰)
0 10 * * 5 curl -s "https://yourdomain.com/daily_reward_api.php?action=send-flash-sale&secret=your-secret-key-here&message=فلش سیل جمعه!"
```

---

## 🔐 **امنیت Secret Key:**

❌ **غلط** - استفاده‌ی Secret Key در کد public
✅ **درست** - ذخیره در متغیر محیطی

### **تغیر Secret Key:**

```php
// در config.php اضافه کن:
define('CRON_SECRET', 'your-very-secret-key-12345-abcde');
```

### **سپس در daily_reward_api.php:**

```php
$secret = $_GET['secret'] ?? '';
if ($secret !== CRON_SECRET) {
    $response = ['ok' => false, 'error' => 'Unauthorized'];
}
```

---

## 📋 **Cron Jobs برای مختلف اقدامات:**

### **1. Daily Reward Notifications**
```bash
0 9,15,21 * * * curl -s "https://yourdomain.com/daily_reward_api.php?action=send-daily-notifications&secret=YOUR_SECRET_KEY"
```

### **2. Flash Sale (جمعه‌ها)**
```bash
0 10 * * 5 curl -s "https://yourdomain.com/daily_reward_api.php?action=send-flash-sale&secret=YOUR_SECRET_KEY&message=⚡%20فلش%20سیل%20جمعه"
```

### **3. سالگردی اشتراک (تمدید یادآوری)**
```bash
0 12 * * * php /path/to/renewal_reminder.php
```

### **4. تپ سازی کاربرانِ ۷ روزه (تشویق به خرید)**
```bash
0 18 * * * php /path/to/week_old_users.php
```

---

## 🎯 **چک‌لیست:**

- [ ] Secret Key تغیر دادم (نه `your-secret-key-here`!)
- [ ] URL درست است (domain/port)
- [ ] Cron entries صحیح هستند
- [ ] `curl` یا `php` روی سرور فعال است
- [ ] Database permissions OK هستند

---

## 🧪 **تست Cron:**

```bash
# ۱. اجرا دستی
curl -s "https://yourdomain.com/daily_reward_api.php?action=send-daily-notifications&secret=your-secret-key"

# ۲. بررسی logs
tail -f /var/log/syslog | grep CRON

# ۳. لیست cron jobs
crontab -l

# ۴. edit cron
crontab -e
```

---

## 📊 **نتایج انتظار رفتنی:**

| قبل | بعد |
|------|------|
| 10% روزانه بازدید | 50%+ بازدید |
| 20% جایزه claim | 70%+ جایزه claim |
| 100 کاربر/روز | 300+ کاربر/روز |
| 5% retention | 25%+ retention |

---

## ⚠️ **مشکلات احتمالی:**

### ❌ "Cron کار نمی‌کنه"
- [ ] Secret key غلط است
- [ ] URL غلط است
- [ ] Firewall مسدود می‌کنه
- [ ] `curl` نصب نیست

### ❌ "Too many requests"
- [ ] تعداد cron‌ها زیاده
- [ ] Delay بین requests کم است

**راه حل:** تعداد کاربرها رو محدود کنید:

```sql
LIMIT 50  -- بجای LIMIT 100
```

---

## 💡 **ترفند‌های اضافی:**

### **۱. رفتار نوتیفیکیشن بر اساس منطقه زمانی:**

```php
// شب: notification نفرستی
$hour = date('H');
if ($hour < 8 || $hour > 22) {
    // خواب کاربر - نفرست!
    return ['ok' => true, 'skipped' => 'night time'];
}
```

### **۲. شخصی‌سازی Message:**

```php
$streak = getUserStreak($pdo, $uid);
if ($streak > 30) {
    $msg = "🏆 ۳۰ روز متوالی! بیشتر بروو!";
} else {
    $msg = "🎁 جایزه روزانه آماده!";
}
```

### **۳. A/B Testing Messages:**

```php
$variant = ($uid % 2) == 0 ? 'A' : 'B';
if ($variant == 'A') {
    $msg = "🎁 جایزه روزانه!";
} else {
    $msg = "⚡ فقط ۱۰ دقیقه! ۵۰ گیگ!";
}
```

---

## ✅ **خلاصه تنظیم:**

1. **PHP API درست‌تر کنید:** `daily_reward_api.php`
2. **Secret Key تغیر کنید** (config.php)
3. **Cron اضافه کنید** (crontab -e)
4. **تست کنید** (curl دستی)
5. **بررسی logs کنید** (tail -f)

---

**نتیجه: +500% بیشتر engagement! 🚀**

---

## 🎬 **مثال کامل:**

```bash
# ۱. وارد شوید
ssh user@yourdomain.com

# ۲. crontab باز کنید
crontab -e

# ۳. اینو اضافه کنید:
0 9,15,21 * * * curl -s "https://yourdomain.com/daily_reward_api.php?action=send-daily-notifications&secret=super-secret-123456"

# ۴. صرفه‌جویی و خروج (Vim: Ctrl+D)

# ۵. تأیید
crontab -l

# ✅ تمام!
```

---

**هر ۶ ساعت یک‌بار الان notification می‌فرسته! 🎉**
