ifnex/01_Documents/IFNEX_Phase0_Checklist.md
Kazem Alghasi b5e136a76d docs(roadmap): introduce phase 3.5 and future commercialization plans
Update project documentation to reflect the transition from Phase 3 to
a new critical refinement phase (Phase 3.5) and outline long-term
strategic goals.

Key documentation updates:
- Added Phase 3.5 (Essential Refinements) to the roadmap and checklist,
  focusing on multi-package support, parcel invoice forms, and
  internationalization (i18n).
- Defined Phase 5 (Commercialization) including tiered subscription
  models (Starter, Business, Enterprise) and premium features.
- Created `IFNEX_Commercial_Model.md` to detail monetization strategies.
- Created `IFNEX_I18N_Strategy.md` to outline the multi-language
  implementation approach using Polylang.
- Updated `README.md` with the revised project lifecycle and new
  documentation references.
2026-08-29 05:19:54 +03:30

19 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%
فاز ۴ (سیستم نمایندگی) 📋 مطالعاتی 0%
فاز ۵ (تجاری‌سازی) 📋 مطالعاتی 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
  • تست موفق تمام جریان‌ها: لاگین → سفارش → پرداخت → شارژ کیف پول → نوتیفیکیشن

بازطراحی PDFها:

  • نصب picqer/php-barcode-generator
  • بازطراحی AWB با بارکد، From/To کامل، Value، Service، Type
  • بازطراحی Invoice با جدول ۹ ردیفه، اعلان قانونی، بارکد پایین
  • بازطراحی Label با اندازه ۱۰۰×۱۵۰mm و بارکد بزرگ
  • اضافه‌شدن شرط DOC/PARCEL برای Invoice (فقط PARCEL فاکتور داره)

بخش ۱۱: فاز ۳.۵ — اصلاحات اساسی 🔄

⚠️ این بخش قبل از ارائه نهایی به کارفرما باید تکمیل شود.

۱۱.۱ — Multi-Package در فرم سفارش مشتری 🔴 ضروری

مشکل: بک‌اند و پنل ادمین از چند بسته پشتیبانی می‌کنند، ولی فرم سفارش مشتری فقط یه بسته می‌گیره.

  • اصلاح ifnex-order-form.js — افزودن قابلیت "افزودن بسته دیگر"
  • اصلاح HTML فرم — نمایش لیست بسته‌های اضافه‌شده
  • محاسبه مجموع وزن‌ها و قیمت نهایی
  • اصلاح buildOrderData() — ارسال آرایه packages[]
  • اصلاح API POST /customer/orders — پذیرش packages[]
  • ایجاد خودکار ShipmentPackage هنگام ثبت سفارش
  • تست با چند بسته

۱۱.۲ — فرم Invoice برای محموله‌های PARCEL 🔴 ضروری

مشکل: وقتی مشتری نوع PARCEL رو انتخاب می‌کنه، باید فرم اقلام گمرکی (Invoice) رو پر کنه.

  • اضافه‌کردن مرحله جدید به فرم سفارش (مرحله ۲.۵)
  • نمایش این مرحله فقط وقتی نوع = PARCEL
  • فیلدهای هر آیتم: Description, HS Code, Quantity, Unit Price, Total
  • امکان افزودن چندین آیتم (تا ۹ ردیف)
  • محاسبه خودکار Total و نمایش مجموع
  • ارسال items[] به API
  • ایجاد خودکار ShipmentItem هنگام ثبت سفارش
  • تست با چند آیتم

۱۱.۳ — پشتیبانی چندزبانه (i18n) 🟡 مهم

مشکل: سایت ۲ زبانه (فارسی + انگلیسی) هست با Polylang، ولی:

  • تمام شورت‌کدها و فرم‌ها فقط فارسی هستن

  • پیام‌های خطا و موفقیت فقط فارسی هستن

  • استخراج تمام رشته‌های متنی به فایل‌های ترجمه

  • استفاده از __() و _e() در وردپرس

  • استفاده از wp_localize_script برای ارسال ترجمه‌ها به JS

  • افزودن فایل‌های .po/.mo برای زبان‌های فارسی و انگلیسی

  • اصلاح تمام فایل‌های ifnex-bridge/includes/*.php

  • اصلاح ifnex-order-form.js (استفاده از متغیرهای ترجمه)

  • اصلاح CSS برای پشتیبانی RTL/LTR

  • تست زبان انگلیسی

۱۱.۴ — تست و نهایی‌سازی 🟡 مهم

  • تست تولید PDF با بارکد روی سرور
  • تست Multi-Package
  • تست Invoice Form برای PARCEL
  • تست زبان انگلیسی
  • دیپلوی نهایی روی سرور
  • تست نهایی روی سرور

بخش ۱۲: فاز ۵ — تجاری‌سازی 📋

طرح مطالعاتی — مدل پولی چندلایه‌ای

پلن‌های پیشنهادی:

  • IFNEX Starter — پلن پایه پرداخت‌شده
  • IFNEX Business — پلن متوسط
  • IFNEX Enterprise — پلن کامل

فیچرهای Premium:

  • فرم‌ساز Drag & Drop

  • White-label branding

  • API Gateway برای توسعه‌دهندگان

  • اکسپورت اکسل کامل (تمام فیلدها)

  • API ترکینگ زنده (TrackingMore/17track)

  • پلاگین SMS

  • گزارش‌های مالی پیشرفته

  • 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.