ifnex/01_Documents/IFNEX_Phase0_Checklist.md
Kazem Alghasi cd8021e6e1 docs: update project documentation and roadmap to reflect phase 2 and 3 completion
Update project documentation, status reports, and technical READMEs to
reflect the successful completion of Phase 2 (Financial Automation) and
Phase 3 (Customer Portal & WordPress Integration).

Changes include:
- Updated `STATUS.md` and `README.md` to mark Phases 2 and 3 as completed
- Updated `01_Documents/IFNEX_Phase0_Checklist.md` with detailed task
  completion status for Phases 1, 2, and 3
- Refined technical architecture documentation in `04_Laravel/README.md`
  to include new services (Zarinpal, OrderPayment), controllers (Auth,
  CustomerOrder), and Filament resources (Wallet, Payment, DiscountCode)
- Added `DEPLOYMENT.md` for deployment instructions
- Updated system specifications to include Laravel Sanctum, RBAC via
  spatie/laravel-permission, and the updated WordPress/IFNEX Bridge
  capabilities
2026-08-10 18:12:49 +03:30

258 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ✅ IFNEX Phase 0 Checklist
> **فاز:** Phase 0 — بنیان داده + ترکینگ دستی + مهاجرت داده‌های تاریخی
> **تاریخ ایجاد:** 2026-08-04
> **تاریخ به‌روزرسانی:** 2026-08-10
> **وضعیت کلی:** ✅ تکمیل شده
> **مرجع اصلی:** `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` | ✅ انجام شد | ۹ وضعیت (pending_payment, cancelled اضافه شد) |
| 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 | فرم ثبت سفارش آنلاین با ۹ ردیف کالای گمرکی | 🟡 متوسط | ✅ انجام شد |
| F1.4 | تولید PDF: AWB، INVOICE، Label | 🟡 متوسط | ✅ انجام شد |
| F1.5 | ماژول ایمپورت اکسل تعرفه‌ها | 🟢 پایین | ✅ انجام شد |
| F1.6 | صفحه استعلام قیمت واقعی | 🟢 پایین | ✅ انجام شد |
## بخش ۱۲: کارهای فاز ۲ (تکمیل شده)
| # | کار | اولویت | وضعیت |
|---|-----|--------|-------|
| F2.1 | ساخت `WalletController` با APIها | 🔴 بالا | ✅ انجام شد |
| F2.2 | ساخت `DiscountCodeController` با APIها | 🔴 بالا | ✅ انجام شد |
| F2.3 | ساخت `UpdateExchangeRates` Artisan Command | 🟡 متوسط | ✅ انجام شد |
| F2.4 | ثبت routeهای کیف پول و تخفیف | 🟡 متوسط | ✅ انجام شد |
| F2.5 | اتصال درگاه پرداخت (زرین‌پال) | 🔴 بالا | ✅ انجام شد |
| F2.6 | شارژ آنلاین کامل | 🔴 بالا | ✅ انجام شد |
| F2.7 | پنل مالی در Filament | 🟡 متوسط | ✅ انجام شد |
| F2.8 | ساخت `OrderPaymentService` | 🔴 بالا | ✅ انجام شد |
| F2.9 | ساخت `ZarinpalService` و `MockZarinpalService` | 🔴 بالا | ✅ انجام شد |
| F2.10 | ردیابی تاریخچه نرخ ارز | 🟡 متوسط | ✅ انجام شد |
| F2.11 | یکپارچگی RBAC با spatie/laravel-permission | 🟡 متوسط | ✅ انجام شد |
| F2.12 | گسترش پلاگین IFNEX Bridge (کیف پول + تراکنش) | 🟡 متوسط | ✅ انجام شد |
## بخش ۱۳: کارهای فاز ۳ (تکمیل شده)
| # | کار | اولویت | وضعیت |
|---|-----|--------|-------|
| F3.1 | ساخت `AuthController` برای Sanctum | 🔴 بالا | ✅ انجام شد |
| F3.2 | ساخت `BridgeAuthController` | 🔴 بالا | ✅ انجام شد |
| F3.3 | ساخت `CustomerOrderController` با ۶ endpoint | 🔴 بالا | ✅ انجام شد |
| F3.4 | ساخت `OrderPaymentService` | 🔴 بالا | ✅ انجام شد |
| F3.5 | توسعه پلاگین وردپرس برای پورتال مشتری | 🔴 بالا | ✅ انجام شد |
| F3.6 | توسعه پوسته سفامشی IFNEX | 🟡 متوسط | ✅ انجام شد |
| F3.7 | به‌روزرسانی وردپرس به ۷.۰.۳ | 🟡 متوسط | ✅ انجام شد |
| F3.8 | یکپارچگی Design System | 🟡 متوسط | ✅ انجام شد |
| F3.9 | خروجی CSV برای ShipmentResource و WalletTransactionResource | 🟢 پایین | ✅ انجام شد |
---
## بخش ۱۴: کارهای آینده (فاز ۴)
### فاز ۴: VPS پل و ترکینگ زنده
- [ ] راه‌اندازی VPS پل خارج (هلند/آلمان)
- [ ] اتصال به TrackingMore/17track API
- [ ] سیستم وب‌هوک
- [ ] مپ کردن کدهای رهگیری
- [ ] پلاگین SMS
- [ ] ماژول CRM
- [ ] اپلیکیشن موبایل
### فاز ۲.۵: تست و بهینه‌سازی
- [ ] تست نهایی پلاگین وردپرس با داده‌های واقعی
- [ ] مستندسازی API
- [ ] بهینه‌سازی عملکرد (کش، query optimization)
---
## Legend
| آیکون | معنی |
|--------|------|
| ✅ | انجام شده |
| 🔄 | در حال انجام |
| ⚠️ | جزئی/ناقص/بلاک |
| ❌ | لغو شده/خراب |
| ⏸️ | متوقف/منتظر |
| 🔴 بالا | اولویت بالا |
| 🟡 متوسط | اولویت متوسط |
| 🟢 پایین | اولویت پایین |
---
## نحوه استفاده از این فایل
۱. **در ابتدای هر جلسه:** این فایل را باز کنید و موارد `pending` را بررسی کنید.
۲. **بعد از انجام هر کار:** شماره کار را پیدا کنید و وضعیت را به‌روز کنید.
۳. **اگر بلاک جدیدی ایجاد شد:** در بخش «بلاک‌های فعلی» اضافه کنید.
۴. **اگر نیاز به Code Review دارید:** بخش ۹ را بررسی کنید.
---
© 2026 VernaSoft Group. Internal use only.