Implement a new, modern customer dashboard interface including: - A new `[ifnex_customer_dashboard]` shortcode. - A redesigned sidebar with user profile information and navigation. - A statistics overview section with icon-based cards. - Modern SVG icon system (Heroicons style) for dashboard elements. - Updated CSS with a modern design language (gradients, shadows, and flexbox layouts). - Global asset enqueuing to ensure consistent styling and AJAX availability across all plugin-related pages. |
||
|---|---|---|
| 01_Documents | ||
| 03_WordPress | ||
| 04_Laravel | ||
| .gitignore | ||
| DEPLOYMENT.md | ||
| README.md | ||
🚀 IFNEX Logistics Management System
جایگزینی فرآیندهای دستی مبتنی بر اکسل با یک معماری Headless مدرن
| مورد | توضیحات |
|---|---|
| ویرایش سند | v4.2 (Laravel 11 + Filament 3.3 + فاز ۰ کامل + فاز ۱ کامل + فاز ۲ کامل + فاز ۳ کامل) |
| تاریخ آخرین بهروزرسانی | 2026-08-10 |
| توسعهدهنده | VernaSoft Group — Kazem Alghasi |
| مشتری | شرکت حمل و نقل بینالمللی ایفنکس (IFNEX) — اصفهان |
📖 درباره پروژه
سیستم مدیریت لجستیک ایفنکس (IFNEX) یک راهحل جامع برای جایگزینی فرآیندهای مبتنی بر فایلهای اکسل در شرکتهای حمل و نقل بینالمللی است. این سیستم با استفاده از معماری Headless، وردپرس را برای ظاهر سایت و سئو، و لاراول را بهعنوان قلب تپنده و موتور محاسباتی به کار میگیرد.
چرا این پروژه متفاوت است؟
بهجای آنکه اپراتورها وزن حجمی را محاسبه کنند، زونها را در ۴ شیت مختلف جستجو کنند و با ماشینحساب قیمت نهایی را حساب کنند، اکنون تمام این فرآیند در کسر از ثانیه و بدون هیچ خطای انسانی انجام میشود. همچنین، به دلیل تحریمهای بینالمللی و مسدود بودن دسترسی مستقیم به API شرکتهای DHL/FedEx/UPS از ایران، این سیستم از طریق یک سرور VPS پل (در فاز ۳) مشکل ترکینگ خودکار را حل میکند.
🏗️ معماری سیستم
سیستم بر اساس الگوی Headless توسعه یافته است. فرانتاند (وردپرس) و بکاند (لاراول) کاملاً از هم جدا شدهاند و فقط از طریق REST API با هم ارتباط دارند.
┌─────────────────┐ REST API ┌─────────────────┐ │ WordPress │ ←─────────────────────→ │ Laravel 11 │ │ (Frontend) │ پلاگین IFNEX Bridge │ (Backend) │ │ │ │ + Filament │ └─────────────────┘ └────────┬────────┘ │ ┌────────┴────────┐ │ MySQL 8 │ └─────────────────┘ │ (فاز ۳) │ ┌────────┴────────┐ │ VPS پل خارج │ │ (هلند/آلمان) │ └────────┬────────┘ │ ┌────────┴────────┐ │ TrackingMore / │ │ 17track API │ └─────────────────┘
| لایه | تکنولوژی | نقش |
|---|---|---|
| فرانتاند | WordPress 7.0.3 + پوسته سفارشی IFNEX + Polylang | مدیریت ظاهر، چندزبانه، پورتال مشتری، لندینگ پیجها |
| بکاند | Laravel 11 + Filament 3.3 | API سرور، پنل ادمین، موتور قیمتگذاری، صدور PDF، کیف پول، پرداخت آنلاین |
| پل ارتباطی | پلاگین اختصاصی IFNEX Bridge | ارسال درخواستهای کاربر از وردپرس به لاراول، مدیریت توکن Sanctum |
| دیتابیس | MySQL 8 | ذخیرهسازی دادهها با پشتیبانی از JSON columns |
| زیرساخت رهگیری | VPS خارج از کشور (در فاز ۴) | واسط برای دسترسی به APIهای رهگیری بینالمللی |
🗺️ نقشه راه ۴ فازی
این پروژه به چهار فاز تقسیم شده تا هم تحویل تدریجی ارزش به مشتری حفظ شود و هم ریسک دوبارهکاری حذف گردد.
| فاز | هدف اصلی | مدت زمان | وضعیت |
|---|---|---|---|
| فاز ۰ | بنیان داده + وبسایت + ترکینگ دستی + مهاجرت دادههای تاریخی | ۴ هفته | ✅ کامل |
| فاز ۱ | موتور قیمتگذاری کامل + ثبت سفارش آنلاین + تولید PDFها + استعلام قیمت | ۴-۶ هفته | ✅ کامل |
| فاز ۲ | حساب کاربری مشتری + کیف پول + پرداخت آنلاین + تخفیف حجمی + پنل مالی | ۴ هفته | ✅ کامل |
| فاز ۳ | پورتال مشتری کامل + پلاگین وردپرس + سینک کاربران + پرداخت سفارش | ۶ هفته | ✅ کامل |
💡 جزئیات کامل هر فاز، اسکیمای دیتابیس، جدول زمانی و معیارهای پذیرش در سند
01_Documents/Phase0_Proposal.mdآمده است.
✨ ویژگیهای کلیدی
فاز ۰ (تکمیل شده) ✅
-
اسکیمای دیتابیس اصلاحشده (بر اساس فایل اکسل عملیاتی)
- جدول
countriesبا ۴ زون مجزا (صادرات/واردات × پارسل/داکیومنت) - پشتیبانی از ۳ نوع سرویس:
DOC_NORMAL,DOC_ECONOMY,PARCEL - جدول
shipment_carrier_mappingsبرای نگاشت چند شرکت حمل به هر بارنامه - جدول
shipment_tracking_eventsبرای ذخیره تایملاین کامل رویدادهای هر مرسوله - جدول
system_settingsبرای ذخیره تنظیمات سیستم (VAT، نرخ ارز، ضریب سود) - جدول
shipment_itemsبرای اقلام گمرکی (۹ ردیف)
- جدول
-
پنل مدیریت اختصاصی (Laravel Filament)
- مدیریت ۲۳۳ کشور با زونهای صادرات و واردات
- فرم تنظیمات سیستم: تغییر سریع ارزها و ضریب سود بدون دستکاری کد
- UX تخصصی اپراتور ترکینگ: افزودن رویداد در چند ثانیه با فیلدهای از پیش پر شده
- تببندی ویجتهای داشبورد: اطلاعات کلی، نرخ ارز، آمار کیف پول
- رابط کاربری سفارشی: رنگ Navy gradient، فونت Vazirmatn، RTL کامل
-
ارتباطات API و فرانتاند
- API ترکینگ:
GET /api/track/{awb_no}با API Key + Rate Limiting + CORS - 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
- API ترکینگ:
-
مهاجرت دادههای تاریخی
- انتقال ۳۹۵۰ رکورد تاریخی از فایل اکسل به دیتابیس جدید
- اعتبارسنجی و پاکسازی خودکار دادهها
- import ۴۰۴ رکورد تعرفههای حمل
- import ۹۸ رویداد ترکینگ دستی
فاز ۱ (تکمیل شده) ✅
-
موتور قیمتگذاری کامل (
PriceCalculatorService)- محاسبه خودکار قیمت بر اساس وزن، زون، نوع سرویس و جهت ارسال
- پشتیبانی از ۴ زون مجزا (export/import × doc/parcel)
- اعمال ضریب سود، VAT و هزینههای اضافی
- تستهای کامل: Feature tests و Service tests با پوشش ۱۰۰٪
-
فرم ثبت سفارش آنلاین
- فرم عمومی برای مشتریان با ۹ ردیف کالای گمرکی
- اعتبارسنجی خودکار و محاسبه لحظهای قیمت
- تولید AWB number خودکار با فرمت
IFN-YYYY-XXXXX
-
تولید PDFهای حرفهای
- AWB: بارنامه هوایی با لوگوی IFNEX
- INVOICE: فاکتور تجاری با جدول ۹ ردیف کالای گمرکی
- LABEL: لیبل چاپی برای بستهها (پرینتر لیزری + کاغذ چسبان A4)
- تطبیق اولیه با قالبهای اکسل + لوگوی استخراجشده
-
صفحه استعلام قیمت واقعی
- رابط کاربری عمومی برای محاسبه قیمت تقریبی حمل
- نمایش قیمت پایه (درهم) و قیمت نهایی (ریال)
-
ماژول ایمپورت اکسل تعرفهها
- کامند
php artisan ifnex:import:ratesبا قابلیتهای--clearو--dry-run - پشتیبانی از شیتهای Export Rate، Import Rate و DocEco
- تبدیل خودکار واحد قیمت (ریال → درهم) برای شیتهای DocNor/DocEco
- کامند
فاز ۲ (تکمیل شده) ✅
-
سیستم کیف پول (Wallet)
- API شارژ اعتبار (دستی و خودکار)
- API بررسی موجودی
- API تاریخچه تراکنشها
- اتصال درگاه پرداخت زرینپال با Mock Gateway برای تست
- پرداخت آنلاین کامل با بازگشت به فرانتاند
-
سیستم تخفیف (Discount Codes)
- API لیست کدهای تخفیف فعال
- API اعتبارسنجی کد تخفیف
- پشتیبانی از تخفیف درصدی و ثابت
- DiscountCodeResource در Filament با form/table/filters کامل
-
بهروزرسانی خودکار نرخ ارز
- Artisan Command برای بهروزرسانی روزانه
- پشتیبانی از ECB و FreeCurrencyAPI
- ردیابی تاریخچه نرخ ارز با
ExchangeRateHistoryوExchangeRateHistoryResource
-
پنل مالی در Filament
- FinanceOverviewWidget — خلاصه مالی
- TransactionChartWidget — نمودار تراکنشها
- RecentTransactionsWidget — آخرین تراکنشها
- PaymentResource — مشاهده تراکنشهای درگاه
- WalletTransactionResource — CRUD کامل تراکنشهای کیف پول
- خروجی CSV برای تراکنشها و مرسولات
-
کنترل دسترسی مبتنی بر نقش (RBAC)
- یکپارچگی با
spatie/laravel-permission - RoleResource و UserResource در Filament
- RoleAndPermissionSeeder برای تنظیم اولیه
- یکپارچگی با
-
یکپارچگی وردپرس ↔ لاراول
- دستور Artisan
ifnex:sync-wp-usersبرای سینک کاربران - پلاگین IFNEX Bridge گسترش یافته:
- شورتکد
[ifnex_wallet_balance]برای موجودی کیف پول - شورتکد
[ifnex_transactions]برای لیست تراکنشها - AJAX handlers برای موجودی و تراکنشها
- شورتکد
- دستور Artisan
فاز ۳ (تکمیل شده) ✅
-
سیستم ثبت سفارش مشتری (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 - اعتبارسنجی کامل و محاسبه لحظهای قیمت
- CustomerOrderController با ۶ endpoint:
-
سیستم پرداخت سفارش (Order Payment)
- OrderPaymentService برای مدیریت پرداختها
- پرداخت از کیف پول:
POST /api/v1/customer/orders/{shipment}/pay-wallet - پرداخت از درگاه:
POST /api/v1/customer/orders/{shipment}/pay-gateway - تکمیل خودکار پرداخت بعد از callback درگاه
- ثبت رویداد ترکینگ پس از پرداخت موفق
-
احراز هویت مشتری (Customer Auth)
- AuthController با login/logout برای Sanctum
- BridgeAuthController برای لاگین مستقیم از وردپرس
- توکنهای Sanctum با انقضا ۳۰ روزه
-
پورتال مشتری در وردپرس
- شورتکد
[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)
- شورتکد
-
پوسته وردپرس سفارشی IFNEX
- پشتیبانی چندزبانه با Polylang
- مدیریت LTR/RTL خودکار
- Customizer برای لوگو و زبان
- قالبهای archive, single, front-page
- ساختار تمیک شرکتی با لوگو IFNEX
-
سیستم طراحی یکپارچه (Design System)
- DESIGN_SYSTEM.md — مرجع کامل رنگها، فونتها، فاصلهگذاری
- رنگهای برند: Primary Amber
#f59e0b، Sidebar Dark Navy#1a1a2e → #16213e - فونت Vazirmatn برای کل پنل ادمین و فرانتاند
- استایلهای یکپارچه برای Filament و پلاگین وردپرس
-
گزارشگیری مالی در Filament
- صفحه FinancialReport با خلاصه تراکنشها و مرسولات
- خروجی Excel برای ShipmentResource و WalletTransactionResource
- ویجتهایdashboard اطلاعاتی
📁 ساختار پروژه
IFNEX-Logistics/
├── 01_Documents/ # مستندات فنی پروژه
│ ├── STATUS.md # ⭐ وضعیت فعلی و گزارش پیشرفت
│ ├── IFNEX_Phase0_Checklist.md # ⭐ چکلیست دقیق فاز ۰
│ ├── Phase0_Proposal.md # ⭐ سند پیشنهاد فاز ۰ (نقشه راه جدید)
│ ├── EXCEL_ANALYSIS.md # ⭐ تحلیل فایلهای اکسل
│ ├── PRD_v2.md # سند نیازمندیها (نسخه قدیمی — بایگانی شده)
│ └── Project_Roadmap.md # نقشه راه (نسخه قدیمی — بایگانی شده)
│
├── 02_Design/ # فایلهای UI/UX و فیگما
│ └── Assets/ # لوگوها، آیکونها
│
├── 03_WordPress/ # سیستم مدیریت محتوا (فرانتاند)
│ ├── 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 # راهنمای نصب و استفاده از لاراول
│ ├── 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 # این فایل — نمای کلی پروژه
💡 برای جزئیات فنی، نصب و راهاندازی، فایل 04_Laravel/README.md را مطالعه کنید.
📚 مستندات بیشتر
برای مطالعه دقیق منطقهای سیستم، حتماً فایلهای داخل پوشه 01_Documents را مطالعه کنید:
فایل
محتوا
STATUS.md
⭐ وضعیت فعلی، گزارش پیشرفت، خط قرمزها و راهنماییهای توسعه بعدی
IFNEX_Phase0_Checklist.md
⭐ چکلیست دقیق تمام کارهای فاز ۰ با وضعیت هر آیتم
Phase0_Proposal.md
⭐ سند پیشنهاد فاز ۰ — شامل اسکیمای دیتابیس، جدول زمانی، ریسکها، معیارهای پذیرش
EXCEL_ANALYSIS.md
⭐ تحلیل کامل فایلهای اکسل عملیاتی و ساختار دادههای تاریخی
PRD_v2.md
سند نیازمندیها (نسخه قدیمی — بایگانی شده، فقط برای مرجع تاریخی)
Project_Roadmap.md
نقشه راه قدیمی (۳ فازی — بایگانی شده، فقط برای مرجع تاریخی)
🔐 امنیت و گزارش مشکلات
اگر آسیبپذیری امنیتی کشف کردید، لطفاً مستقیماً به kazem@vernasoft.group (یا ایمیل جایگزین تعیینشده) اطلاع دهید و آن را در Issue عمومی مخزن قرار ندهید.
📜 لایسنس
© 2026 VernaSoft Group (Kazem Alghasi). All rights reserved.
این پروژه اختصاصی شرکت IFNEX است و کپی یا استفادهی غیرمجاز از آن ممنوع است.