Update the project documentation to reflect the successful completion of all Phase 0 tasks, including Filament manual testing, tracking data migration, WordPress bridge plugin development, and API testing. - Mark all R1-R5 items as completed in `IFNEX_Phase0_Checklist.md` - Update `STATUS.md` to show completed status for high and medium priority tasks
226 lines
11 KiB
Markdown
226 lines
11 KiB
Markdown
# ✅ 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` با دادههای واقعی | 🔴 بالا | pending |
|
||
| F1.2 | تکمیل جدول `shipping_rates` | 🟡 متوسط | ۴۰۴ رکورد import شد |
|
||
| F1.3 | فرم ثبت سفارش آنلاین با ۹ ردیف کالای گمرکی | 🟡 متوسط | pending |
|
||
| F1.4 | تولید PDF: AWB، INVOICE، Label | 🟡 متوسط | pending |
|
||
| F1.5 | ماژول ایمپورت اکسل تعرفهها | 🟢 پایین | pending |
|
||
| F1.6 | صفحه استعلام قیمت واقعی | 🟢 پایین | pending |
|
||
|
||
---
|
||
|
||
## بخش ۱۲: کارهای فاز ۲ و ۳ (مرجع)
|
||
|
||
### فاز ۲: اتوماسیون مالی
|
||
- [ ] اتصال به درگاه پرداخت (زرینپال)
|
||
- [ ] ایجاد جدول کیف پول و تراکنشها
|
||
- [ ] شارژ اعتبار آنلاین و دستی
|
||
- [ ] کرونجاب بروزرسانی نرخ ارز
|
||
- [ ] سیستم کوپن و تخفیفها
|
||
- [ ] فرمول محاسبه قیمت رقبا
|
||
|
||
### فاز ۳: رهگیری زنده و عملیات
|
||
- [ ] راهاندازی VPS پل خارج (هلند/آلمان)
|
||
- [ ] اتصال به TrackingMore/17track API
|
||
- [ ] سیستم وبهوک
|
||
- [ ] مپ کردن کدهای رهگیری
|
||
- [ ] داشبورد مالی
|
||
- [ ] فرم نظرسنجی و رضایت مشتری
|
||
- [ ] پنل کاربری مشتریان در وردپرس
|
||
|
||
---
|
||
|
||
## Legend
|
||
|
||
| آیکون | معنی |
|
||
|--------|------|
|
||
| ✅ | انجام شده |
|
||
| 🔄 | در حال انجام |
|
||
| ⚠️ | جزئی/ناقص/بلاک |
|
||
| ❌ | لغو شده/خراب |
|
||
| ⏸️ | متوقف/منتظر |
|
||
| 🔴 بالا | اولویت بالا |
|
||
| 🟡 متوسط | اولویت متوسط |
|
||
| 🟢 پایین | اولویت پایین |
|
||
|
||
---
|
||
|
||
## نحوه استفاده از این فایل
|
||
|
||
۱. **در ابتدای هر جلسه:** این فایل را باز کنید و موارد `pending` را بررسی کنید.
|
||
۲. **بعد از انجام هر کار:** شماره کار را پیدا کنید و وضعیت را بهروز کنید.
|
||
۳. **اگر بلاک جدیدی ایجاد شد:** در بخش «بلاکهای فعلی» اضافه کنید.
|
||
۴. **اگر نیاز به Code Review دارید:** بخش ۹ را بررسی کنید.
|
||
|
||
---
|
||
|
||
© 2026 VernaSoft Group. Internal use only.
|