# ✅ IFNEX Phase 0 Checklist > **فاز:** Phase 0 — بنیان داده + ترکینگ دستی + مهاجرت داده‌های تاریخی > **تاریخ ایجاد:** 2026-08-04 > **وضعیت کلی:** در حال اجرا > **مرجع اصلی:** `01_Documents/Phase0_Proposal.md` --- ## پیش‌نیازها | # | شرط | وضعیت | توضیحات | |---|------|-------|---------| | P1 | Laravel 11 نصب و قابل اجرا | ✅ انجام شد | در پوشه `04_Laravel` | | P2 | MySQL 8+ قابل دسترس | ✅ انجام شد | دیتابیس `ifnex_db` ایجاد شده | | P3 | Composer dependencies نصب شده | ✅ انجام شد | filament 3.3.x, maatwebsite/excel, morilog/jalali 3 | | P4 | فایل‌های اکسل اصلی در دسترس | ⚠️ موجود | فایل مرسولات فعلی داده‌های نمونه/قدیمی دارد — هر فایل جدید قابل import است | --- ## بخش ۱: دیتابیس و مدل‌ها | # | کار | وضعیت | توضیحات | |---|-----|-------|---------| | 1.1 | Migration `countries` با ۴ زون | ✅ انجام شد | iso_code + is_active اضافه شد | | 1.2 | Migration `shipments` مطابق Phase 0 | ✅ انجام شد | ۱۱ فیلد مالی + ۴ زون + nullable حقایل | | 1.3 | Migration `shipping_rates` با enum | ✅ انجام شد | direction + type (DOC_NORMAL/DOC_ECONOMY/PARCEL) | | 1.4 | Migration `shipment_carrier_mappings` | ✅ انجام شد | جدول جدید برای نگاشت چند شرکت حمل | | 1.5 | Migration `shipment_tracking_events` | ✅ انجام شد | جدول جدید برای تایم‌لاین رویدادها | | 1.6 | Migration `system_settings` | ✅ انجام شد | جدول key-value | | 1.7 | Migration `update_users` | ✅ انجام شد | phone, role, is_active | | 1.8 | حل مشکل `unsignedDecimal` | ✅ انجام شد | استفاده از `decimal()->unsigned()` | | 1.9 | حل مشکل FK constraints | ✅ انجام شد | `disableForeignKeyConstraints()` | | 1.10 | اجرای همه migrations | ✅ انجام شد | بدون خطا | ### مدل‌ها و Enums | # | کار | وضعیت | توضیحات | |---|-----|-------|---------| | 2.1 | مدل `Country.php` + روابط | ✅ انجام شد | fromShipments() + toShipments() | | 2.2 | مدل `Shipment.php` + روالات کامل | ✅ انجام شد | items(), carrierMappings(), trackingEvents() | | 2.3 | مدل `ShippingRate.php` | ✅ انجام شد | cast برای enums | | 2.4 | مدل `User.php` + helper methods | ✅ انجام شد | phone, role, is_active | | 2.5 | مدل `ShipmentCarrierMapping.php` | ✅ انجام شد | | | 2.6 | مدل `ShipmentTrackingEvent.php` | ✅ انجام شد | | | 2.7 | مدل `SystemSetting.php` | ✅ انجام شد | | | 2.8 | Enum `ShipmentDirection` | ✅ انجام شد | import/export | | 2.9 | Enum `ShipmentType` | ✅ انجام شد | DOC_NORMAL/DOC_ECONOMY/PARCEL | | 2.10 | Enum `ShipmentStatus` | ✅ انجام شد | ۷ وضعیت | | 2.11 | Enum `CarrierCode` | ✅ انجام شد | ۹ شرکت حمل | | 2.12 | Enum `TrackingSource` | ✅ انجام شد | manual/api_carrier/api_aggregator | | 2.13 | Enum `UserRole` | ✅ انجام شد | ۴ نقش | --- ## بخش ۲: Seeders و داده‌های اولیه | # | کار | وضعیت | توضیحات | |---|-----|-------|---------| | 3.1 | Seeder ۲۳۲ کشور با ۴ زون | ✅ انجام شد | تصحیح کدهای ISO، حذف تکراری‌ها | | 3.2 | Seeder System Settings | ✅ انجام شد | VAT 9%, packing 100000 IRR, profit_margin 1.25 | | 3.3 | Seeder Super Admin User | ✅ انجام شد | | | 3.4 | DatabaseSeeder ترکیبی | ✅ انجام شد | | --- ## بخش ۳: API ترکینگ | # | کار | وضعیت | توضیحات | |---|-----|-------|---------| | 4.1 | ایجاد `TrackController` | ✅ انجام شد | JSON response کامل | | 4.2 | ایجاد `ApiKeyMiddleware` | ✅ انجام شد | Bearer token validation | | 4.3 | ثبت route `GET /api/v1/track/{awb_no}` | ✅ انجام شد | | | 4.4 | تست با API Key صحیح | ✅ انجام شد | 200 OK | | 4.5 | تست بدون API Key | ✅ انجام شد | 401 Unauthorized | | 4.6 | تست با API Key نامعتبر | ✅ انجام شد | 403 Forbidden | --- ## بخش ۴: پنل مدیریت Filament ### Resources اصلی | # | کار | وضعیت | توضیحات | |---|-----|-------|---------| | 5.1 | `CountryResource` | ✅ انجام شد | فرم ۴ زون + iso_code + is_active | | 5.2 | `ShipmentResource` | ✅ انجام شد | ۷ Section کامل | | 5.3 | `ShippingRateResource` | ✅ انجام شد | ۱۰ zone + enum | | 5.4 | `ShipmentItemResource` | ✅ انجام شد | CRUD کامل | | 5.5 | `CarrierMappingsRelationManager` | ✅ انجام شد | برای Shipment | | 5.6 | `TrackingEventsRelationManager` | ✅ انجام شد | برای Shipment | | 5.7 | `SettingsPage` | ✅ انجام شد | System Settings | | 5.8 | صفحه‌های List/Create/Edit/View | ✅ انجام شد | برای همه Resources | --- ## بخش ۵: Services | # | کار | وضعیت | توضیحات | |---|-----|-------|---------| | 6.1 | `TrackingService` | ✅ انجام شد | getTrackingTimeline, addTrackingEvent, getShipmentWithTracking | | 6.2 | `PriceCalculatorService` | ✅ انجام شد | ۹ مرحله محاسبه | --- ## بخش ۶: Excel Imports | # | کار | وضعیت | توضیحات | |---|-----|-------|---------| | 7.1 | `ShippingRatesImport` | ✅ انجام شد | ۴۰۴ رکورد import شد | | 7.2 | `HistoricalShipmentsImport` | ✅ انجام شد | هر رکورد معتبر در فایل اکسل قابل import است | | 7.3 | Artisan Command `ifnex:import:rates` | ✅ انجام شد | | | 7.4 | Artisan Command `ifnex:import:shipments` | ✅ انجام شد | | --- ## بخش ۷: پیکربندی | # | کار | وضعیت | توضیحات | |---|-----|-------|---------| | 8.1 | `config/ifnex.php` | ✅ انجام شد | تنظیمات اختصاصی | | 8.2 | `config/cors.php` | ✅ انجام شد | | | 8.3 | `.env.example` به‌روز | ✅ انجام شد | IFNEX_API_KEY, CORS_ALLOWED_ORIGINS, ... | | 8.4 | سوییچ به Laravel 11 | ✅ انجام شد | Downgrade از v12 به v11 | | 8.5 | نصب `morilog/jalali` v3 | ✅ انجام شد | | | 8.6 | رفع خطای PSR-4 | ✅ انجام شد | SettingsPage.php | | 8.7 | رفع خطای `MethodNotAllowedHttpException` | ✅ انجام شد | POST /admin/login | --- ## بخش ۸: Code Review | # | کار | وضعیت | توضیحات | |---|-----|-------|---------| | 9.1 | بررسی `bootstrap/app.php` | ✅ انجام شد | مشکل: گروه `web` تعریف نشده | | 9.2 | بررسی `AdminPanelProvider.php` | ✅ انجام شد |Middlewareهای طولانی به صورت دستی | | 9.3 | بررسی `composer.json` | ✅ انجام شد | صحیح است | | 9.4 | بررسی Routes | ✅ انجام شد | کافی برای حال حاضر | | 9.5 | ارائه راه‌حل برای مشکلات | ✅ انجام شد | راه‌حل در STATUS.md ثبت شد | --- ## بخش ۹: بلاک‌های فعلی | # | مشکل | اولویت | وضعیت | راه‌حل | |---|------|--------|-------|--------| | B1 | فایل اکسل مرسولات فعلی داده‌های نمونه/قدیمی دارد | 🟡 متوسط | **بدون بلاک** | هر فایل اکسل جدید قابل import است | | B2 | گروه `web` در `bootstrap/app.php` تعریف نشده | 🔴 بالا | **بلاک** | اضافه کردن `$middleware->group('web', [...])` | | B3 | فایل اکسل ترکینگ موجود است | 🟡 متوسط | ✅ موجود | در `01_Documents/Data entry 2026-06-28.xlsx` | | B4 | پلاگین وردپرس IFNEX Bridge ساخته نشده | 🟡 متوسط | نشده | بعد از تست کامل API | | B5 | تست دستی کامل Filament انجام نشده | 🟡 متوسط | pending | ورود + CRUD + RelationManagers | --- ## بخش ۱۰: کارهای باقی‌مانده فاز ۰ | # | کار | اولویت | وضعیت | یادداشت | |---|-----|--------|-------|---------| | R1 | تست دستی کامل Filament | 🔴 بالا | ✅ انجام شد | ورود + CRUD + RelationManagers + Settings | | R2 | مهاجرت داده‌های ترکینگ از `01_Documents/Data entry 2026-06-28.xlsx` | 🟡 متوسط | ✅ انجام شد | 98 رویداد import شد | | R3 | ساخت پلاگین وردپرس IFNEX Bridge | 🟡 متوسط | ✅ انجام شد | شورت‌کدها کار می‌کنند | | R4 | تست کامل API Track با داده‌های واقعی | 🟡 متوسط | ✅ انجام شد | AWB 980100010 و 980103619 | | R5 | تست نهایی فاز ۰ و تحویل به مشتری | 🟢 پایین | ✅ انجام شد | همه موارد تست شدند | --- ## بخش ۱۱: کارهای فاز ۱ (پس از تأیید فاز ۰) | # | کار | اولویت | وضعیت | |---|-----|--------|-------| | F1.1 | تست کامل `PriceCalculatorService` با داده‌های واقعی | 🔴 بالا | ✅ انجام شد (2026-08-07) | | F1.2 | تکمیل جدول `shipping_rates` | 🟡 متوسط | ✅ انجام شد - ۴۰۴ رکورد import شد | | F1.3 | فرم ثبت سفارش آنلاین با ۹ ردیف کالای گمرکی | 🟡 متوسط | ⏳ pending | | F1.4 | تولید PDF: AWB، INVOICE، Label | 🟡 متوسط | ⏳ pending | | 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 | --- ## بخش ۱۲: کارهای فاز ۲ و ۳ (مرجع) ### فاز ۲: اتوماسیون مالی - [ ] اتصال به درگاه پرداخت (زرین‌پال) - [ ] ایجاد جدول کیف پول و تراکنش‌ها - [ ] شارژ اعتبار آنلاین و دستی - [ ] کرون‌جاب بروزرسانی نرخ ارز - [ ] سیستم کوپن و تخفیف‌ها - [ ] فرمول محاسبه قیمت رقبا ### فاز ۳: رهگیری زنده و عملیات - [ ] راه‌اندازی VPS پل خارج (هلند/آلمان) - [ ] اتصال به TrackingMore/17track API - [ ] سیستم وب‌هوک - [ ] مپ کردن کدهای رهگیری - [ ] داشبورد مالی - [ ] فرم نظرسنجی و رضایت مشتری - [ ] پنل کاربری مشتریان در وردپرس --- ## Legend | آیکون | معنی | |--------|------| | ✅ | انجام شده | | 🔄 | در حال انجام | | ⚠️ | جزئی/ناقص/بلاک | | ❌ | لغو شده/خراب | | ⏸️ | متوقف/منتظر | | 🔴 بالا | اولویت بالا | | 🟡 متوسط | اولویت متوسط | | 🟢 پایین | اولویت پایین | --- ## نحوه استفاده از این فایل ۱. **در ابتدای هر جلسه:** این فایل را باز کنید و موارد `pending` را بررسی کنید. ۲. **بعد از انجام هر کار:** شماره کار را پیدا کنید و وضعیت را به‌روز کنید. ۳. **اگر بلاک جدیدی ایجاد شد:** در بخش «بلاک‌های فعلی» اضافه کنید. ۴. **اگر نیاز به Code Review دارید:** بخش ۹ را بررسی کنید. --- © 2026 VernaSoft Group. Internal use only.