ifnex/DEPLOYMENT.md
Kazem Alghasi 02c29db696 feat(core): implement order approval flow, credit system, and import invoicing
Introduce a comprehensive set of commercial features including a multi-step
order approval workflow, customer credit management, and specialized
import service invoicing.

Key changes:
- Implement `pending_approval` and `approved` shipment statuses to allow
  staff verification before customer payment.
- Add a credit system to `User` model with `credit_limit` and `credit_used`
  to manage customer balances and debts.
- Develop a new `importInvoice` PDF generation service following the
  "Sheet ENG Invoice" specification for import services.
- Add Filament resources for managing Audit Logs, Commitment Forms,
  Customer Credits, and Shipment Checklists.
- Implement staff-specific APIs for order approval/rejection and
  customer financial status monitoring.
- Integrate Kavenegar SMS service for mobile verification and notifications.
- Add bulk tracking import functionality via CSV/Excel.
- Update WordPress bridge assets (CSS/JS) to support the new multi-step
  order form UI and updated redirection logic.
- Update deployment configurations and documentation to reflect new
  production domains and feature sets.
2026-09-03 06:04:20 +03:30

258 lines
6.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# راهنمای استقرار IFNEX
> **آخرین بروزرسانی:** 2026-09-03
---
## محیط‌ها
| محیط | دامنه | نقش |
|-------|-------|------|
| Production | system.ifnex.ir | API لاراول |
| Production | ifnex.ir | وب‌سایت وردپرس |
| Local | localhost:8000 | توسعه |
---
## پیش‌نیازها
- SSH دسترسی به سرور
- HestiaCP (مدیریت سرور)
- Git روی سرور
- Composer روی سرور (اختیاری — بهتره locallly نصب کنی)
---
## ۱. استقرار لاراول
### ۱.۱ کلون مخزن روی سرور
```bash
cd /home/USER/web/api.ifnex.vernahost.ir/public_html
git clone https://www.git.vernahost.ir/gitmodir110/ifnex.git .
```
> اگر پوشه لاراول زیرمسیر `04_Laravel/` هست:
```bash
cd /home/USER/web/api.ifnex.vernahost.ir/public_html
ngit clone https://www.git.vernahost.ir/gitmodir110/ifnex.git tmp-ifnex
cp -r tmp-ifnex/04_Laravel/* .
cp -r tmp-ifnex/04_Laravel/.* . 2>/dev/null
rm -rf tmp-ifnex
```
### ۱.۲ نصب وابستگی‌ها
```bash
ncd /home/USER/web/api.ifnex.vernahost.ir/public_html
composer install --no-dev --optimize-autoloader
```
### ۱.۳ تنظیم .env
```bash
cp .env.example .env
nano .env
```
مقادیر مهم:
```env
APP_ENV=production
APP_DEBUG=false
APP_URL=https://system.ifnex.ir
DB_HOST=localhost
DB_DATABASE=ifnex_db
DB_USERNAME=ifnex_user
DB_PASSWORD=STRONG_PASSWORD
# مهم: Bridge API Key باید با وردپرس یکسان باشد
IFNEX_BRIDGE_API_KEY=ifnex-bridge-secret-key-2026-vernasoft
CORS_ALLOWED_ORIGINS=https://ifnex.ir
# Payment Gateway
ZARINPAL_SANDBOX=false
ZARINPAL_MERCHANT_ID=YOUR_REAL_MERCHANT_ID
ZARINPAL_CALLBACK_URL=https://system.ifnex.ir/api/v1/payment/callback
ZARINPAL_FRONTEND_SUCCESS_URL=https://ifnex.ir/wallet
ZARINPAL_FRONTEND_FAILURE_URL=https://ifnex.ir/wallet
# Kavenegar SMS Service
KAVENEGAR_API_KEY=YOUR_KAVENEGAR_API_KEY
KAVENEGAR_SENDER=10008566
```
### ۱.۴ دیتابیس
```bash
# ایجاد دیتابیس (اگر وجود نداره)
mysql -u root -p -e "CREATE DATABASE ifnex_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
# اجرای migrations
php artisan migrate --force
# اجرای seeders (فقط بار اول)
php artisan db:seed --force
```
### ۱.۵ پیکربندی نهایی
```bash
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan filament:clear-cached-components
```
---
## ۲. استقرار وردپرس (پلاگین و قالب)
### ۲.۱ آپلود فایل‌ها
```bash
# قالب IFNEX
cd /home/USER/web/ifnex.vernahost.ir/public_html/wp-content/themes/
# فایل‌های قالب را اینجا آپلود/بروزرسانی کن
# پلاگین IFNEX Bridge
cd /home/USER/web/ifnex.vernahost.ir/public_html/wp-content/plugins/
# فایل‌های پلاگین را اینجا آپلود/بروزرسانی کن
```
### ۲.۲ تنظیم پلاگین
در پیشخوان وردپرس → تنظیمات → IFNEX Bridge:
| تنظیم | مقدار |
|--------|-------|
| API URL | `https://api.ifnex.vernahost.ir/api/v1` |
| API Key (عمومی) | برای APIهای عمومی مثل Tracking (همان `IFNEX_API_KEY` در `.env` لاراول) |
| Bridge API Key | کلید مشترک بین وردپرس و لاراول (همان `IFNEX_BRIDGE_API_KEY` در `.env` لاراول) |
> ⚠️ **مهم:** Bridge API Key باید در لاراول (`.env`) و وردپرس (پنل تنظیمات پلاگین) دقیقاً یکسان باشد. در غیر این صورت، کاربران وردپرس نمی‌توانند توکن Sanctum دریافت کنند.
### ۲.۳ صفحات مورد نیاز در وردپرس
این صفحات باید با شورت‌کدهای مشخص ساخته شوند:
| آدرس | شورت‌کد | توضیح |
|------|---------|--------|
| `/my-account/` | `[ifnex_customer_dashboard]` | پنل جامع مشتری |
| `/my-orders/` | `[ifnex_orders_list]` | لیست سفارشات |
| `/new-order/` | `[ifnex_order_form]` | فرم ثبت سفارش |
| `/order-detail/` | `[ifnex_order_detail]` | جزئیات سفارش |
| `/order-payment/` | `[ifnex_order_payment]` | صفحه پرداخت |
| `/wallet/` | `[ifnex_wallet_charge]` | شارژ کیف پول |
| `/tracking/` | `[ifnex_tracking_form]` | رهگیری مرسوله |
---
## ۳. بروزرسانی (بعد از تغییرات جدید)
### ۳.۱ لاراول
```bash
cd /home/USER/web/api.ifnex.vernahost.ir/public_html
# خاموش کردن موقت سایت
php artisan down
# بکاپ
cp .env .env.backup
# دریافت تغییرات
git fetch --all
git pull origin main
# وابستگی‌ها (اگه composer.json تغییر کرده)
composer install --no-dev --optimize-autoloader
# مایگریشن‌های جدید
php artisan migrate --force
# پاک‌سازی کش
php artisan config:clear
php artisan cache:clear
php artisan route:clear
php artisan view:clear
php artisan filament:clear-cached-components
# کش مجدد
php artisan config:cache
php artisan route:cache
php artisan view:cache
# روشن کردن سایت
php artisan up
```
### ۳.۲ وردپرس
```bash
cd /home/USER/web/ifnex.vernahost.ir/public_html/wp-content/plugins/ifnex-bridge
git pull origin main
```
> اگر پلاگین از طریق گیت کلون نشده، فایل‌ها را دستی آپلود کن.
---
## ۴. تنظیمات Cron
```bash
crontab -e
```
```cron
# به‌روزرسانی نرخ ارز (اگر ExchangeRateService فعال شد)
0 0 * * * cd /home/USER/web/api.ifnex.vernahost.ir/public_html && php artisan ifnex:update-exchange-rates >> /dev/null 2>&1
```
---
## ۵. عیب‌یابی
### بررسی لاگ‌ها
```bash
# لاگ لاراول
tail -f /home/USER/web/api.ifnex.vernahost.ir/public_html/storage/logs/laravel.log
# لاگ HestiaCP
tail -f /var/log/hestia.log
```
### کلیر کش
```bash
php artisan optimize:clear
```
### بررسی وضعیت
```bash
php artisan about
php artisan route:list --path=api/v1
```
---
## ۶. نکات امنیتی
- `.env` هرگز در گیت کامیت نشود (در `.gitignore` باشد)
- `APP_DEBUG=false` در Production
- `CORS_ALLOWED_ORIGINS` فقط دامنه وردپرس
- `IFNEX_API_KEY` یک کلید قوی و تصادفی باشد
- `IFNEX_BRIDGE_API_KEY` یک کلید قوی و تصادفی باشد (متفاوت از API Key)
- SSL/HTTPS فعال باشد
- دسترسی پوشه `storage` و `bootstrap/cache` قابل نوشتن باشد (۷۷۵)
- درگاه Zarinpal در Production باید `SANDBOX=false` و `MERCHANT_ID` واقعی باشد
---
© 2026 VernaSoft Group. Internal use only.