# راهنمای استقرار NOAH Logistics (fleet-api) روی fleetcontroll.com

این بک‌اند به‌صورت یک ریپازیتوری گیت آماده شده. برای استقرار، آن را روی سرور
clone می‌کنیم و برای آپدیت‌های بعدی فقط `git pull` کافیه — دیگه نیازی به
فایل zip جدید نیست.

## ۱. پیش‌نیازهای سرور

- PHP نسخه ۸.۳ به بالا، با اکستنشن‌های: `mbstring`, `pdo_mysql`, `openssl`,
  `tokenizer`, `xml`, `ctype`, `json`, `bcmath`, `fileinfo`, `curl`, `gd`
- Composer نسخه ۲
- MySQL نسخه ۸ به بالا (یک دیتابیس + یوزر از قبل ساخته‌شده)
- دسترسی SSH (تأیید شده که وجود داره)
- یک وب‌سرور (Apache یا nginx) که بتونه document root رو روی پوشه‌ی
  `public/` همین پروژه تنظیم کنه — **نه** روی ریشه‌ی پروژه
- گواهی SSL برای دامنه‌ی `fleetcontroll.com` (از طریق Let's Encrypt توی
  پنل هاست معمولاً کافیه)

## ۲. کلون کردن ریپازیتوری

```bash
git clone <repo-url> fleet-api
cd fleet-api
```

(اگه ریپو هنوز جایی push نشده باشه، به‌جاش یه فایل فشرده از پوشه‌ی `.git`
براتون می‌فرستیم — اگه `<repo-url>` در دسترس نبود، بگید.)

## ۳. نصب وابستگی‌ها

```bash
composer install --no-dev --optimize-autoloader
```

## ۴. ساخت فایل `.env`

فایل `.env.production` (همراه این راهنما فرستاده شده) رو کپی کنید روی
`.env`، بعد فیلدهای خالی (اطلاعات دیتابیس، ایمیل و غیره) رو پر کنید —
توضیحات هر مقدار و اینکه از کجا باید گرفته بشه، توی همون فایل نوشته شده.

```bash
cp .env.production .env
php artisan key:generate
```

## ۵. فایل سرویس‌اکانت Firebase

برای فعال بودن نوتیفیکیشن‌های push، یه فایل JSON سرویس‌اکانت Firebase
لازمه. این فایل **توی گیت نیست** (چون سکرته)، جدا و از یه کانال امن
(نه ایمیل یا چت ساده) براتون فرستاده می‌شه.

مسیر قرارگیری فایل:

```
storage/app/firebase-service-account.json
```

بعد توی `.env`:

```
FIREBASE_CREDENTIALS=/full/path/to/fleet-api/storage/app/firebase-service-account.json
```

## ۶. دیتابیس

```bash
php artisan migrate
```

این دستور همه‌ی migration‌ها رو از صفر اجرا می‌کنه، شامل جدیدترین‌ها هم
(ستون‌های مقصد/یادداشت سفر، تشخیص آسیب با هوش مصنوعی). نیازی به اجرای
دستی SQL نیست — اون فقط برای سرور قبلی بود که SSH نداشت.

بعد اولین کاربر ادمین رو بسازید (یا از طریق `php artisan tinker`، یا از ما
یه دستور seed بخواید) — لطفاً داده‌های کاربر از سرور قدیم کپی نشه، این
باید یه دیتابیس تولید کاملاً تمیز باشه.

## ۷. symlink و دسترسی‌های storage

```bash
php artisan storage:link
chmod -R 775 storage bootstrap/cache
```

## ۸. تنظیم document root وب‌سرور

تنظیمات vhost رو طوری بذارید که document root روی این مسیر باشه:

```
/path/to/fleet-api/public
```

`.htaccess` استاندارد لاراول (از قبل توی `public/` هست) یا معادل nginx
(`try_files` که به `index.php` هدایت بشه) — هرکدوم که متناسب با استک
هاستینگ‌تونه.

## ۹. SSL

یه گواهی SSL برای `fleetcontroll.com` (و `www.` اگه استفاده می‌شه) صادر
کنید و HTTPS رو اجباری کنید. پنل ادمین یه PWA هست و نوتیفیکیشن‌های push
اصلاً بدون HTTPS کار نمی‌کنن.

## ۱۰. Queue worker (در صورت نیاز)

فایل `config/queue.php` رو چک کنید — اگه `QUEUE_CONNECTION` روی `sync`
نیست، باید یه پروسه‌ی worker (یا supervisor/cron) در حال اجرا باشه:

```bash
php artisan queue:work --daemon
```

## ۱۱. تست نهایی

- آدرس `https://fleetcontroll.com/admin-panel.html` رو باز کنید — باید
  صفحه‌ی لاگین نشون داده بشه.
- لاگین کنید و مطمئن بشید پنل‌های مپ زنده، سفرها و تحویل‌گیری‌ها بدون
  خطا لود می‌شن.
- یه تحویل‌گیری (handover) تستی از اپ موبایل بفرستید و مطمئن بشید نتیجه‌ی
  تشخیص آسیب با هوش مصنوعی نمایش داده می‌شه (یعنی `GEMINI_API_KEY` درست
  تنظیم شده).

## آپدیت‌های بعدی

از این به بعد، انتشار نسخه‌ی جدید فقط همینه:

```bash
git pull
composer install --no-dev --optimize-autoloader   # فقط اگه composer.json تغییر کرده
php artisan migrate                                 # فقط اگه migration جدید اضافه شده
```

## نکته درباره‌ی اپ موبایل

این ریپازیتوری فقط شامل بک‌اند + پنل ادمینه. اپ موبایل راننده
(`noah-driver`) یه پروژه‌ی جدای React Native/Expo هست با فرآیند build
خودش (EAS Build) — نیازی نیست روی این سرور مستقر بشه و چیزی هم از این
بسته لازم نداره.
