ifnex/01_Documents/IFNEX_Phase0_Checklist.md
Kazem Alghasi a1a6dbdd8a feat(core): complete phase 3 integration and enhance country/phone features
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.
2026-08-29 04:38:28 +03:30

15 KiB
Raw Blame History

چک‌لیست فاز ۰ — 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_active
  • Shipment.php — با enum casts + روابط کامل + packages + statusHistories
  • ShipmentCarrierMapping.php — با relation + enum casts
  • ShipmentTrackingEvent.php — با relation + enum casts + source
  • ShipmentItem.php — با relation
  • ShipmentPackage.php — با belongsTo(Shipment) — فاز ۲
  • ShipmentStatusHistory.php — با booted auto-fill changed_by — فاز ۲
  • ShippingRate.php — با enum casts
  • SystemSetting.php — با get/set متدها
  • User.php — با role + is_active + wallet relation
  • Currency.php — با fillable + casts — فاز ۲
  • Wallet.php — فاز ۲
  • WalletTransaction.php — فاز ۲

بخش ۳: Seeders

  • CountriesTableSeeder.php — با ۴ زون مجزا
  • SystemSettingSeeder.php — با ساختار key-value
  • DatabaseSeeder.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 + password
  • POST /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_active
  • ShipmentResource — با ستون‌های جدید + CSV export +Packages Repeater + changeStatus bulkAction
  • ShippingRateResource — با ۳ نوع سرویس
  • CurrencyResource — CRUD ارزها — فاز ۲

۵.۲ RelationManagers

  • TrackingEventsRelationManager — با فیلد source — فاز ۲
  • CarrierMappingsRelationManager — با CRUD کامل
  • ItemsRelationManager — اقلام مرسوله

۵.۳ صفحات سفارشی

  • SettingsPage — تنظیمات key-value
  • PriceTestPage — تست قیمت‌گذاری
  • ImportRatesPage — آپلود اکسل نرخ‌ها + دانلود template — فاز ۲

۵.۴ PDF

  • PdfService — با loadMissing (packages, fromCountry, toCountry, items)
  • awb.blade.php — با asset() برای تصاویر + جدول بسته‌ها
  • label.blade.php — با asset() برای تصاویر
  • invoice.blade.php — فاکتور

۵.۵ نوتیفیکیشن ادمین

  • ShipmentUpdatedNotification — با لیست فیلدهای تغییر کرده
  • afterSave hook در 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.