docs: update project documentation and roadmap to reflect phase 2 and 3 completion

Update project documentation, status reports, and technical READMEs to
reflect the successful completion of Phase 2 (Financial Automation) and
Phase 3 (Customer Portal & WordPress Integration).

Changes include:
- Updated `STATUS.md` and `README.md` to mark Phases 2 and 3 as completed
- Updated `01_Documents/IFNEX_Phase0_Checklist.md` with detailed task
  completion status for Phases 1, 2, and 3
- Refined technical architecture documentation in `04_Laravel/README.md`
  to include new services (Zarinpal, OrderPayment), controllers (Auth,
  CustomerOrder), and Filament resources (Wallet, Payment, DiscountCode)
- Added `DEPLOYMENT.md` for deployment instructions
- Updated system specifications to include Laravel Sanctum, RBAC via
  spatie/laravel-permission, and the updated WordPress/IFNEX Bridge
  capabilities
This commit is contained in:
Kazem Alghasi 2026-08-10 18:12:49 +03:30
parent bac2a7bb25
commit cd8021e6e1
5 changed files with 1215 additions and 137 deletions

View File

@ -2,7 +2,8 @@
> **فاز:** Phase 0 — بنیان داده + ترکینگ دستی + مهاجرت داده‌های تاریخی
> **تاریخ ایجاد:** 2026-08-04
> **وضعیت کلی:** در حال اجرا
> **تاریخ به‌روزرسانی:** 2026-08-10
> **وضعیت کلی:** ✅ تکمیل شده
> **مرجع اصلی:** `01_Documents/Phase0_Proposal.md`
---
@ -46,7 +47,7 @@
| 2.7 | مدل `SystemSetting.php` | ✅ انجام شد | |
| 2.8 | Enum `ShipmentDirection` | ✅ انجام شد | import/export |
| 2.9 | Enum `ShipmentType` | ✅ انجام شد | DOC_NORMAL/DOC_ECONOMY/PARCEL |
| 2.10 | Enum `ShipmentStatus` | ✅ انجام شد | ۷ وضعیت |
| 2.10 | Enum `ShipmentStatus` | ✅ انجام شد | ۹ وضعیت (pending_payment, cancelled اضافه شد) |
| 2.11 | Enum `CarrierCode` | ✅ انجام شد | ۹ شرکت حمل |
| 2.12 | Enum `TrackingSource` | ✅ انجام شد | manual/api_carrier/api_aggregator |
| 2.13 | Enum `UserRole` | ✅ انجام شد | ۴ نقش |
@ -164,49 +165,68 @@
---
## بخش ۱۱: کارهای فاز ۱ (پس از تأیید فاز ۰)
## بخش ۱۱: کارهای فاز ۱ (تکمیل شده)
| # | کار | اولویت | وضعیت |
|---|-----|--------|-------|
| F1.1 | تست کامل `PriceCalculatorService` با داده‌های واقعی | 🔴 بالا | ✅ انجام شد (2026-08-07) |
| F1.2 | تکمیل جدول `shipping_rates` | 🟡 متوسط | ✅ انجام شد - ۴۰۴ رکورد import شد |
| F1.3 | فرم ثبت سفارش آنلاین با ۹ ردیف کالای گمرکی | 🟡 متوسط | ⏳ pending |
| F1.4 | تولید PDF: AWB، INVOICE، Label | 🟡 متوسط | ⏳ pending |
| F1.3 | فرم ثبت سفارش آنلاین با ۹ ردیف کالای گمرکی | 🟡 متوسط | ✅ انجام شد |
| F1.4 | تولید PDF: AWB، INVOICE، Label | 🟡 متوسط | ✅ انجام شد |
| F1.5 | ماژول ایمپورت اکسل تعرفه‌ها | 🟢 پایین | ✅ انجام شد |
| F1.6 | صفحه استعلام قیمت واقعی | 🟢 پایین | ✅ انجام شد |
### کارهای فاز ۲ (شروع شده - 2026-08-05)
## بخش ۱۲: کارهای فاز ۲ (تکمیل شده)
| # | کار | اولویت | وضعیت |
|---|-----|--------|-------|
| F2.1 | ساخت `WalletController` با APIها | 🔴 بالا | ✅ انجام شد |
| F2.2 | ساخت `DiscountCodeController` با APIها | 🔴 بالا | ✅ انجام شد |
| F2.3 | ساخت `UpdateExchangeRates` Artisan Command | 🟡 متوسط | ✅ انجام شد |
| F2.4 | ثبت routeهای کیف پول و تخفیف | 🟡 متوسط | ✅ انجام شد |
| F2.5 | اتصال درگاه پرداخت (زرین‌پال) | 🔴 بالا | ⏳ pending |
| F2.6 | شارژ آنلاین کامل | 🔴 بالا | ⏳ pending |
| F2.7 | پنل مالی در Filament | 🟡 متوسط | ⏳ pending |
| F2.5 | اتصال درگاه پرداخت (زرین‌پال) | 🔴 بالا | ✅ انجام شد |
| F2.6 | شارژ آنلاین کامل | 🔴 بالا | ✅ انجام شد |
| F2.7 | پنل مالی در Filament | 🟡 متوسط | ✅ انجام شد |
| F2.8 | ساخت `OrderPaymentService` | 🔴 بالا | ✅ انجام شد |
| F2.9 | ساخت `ZarinpalService` و `MockZarinpalService` | 🔴 بالا | ✅ انجام شد |
| F2.10 | ردیابی تاریخچه نرخ ارز | 🟡 متوسط | ✅ انجام شد |
| F2.11 | یکپارچگی RBAC با spatie/laravel-permission | 🟡 متوسط | ✅ انجام شد |
| F2.12 | گسترش پلاگین IFNEX Bridge (کیف پول + تراکنش) | 🟡 متوسط | ✅ انجام شد |
## بخش ۱۳: کارهای فاز ۳ (تکمیل شده)
| # | کار | اولویت | وضعیت |
|---|-----|--------|-------|
| F3.1 | ساخت `AuthController` برای Sanctum | 🔴 بالا | ✅ انجام شد |
| F3.2 | ساخت `BridgeAuthController` | 🔴 بالا | ✅ انجام شد |
| F3.3 | ساخت `CustomerOrderController` با ۶ endpoint | 🔴 بالا | ✅ انجام شد |
| F3.4 | ساخت `OrderPaymentService` | 🔴 بالا | ✅ انجام شد |
| F3.5 | توسعه پلاگین وردپرس برای پورتال مشتری | 🔴 بالا | ✅ انجام شد |
| F3.6 | توسعه پوسته سفامشی IFNEX | 🟡 متوسط | ✅ انجام شد |
| F3.7 | به‌روزرسانی وردپرس به ۷.۰.۳ | 🟡 متوسط | ✅ انجام شد |
| F3.8 | یکپارچگی Design System | 🟡 متوسط | ✅ انجام شد |
| F3.9 | خروجی CSV برای ShipmentResource و WalletTransactionResource | 🟢 پایین | ✅ انجام شد |
---
## بخش ۱۲: کارهای فاز ۲ و ۳ (مرجع)
## بخش ۱۴: کارهای آینده (فاز ۴)
### فاز ۲: اتوماسیون مالی
- [ ] اتصال به درگاه پرداخت (زرین‌پال)
- [ ] ایجاد جدول کیف پول و تراکنش‌ها
- [ ] شارژ اعتبار آنلاین و دستی
- [ ] کرون‌جاب بروزرسانی نرخ ارز
- [ ] سیستم کوپن و تخفیف‌ها
- [ ] فرمول محاسبه قیمت رقبا
### فاز ۳: رهگیری زنده و عملیات
### فاز ۴: VPS پل و ترکینگ زنده
- [ ] راه‌اندازی VPS پل خارج (هلند/آلمان)
- [ ] اتصال به TrackingMore/17track API
- [ ] سیستم وب‌هوک
- [ ] مپ کردن کدهای رهگیری
- [ ] داشبورد مالی
- [ ] فرم نظرسنجی و رضایت مشتری
- [ ] پنل کاربری مشتریان در وردپرس
- [ ] پلاگین SMS
- [ ] ماژول CRM
- [ ] اپلیکیشن موبایل
### فاز ۲.۵: تست و بهینه‌سازی
- [ ] تست نهایی پلاگین وردپرس با داده‌های واقعی
- [ ] مستندسازی API
- [ ] بهینه‌سازی عملکرد (کش، query optimization)
---

View File

@ -1,9 +1,9 @@
# 🚨 STATUS.md — این فایل را اول بخوانید
> **آخرین به‌روزرسانی:** 2026-08-05 22:32 (Asia/Tehran)
> **فاز در حال اجرا:** فاز ۲ (اتوماسیون مالی + کیف پول + تخفیف)
> **آخرین به‌روزرسانی:** 2026-08-10 13:08 (Asia/Tehran)
> **فاز در حال اجرا:** فاز ۴ (VPS پل + API ترکینگ زنده)
> **توسعه‌دهنده:** VernaSoft Group — Kazem Alghasi
> **وضعیت کلی پروژه:** فاز ۰ کامل — فاز ۱ کامل — فاز ۲ در حال اجرا
> **وضعیت کلی پروژه:** فاز ۰ کامل — فاز ۱ کامل — فاز ۲ کامل — فاز ۳ کامل
---
@ -31,9 +31,13 @@
| Laravel | **11** (همه‌جا یکسان) | در PRD قدیمی ۱۰+ نوشته، در Roadmap قدیمی ۱۱، در README قدیمی ۱۲ — نسخه نهایی: **۱۱** |
| PHP | 8.2+ | الزام لاراول ۱۱ |
| MySQL | 8+ | برای پشتیبانی JSON columns |
| WordPress | آخرین نسخه پایدار | با Polylang برای چندزبانه |
| پنل ادمین | Laravel Filament 3.3.x | برای سرعت توسعه |
| Frontend | وردپرس + قالب DHL-inspired | **کپی نکنید** — فقط الهام |
| WordPress | ۷.۰.۳ | با پوسته سفامشی IFNEX + Polylang برای چندزبانه |
| پنل ادمین | Laravel Filament 3.3.x | رنگ Navy gradient، فونت Vazirmatn، RTL کامل |
| Frontend | وردپرس + پوسته IFNEX | **کپی نکنید** — فقط الهام |
| Authentication | Laravel Sanctum | توکن‌های Bearer برای API مشتری |
| Permissions | spatie/laravel-permission | RBAC برای پنل ادمین |
| Payment Gateway | زرین‌پال (Zarinpal) | با Mock Gateway برای تست |
| Design System | IFNEX Design System | رنگ‌های برند، فاصله‌گذاری، تایپوگرافی یکپارچه |
### معماری کلی
```
@ -73,6 +77,7 @@
- [x] ایجاد migration `shipment_tracking_events` (جدول جدید — تایم‌لاین رویدادها)
- [x] ایجاد migration `system_settings` (جدول جدید — key-value برای VAT، نرخ ارز و...)
- [x] ایجاد migration `update_users` (افزودن `phone`, `role`, `is_active`)
- [x] ایجاد migration `shipment_items` (جدول جدید — اقلام گمرکی)
- [x] حل مشکل `unsignedDecimal` در Laravel 11 (استفاده از `decimal()->unsigned()`)
- [x] حل مشکل FK constraints در migrations (استفاده از `disableForeignKeyConstraints()`)
- [x] اجرای همه migrations در MySQL بدون خطا
@ -86,12 +91,18 @@
- `ShipmentCarrierMapping.php`
- `ShipmentTrackingEvent.php`
- `SystemSetting.php`
- `Wallet.php` + `WalletTransaction.php`
- `DiscountCode.php`
- `ExchangeRateHistory.php`
- `Role.php` (spatie/laravel-permission)
- [x] ایجاد ۶ enum:
- `ShipmentDirection` (import/export)
- `ShipmentType` (DOC_NORMAL/DOC_ECONOMY/PARCEL)
- `ShipmentStatus` (processed/picked_up/in_transit/out_for_delivery/failed/delivered/returned)
- `ShipmentStatus` (۹ وضعیت شامل pending_payment/cancelled)
- `CarrierCode` (DHL/FEDEX/UPS/ARAMEX/NAGHEL/EMX/APSITEX/IMPEX/OTHER)
- `TrackingSource` (manual/api_carrier/api_aggregator)
- `TrackingSource` (۵ منبع: manual/api/import/system/customer)
- `TransactionType` + `TransactionStatus`
- `PaymentGateway` (zarinpal/wallet/manual/system)
- `UserRole` (super_admin/tracking_operator/data_entry/customer)
#### ۳. Seeders (کامل)
@ -100,6 +111,8 @@
- حذف کشورهای تکراری ("United Arab Emirates" و "Rest of Dubai" هر دو با zone 9 و 10)
- [x] ایجاد `SystemSettingSeeder` (VAT 9%، packing 100000 IRR، profit_margin 1.25، نرخ ارزهای اولیه)
- [x] بازنویسی `DatabaseSeeder` (countries + system_settings + super_admin user)
- [x] ایجاد `RoleAndPermissionSeeder` (نقش‌های اولیه + دسترسی‌های پایه)
- [x] ایجاد `SampleDataSeeder` (۵ مرسوله، ۴ تراکنش، ۳ کد تخفیف)
- [x] اجرای seeders — ۲۳۲ کشور + ۷ setting + ۱ کاربر ادمین
#### ۴. API ترکینگ (کامل)
@ -122,6 +135,13 @@
- Section: Customs Items (Repeater ۹ ردیف)
- [x] `ShippingRateResource` — فرم ۱۰ zone + enum type/direction
- [x] `ShipmentItemResource` — CRUD کامل
- [x] `WalletResource` — مدیریت کیف پول
- [x] `WalletTransactionResource` — CRUD کامل با صفحات Create/Edit
- [x] `PaymentResource` — مشاهده تراکنش‌های درگاه
- [x] `DiscountCodeResource` — مدیریت کدهای تخفیف با form/table/filters
- [x] `ExchangeRateHistoryResource` — مشاهده تاریخچه نرخ ارز
- [x] `RoleResource` — مدیریت نقش‌ها (spatie/laravel-permission)
- [x] `UserResource` — مدیریت کاربران (spatie/laravel-permission)
- [x] RelationManagers:
- `CarrierMappingsRelationManager` (برای Shipment)
- `TrackingEventsRelationManager` (برای Shipment)
@ -130,7 +150,19 @@
- `ListCountries`, `CreateCountry`, `EditCountry`
- `ListShippingRates`, `CreateShippingRate`, `EditShippingRate`
- `ListShipmentItems`, `CreateShipmentItem`, `EditShipmentItem`
- `ListWalletTransactions`, `CreateWalletTransaction`, `EditWalletTransaction`
- `ListPayments`, `ViewPayment`
- `ListDiscountCodes`, `CreateDiscountCode`, `EditDiscountCode`
- `ListExchangeRateHistories`, `ViewExchangeRateHistory`
- `ListRoles`, `CreateRole`, `EditRole`
- `ListUsers`, `CreateUser`, `EditUser`
- [x] `SettingsPage` (Page سفارشی برای System Settings)
- [x] `DashboardInfoWidget` — اطلاعات کلی داشبورد
- [x] `ExchangeRateWidget` — نرخ ارز زنده
- [x] `WalletStats` — آمار کیف پول
- [x] `TransactionChartWidget` — نمودار تراکنش‌ها
- [x] `RecentTransactionsWidget` — آخرین تراکنش‌ها
- [x] `FinancialReport` — گزارش مالی کامل
#### ۶. Services (کامل)
- [x] `TrackingService` — getTrackingTimeline, addTrackingEvent, getShipmentWithTracking
@ -144,6 +176,10 @@
- مرحله ۷: اضافه هزینه‌های جانبی
- مرحله ۸: اعمال VAT 9%
- مرحله ۹: ذخیره خروجی‌ها
- [x] `ExchangeRateService` — مدیریت و ردیابی نرخ ارز
- [x] `ZarinpalService` — اتصال به درگاه پرداخت زرین‌پال
- [x] `MockZarinpalService` — شبیه‌سازی درگاه برای تست
- [x] `OrderPaymentService` — پرداخت سفارشات (کیف پول + درگاه)
#### ۷. Imports (Excel) (کامل)
- [x] `ShippingRatesImport` — import از ۵ شیت (Import Rate, Export Rate, DocNor, DocEco, Parcel)
@ -243,7 +279,7 @@
---
### کارهای فاز ۲ (در حال اجرا)
### کارهای فاز ۲ (تکمیل شده)
- [x] ساخت `WalletController` با APIهای شارژ، بررسی موجودی و تاریخچه تراکنش‌ها
- [x] ساخت `DiscountCodeController` با APIهای لیست و اعتبارسنجی کده تخفیف
@ -253,30 +289,68 @@
- [x] پاک‌سازی فایل‌های تست و debug (`check_*.php`, `debug_*.php`, `test_*.php`, `inspect_*.php`)
- [x] رفع CORS — تغییر از `*` به دامنه مشخص از `.env`
- [x] حذف migrationهای قدیمی تکراری (`2023_10_27_*`, `2026_07_31_*`)
- [x] اتصال درگاه پرداخت (زرین‌پال)
- [x] شارژ آنلاین کامل با درگاه پرداخت
- [x] اتصال درگاه پرداخت (زرین‌پال) با Mock Gateway برای تست
- [x] ساخت `ZarinpalService` و `MockZarinpalService`
- [x] ساخت `OrderPaymentService` برای پرداخت سفارشات
- [x] ساخت `ExchangeRateService` و `ExchangeRateHistory` برای ردیابی نرخ ارز
- [x] پنل مالی در Filament (داشبورد سود/زیان)
- [x] تکمیل DiscountCodeResource با form/table/filters
- [x] ساخت PaymentResource در Filament
- [x] ساخت WalletTransactionResource با صفحات Create/Edit
- [x] ساخت ExchangeRateHistoryResource
- [x] تست‌های Unit/Feature برای Phase 2 (24 تست، 77 assertion)
- [x] رفع باگ WalletController::balance()
- [x] حذف PaymentGatewayService قدیمی (استفاده نمی‌شد)
- [x] زیباسازی داشبورد و صفحه لاگین Filament
- [x] زیباسازی داشبورد و صفحه لاگین Filament (رنگ Navy، Vazirmatn، RTL)
- [x] گسترش پلاگین IFNEX Bridge برای وردپرس:
- [x] ساخت `IFNEX_User_Bridge` برای مدیریت توکن Sanctum کاربران وردپرس
- [x] اضافه کردن شورت‌کد `[ifnex_wallet_balance]`
- [x] اضافه کردن شورت‌کد `[ifnex_transactions]`
- [x] اضافه کردن AJAX handlers برای کیف پول و تراکنش‌ها
- [x] ساخت استایل‌های CSS کامل برای تمام کامپوننت‌های پلاگین
- [x] ایجاد صفحه تست در وردپرس: http://localhost/ifnexwp/?page_id=16
[x] ساخت WalletController با APIهای کامل
[x] ساخت DiscountCodeController
[x] ساخت UpdateExchangeRates Artisan Command
[x] اتصال درگاه پرداخت (زرین‌پال) — با Mock Gateway
[x] شارژ آنلاین کامل با درگاه
[x] پنل مالی در Filament (داشبورد سود/زیان)
[x] Export CSV برای تراکنش‌ها و مرسولات
[ ] فرمول محاسبه قیمت رقبا (حذف شد — تصمیم استراتژیک)
- [x] ایجاد صفحه تست در وردپرس: http://localhost/ifnexwp/?page_id=18
- [x] یکپارچگی RBAC با spatie/laravel-permission
- [x] نصب پکیج `spatie/laravel-permission`
- [x] ساخت `RoleResource` و `UserResource` در Filament
- [x] ساخت `RoleAndPermissionSeeder`
- [x] سینک کاربران وردپرس ↔ لاراول با دستور `ifnex:sync-wp-users`
- [x] طراحی سیستم یکپارچه IFNEX (DESIGN_SYSTEM.md)
- [x] گزارش‌گیری مالی در Filament (FinancialReport)
- [x] خروجی Excel برای ShipmentResource و WalletTransactionResource
### کارهای فاز ۳ (تکمیل شده)
- [x] ساخت `AuthController` برای ورود/خروج Sanctum مشتریان
- [x] ساخت `BridgeAuthController` برای لاگین مستقیم از وردپرس
- [x] ساخت `CustomerOrderController` با ۶ endpoint:
- [x] `GET /api/v1/customer/profile` — پروفایل و آمار
- [x] `GET /api/v1/customer/countries` — لیست کشورها
- [x] `GET /api/v1/customer/orders` — لیست سفارشات
- [x] `POST /api/v1/customer/orders` — ثبت سفارش جدید
- [x] `GET /api/v1/customer/orders/{shipment}` — جزئیات سفارش
- [x] `POST /api/v1/customer/orders/{shipment}/cancel` — لغو سفارش
- [x] ساخت `OrderPaymentService` برای پرداخت سفارشات
- [x] پرداخت از کیف پول: `payFromWallet()`
- [x] پرداخت از درگاه: `initiateGatewayPayment()`
- [x] تکمیل پرداخت بعد از callback: `completeGatewayPayment()`
- [x] توسعه پلاگین IFNEX Bridge برای پورتال مشتری:
- [x] شورت‌کد `[ifnex_order_form]` — فرم ثبت سفارش چندمرحله‌ای
- [x] شورت‌کد `[ifnex_orders_list]` — لیست سفارشات
- [x] شورت‌کد `[ifnex_order_payment]` — صفحه پرداخت سفارش
- [x] شورت‌کد `[ifnex_order_detail]` — جزئیات سفارش
- [x] شورت‌کد `[ifnex_user_profile]` — پروفایل کاربر
- [x] استایل `ifnex-orders.css` برای تمام کامپوننت‌ها
- [x] اسکریپت `ifnex-order-form.js` برای ناوبری مراحل و AJAX
- [x] AJAX handlers: `ifnex_pay_order_wallet`, `ifnex_pay_order_gateway`, `ifnex_cancel_order`
- [x] توسعه پوسته سفامشی IFNEX برای وردپرس:
- [x] پشتیبانی چندزبانه با Polylang
- [x] مدیریت LTR/RTL خودکار
- [x] Customizer برای لوگو و زبان
- [x] قالب‌های archive, single, front-page
- [x] ساختار تمیک شرکتی با لوگو IFNEX
- [x] به‌روزرسانی وردپرس به نسخه ۷.۰.۳ با بهبودهای امنیتی
- [x] یکپارچگی Design System در Filament و وردپرس
- [x] خروجی CSV برای ShipmentResource و WalletTransactionResource
---
@ -318,19 +392,23 @@
### س: چه کارهایی در این جلسه انجام شد؟
**ج:**
1. ساخت `WalletController` با APIهای شارچ، بررسی موجودی و تاریخچه تراکنش‌ها
2. ساخت `DiscountCodeController` با APIهای لیست و اعتبارسنجی کده تخفیف
3. ساخت `UpdateExchangeRates` Artisan Command
4. ثبت routeهای کیف پول و تخفیف در `api.php`
5. اضافه کردن `CURRENCY_API_KEY` به `.env.example` و `config/ifnex.php`
6. پاک‌سازی فایل‌های تست و debug از پوشه `04_Laravel`
7. رفع CORS — تغییر از `*` به دامنه مشخص از `.env`
8. حذف migrationهای قدیمی تکراری
1. تکمیل کامل سیستم سفارشات مشتری (CustomerOrderController با ۶ endpoint)
2. توسعه سرویس پرداخت سفارشات (OrderPaymentService) — کیف پول + درگاه
3. ساخت AuthController و BridgeAuthController برای احراز هویت
4. گسترش پلاگین IFNEX Bridge با شورت‌کدهای پرداخت و جزئیات سفارش
5. افزودن ۲ وضعیت جدید به ShipmentStatus: pending_payment و cancelled
6. توسعه پورتال مشتری در وردپرس (فرم سفارش، لیست، پرداخت، جزئیات)
7. یکپارچگی RBAC با spatie/laravel-permission
8. ردیابی تاریخچه نرخ ارز با ExchangeRateHistory
9. طراحی سیستم یکپارچه IFNEX (DESIGN_SYSTEM.md)
10. به‌روزرسانی وردپرس به ۷.۰
### س: چه کارهایی باقی مانده؟
**ج:**
- پنل مالی در Filament (داشبورد سود/زیان)
- تست دستی APIهای جدید
- تست کامل APIهای سفارشات مشتری و پرداخت
- تست کامل پلاگین وردپرس با داده‌های واقعی مشتری
- راه‌اندازی VPS پل خارج برای API ترکینگ زنده (فاز ۴)
- اتصال به TrackingMore/17track API
- ~~فرمول محاسبه قیمت رقبا~~ (آرشیو شد)
---
@ -355,6 +433,12 @@ php artisan ifnex:import:rates storage/app/public/01KYWGVNKS5TNMN37RV77PCYNZ.xls
# Import historical shipments
php artisan ifnex:import:shipments storage/app/public/01KYWGVNKS5TNMN37RV77PCYNZ.xlsx
# Update exchange rates
php artisan ifnex:update-exchange-rates
# Sync WordPress users
php artisan ifnex:sync-wp-users
```
### تست API Track
@ -369,6 +453,24 @@ curl http://localhost:8000/api/v1/track/TEST123
curl -H "Authorization: Bearer wrong-key" http://localhost:8000/api/v1/track/TEST123
```
### تست API سفارشات مشتری
```bash
# ورود و دریافت توکن
curl -X POST http://localhost:8000/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"admin@ifnex.local","password":"password"}'
# لیست سفارشات (با توکن)
curl -H "Authorization: Bearer {token}" \
http://localhost:8000/api/v1/customer/orders
# ثبت سفارش جدید
curl -X POST http://localhost:8000/api/v1/customer/orders \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"direction":"export","type":"PARCEL","from_country_id":1,"to_country_id":2,"weight":2.5,...}'
```
### پشتیبان‌گیری از دیتابیس
```bash
mysqldump -u root -p ifnex_db > backups/ifnex_$(date +%Y%m%d).sql
@ -496,13 +598,14 @@ IFNEX-Logistics/
۱. **این فایل (`STATUS.md`)** را کامل بخوان — حالا خواندی ✅
۲. **`EXCEL_ANALYSIS.md`** را کامل بخوان — برای فهم داده‌های تاریخی ضروری است
۳. **`Phase0_Proposal.md`** را کامل بخوان — مرجع اصلی پروژه
۳. **`Phase0_Proposal.md`** را کامل بخون — مرجع اصلی پروژه
۴. **`README.md`** ریشه را بخوان — برای نمای کلی
۵. کد موجود در `04_Laravel` را بررسی کن — ببین چه چیزی نوشته شده
۶. **اولویت اول:** رفع مشکل middleware در `bootstrap/app.php` و `AdminPanelProvider.php` (راه‌حل در بالای این فایل آمده)
۷. با کاربر (Kazem) هماهنگ کن — بپرس کدام کار را باید ادامه دهی
۶. **اولویت اول:** تست کامل APIهای جدید (customer orders, payments, auth)
۷. **اولویت دوم:** تست کامل پلاگین وردپرس با داده‌های واقعی
۸. با کاربر (Kazem) هماهنگ کن — بپرس کدام کار را باید ادامه دهی
**مهم‌ترین کار بعدی:** رفع مشکل middleware + تست دستی Filament.
**مهم‌ترین کار بعدی:** تست کامل APIهای سفارشات مشتری + پرداخت.
---
@ -533,9 +636,25 @@ IFNEX-Logistics/
- نصب جدول notifications برای database notifications
- بهینه‌سازی استفاده از متدهای color() و label() در Enumها
- تست کامل داشبورد مالی و منوهای مختلف
- **تکمیل کامل پورتال مشتری وردپرس:**
- شورت‌کد `[ifnex_order_form]` — فرم ثبت سفارش چندمرحله‌ای
- شورت‌کد `[ifnex_orders_list]` — لیست سفارشات با فیلتر وضعیت
- شورت‌کد `[ifnex_order_payment]` — صفحه پرداخت سفارش (کیف پول + درگاه)
- شورت‌کد `[ifnex_order_detail]` — جزئیات سفارش با timeline رهگیری
- شورت‌کد `[ifnex_user_profile]` — پروفایل کاربر با آمار کیف پول
- استایل `ifnex-orders.css` و اسکریپت `ifnex-order-form.js`
- AJAX handlers برای پرداخت از کیف پول و درگاه
- **تکمیل سیستم پرداخت سفارشات:**
- `CustomerOrderController` با ۶ endpoint
- `OrderPaymentService` برای پرداخت از کیف پول و درگاه
- `BridgeAuthController` برای لاگین از وردپرس
- APIهای `/customer/orders/*` و `/customer/orders/{shipment}/pay-*`
- وضعیت‌های جدید `pending_payment` و `cancelled` در ShipmentStatus
- **به‌روزرسانی Enums:**
- `PaymentGateway` اضافه شدن case `WALLET`
- `TrackingSource` اضافه شدن cases `SYSTEM` و `CUSTOMER`
#### ۲۰۲۶-۰۸-۰8
#### ۲۰۲۶-۰۸-۰۸
- ساخت `WalletController` با APIهای شارچ، بررسی موجودی و تاریخچه تراکنش‌ها
- ساخت `DiscountCodeController` با APIهای لیست و اعتبارسنجی کده تخفیف
- ساخت `UpdateExchangeRates` Artisan Command
@ -583,7 +702,6 @@ IFNEX-Logistics/
- به‌روزرسانی استایل‌های پلاگین وردپرس مطابق با Design System
#### ۲۰۲۶-۰۸-۰۷
[x] **refactor(api): improve pricing logic و add test coverage**
- به‌روزرسانی `ShippingRatesImport` برای استفاده از 'outbound' و 'inbound'
@ -606,10 +724,7 @@ IFNEX-Logistics/
### کارهای بعدی
#### فاز ۲.۵ — آماده‌سازی برای دمو/استفاده واقعی
- [ ] **یک‌سازی کاربران وردپرس ↔ لاراول**
- تکمیل `ifnex:sync-wp-users` command برای sincron خودکار کاربران
- ایجادendent webhook برای sync تغییرات کاربر بین وردپرس و لاراول
#### فاز ۲.۵ — تست و بهینه‌سازی
- [ ] **تست نهایی پلاگین وردپرس با داده‌های واقعی**
- تست همه شورت‌کدها با داده‌های واقعی مشتری
- تست CORS و Rate Limiting در محیط تولید
@ -618,32 +733,26 @@ IFNEX-Logistics/
- مستند کامل APIهای لاراول برای فرانت‌اند developerها
- مستند نحوه نصب و تنظیم پلاگین وردپرس
- مستند نحوه sync کاربران
- [ ] **بهینه‌سازی عملکرد**
- کش‌کردن نرخ ارز و تعرفه‌ها
- بهینه‌سازی queryهای پرتکرار
#### فاز ۳ — با نیاز مشتری
#### فاز ۴ — VPS پل و ترکینگ زنده
- [ ] **راه‌اندازی VPS پل خارج (هلند/آلمان)**
- [ ] **اتصال به TrackingMore/17track API**
- مپ کردن کدهای رهگیری
- وب‌هوک برای به‌روزرسانی خودکار وضعیت
- [ ] **گزارش‌گیری پیشرفته**
- خروجی Excel/PDF برای تراکنش‌ها، مرسولات، سود/زیان
- داشبورد مدیریتی برای مدیرعامل
- [ ] **پلاگین SMS**
- اطلاع‌رسانی وضعیت مرسوله به مشتری
- اطلاع‌رسانی پرداخت‌های کیف پول
- یادآوری انقضا کدهای تخفیف
- [ ] **پورتال مشتری کامل**
- ثبت سفارش آنلاین
- پرداخت از کیف پول
- مشاهده فاکتورها و گزارشات
- مدیریت آدرس‌ها و تحویل‌گیرندگان
- [ ] **گزارش‌گیری پیشرفته**
- خروجی Excel/PDF برای تراکنش‌ها، مرسولات، سود/زیان
- داشبورد مدیریتی برای مدیرعامل
- [ ] **ماژول CRM**
- مدیریت مشتریان
- تماس‌ها و یادآوری‌ها
- تحلیل رفتار مشتریان
#### فاز ۴ — آینده دور
- [ ] **VPS پل خارج**
- اتصال به TrackingMore/17track API
- پشتیبانی از ۱۰+ کاربر خارجی
- [ ] **Webhookها**
- اطلاع‌رسانی خودکار به مشتری وقتی مرسوله وضعیتش عوض میشه
- یک‌سازی خودکار بین لاراول و وردپرس
- [ ] **اپلیکیشن موبایل**
- نسخه Android/iOS برای مشتریان
- Push notification برای وضعیت مرسوله

View File

@ -13,7 +13,7 @@
| **نسخه PHP** | PHP 8.2+ |
| **پنل ادمین** | Filament 3.3.x |
| **دیتابیس** | MySQL 8+ |
| **تاریخ آخرین به‌روزرسانی** | 2026-08-07 |
| **تاریخ آخرین به‌روزرسانی** | 2026-08-10 |
---
@ -134,28 +134,40 @@ php artisan serve
│ ├── Enums/ # Enum ها
│ │ ├── ShipmentDirection.php # import/export
│ │ ├── ShipmentType.php # DOC_NORMAL/DOC_ECONOMY/PARCEL
│ │ ├── ShipmentStatus.php # ۷ وضعیت مرسوله
│ │ ├── ShipmentStatus.php # ۹ وضعیت مرسوله
│ │ ├── CarrierCode.php # ۹ شرکت حمل
│ │ ├── TrackingSource.php # manual/api_carrier/api_aggregator
│ │ └── UserRole.php # ۴ نقش کاربری
│ │ ├── TrackingSource.php # ۵ منبع (manual, api, import, system, customer)
│ │ ├── TransactionType.php
│ │ ├── TransactionStatus.php
│ │ ├── PaymentGateway.php # ۴ درگاه (zarinpal, wallet, manual, system)
│ │ └── UserRole.php
│ │
│ ├── Services/ # لایه سرویس (Business Logic)
│ │ ├── PriceCalculatorService.php # ⭐ موتور قیمت‌گذاری
│ │ └── TrackingService.php # سرویس ترکینگ
│ │ ├── PriceCalculatorService.php
│ │ ├── TrackingService.php
│ │ ├── ExchangeRateService.php
│ │ ├── ZarinpalService.php
│ │ ├── MockZarinpalService.php
│ │ └── OrderPaymentService.php
│ │
│ ├── Http/
│ │ ├── Controllers/
│ │ │ ├── Api/
│ │ │ │ ├── TrackController.php # API ترکینگ
│ │ │ │ ├── PricingController.php # API استعلام قیمت
│ │ │ │ ├── WalletController.php # API کیف پول
│ │ │ │ └── DiscountCodeController.php # API تخفیف
│ │ │ ├── OrderController.php # فرم ثبت سفارش
│ │ │ ├── PricingPageController.php # صفحه استعلام قیمت
│ │ │ └── ShipmentPdfController.php # تولید PDF
│ │ │ │ ├── TrackController.php
│ │ │ │ ├── PricingController.php
│ │ │ │ ├── AuthController.php # ورود/خروج Sanctum
│ │ │ │ ├── BridgeAuthController.php # لاگین از پلاگین وردپرس
│ │ │ │ ├── WalletController.php
│ │ │ │ ├── PaymentController.php
│ │ │ │ ├── DiscountCodeController.php
│ │ │ │ └── Customer/
│ │ │ │ └── CustomerOrderController.php # ۶ endpoint سفارش مشتری
│ │ │ ├── OrderController.php
│ │ │ ├── PricingPageController.php
│ │ │ └── ShipmentPdfController.php
│ │ ├── Middleware/
│ │ │ └── ApiKeyMiddleware.php # احراز هویت API
│ │ └── Requests/ # Form Request Validation
│ │ │ └── ApiKeyMiddleware.php
│ │ └── Requests/
│ │
│ ├── Imports/ # Excel Imports
│ │ ├── ShippingRatesImport.php # واردات تعرفه‌ها
@ -163,18 +175,36 @@ php artisan serve
│ │ └── RateSheetImport.php # شیت‌های نرخ
│ │
│ ├── Console/Commands/ # Artisan Commands
│ │ ├── ImportShippingRates.php # واردات تعرفه‌ها
│ │ ├── ImportHistoricalData.php # واردات داده‌های تاریخی
│ │ └── UpdateExchangeRates.php # به‌روزرسانی نرخ ارز
│ │ ├── ImportShippingRates.php
│ │ ├── ImportHistoricalData.php
│ │ ├── UpdateExchangeRates.php
│ │ ├── SyncWordPressUsers.php
│ │ └── DebugImportCommand.php
│ │
│ └── Filament/ # پنل ادمین Filament
│ ├── Resources/
│ │ ├── CountryResource.php
│ │ ├── ShipmentResource.php
│ │ ├── ShippingRateResource.php
│ │ └── ShipmentItemResource.php
│ │ ├── ShipmentItemResource.php
│ │ ├── WalletResource.php
│ │ ├── WalletTransactionResource.php
│ │ ├── PaymentResource.php
│ │ ├── DiscountCodeResource.php
│ │ ├── ExchangeRateHistoryResource.php
│ │ ├── RoleResource.php
│ │ └── UserResource.php
│ ├── Widgets/
│ │ ├── DashboardInfoWidget.php
│ │ ├── ExchangeRateWidget.php
│ │ ├── WalletStats.php
│ │ ├── TransactionChartWidget.php
│ │ └── RecentTransactionsWidget.php
│ └── Pages/
│ └── IfnexSettingsPage.php # صفحه تنظیمات
│ ├── IfnexSettingsPage.php
│ ├── PriceTestPage.php
│ └── Reports/
│ └── FinancialReport.php
├── database/
│ ├── migrations/ # Migration ها
@ -184,11 +214,20 @@ php artisan serve
│ │ ├── 2026_08_02_000004_create_shipment_carrier_mappings_table.php
│ │ ├── 2026_08_02_000005_create_shipment_tracking_events_table.php
│ │ ├── 2026_08_02_000006_create_system_settings_table.php
│ │ └── 2026_08_02_000007_update_users_table.php
│ │ ├── 2026_08_02_000007_update_users_table.php
│ │ ├── 2026_08_08_000001_create_shipment_items_table.php
│ │ ├── 2026_08_05_135026_create_discount_codes_table.php
│ │ ├── 2026_08_09_231738_create_exchange_rate_history_table.php
│ │ ├── 2026_08_10_080853_add_wallet_to_payment_gateway_enum.php
│ │ ├── 2026_08_10_082121_add_system_to_tracking_source_enum.php
│ │ ├── 2026_08_09_012526_create_notifications_table.php
│ │ └── 2026_08_09_220409_create_permission_tables.php
│ └── seeders/ # Seeders
│ ├── CountriesTableSeeder.php
│ ├── SystemSettingSeeder.php
│ └── DatabaseSeeder.php
│ ├── DatabaseSeeder.php
│ ├── RoleAndPermissionSeeder.php
│ └── SampleDataSeeder.php
├── routes/
│ ├── web.php # روت‌های وب (فرم‌ها و صفحات)
@ -297,10 +336,10 @@ GET /api/v1/wallet/transactions
🎟️ API های تخفیف (فاز ۲)
۱. لیست کدهای تخفیف فعال
GET /api/v1/discounts/active
GET /api/v1/discount-codes/active
۲. اعتبارسنجی کد تخفیف
POST /api/v1/discounts/validate
POST /api/v1/discount-codes/validate
Body:
{
@ -308,6 +347,89 @@ Body:
"amount": 1000000
}
🔐 API های احراز هویت (فاز ۳)
۱. ورود و دریافت توکن Sanctum
POST /api/v1/auth/login
Body:
{
"email": "user@example.com",
"password": "password",
"token_name": "api-token"
}
۲. خروج و حذف توکن
POST /api/v1/auth/logout
Header: Authorization: Bearer {token}
🛒 API های سفارشات مشتری (فاز ۳)
۱. پروفایل و آمار کاربر
GET /api/v1/customer/profile
۲. لیست کشورها برای فرم سفارش
GET /api/v1/customer/countries
۳. لیست سفارشات کاربر
GET /api/v1/customer/orders
۴. ثبت سفارش جدید
POST /api/v1/customer/orders
Body:
{
"direction": "export",
"type": "PARCEL",
"from_country_id": 1,
"to_country_id": 2,
"weight": 2.5,
"sender_name": "نام فرستنده",
"sender_phone": "۰۹۱۲۳۴۵۶۷۸۹",
"sender_address": "آدرس",
"receiver_name": "نام گیرنده",
"receiver_phone": "۰۹۱۲۳۴۵۶۷۸۹",
"receiver_address": "آدرس",
"items": [
{
"description": "کالای گمرکی",
"hs_code": "8542390001",
"quantity": 1,
"unit_price": 100
}
]
}
۵. جزئیات یک سفارش
GET /api/v1/customer/orders/{shipment}
۶. لغو سفارش (فقط pending_payment)
POST /api/v1/customer/orders/{shipment}/cancel
۷. پرداخت از کیف پول
POST /api/v1/customer/orders/{shipment}/pay-wallet
۸. پرداخت از درگاه بانکی
POST /api/v1/customer/orders/{shipment}/pay-gateway
Body:
{
"frontend_callback": "https://your-wordpress.com/order-payment/"
}
🔗 API پل وردپرس (فاز ۳)
POST /api/v1/bridge/login
Body:
{
"bridge_api_key": "ifnex-bridge-key",
"wp_user_id": 1,
"wp_user_email": "user@wordpress.local",
"wp_user_name": "نام کاربر"
}
Artisan Commands
📥 واردات داده‌ها
@ -334,6 +456,13 @@ php artisan ifnex:update-exchange-rates
# crontab -e
# 0 0 * * * cd /path/to/04_Laravel && php artisan ifnex:update-exchange-rates >> /dev/null 2>&1
🔄 سینک کاربران وردپرس (فاز ۳)
# سینک دستی کاربران بین وردپرس و لاراول
php artisan ifnex:sync-wp-users
🔑 تولید توکن API (فاز ۲)
php artisan ifnex:token --user=admin@ifnex.local --name=api-token
🧪 تست‌ها
# اجرای همه تست‌ها
php artisan test
@ -361,6 +490,25 @@ php artisan test --filter=PriceCalculatorServiceTest
✅ اعمال صحیح ضریب سود و VAT
✅ اعمال هزینه‌های جانبی
✅ اعمال کد تخفیف درصدی و ثابت
۲. WalletServiceTest (فاز ۲)
تست‌های مربوط به کیف پول و تراکنش‌ها:
php artisan test --filter=WalletServiceTest
۳. PaymentControllerTest (فاز ۲)
تست‌های مربوط به درگاه پرداخت:
php artisan test --filter=PaymentControllerTest
۴. DiscountCodeControllerTest (فاز ۲)
تست‌های مربوط به کدهای تخفیف:
php artisan test --filter=DiscountCodeControllerTest
نوشتن تست جدید
برای نوشتن تست جدید، از این الگو استفاده کنید:
@ -414,6 +562,19 @@ return [
// Currency API
'currency_api_key' => env('CURRENCY_API_KEY'),
'currency_api_url' => env('CURRENCY_API_URL', 'https://api.freecurrencyapi.com/v1/latest'),
// Zarinpal Payment Gateway
'zarinpal' => [
'merchant_id' => env('ZARINPAL_MERCHANT_ID', 'fake-merchant-id-for-testing'),
'sandbox' => env('ZARINPAL_SANDBOX', true),
'callback_url' => env('ZARINPAL_CALLBACK_URL', 'http://localhost:8000/api/v1/payment/callback'),
],
// WordPress Bridge
'bridge_api_key' => env('IFNEX_BRIDGE_API_KEY', 'ifnex-bridge-key'),
// CORS
'cors_allowed_origins' => explode(',', env('CORS_ALLOWED_ORIGINS', '*')),
];
فایل config/cors.php

616
DEPLOYMENT.md Normal file
View File

@ -0,0 +1,616 @@
# 📦 راهنمای دپلوی IFNEX Logistics Platform
راهنمای کامل انتقال پروژه از محیط توسعه (XAMPP) به سرور Production
**نسخه:** 1.0.0
**تاریخ:** 2026-08-10
**نویسنده:** تیم توسعه IFNEX
---
## 📋 فهرست مطالب
1. [پیش‌نیازهای سرور](#۱-پیشنیازهای-سرور)
2. [ساختار پروژه](#۲-ساختار-پروژه)
3. [دپلوی Laravel (Backend)](#۳-دپلوی-laravel-backend)
4. [دپلوی WordPress (Frontend)](#۴-دپلوی-wordpress-frontend)
5. [اتصال دو سیستم (Bridge)](#۵-اتصال-دو-سیستم-bridge)
6. [تنظیمات امنیتی](#۶-تنظیمات-امنیتی)
7. [Cron Jobs](#۷-cron-jobs)
8. [Backup Strategy](#۸-backup-strategy)
9. [چک‌لیست نهایی](#۹-چکلیست-نهایی)
10. [Troubleshooting](#۱۰-troubleshooting)
---
## ۱. پیش‌نیازهای سرور
### حداقل نیازمندی‌ها
| مورد | حداقل | پیشنهادی |
|------|-------|----------|
| PHP | 8.2 | 8.3 |
| MySQL | 8.0 | 8.0+ |
| RAM | 2GB | 4GB |
| Disk | 20GB SSD | 50GB NVMe |
| Web Server | Apache 2.4 / Nginx 1.24 | Nginx |
### افزونه‌های PHP مورد نیاز
```bash
php -m | grep -E "pdo_mysql|mbstring|openssl|tokenizer|xml|ctype|json|bcmath|gd|zip|curl|intl"
```
لیست کامل:
- `pdo_mysql` - اتصال به MySQL
- `mbstring` - پشتیبانی UTF-8 (فارسی)
- `openssl` - رمزنگاری
- `tokenizer` - Laravel
- `xml` - Laravel
- `ctype` - Laravel
- `json` - Laravel
- `bcmath` - محاسبات مالی
- `gd` یا `imagick` - پردازش تصویر
- `zip` - Composer
- `curl` - درخواست‌های HTTP
- `intl` - تاریخ شمسی (Jalali)
### نصب Composer و Node
```bash
# Composer
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
# بررسی نسخه
composer --version
```
---
## ۲. ساختار پروژه
```
IFNEX-Logistics/
├── 01_WordPress/ # (قدیمی - قابل حذف بعد از مهاجرت)
├── 03_WordPress/ # ✅ وردپرس اصلی (Frontend مشتری)
│ └── wp-content/
│ ├── plugins/
│ │ └── ifnex-bridge/ # ✅ پلاگین اتصال به Laravel
│ └── themes/
│ └── ifnex/ # ✅ قالب اختصاصی
├── 04_Laravel/ # ✅ Laravel (Backend + پنل ادمین)
│ ├── app/
│ ├── database/
│ ├── public/ # Document root برای Laravel
│ └── routes/
└── DEPLOYMENT.md # این فایل
```
### Document Roots روی سرور
| دامنه | مسیر |
|-------|------|
| `ifnex.com` | `/var/www/IFNEX/03_WordPress` |
| `api.ifnex.com` یا `ifnex.com/api` | `/var/www/IFNEX/04_Laravel/public` |
---
## ۳. دپلوی Laravel (Backend)
### گام ۱: آپلود فایل‌ها
```bash
# از سیستم محلی به سرور
scp -r 04_Laravel user@server:/var/www/IFNEX/
# یا با rsync (پیشنهادی)
rsync -avz --exclude 'vendor' --exclude 'node_modules' \
04_Laravel/ user@server:/var/www/IFNEX/04_Laravel/
```
### گام ۲: نصب Dependencies
```bash
cd /var/www/IFNEX/04_Laravel
# نصب بدون dev packages (برای production)
composer install --optimize-autoloader --no-dev --no-interaction
```
### گام ۳: تنظیم `.env`
فایل `.env` را برای production تنظیم کن:
```env
# ─── تنظیمات پایه ───────────────────────────
APP_NAME="IFNEX Logistics"
APP_ENV=production
APP_KEY=base64:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
APP_DEBUG=false
APP_URL=https://api.ifnex.com
# ─── دیتابیس ─────────────────────────────────
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=ifnex_laravel
DB_USERNAME=ifnex_user
DB_PASSWORD=StrongPassword@123
# ─── Session و Cache ─────────────────────────
SESSION_DRIVER=database
CACHE_STORE=redis
QUEUE_CONNECTION=database
# ─── Sanctum ─────────────────────────────────
SANCTUM_STATEFUL_DOMAINS=ifnex.com,www.ifnex.com
SESSION_DOMAIN=.ifnex.com
# ─── IFNEX Bridge ────────────────────────────
# ⚠️ مهم: این کلید باید با وردپرس یکسان باشد
IFNEX_BRIDGE_API_KEY=your-very-strong-random-key-here
# ─── Zarinpal ────────────────────────────────
ZARINPAL_MERCHANT_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
ZARINPAL_SANDBOX=false
# ─── Mail ────────────────────────────────────
MAIL_MAILER=smtp
MAIL_HOST=smtp.ifnex.com
MAIL_PORT=587
MAIL_USERNAME=noreply@ifnex.com
MAIL_PASSWORD=xxxxx
MAIL_ENCRYPTION=tls
```
**تولید کلید امن:**
```bash
php artisan key:generate --show
openssl rand -hex 32 # برای BRIDGE_API_KEY
```
### گام ۴: ساخت دیتابیس
```bash
mysql -u root -p
```
```sql
CREATE DATABASE ifnex_laravel CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'ifnex_user'@'localhost' IDENTIFIED BY 'StrongPassword@123';
GRANT ALL PRIVILEGES ON ifnex_laravel.* TO 'ifnex_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
```
### گام ۵: Import دیتابیس از توسعه
```bash
# از سیستم محلی (XAMPP)
mysqldump -u root ifnex_laravel > ifnex_backup.sql
# آپلود به سرور
scp ifnex_backup.sql user@server:/tmp/
# Import روی سرور
mysql -u ifnex_user -p ifnex_laravel < /tmp/ifnex_backup.sql
```
### گام ۶: Migrations و Cache
```bash
cd /var/www/IFNEX/04_Laravel
# اجرای migrations
php artisan migrate --force
# Seed داده‌های اولیه (نرخ ارز، zones، ...)
php artisan db:seed --class=SampleShippingRatesSeeder --force
# ساخت cache ها برای سرعت
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan event:cache
# Permissions
chmod -R 775 storage bootstrap/cache
chown -R www-data:www-data storage bootstrap/cache
```
### گام ۷: تنظیم Nginx
فایل `/etc/nginx/sites-available/ifnex-api`:
```nginx
server {
listen 80;
server_name api.ifnex.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name api.ifnex.com;
root /var/www/IFNEX/04_Laravel/public;
index index.php;
# SSL
ssl_certificate /etc/letsencrypt/live/api.ifnex.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/api.ifnex.com/privkey.pem;
# Security headers
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
# Upload limits
client_max_body_size 50M;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
# مسدود کردن فایل‌های حساس
location ~ /\.(env|git) {
deny all;
}
}
```
فعال‌سازی:
```bash
ln -s /etc/nginx/sites-available/ifnex-api /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
```
### گام ۸: SSL رایگان با Let's Encrypt
```bash
apt install certbot python3-certbot-nginx
certbot --nginx -d api.ifnex.com
```
---
## ۴. دپلوی WordPress (Frontend)
### گام ۱: آپلود فایل‌ها
```bash
rsync -avz --exclude 'wp-content/uploads' \
03_WordPress/ user@server:/var/www/IFNEX/03_WordPress/
```
### گام ۲: تنظیم `wp-config.php`
```php
<?php
// ─── دیتابیس ─────────────────────────────
define('DB_NAME', 'ifnex_wp');
define('DB_USER', 'ifnex_wp_user');
define('DB_PASSWORD', 'StrongPassword@456');
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8mb4');
// ─── کلیدهای امنیتی ──────────────────────
// از https://api.wordpress.org/secret-key/1.1/salt/ بگیرید
define('AUTH_KEY', 'xxxxx');
define('SECURE_AUTH_KEY', 'xxxxx');
define('LOGGED_IN_KEY', 'xxxxx');
define('NONCE_KEY', 'xxxxx');
// ─── Production ──────────────────────────
define('WP_DEBUG', false);
define('WP_DEBUG_LOG', false);
define('WP_DEBUG_DISPLAY', false);
define('SCRIPT_DEBUG', false);
// ─── Performance ─────────────────────────
define('WP_CACHE', true);
define('ABSPATH', __DIR__ . '/');
require_once ABSPATH . 'wp-settings.php';
```
### گام ۳: Import دیتابیس وردپرس
```bash
mysqldump -u root ifnexwp > ifnexwp_backup.sql
scp ifnexwp_backup.sql user@server:/tmp/
mysql -u ifnex_wp_user -p ifnex_wp < /tmp/ifnexwp_backup.sql
```
**اصلاح URLها در دیتابیس:**
```sql
UPDATE wp_options SET option_value = 'https://ifnex.com'
WHERE option_name IN ('siteurl', 'home');
UPDATE wp_posts SET post_content = REPLACE(post_content,
'http://localhost/IFNEX-Logistics/03_WordPress', 'https://ifnex.com');
```
### گام ۴: تنظیم Nginx برای وردپرس
فایل `/etc/nginx/sites-available/ifnex-wp`:
```nginx
server {
listen 443 ssl http2;
server_name ifnex.com www.ifnex.com;
root /var/www/IFNEX/03_WordPress;
index index.php;
ssl_certificate /etc/letsencrypt/live/ifnex.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ifnex.com/privkey.pem;
client_max_body_size 50M;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
# کش فایل‌های استاتیک
location ~* \.(jpg|jpeg|png|gif|css|js|svg|woff2)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
location ~ /\.(env|git) {
deny all;
}
}
```
### گام ۵: Permissions
```bash
chown -R www-data:www-data /var/www/IFNEX/03_WordPress
find /var/www/IFNEX/03_WordPress -type d -exec chmod 755 {} \;
find /var/www/IFNEX/03_WordPress -type f -exec chmod 644 {} \;
chmod -R 775 /var/www/IFNEX/03_WordPress/wp-content/uploads
```
---
## ۵. اتصال دو سیستم (Bridge)
### گام ۱: تنظیم پلاگین IFNEX Bridge
در پیشخوان وردپرس:
**IFNEX → تنظیمات**
| فیلد | مقدار |
|------|-------|
| API URL | `https://api.ifnex.com/api/v1` |
| API Key | (کلید عمومی از Laravel) |
| Bridge API Key | (همان مقدار `.env` لاراول) |
### گام ۲: بررسی اتصال
در وردپرس یک صفحه تست بساز با شورت‌کد:
```
[ifnex_wallet_balance]
```
اگر موجودی نمایش داده شد، اتصال برقرار است. ✅
### گام ۳: Sync کاربران
```bash
cd /var/www/IFNEX/04_Laravel
php artisan ifnex:sync-wp-users \
--wp-db-name=ifnex_wp \
--wp-db-user=ifnex_wp_user \
--wp-db-pass=StrongPassword@456
```
---
## ۶. تنظیمات امنیتی
### چک‌لیست امنیتی
- [ ] `APP_DEBUG=false` در Laravel
- [ ] `WP_DEBUG=false` در WordPress
- [ ] SSL فعال روی هر دو دامنه
- [ ] فایل‌های `.env` و `.git` مسدود شده‌اند
- [ ] رمزهای قوی برای دیتابیس
- [ ] `IFNEX_BRIDGE_API_KEY` قوی و تصادفی
- [ ] حذف فایل‌های debug از production:
```bash
rm -f debug-payment.php check-*.php test-*.php
```
- [ ] محدودیت دسترسی به `/admin` (اختیاری: IP whitelist)
### Firewall (UFW)
```bash
ufw allow 22/tcp # SSH
ufw allow 80/tcp # HTTP
ufw allow 443/tcp # HTTPS
ufw enable
```
---
## ۷. Cron Jobs
### Laravel Scheduler
```bash
crontab -e
```
```cron
* * * * * cd /var/www/IFNEX/04_Laravel && php artisan schedule:run >> /dev/null 2>&1
```
### Cron آپدیت نرخ ارز (هر ساعت)
اگر از scheduler استفاده نمی‌کنید:
```cron
0 * * * * cd /var/www/IFNEX/04_Laravel && php artisan ifnex:update-rates >> /dev/null 2>&1
```
### Cron Backup روزانه (ساعت ۲ بامداد)
```cron
0 2 * * * /var/www/IFNEX/scripts/backup.sh >> /var/log/ifnex-backup.log 2>&1
```
---
## ۸. Backup Strategy
### اسکریپت `backup.sh`
فایل `/var/www/IFNEX/scripts/backup.sh`:
```bash
#!/bin/bash
# ─── IFNEX Backup Script ───────────────────
BACKUP_DIR="/var/backups/ifnex"
DATE=$(date +%Y%m%d_%H%M%S)
RETENTION_DAYS=7
mkdir -p $BACKUP_DIR
# Backup دیتابیس Laravel
mysqldump -u ifnex_user -p'StrongPassword@123' ifnex_laravel \
| gzip > $BACKUP_DIR/laravel_$DATE.sql.gz
# Backup دیتابیس WordPress
mysqldump -u ifnex_wp_user -p'StrongPassword@456' ifnex_wp \
| gzip > $BACKUP_DIR/wordpress_$DATE.sql.gz
# Backup فایل‌های آپلود وردپرس
tar -czf $BACKUP_DIR/uploads_$DATE.tar.gz \
-C /var/www/IFNEX/03_WordPress/wp-content uploads
# حذف backup های قدیمی
find $BACKUP_DIR -name "*.gz" -mtime +$RETENTION_DAYS -delete
echo "✅ Backup completed: $DATE"
```
اجرا:
```bash
chmod +x /var/www/IFNEX/scripts/backup.sh
```
---
## ۹. چک‌لیست نهایی
### قبل از Go-Live
**Laravel:**
- [ ] `php artisan migrate --force` بدون خطا
- [ ] `php artisan config:cache` موفق
- [ ] ورود به `/admin` با ادمین
- [ ] داشبورد بدون خطا لود می‌شود
- [ ] ویجت‌های نرخ ارز نمایش داده می‌شوند
**WordPress:**
- [ ] صفحه اصلی بدون خطا
- [ ] ورود مشتری کار می‌کند
- [ ] `/new-order/` فرم را نمایش می‌دهد
- [ ] `/my-orders/` لیست سفارشات را نشان می‌دهد
- [ ] تست کامل: ثبت سفارش → پرداخت → تغییر status
**اتصال:**
- [ ] Bridge API Key یکسان در هر دو طرف
- [ ] تست پرداخت از کیف پول موفق
- [ ] Tracking event ثبت می‌شود
### بعد از Go-Live
- [ ] مانیتورینگ لاگ‌ها:
```bash
tail -f /var/www/IFNEX/04_Laravel/storage/logs/laravel.log
```
- [ ] بررسی cron jobs: `crontab -l`
- [ ] تست backup و restore
---
## ۱۰. Troubleshooting
### مشکل: خطای 500 در Laravel
```bash
# بررسی لاگ
tail -100 storage/logs/laravel.log
# پاک کردن cache
php artisan config:clear
php artisan cache:clear
# بررسی permissions
chmod -R 775 storage bootstrap/cache
```
### مشکل: وردپرس به Laravel وصل نمی‌شود
```bash
# تست اتصال از سرور وردپرس
curl -X POST https://api.ifnex.com/api/v1/bridge/login \
-H "Content-Type: application/json" \
-d '{"bridge_api_key":"YOUR_KEY","wp_user_id":1,"wp_user_email":"test@test.com"}'
```
### مشکل: خطای "توکن احراز هویت یافت نشد"
1. بررسی کنید کاربر در Laravel وجود دارد (sync شده)
2. توکن‌های قدیمی را پاک کنید:
```sql
DELETE FROM wp_usermeta WHERE meta_key LIKE 'ifnex_laravel%';
```
3. دوباره لاگین کنید
### مشکل: SSL certificate error
```bash
certbot renew --dry-run
certbot renew
```
### مشکل: خطای CORS
در `config/cors.php` لاراول:
```php
'paths' => ['api/*', 'sanctum/csrf-cookie'],
'allowed_origins' => ['https://ifnex.com', 'https://www.ifnex.com'],
```
---
## 📞 پشتیبانی
در صورت بروز مشکل:
- ایمیل: dev@ifnex.com
- مستندات Laravel: https://laravel.com/docs
- مستندات WordPress: https://wordpress.org/documentation/
---
**پایان راهنمای دپلوی**
🎉 موفق باشید!

236
README.md
View File

@ -3,8 +3,8 @@
| مورد | توضیحات |
| :--- | :--- |
| **ویرایش سند** | v4.1 (Laravel 11 + Filament 3.3 + فاز ۰ کامل + فاز ۱ کامل + فاز ۲ در حال اجرا) |
| **تاریخ آخرین به‌روزرسانی** | 2026-08-07 |
| **ویرایش سند** | v4.2 (Laravel 11 + Filament 3.3 + فاز ۰ کامل + فاز ۱ کامل + فاز ۲ کامل + فاز ۳ کامل) |
| **تاریخ آخرین به‌روزرسانی** | 2026-08-10 |
| **توسعه‌دهنده** | VernaSoft Group — Kazem Alghasi |
| **مشتری** | شرکت حمل و نقل بین‌المللی ایف‌نکس (IFNEX) — اصفهان |
@ -48,11 +48,11 @@
| لایه | تکنولوژی | نقش |
| :--- | :--- | :--- |
| **فرانت‌اند** | WordPress + Elementor | مدیریت ظاهر، منوها، لندینگ پیج‌ها، صفحات ثابت، وبلاگ سئو |
| **بک‌اند** | Laravel 11 + Filament 3.3 | API سرور، پنل ادمین، موتور قیمت‌گذاری، صدور PDF، کیف پول |
| **پل ارتباطی** | پلاگین اختصاصی IFNEX Bridge | ارسال درخواست‌های کاربر از وردپرس به لاراول |
| **فرانت‌اند** | WordPress 7.0.3 + پوسته سفارشی IFNEX + Polylang | مدیریت ظاهر، چندزبانه، پورتال مشتری، لندینگ پیج‌ها |
| **بک‌اند** | Laravel 11 + Filament 3.3 | API سرور، پنل ادمین، موتور قیمت‌گذاری، صدور PDF، کیف پول، پرداخت آنلاین |
| **پل ارتباطی** | پلاگین اختصاصی IFNEX Bridge | ارسال درخواست‌های کاربر از وردپرس به لاراول، مدیریت توکن Sanctum |
| **دیتابیس** | MySQL 8 | ذخیره‌سازی داده‌ها با پشتیبانی از JSON columns |
| **زیرساخت رهگیری** | VPS خارج از کشور (در فاز ۳) | واسط برای دسترسی به APIهای رهگیری بین‌المللی |
| **زیرساخت رهگیری** | VPS خارج از کشور (در فاز ۴) | واسط برای دسترسی به APIهای رهگیری بین‌المللی |
---
@ -64,8 +64,8 @@
| :--- | :--- | :--- | :--- |
| **فاز ۰** | بنیان داده + وب‌سایت + ترکینگ دستی + مهاجرت داده‌های تاریخی | ۴ هفته | ✅ کامل |
| **فاز ۱** | موتور قیمت‌گذاری کامل + ثبت سفارش آنلاین + تولید PDFها + استعلام قیمت | ۴-۶ هفته | ✅ کامل |
| **فاز ۲** | حساب کاربری مشتری + کیف پول + حسابداری ساده + تخفیف حجمی | ۴ هفته | 🚧 در حال اجرا |
| **فاز ۳** | VPS پل + API ترکینگ زنده + CRM + داشبورد مالی تحلیلی | ۶-۸ هفته | ⏳ در صف |
| **فاز ۲** | حساب کاربری مشتری + کیف پول + پرداخت آنلاین + تخفیف حجمی + پنل مالی | ۴ هفته | ✅ کامل |
| **فاز ۳** | پورتال مشتری کامل + پلاگین وردپرس + سینک کاربران + پرداخت سفارش | ۶ هفته | ✅ کامل |
> 💡 جزئیات کامل هر فاز، اسکیمای دیتابیس، جدول زمانی و معیارهای پذیرش در سند `01_Documents/Phase0_Proposal.md` آمده است.
@ -80,20 +80,31 @@
- پشتیبانی از ۳ نوع سرویس: `DOC_NORMAL`, `DOC_ECONOMY`, `PARCEL`
- جدول `shipment_carrier_mappings` برای نگاشت چند شرکت حمل به هر بارنامه
- جدول `shipment_tracking_events` برای ذخیره تایم‌لاین کامل رویدادهای هر مرسوله
- جدول `system_settings` برای ذخیره تنظیمات سیستم (VAT، نرخ ارز، ضریب سود)
- جدول `shipment_items` برای اقلام گمرکی (۹ ردیف)
2. **پنل مدیریت اختصاصی (Laravel Filament)**
- مدیریت ۲۳۳ کشور با زون‌های صادرات و واردات
- فرم تنظیمات سیستم: تغییر سریع ارزها و ضریب سود بدون دستکاری کد
- UX تخصصی اپراتور ترکینگ: افزودن رویداد در چند ثانیه با فیلدهای از پیش پر شده
- **تب‌بندی ویجت‌های داشبورد:** اطلاعات کلی، نرخ ارز، آمار کیف پول
- **رابط کاربری سفارشی:** رنگ Navy gradient، فونت Vazirmatn، RTL کامل
3. **ارتباطات API و فرانت‌اند**
- **API ترکینگ:** `GET /api/track/{awb_no}` با API Key + Rate Limiting + CORS
- **پلاگین IFNEX Bridge:** شورت‌کد `[ifnex_tracking_form]` برای فرم رهگیری در وردپرس
- **امنیت:** API Key + Rate Limiting + CORS whitelist + Form Request Validation
- **API استعلام قیمت:** `POST /api/v1/calculate`
- **API احراز هویت:** `POST /api/v1/auth/login` + `POST /api/v1/auth/logout` (Sanctum)
- **API سفارشات مشتری:** ۶ endpoint برای پروفایل، سفارشات، پرداخت و لغو
- **API کیف پول:** موجودی، تراکنش‌ها، تنظیمات ادمین
- **API تخفیف:** لیست و اعتبارسنجی کدهای تخفیف
- **پلاگین IFNEX Bridge:** شورت‌کدهای `[ifnex_tracking_form]`، `[ifnex_tracking_status]`، `[ifnex_wallet_balance]`، `[ifnex_transactions]`
- **امنیت:** API Key + Rate Limiting + CORS whitelist + Form Request Validation + Sanctum
4. **مهاجرت داده‌های تاریخی**
- انتقال ۳۹۵۰ رکورد تاریخی از فایل اکسل به دیتابیس جدید
- اعتبارسنجی و پاکسازی خودکار داده‌ها
- import ۴۰۴ رکورد تعرفه‌های حمل
- import ۹۸ رویداد ترکینگ دستی
### فاز ۱ (تکمیل شده) ✅
@ -106,7 +117,7 @@
2. **فرم ثبت سفارش آنلاین**
- فرم عمومی برای مشتریان با ۹ ردیف کالای گمرکی
- اعتبارسنجی خودکار و محاسبه لحظه‌ای قیمت
- تولید AWB number خودکار
- تولید AWB number خودکار با فرمت `IFN-YYYY-XXXXX`
3. **تولید PDFهای حرفه‌ای**
- **AWB:** بارنامه هوایی با لوگوی IFNEX
@ -123,40 +134,98 @@
- پشتیبانی از شیت‌های Export Rate، Import Rate و DocEco
- تبدیل خودکار واحد قیمت (ریال → درهم) برای شیت‌های DocNor/DocEco
### فاز ۲ (در حال اجرا) 🚧
### فاز ۲ (تکمیل شده) ✅
1. **سیستم کیف پول (Wallet)**
- API شارژ اعتبار
- API شارژ اعتبار (دستی و خودکار)
- API بررسی موجودی
- API تاریخچه تراکنش‌ها
- **وضعیت:** Controllers و APIها ساخته شده، نیاز به اتصال درگاه پرداخت
- **اتصال درگاه پرداخت زرین‌پال** با Mock Gateway برای تست
- پرداخت آنلاین کامل با بازگشت به فرانت‌اند
2. **سیستم تخفیف (Discount Codes)**
- API لیست کدهای تخفیف فعال
- API اعتبارسنجی کد تخفیف
- پشتیبانی از تخفیف درصدی و ثابت
- **وضعیت:** کامل شده
- **DiscountCodeResource** در Filament با form/table/filters کامل
3. **به‌روزرسانی خودکار نرخ ارز**
- Artisan Command برای به‌روزرسانی روزانه
- پشتیبانی از ECB و FreeCurrencyAPI
- **وضعیت:** کامل شده
- **ردیابی تاریخچه نرخ ارز** با `ExchangeRateHistory` و `ExchangeRateHistoryResource`
4. **کارهای باقی‌مانده فاز ۲**
- [ ] اتصال درگاه پرداخت (زرین‌پال)
- [ ] شارژ آنلاین کامل با درگاه پرداخت
- [ ] پنل مالی در Filament (داشبورد سود/زیان)
- [ ] فرمول محاسبه قیمت رقبا
4. **پنل مالی در Filament**
- **FinanceOverviewWidget** — خلاصه مالی
- **TransactionChartWidget** — نمودار تراکنش‌ها
- **RecentTransactionsWidget** — آخرین تراکنش‌ها
- **PaymentResource** — مشاهده تراکنش‌های درگاه
- **WalletTransactionResource** — CRUD کامل تراکنش‌های کیف پول
- خروجی CSV برای تراکنش‌ها و مرسولات
### فاز ۳ (در صف) ⏳
5. **کنترل دسترسی مبتنی بر نقش (RBAC)**
- یکپارچگی با `spatie/laravel-permission`
- **RoleResource** و **UserResource** در Filament
- **RoleAndPermissionSeeder** برای تنظیم اولیه
- [ ] راه‌اندازی VPS پل خارج (هلند/آلمان)
- [ ] اتصال به TrackingMore/17track API
- [ ] سیستم وب‌هوک
- [ ] مپ کردن کدهای رهگیری
- [ ] داشبورد مالی
- [ ] فرم نظرسنجی و رضایت مشتری
- [ ] پنل کاربری مشتریان در وردپرس
6. **یکپارچگی وردپرس ↔ لاراول**
- دستور Artisan `ifnex:sync-wp-users` برای سینک کاربران
- پلاگین IFNEX Bridge گسترش یافته:
- شورت‌کد `[ifnex_wallet_balance]` برای موجودی کیف پول
- شورت‌کد `[ifnex_transactions]` برای لیست تراکنش‌ها
- AJAX handlers برای موجودی و تراکنش‌ها
### فاز ۳ (تکمیل شده) ✅
1. **سیستم ثبت سفارش مشتری (Customer Ordering)**
- **CustomerOrderController** با ۶ endpoint:
- `GET /api/v1/customer/profile` — پروفایل و آمار کاربر
- `GET /api/v1/customer/countries` — لیست کشورها
- `GET /api/v1/customer/orders` — لیست سفارشات
- `POST /api/v1/customer/orders` — ثبت سفارش جدید
- `GET /api/v1/customer/orders/{shipment}` — جزئیات سفارش
- `POST /api/v1/customer/orders/{shipment}/cancel` — لغو سفارش
- تولید خودکار شماره AWB با فرمت `IFN-YYYY-XXXXX`
- وضعیت‌های جدید: `pending_payment` و `cancelled`
- اعتبارسنجی کامل و محاسبه لحظه‌ای قیمت
2. **سیستم پرداخت سفارش (Order Payment)**
- **OrderPaymentService** برای مدیریت پرداخت‌ها
- پرداخت از کیف پول: `POST /api/v1/customer/orders/{shipment}/pay-wallet`
- پرداخت از درگاه: `POST /api/v1/customer/orders/{shipment}/pay-gateway`
- تکمیل خودکار پرداخت بعد از callback درگاه
- ثبت رویداد ترکینگ پس از پرداخت موفق
3. **احراز هویت مشتری (Customer Auth)**
- **AuthController** با login/logout برای Sanctum
- **BridgeAuthController** برای لاگین مستقیم از وردپرس
- توکن‌های Sanctum با انقضا ۳۰ روزه
4. **پورتال مشتری در وردپرس**
- **شورت‌کد `[ifnex_order_form]`** — فرم ثبت سفارش چندمرحله‌ای (۴ مرحله)
- **شورت‌کد `[ifnex_orders_list]`** — لیست سفارشات با فیلتر وضعیت
- **شورت‌کد `[ifnex_order_payment]`** — صفحه پرداخت سفارش (کیف پول + درگاه)
- **شورت‌کد `[ifnex_order_detail]`** — جزئیات سفارش با timeline رهگیری
- **شورت‌کد `[ifnex_user_profile]`** — پروفایل کاربر با آمار کیف پول
- استایل‌های CSS کامل برای تمام کامپوننت‌ها (`ifnex-orders.css`)
- JavaScript برای ناوبری مراحل و AJAX (`ifnex-order-form.js`)
5. **پوسته وردپرس سفارشی IFNEX**
- پشتیبانی چندزبانه با Polylang
- مدیریت LTR/RTL خودکار
- Customizer برای لوگو و زبان
- قالب‌های archive, single, front-page
- ساختار تمیک شرکتی با لوگو IFNEX
6. **سیستم طراحی یکپارچه (Design System)**
- **DESIGN_SYSTEM.md** — مرجع کامل رنگ‌ها، فونت‌ها، فاصله‌گذاری
- رنگ‌های برند: Primary Amber `#f59e0b`، Sidebar Dark Navy `#1a1a2e → #16213e`
- فونت Vazirmatn برای کل پنل ادمین و فرانت‌اند
- استایل‌های یکپارچه برای Filament و پلاگین وردپرس
7. **گزارش‌گیری مالی در Filament**
- صفحه **FinancialReport** با خلاصه تراکنش‌ها و مرسولات
- خروجی Excel برای ShipmentResource و WalletTransactionResource
- ویجتهایdashboard اطلاعاتی
---
@ -176,11 +245,114 @@ IFNEX-Logistics/
│ └── Assets/ # لوگوها، آیکون‌ها
├── 03_WordPress/ # سیستم مدیریت محتوا (فرانت‌اند)
│ └── wp-content/plugins/
│ └── ifnex-bridge/ # پلاگین اختصاصی ارتباط با لاراول
│ ├── wp-content/
│ │ ├── themes/ifnex/ # پوسته سفامشی IFNEX (چندزبانه، RTL/LTR)
│ │ └── plugins/
│ │ └── ifnex-bridge/ # پلاگین اختصاصی ارتباط با لاراول
│ │ ├── ifnex-bridge.php
│ │ ├── includes/
│ │ │ ├── api-client.php
│ │ │ ├── shortcodes.php
│ │ │ ├── tracking-form.php
│ │ │ └── user-bridge.php
│ │ └── assets/
│ │ ├── css/
│ │ │ ├── ifnex-bridge.css
│ │ │ └── ifnex-orders.css
│ │ └── js/
│ │ └── ifnex-order-form.js
├── 04_Laravel/ # هسته مرکزی سیستم (بک‌اند)
│ └── README.md # راهنمای نصب و استفاده از لاراول
│ ├── README.md # راهنمای نصب و استفاده از لاراول
│ ├── app/
│ │ ├── Models/
│ │ │ ├── Country.php
│ │ │ ├── Shipment.php
│ │ │ ├── ShipmentItem.php
│ │ │ ├── ShippingRate.php
│ │ │ ├── ShipmentCarrierMapping.php
│ │ │ ├── ShipmentTrackingEvent.php
│ │ │ ├── SystemSetting.php
│ │ │ ├── Wallet.php
│ │ │ ├── WalletTransaction.php
│ │ │ ├── DiscountCode.php
│ │ │ ├── ExchangeRateHistory.php
│ │ │ ├── Role.php # spatie/laravel-permission
│ │ │ └── User.php
│ │ ├── Enums/
│ │ │ ├── ShipmentDirection.php
│ │ │ ├── ShipmentType.php
│ │ │ ├── ShipmentStatus.php # ۹ وضعیت (pending_payment, cancelled اضافه شد)
│ │ │ ├── CarrierCode.php
│ │ │ ├── TrackingSource.php # ۵ منبع (manual, api, import, system, customer)
│ │ │ ├── TransactionType.php
│ │ │ ├── TransactionStatus.php
│ │ │ ├── PaymentGateway.php # ۴ درگاه (zarinpal, wallet, manual, system)
│ │ │ └── UserRole.php
│ │ ├── Services/
│ │ │ ├── PriceCalculatorService.php
│ │ │ ├── TrackingService.php
│ │ │ ├── ExchangeRateService.php # ردیابی و مدیریت نرخ ارز
│ │ │ ├── ZarinpalService.php # اتصال به درگاه زرین‌پال
│ │ │ ├── MockZarinpalService.php # شبیه‌سازی درگاه برای تست
│ │ │ └── OrderPaymentService.php # پرداخت سفارشات (کیف پول + درگاه)
│ │ ├── Http/
│ │ │ ├── Controllers/
│ │ │ │ ├── Api/
│ │ │ │ │ ├── TrackController.php
│ │ │ │ │ ├── PricingController.php
│ │ │ │ │ ├── AuthController.php # ورود/خروج Sanctum
│ │ │ │ │ ├── BridgeAuthController.php # لاگین از پلاگین وردپرس
│ │ │ │ │ ├── WalletController.php
│ │ │ │ │ ├── PaymentController.php
│ │ │ │ │ ├── DiscountCodeController.php
│ │ │ │ │ └── Customer/
│ │ │ │ │ └── CustomerOrderController.php # ۶ endpoint سفارش مشتری
│ │ │ │ ├── OrderController.php
│ │ │ │ ├── PricingPageController.php
│ │ │ │ └── ShipmentPdfController.php
│ │ │ ├── Middleware/
│ │ │ │ └── ApiKeyMiddleware.php
│ │ │ └── Requests/
│ │ ├── Imports/
│ │ │ ├── ShippingRatesImport.php
│ │ │ ├── HistoricalShipmentsImport.php
│ │ │ └── RateSheetImport.php
│ │ ├── Console/
│ │ │ └── Commands/
│ │ │ │ ├── ImportShippingRates.php
│ │ │ │ │ ├── ImportHistoricalData.php
│ │ │ │ │ ├── UpdateExchangeRates.php
│ │ │ │ │ ├── SyncWordPressUsers.php # سینک کاربران وردپرس
│ │ │ │ │ └── DebugImportCommand.php
│ │ ├── Filament/
│ │ │ ├── Resources/
│ │ │ │ ├── CountryResource.php
│ │ │ │ ├── ShipmentResource.php
│ │ │ │ ├── ShippingRateResource.php
│ │ │ │ ├── ShipmentItemResource.php
│ │ │ │ ├── WalletResource.php
│ │ │ │ ├── WalletTransactionResource.php # CRUD کامل با صفحات Create/Edit
│ │ │ │ ├── PaymentResource.php # مشاهده تراکنش‌های درگاه
│ │ │ │ ├── DiscountCodeResource.php # مدیریت کدهای تخفیف
│ │ │ │ ├── ExchangeRateHistoryResource.php # تاریخچه نرخ ارز
│ │ │ │ ├── RoleResource.php # مدیریت نقش‌ها (spatie)
│ │ │ │ └── UserResource.php # مدیریت کاربران (spatie)
│ │ │ ├── Widgets/
│ │ │ │ ├── DashboardInfoWidget.php # اطلاعات کلی داشبورد
│ │ │ │ ├── ExchangeRateWidget.php # نرخ ارز زنده
│ │ │ │ ├── WalletStats.php # آمار کیف پول
│ │ │ │ ├── TransactionChartWidget.php # نمودار تراکنش‌ها
│ │ │ │ └── RecentTransactionsWidget.php
│ │ │ └── Pages/
│ │ │ │ ├── IfnexSettingsPage.php
│ │ │ │ ├── PriceTestPage.php
│ │ │ │ └── Reports/
│ │ │ │ └── FinancialReport.php # گزارش مالی
│ │ └── Providers/
│ │ ├── AppServiceProvider.php
│ │ └── Filament/
│ │ └── AdminPanelProvider.php # پیکربندی کامل (رنگ، فونت، نوتیفیکیشن)
└── README.md # این فایل — نمای کلی پروژه