ifnex/01_Documents/IFNEX_Phase0_Checklist.md
Kazem Alghasi 285acdae89 docs(project): update project status, roadmap, and documentation
Update project documentation to reflect the completion of Phase 0 and Phase 1, and the commencement of Phase 2. This includes archiving obsolete documents, updating the README with a new architectural overview, and refining the project checklist and status reports.

- Archive obsolete PRD and Roadmap documents
- Update `IFNEX_Phase0_Checklist.md` with completed tasks and Phase 2 roadmap
- Update `STATUS.md` with recent development progress for August 2026
- Refactor `04_Laravel/README.md` to include detailed technical specifications and architecture diagrams
- Update root `README.md` with updated versioning and system architecture visualization
- Refine `PriceCalculatorServiceTest.php` to align with updated service output structures
2026-08-07 05:58:12 +03:30

12 KiB
Raw Blame History

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