This commit marks the completion of Phase 3 (Integration and Improvements) and updates the project status to reflect that Phases 0 through 3 are finished. Key changes include: - **Laravel (Backend):** - Added `calling_code` column to `countries` table via new migration. - Added scripts to update calling codes for all countries. - Updated `CustomerOrderController` to include `calling_code` in country data. - Registered `api_key` middleware alias in `bootstrap/app.php`. - Improved error handling to return JSON 401 for API authentication failures. - Updated `README.md` with detailed architecture and feature descriptions. - **WordPress (Frontend/Bridge):** - Added `ifnex_wallet_charge` shortcode and AJAX handler for wallet top-ups. - Implemented auto-fill for calling codes in the order form based on selected country. - Added real-time phone number validation (digits, +, spaces only). - Added English-only validation for name, city, and address fields with UI warnings. - Updated asset enqueuing logic and versioning for CSS/JS. - **Documentation:** - Updated `IFNEX_File_Map.md`, `IFNEX_Phase0_Checklist.md`, and `IFNEX_Roadmap.md` to reflect completed phases and new features. - Updated `DEPLOYMENT.md` with new environment variables (`IFNEX_BRIDGE_API_KEY`) and required WordPress pages. - Updated project `README.md` with comprehensive feature list and system architecture.
15 KiB
15 KiB
چکلیست فاز ۰ — IFNEX Phase 0 Checklist
مرجع: Phase0_Proposal.docx + EXCEL_ANALYSIS.md + STATUS.md
تاریخ: August 2026
وضعیت: فاز ۰ تکمیل شده + فاز ۱/۲ بخشی انجام شده
توسعهدهنده: VernaSoft Group — Kazem Alghasi
آخرین بروزرسانی: 2026-08-29
وضعیت کلی
| فاز | وضعیت | درصد |
|---|---|---|
| فاز ۰ (پایه) | ✅ تکمیل شده | 100% |
| فاز ۱ (پنل مشتری) | ✅ تکمیل شده | 100% |
| فاز ۲ (پرداخت و کیف پول) | ✅ تکمیل شده | 100% |
| فاز ۳ (یکپارچهسازی) | ✅ تکمیل شده | 100% |
| فاز ۴ (سیستم نمایندگی) | 📋 مطالعاتی | 0% |
نکته: مورد ۱۹ (سیستم نمایندگی) به فاز ۴ منتقل شد. ۱۸ مورد کارفرما + تستهای لوکال تکمیل شد.
بخش ۱: اصلاح اسکیمای دیتابیس
1.1 بازنویسی Migration countries
- حذف
export_zoneوimport_zone(۲ زون قدیمی) - اضافه کردن
export_zone_parcel(TINYINT 1-10) - اضافه کردن
export_zone_doc(TINYINT 1-10) - اضافه کردن
import_zone_parcel(TINYINT 1-10) - اضافه کردن
import_zone_doc(TINYINT 1-10) - اضافه کردن
iso_code(CHAR(2) UNIQUE) - اضافه کردن
is_active(BOOLEAN default true) - اضافه کردن
calling_code(VARCHAR 10 NULL) — فاز ۲ - اصلاح
name— بدون کد ISO در پرانتز
1.2 بازنویسی Migration shipments
- حذف
forwarder_track_id(جایگزین با جدول مجزا) - تغییر
typeاز STRING به ENUM:DOC_NORMAL,DOC_ECONOMY,PARCEL - تغییر
directionاز STRING به ENUM:import,export - تغییر
statusاز STRING به ENUM (وضعیتهای استاندارد) - اضافه کردن
from_country_id(FK → countries.id) - اضافه کردن
to_country_id(FK → countries.id) - اضافه کردن فیلدهای مالی:
domestic_pickup,domestic_delivery,warehousing_cost,vat_amount - تبدیل فیلدهای غیرضروری به
nullable - اضافه کردن
state_notes(فیلد وضعیت و یادداشت مشتری) — فاز ۲ - اضافه کردن
cod_amount(مبلغ COD) — فاز ۲ - رابطه
packages()وstatusHistories()— فاز ۲
1.3 ایجاد Migration shipment_carrier_mappings
- تمام فیلدها طبق طرح اولیه
- RelationManager در Filament با CRUD کامل
1.4 ایجاد Migration shipment_tracking_events
- تمام فیلدها طبق طرح اولیه
- اضافه کردن فیلد
source(manual/api/system) — فاز ۲ - RelationManager در Filament با CRUD کامل
1.5 بازنویسی Migration system_settings
- تغییر به ساختار key-value
1.6 بازنویسی Migration users
- اضافه کردن
phone,role,is_active
1.7 اصلاح Migration shipping_rates
- تغییر
typeوdirectionبه ENUM
1.8 جداول جدید فاز ۱/۲
currencies— جدول ارزها (code, name, symbol, rate_to_rial, rate_to_aed, is_active)shipment_packages— بستههای چندگانه هر مرسوله (package_no, weight, dimensions)shipment_status_histories— تاریخچه تغییرات وضعیت (from_status, to_status, reason, changed_by)wallets— کیف پول کاربرانwallet_transactions— تراکنشهای کیف پولnotifications— نوتیفیکیشنهای دیتابیس (Laravel default)
بخش ۲: Model ها
Country.php— با ۴ زون + iso_code + calling_code + is_activeShipment.php— با enum casts + روابط کامل + packages + statusHistoriesShipmentCarrierMapping.php— با relation + enum castsShipmentTrackingEvent.php— با relation + enum casts + sourceShipmentItem.php— با relationShipmentPackage.php— با belongsTo(Shipment) — فاز ۲ShipmentStatusHistory.php— با booted auto-fill changed_by — فاز ۲ShippingRate.php— با enum castsSystemSetting.php— با get/set متدهاUser.php— با role + is_active + wallet relationCurrency.php— با fillable + casts — فاز ۲Wallet.php— فاز ۲WalletTransaction.php— فاز ۲
بخش ۳: Seeders
CountriesTableSeeder.php— با ۴ زون مجزاSystemSettingSeeder.php— با ساختار key-valueDatabaseSeeder.php— با User اولیه super_admin
بخش ۴: API و Controller ها
۴.۱ API ترکینگ
GET /api/v1/track/{awb_no}— تایملاین کاملTrackController.php— با timeline + carrier mappings
۴.۲ API قیمتگذاری
POST /api/v1/calculate— با ۳ نوع سرویس + VAT + هزینههای جانبیPricingController.php— با API Key + Rate Limiting
۴.۳ API احراز هویت
POST /api/v1/auth/login— ورود با email + passwordPOST /api/v1/auth/logout— خروج ( Sanctum)POST /api/v1/bridge/login— Bridge Auth (WordPress → Laravel)
۴.۴ API پنل مشتری (فاز ۱/۲)
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— لغو سفارشPOST /api/v1/customer/orders/{shipment}/pay-wallet— پرداخت از کیف پولPOST /api/v1/customer/orders/{shipment}/pay-gateway— پرداخت از درگاهGET /api/v1/customer/notifications— نوتیفیکیشنها — فاز ۲POST /api/v1/customer/notifications/{id}/read— خواندن نوتیفیکیشن — فاز ۲
۴.۵ API کیف پول (فاز ۲)
GET /api/v1/wallet/balance— موجودیGET /api/v1/wallet/transactions— تراکنشها
۴.۶ API پرداخت (فاز ۲)
POST /api/v1/payment/redirect— انتقال به درگاهGET /api/v1/payment/check/{transaction}— بررسی وضعیت- Mock Gateway (شبیهسازی درگاه پرداخت)
بخش ۵: Filament Admin Panel
۵.۱ منابع (Resources)
CountryResource— با ۴ زون + iso_code + calling_code + is_activeShipmentResource— با ستونهای جدید + CSV export +Packages Repeater + changeStatus bulkActionShippingRateResource— با ۳ نوع سرویسCurrencyResource— CRUD ارزها — فاز ۲
۵.۲ RelationManagers
TrackingEventsRelationManager— با فیلدsource— فاز ۲CarrierMappingsRelationManager— با CRUD کاملItemsRelationManager— اقلام مرسوله
۵.۳ صفحات سفارشی
SettingsPage— تنظیمات key-valuePriceTestPage— تست قیمتگذاریImportRatesPage— آپلود اکسل نرخها + دانلود template — فاز ۲
۵.۴ PDF
PdfService— با loadMissing (packages, fromCountry, toCountry, items)awb.blade.php— با asset() برای تصاویر + جدول بستههاlabel.blade.php— با asset() برای تصاویرinvoice.blade.php— فاکتور
۵.۵ نوتیفیکیشن ادمین
ShipmentUpdatedNotification— با لیست فیلدهای تغییر کردهafterSavehook در ShipmentResource — ارسال نوتیفیکیشن
بخش ۶: Services
PriceCalculatorService.php— با ۴ زون + ۳ نوع + VAT + هزینههای جانبیTrackingService.php— تایملاین + افزودن رویدادPdfService.php— تولید PDF (AWB, Label, Invoice)OrderPaymentService.php— پرداخت از کیف پول و درگاه — فاز ۲
بخش ۷: Import و مهاجرت داده
OldShipmentsImport.php— مهاجرت ۳۹۵۰ رکورد تاریخیShippingRatesImport.php— ایمپورت نرخها (بدون SystemSetting)ShippingRatesTemplateExport.php— دانلود template اکسل (FromArray)
بخش ۸: پلاگین وردپرس IFNEX Bridge
۸.۱ ساختار پلاگین
ifnex-bridge.php— فایل اصلی پلاگینincludes/api-client.php— ارتباط با API (قدیمی)includes/user-bridge.php— Bridge Auth + API احرازشدهincludes/shortcodes.php— تمام شورتکدهاincludes/tracking-form.php— فرم رهگیری (قدیمی)assets/css/ifnex-orders.css— استایل کامل (v1.6.0)assets/css/ifnex-bridge.css— استایل ترکینگassets/js/ifnex-order-form.js— فرم سفارش + هشدار آدرس انگلیسی
۸.۲ شورتکدها
[ifnex_tracking_form]— فرم رهگیری مرسوله[ifnex_tracking_status]— نمایش مستقیم وضعیت[ifnex_wallet_balance]— موجودی کیف پول[ifnex_transactions]— تاریخچه تراکنشها (با استایل جدید)[ifnex_user_profile]— پروفایل مشتری[ifnex_orders_list]— لیست سفارشات[ifnex_order_form]— فرم ثبت سفارش چند مرحلهای[ifnex_order_payment]— صفحه پرداخت[ifnex_order_detail]— جزئیات سفارش[ifnex_customer_dashboard]— پنل جامع مشتری (داشبورد + سفارشات + کیف پول + تراکنشها + اعلانها + رهگیری + پروفایل)
۸.۳ استایل تراکنشها — فاز ۲
- استایل کامل برای
.ifnex-transactions-*— مطابق دشبورد مدرن
۸.۴ هشدار آدرس انگلیسی — فاز ۲
- تشخیص متن انگلیسی در آدرس (sender + receiver)
- نمایش هشدار اسلایدی با انیمیشن
۸.۵ نوتیفیکیشن پنل کاربری — فاز ۲
- تب اعلانها در دشبورد
- بج تعداد خواندهنشده در سایدبار
- لیست نوتیفیکیشنها با استایل مدرن
- لینک به سفارش مرتبط
- API لاراول برای دریافت/خواندن نوتیفیکیشن
بخش ۹: وبسایت وردپرس
۹.۱ قالب IFNEX
- نصب و تنظیم قالب سفارشی
- front-page.php — لندینگ پیج
- header.php / footer.php
- template-parts (hero, services, how-it-works, stats, testimonials, cta)
- template-login.php — صفحه ورود
۹.۲ صفحات
- لندینگ پیج
- صفحه رهگیری
- صفحه استعلام قیمت (PricingPageController)
بخش ۱۰: موارد اخیر فاز ۳ (۱۷ مورد کارفرما)
- ۱. رفع
openUrlInNewTab()روی اکشنهای PDF در ViewShipment - ۲. رفع
ShippingRatesImport(حذف SystemSetting + تبدیل ارز) - ۳. رفع تصاویر PDF (asset() بجای public_path())
- ۴. رفع label.blade.php تصاویر
- ۵. ستونهای جدید ShipmentResource (fromCountry, toCountry, route, phones, cod_amount)
- ۶. حذف reason_for_export تکراری
- ۷. رفع CSV label ($status?->label())
- ۸. Packages Repeater (collapsible)
- ۹. changeStatus به عنوان bulkAction
- ۱۰. afterSave hook برای ShipmentUpdatedNotification
- ۱۱. Currency CRUD (Resource + Pages + Migration + Model)
- ۱۲. RelationManagers (Create/Edit/Delete) + فیلد source
- ۱۳. سیستم نوتیفیکیشن دیتابیس
- ۱۴. Multi-package (migration + model + PDF)
- ۱۵. ImportRatesPage (دکمهها + دانلود template + ایمپورت)
- ۱۶. استایل تراکنشهای وردپرس
- ۱۷. هشدار انگلیسی بودن آدرس
- ۱۸. نوتیفیکیشن پنل کاربری وردپرس (تب + API + CSS)
- [~] ۱۹. سیستم نمایندگی (طرح مطالعاتی آماده — به فاز ۴ منتقل شد)
بخش ۱۰.۱: تست لوکال و اصلاحات نهایی فاز ۳
- اضافه شدن متدهای
isPaid()وcanBeCancelledByCustomer()به Enum ShipmentStatus - اضافه شدن ستون
calling_codeبه جدول countries (migration جدید) - آپدیت ۱۹۲ کشور با پیششماره استاندارد ISO 3166-1
- اضافه شدن
IFNEX_BRIDGE_API_KEYبه.envوconfig/ifnex.php - اصلاح میدلور
auth:sanctumدرbootstrap/app.phpبرای بازگرداندن JSON 401 - اضافه شدن شورتکد
[ifnex_wallet_charge]برای شارژ کیف پول - اضافه شدن AJAX handler
ifnex_wallet_charge - رفع مشکل
use App\Models\WalletTransactionدر CustomerOrderController - هشدار هوشمند زبان فارسی/انگلیسی برای نام، شهر و آدرس
- پیششماره تلفن خودکار بر اساس کشور انتخابی
- اعتبارسنجی تلفن (فقط اعداد، +، فاصله)
- اصلاح ارور "[object Object]" در پاسخهای AJAX
- اصلاح
ifnex_enqueue_order_assetsبرای لود صحیح JS - اصلاح
.envوZARINPAL_FRONTEND_SUCCESS_URL/FAILURE_URL - تست موفق تمام جریانها: لاگین → سفارش → پرداخت → شارژ کیف پول → نوتیفیکیشن
بخش ۱۱: مستندات
- IFNEX_Phase0_Checklist.md (همین فایل)
- IFNEX_File_Map.md — نقشه فایلهای پروژه
- IFNEX_Roadmap.md — نقشه راه جامع ۴ فازی
- راهنمای اپراتور (Operator Manual) با اسکرینشات
- مستندات API (OpenAPI/Swagger)
خط قرمزها — هرگز این کارها را نکن
- هرگز جدول countries را به ۲ زون برگردانی
- هرگز فقط ۲ نوع سرویس پیاده کن (۳ نوع الزامی است)
- هرگز ترکینگ را در وردپرس پیاده کن
- هرگز فیلدهای مالی (VAT, Packing, Warehousing) را حذف کن
- هرگز از رنگ/لوگو DHL کپی کن
- هرگز PDF را به فارسی بسازی
- هرگز تاریخ را شمسی در DB ذخیره کنی
- هرگز از CORS
*استفاده کنی - هرگز فایل .env را در Git کامیت کنی
2026 VernaSoft Group. Internal use only.