docs: update AGENT.md, CLIENT_DELIVERY.md, README.md, IFNEX_Pro_Backlog.md for phase 3.7

Phase 3.7 (Currency refactor + Manual invoices) is now complete.
Update all project documentation to reflect:

- AGENT.md 1.4: add IRR-only architecture section (4.13), wallet-centric
  architecture section (4.14), manual invoices (4.14), 4-quadrant rates
  (4.15). Add currency red lines to section 7. Restructure section 9
  (remaining work) into 3.6 (done), 3.7 (done), 3.8 (future).
- CLIENT_DELIVERY.md: header updated to phase 3.7 complete. Add
  section 15.2 with all phase 3.7 deliverables. Update 15.3 remaining
  list with future Pro features.
- README.md: add IRR-only, 4-quadrant, manual invoices to key
  features. Add phase 3.7 section (100% complete).
- IFNEX_Pro_Backlog.md: add summary table for 5 Pro features, plus
  prerequisites section for configurable base currency.

Wallet-centric architecture confirmed: all 4 payment paths (order,
invoice, credit settlement, deposit) flow through the wallet, with
6 transaction types. Race conditions handled with lockForUpdate.
This commit is contained in:
Kazem Alghasi 2026-10-30 00:33:42 +03:30
parent 7fe368bc46
commit cf7b76b707
5 changed files with 236 additions and 29 deletions

View File

@ -3,6 +3,32 @@
> این فایل شامل فیچرهایی است که برای نسخه Pro (پولی) برنامه‌ریزی شده‌اند.
> هر مورد با برچسب نسخه و اولویت مشخص شده است.
> تاریخ ایجاد: ۲۰۲۶-۱۰-۲۹
> آخرین به‌روزرسانی: ۲۰۲۶-۱۰-۳۰
---
## 📝 خلاصه وضعیت (۲۰۲۶-۱۰-۳۰)
فاز ۳.۷ پایه (IRR-only) کامل شد. فیچرهای زیر برای **نسخه Pro** نگه داشته شده‌اند:
| # | فیچر | اولویت | وابستگی |
|---|---|---|---|
| ۱ | ارز مرجع قابل تنظیم | 🔴 بالا | بازنویسی ExchangeRateService و PriceCalculatorService |
| ۲ | دفترچه آدرس (Address Book) | 🟡 متوسط | مدل + API + UI وردپرس |
| ۳ | پلاگین SMS به‌صورت ماژول | 🟡 متوسط | منتظر پنل SMS مشتری |
| ۴ | سیستم لایسنس (Domain Lock) | 🔴 بالا | سرور لایسنس مرکزی |
| ۵ | بروزرسانی خودکار از گیت | 🟡 متوسط | نسخه‌بندی SemVer |
### پیش‌نیاز ارز مرجع قابل تنظیم (مهم‌ترین فیچر Pro)
برای پیاده‌سازی این فیچر، باید:
1. فیلد `base_currency` در System Settings اضافه شود
2. ستون `rate_to_rial` در `currencies` به `rate_to_base` تغییر نام کند
3. ستون `currency` در `rate_entries` به ارز مرجع تغییر کند
4. `ExchangeRateService` و `PriceCalculatorService` بازنویسی شوند
5. PDF فاکتورها بر مبنای ارز مرجع نمایش داده شوند
بیشترین کار روی **Models/Services** و **Migrations** خواهد بود. UI تقریباً تغییر نمی‌کند چون همه چیز از قبل IRR-only شده.
---

View File

@ -114,4 +114,4 @@ return new class extends Migration
{
Schema::dropIfExists('manual_invoices');
}
};
};

178
AGENT.md
View File

@ -1,18 +1,18 @@
# راهنمای ایجنت — پروژهٔ IFNEX Logistics
> **تاریخ:** ۲۰۲۶-۱۰-۰۴
> **نسخه:** ۱.۳
> **تاریخ:** ۲۰۲۶-۱۰-۳۰
> **نسخه:** ۱.۴
> **تهیه‌کننده:** VernaSoft Group — Kazem Alghasi
---
## ۱. خلاصهٔ پروژه
سیستم مدیریت لجستیک بین‌المللی با معماری Headless: **Laravel 11** به‌عنوان بک‌اند، **WordPress** به‌عنوان فرانت‌اند و **Filament 3.3** به‌عنوان پنل مدیریت. این سیستم جایگزین فرآیندهای دستی مبتنی بر اکسل شده و از Multi-Package، فاکتور گمرکی، کیف پول دیجیتال، درگاه پرداخت Zarinpal، تولید PDF با بارکد، فلوی تأیید سفارش، تعهدنامه، SMS کاوه‌نگار، سیستم اعتبار چندارزی و رهگیری پیشرفته پشتیبانی می‌کند.
سیستم مدیریت لجستیک بین‌المللی با معماری Headless: **Laravel 11** به‌عنوان بک‌اند، **WordPress** به‌عنوان فرانت‌اند و **Filament 3.3** به‌عنوان پنل مدیریت. این سیستم جایگزین فرآیندهای دستی مبتنی بر اکسل شده و از Multi-Package، فاکتور گمرکی، کیف پول دیجیتال، درگاه پرداخت Zarinpal، تولید PDF با بارکد، فلوی تأیید سفارش، تعهدنامه، SMS کاوه‌نگار، سیستم اعتبار چندارزی، رهگیری پیشرفته، **سیستم ۴-رُبعی نرخ‌ها** و **فاکتورهای دستی مدیر** پشتیبانی می‌کند.
### وضعیت فعلی
فازهای ۰، ۱، ۲، ۳ و ۳.۵ تکمیل شده‌اند. فاز ۳.۶ (اصلاحات جلسهٔ کارفرما) حدود ۹۵٪ انجام شده است:
فازهای ۰، ۱، ۲، ۳، ۳.۵ و ۳.۶ تکمیل شده‌اند. فاز ۳.۷ (اصلاحات ارزی و فاکتور دستی) تکمیل شد:
- [x] فلوی کامل سفارش (ثبت ← تأیید ← تعهدنامه ← پرداخت) — تست End-to-End
- [x] بازطراحی داشبورد و Login پنل Filament (هویت بصری navy + amber)
@ -25,9 +25,55 @@
- [x] نمایش بدهی ارزی در پورتال مشتری وردپرس
- [x] استایل‌دهی صفحهٔ پروفایل مشتری در وردپرس
- [x] پاک‌سازی کد (حذف فایل‌های تستی، تأیید تمیزی `opcache_reset` / `dd` / `dump`)
- [x] **سیستم ۴-رُبعی نرخ‌ها** (Export/Import × Doc/Parcel) با ایمپورت از اکسل
- [x] **معماری IRR-only** — ارز مبنا = ریال ایران؛ تبدیل ارز در زمان ایمپورت
- [x] **فاکتورهای دستی مدیر** — صدور، پرداخت از کیف پول، اعلان خودکار به مشتری
چندزبانه (i18n) همچنان به زمان دیپلوی موکول است.
### معماری ارزی (Currency Architecture)
> **قاعده طلایی:** ارز مبنا در کل سیستم = **ریال ایران (IRR)**. هیچ واحد دیگری (تومان، درهم، دلار، یورو) در نمایش قیمت‌های داخلی یا ذخیره‌سازی استفاده نمی‌شود.
| نوع داده | ارز ذخیره | تبدیل |
|---|---|---|
| نرخ‌های حمل (`rate_entries`) | IRR | در زمان ایمپورت با نرخ روز |
| فاکتورهای دستی (`manual_invoices`) | IRR | مستقیم |
| تراکنش‌های کیف پول (`wallet_transactions`) | IRR | مستقیم |
| **بدهی‌های ارزی مشتری** (`customer_credits`) | **ارز خارجی** | در زمان تسویه با نرخ روز |
**نرخ‌های ارز** از جدول `currencies` خوانده می‌شوند. مدیر به‌صورت دستی یا از API (Exir.io، موقتاً غیرفعال) نرخ را به‌روز می‌کند. API نرخ‌ها با وضعیت `pending` ذخیره می‌شوند و مدیر باید تأیید کند (`approved`).
**تفاوت نرخ‌های حمل و بدهی ارزی:**
- نرخ‌های حمل به IRR ذخیره می‌شوند (در زمان ایمپورت با نرخ روز تبدیل می‌شوند) — تغییرات نرخ روز روی نرخ‌های ذخیره‌شده اثر ندارد.
- بدهی ارزی به ارز خارجی ذخیره می‌شود — در زمان تسویه با نرخ روز محاسبه می‌شود.
### فیچر فاکتورهای دستی مدیر (Manual Invoices)
مدیر می‌تواند برای هر مشتری فاکتور صادر کند (برای خدمات خارج از سفارش: انبارداری، مشاوره تلفنی، هزینه‌های جانبی و...).
- **پنل ادمین:** `Manual invoices` (گروه «مالی»)
- **مدل:** `ManualInvoice` + `ManualInvoiceService` + `CustomerInvoiceController`
- **جریان:**
1. مدیر فاکتور صادر می‌کند → `status = 'pending_payment'`
2. اعلان خودکار به مشتری ارسال می‌شود (`ManualInvoiceCreatedNotification`)
3. مشتری در پورتال وردپرس فاکتور را می‌بیند (تب «فاکتورهای دستی»)
4. با کلیک روی «پرداخت از کیف پول»، مبلغ از کیف پول کسر می‌شود
5. تراکنش با نوع `invoice_payment` در `wallet_transactions` ثبت می‌شود
- **شماره فاکتور:** فرمت `INV-YYYY-NNNNNN` (مثلاً `INV-2026-000001`)
- **وضعیت‌ها:** `pending_payment` / `paid` / `cancelled` / `expired`
- **اعلام در پورتال:** badge قرمز در منوی سایدبار + اعلان در تب اعلان‌ها + ویجت داشبورد + تفکیک در وضعیت مالی
### خط قرمزهای معماری ارزی
| ❌ هرگز | ✅ همیشه |
|---|---|
| ذخیره نرخ‌ها به AED/USD | ذخیره به IRR |
| نمایش قیمت به «درهم» در فرم/پورتال | نمایش به «ریال» |
| تبدیل در زمان محاسبه قیمت | تبدیل در زمان ایمپورت |
| وجود fallback عددی برای نرخ ارز | خطای واضح اگه نرخ تنظیم نشده |
| استفاده از «تومان» در کد/UI | فقط «ریال» |
---
## ۲. تکنولوژی‌ها و نسخه‌ها
@ -42,7 +88,7 @@
| پرداخت | Zarinpal + Mock Gateway (تست) | کلید sandbox برای تست لوکال |
| PDF و بارکد | Dompdf + picqer/php-barcode-generator | AWB، Invoice، Label، فاکتور واردات |
| پیامک | Kavenegar | تأیید موبایل + اعلان وضعیت سفارش |
| اکسل | maatwebsite/excel | Import / Export نرخ‌ها و داده‌های تاریخی |
| اکسل | maatwebsite/excel + PhpSpreadsheet | Import / Export نرخ‌ها و داده‌های تاریخی |
| تاریخ و زمان | morilog/jalali + Carbon | تاریخ شمسی در نمایش، میلادی در DB |
| دیتابیس | MySQL | 8.0+ (تست‌ها با SQLite) |
| صف | Redis (ترجیحی) / Database | برای پردازش‌های سنگین |
@ -183,6 +229,75 @@ IFNEX-Logistics/
- trait `App\Traits\Auditable` روی مدل‌های اصلی (User، Shipment، Wallet و…) اعمال شده و در `AuditLogResource` قابل مشاهده است.
- `ShipmentStatusHistory` دارای ستون‌های `from_status` / `to_status` / `reason` به‌همراه نام کاربر تغییردهنده است.
### ۴.۱۳ معماری کیف‌پول‌محور (Wallet-Centric Architecture)
سیستم مالی IFNEX بر مبنای **کیف پول مشتری** کار می‌کند. همه پرداخت‌ها از کیف پول عبور می‌کنند.
#### ساختار کیف پول:
- هر کاربر یک **کیف پول** دارد (`wallets` table)
- موجودی کیف پول به **ریال (IRR)** است
- تراکنش‌ها در `wallet_transactions` ثبت می‌شوند با نوع‌های:
- `deposit` — شارژ کیف پول (از درگاه یا دستی توسط ادمین)
- `withdrawal` — برداشت/کسر
- `order_payment` — پرداخت سفارش
- `refund` — بازگشت وجه
- `credit_settlement` — تسویه بدهی ارزی (با نرخ روز)
- `invoice_payment` — پرداخت فاکتور دستی
#### جریان پرداخت (همه از کیف پول می‌گذرند):
| سناریو | مسیر |
|---|---|
| شارژ کیف پول | درگاه Zarinpal → `walletService->completeDeposit()` → افزایش موجودی |
| پرداخت سفارش | `OrderPaymentService->payFromWallet()` → کسر از کیف پول + ثبت `order_payment` |
| پرداخت فاکتور دستی | `ManualInvoiceService->payFromWallet()` → کسر از کیف پول + ثبت `invoice_payment` |
| تسویه بدهی ارزی | `CustomerCreditService->settle()` (with `$fromWallet=true`) → کسر از کیف پول + ثبت `credit_settlement` |
#### مزایای این معماری:
- ✅ همه پرداخت‌ها در یک جدول (`wallet_transactions`) ثبت می‌شوند — تاریخچه واحد
- ✅ موجودی کیف پول منهای بدهی‌ها = مانده حساب واقعی مشتری
- ✅ مدیر می‌تواند موجودی را به‌صورت دستی تنظیم کند (`manualDeposit` / `manualWithdrawal`)
- ✅ قفل کیف پول (`freeze`) در همه پرداخت‌ها اعمال می‌شود
- ✅ Race condition با `lockForUpdate()` در پرداخت‌های همزمان مدیریت می‌شود
#### ویژگی‌های کلیدی مدل Wallet:
```php
$wallet->balance // موجودی فعلی (ریال)
$wallet->isFrozen() // آیا مسدود است؟
$wallet->hasSufficientBalance($amount) // آیا موجودی کافی است؟
$wallet->freeze($reason, $admin) // مسدود کردن توسط ادمین
$wallet->unfreeze($admin) // رفع مسدودیت
```
#### قاعده طلایی:
> هیچ پرداختی بدون عبور از کیف پول ثبت نمی‌شود. اگه در آینده درگاه جدیدی اضافه شود (مثلاً Stripe)، باید مبلغ ابتدا به کیف پول واریز شود (`deposit`) و سپس از کیف پول کسر شود (`order_payment` / `invoice_payment`).
### ۴.۱۴ فاکتورهای دستی مدیر (Manual Invoices)
مدیر می‌تواند برای هر مشتری فاکتور صادر کند (خدمات خارج از سفارش). مشتری در پورتالش فاکتور را می‌بیند و از کیف پول پرداخت می‌کند.
- **مدل:** `ManualInvoice` + `ManualInvoiceService` + `CustomerInvoiceController`
- **پنل ادمین:** `ManualInvoiceResource` در گروه «مالی»
- **پورتال وردپرس:** تب «فاکتورهای دستی» با badge قرمز برای فاکتورهای pending
- **شماره فاکتور:** `INV-YYYY-NNNNNN` (مثلاً `INV-2026-000001`)
- **وضعیت‌ها:** `pending_payment` / `paid` / `cancelled` / `expired`
- **اعلان خودکار:** `ManualInvoiceCreatedNotification` به مشتری ارسال می‌شود
- **پرداخت:** از کیف پول مشتری (کسر + ثبت تراکنش `invoice_payment`)
### ۴.۱۵ نرخ‌های حمل و سیستم ۴-رُبعی
نرخ‌های حمل در جدول `rate_entries` به‌صورت **۴-رُبعی** ذخیره می‌شوند:
- جهت: `import` / `export`
- نوع سرویس: `document` / `parcel`
- وزن × زون: ماتریس
نگاشت زون‌ها در `country_zones` (هر کشور می‌تواند زون متفاوت برای Doc و Parcel داشته باشد).
> **نکته مهم:** `DOC_ECONOMY` فعلاً به همان نرخ `DOC_NORMAL` محاسبه می‌شود. برای تفکیک کامل، باید `service_type` در `rate_entries` به ۳ مقدار گسترش پیدا کند.
---
## ۵. دستورات روزمره
@ -290,6 +405,11 @@ WALLET_AUTO_CREATE=true
| متدهای نوتیفیکیشن بیرون از کلاس | داخل کلاس `IFNEX_User_Bridge` |
| روت staff/admin بدون چک نقش | چک نقش یا مالکیت در middleware یا ابتدای کنترلر |
| هدایت مستقیم سفارش به درگاه پس از ثبت | فلوی `pending_approval` ← `approved` ← پرداخت |
| **ذخیره نرخ‌ها به AED/USD** | **ذخیره به IRR (تبدیل در ایمپورت)** |
| **نمایش قیمت به «درهم» در UI** | **نمایش به «ریال»** |
| **استفاده از «تومان» در کد/UI** | **فقط «ریال»** |
| **fallback عددی برای نرخ ارز** | **خطای واضح اگه نرخ تنظیم نشده** |
| **تغییر `customer_credits` به IRR** | **بدهی ارزی به ارز خارجی، تسویه با نرخ روز** |
---
@ -325,20 +445,45 @@ WALLET_AUTO_CREATE=true
---
## ۹. کارهای باقی‌مانده (فاز ۳.۶)
## ۹. کارهای باقی‌مانده
### فاز ۳.۶ (اصلاحات جلسه کارفرما) — ✅ تکمیل (۲۰۲۶-۱۰-۰۴)
| # | کار | وضعیت |
|---|-----|--------|
| ۱ | تست انتهای فلوی سفارش: آپلود تعهدنامه ← تأیید کارمند ← پرداخت کیف پول یا درگاه | ✅ انجام شد (۲۰۲۶-۱۰-۰۴) |
| ۲ | امنیت: چک نقش `/staff/*`، چک مالکیت PDF و تعهدنامه، محدودسازی discount-codes، rate limiting | ✅ انجام شد (۲۰۲۶-۱۰-۰۴) |
| ۳ | بازطراحی سیستم اعتبار چندارزی + نمایش در پورتال مشتری + ویجت هشدار داشبورد | ✅ انجام شد (۲۰۲۶-۱۰-۰۴) |
| ۴ | چک‌لیست خودکار کارمند پس از تأیید سفارش | ✅ انجام شد (`instantiateChecklist()` در `approve()`) |
| ۵ | سند پیشنهادی سیستم مالی (درخواست ۱۳ کارفرما) | ⏳ موکول به آینده |
| ۶ | پاک‌سازی: فایل‌های تستی، cache-busterها، `!important`ها | ✅ انجام شد (۲۰۲۶-۱۰-۰۴) |
| ۷ | نمایش وزن واقعی و حجمی در خلاصهٔ قیمت وردپرس | ✅ در API موجود است (`weight` + `volumetric_weight` در پاسخ) |
| ۸ | چندزبانه (i18n) | ⏳ موکول به زمان دیپلوی |
| ۱ | تست انتهای فلوی سفارش: آپلود تعهدنامه ← تأیید کارمند ← پرداخت کیف پول یا درگاه | ✅ |
| ۲ | امنیت: چک نقش `/staff/*`، چک مالکیت PDF و تعهدنامه، محدودسازی discount-codes، rate limiting | ✅ |
| ۳ | بازطراحی سیستم اعتبار چندارزی + نمایش در پورتال مشتری + ویجت هشدار داشبورد | ✅ |
| ۴ | چک‌لیست خودکار کارمند پس از تأیید سفارش | ✅ (`instantiateChecklist()` در `approve()`) |
| ۶ | پاک‌سازی: فایل‌های تستی، cache-busterها، `!important`ها | ✅ |
| ۷ | نمایش وزن واقعی و حجمی در خلاصهٔ قیمت وردپرس | ✅ (در API موجود است) |
**وضعیت کلی فاز ۳.۶:** حدود ۹۵٪ تکمیل. تنها موارد باقی‌مانده: i18n (زمان دیپلوی) و سند پیشنهادی مالی (آینده).
### فاز ۳.۷ (اصلاحات ارزی و فاکتور دستی) — ✅ تکمیل (۲۰۲۶-۱۰-۳۰)
| # | کار | وضعیت |
|---|-----|--------|
| ۱ | **سیستم ۴-رُبعی نرخ‌ها** (Export/Import × Doc/Parcel) با ایمپورت از اکسل | ✅ |
| ۲ | **معماری IRR-only** — ارز مبنا = ریال ایران، حذف جفت‌ارز | ✅ |
| ۳ | **ایمپورت فایل اکسل اصلی مشتری** + قالب جدید `IFNEX_Rate_Template.xlsx` | ✅ |
| ۴ | **حذف تمام «تومان» و «درهم» از نمایش قیمت‌های داخلی** | ✅ |
| ۵ | **فاکتورهای دستی مدیر** (صدور + پرداخت از کیف پول + اعلان خودکار) | ✅ |
| ۶ | **تب «فاکتورهای دستی» در پورتال وردپرس** (لیست + جزئیات + پرداخت) | ✅ |
| ۷ | **اضافه شدن فاکتورها به وضعیت مالی و داشبورد مشتری** | ✅ |
| ۸ | **فرمت هزارگان در فیلدهای عددی فرم فاکتور ادمین** | ✅ |
### فاز ۳.۸ (موکول به آینده)
| # | کار | وضعیت | اولویت |
|---|-----|--------|---------|
| ۱ | چندزبانه (i18n) | ⏳ موکول به زمان دیپلوی | متوسط |
| ۲ | سند پیشنهادی سیستم مالی (درخواست ۱۳ کارفرما) | ⏳ موکول به آینده | پایین |
| ۳ | پلاگین SMS (به‌صورت ماژول قابل فعال‌سازی) | ⏳ منتظر پنل SMS مشتری | متوسط |
| ۴ | لاین واردات از چین (ماژول مجزا) | ⏳ مطالعاتاتی | پایین |
| ۵ | دفترچه آدرس (Address Book) مشتری | 📋 مطرح‌شده | متوسط |
| ۶ | **ارز مرجع قابل تنظیم** (نسخه Pro) | 📋 مطرح‌شده — `01_Documents/IFNEX_Pro_Backlog.md` | پایین (نسخه Pro) |
| ۷ | سیستم بروزرسانی + لایسنس (Domain Lock) | 📋 مطرح‌شده — `01_Documents/IFNEX_Pro_Backlog.md` | پایین (نسخه Pro) |
| ۸ | favicon و صفحه `/` سفارشی لاراول | 📋 | پایین |
| ۹ | بازطراحی صفحه لاگین لاراول | 📋 | پایین |
---
@ -352,8 +497,9 @@ WALLET_AUTO_CREATE=true
| `01_Documents/IFNEX_File_Map.md` | نقشهٔ ۱۰۰+ فایل پروژه |
| `01_Documents/IFNEX_I18N_Strategy.md` | استراتژی چندزبانه (برای زمان دیپلوی) |
| `01_Documents/IFNEX_Commercial_Model.md` | مدل تجاری و پلن‌های فروش |
| `01_Documents/IFNEX_Pro_Backlog.md` | فیچرهای نسخه Pro (ارز مرجع قابل تنظیم، لایسنس، آپدیت) |
| `01_Documents/DESIGN_SYSTEM.md` | رنگ‌ها، تایپوگرافی، فاصله‌گذاری |
| `DEPLOYMENT.md` | راهنمای کامل استقرار روی سرور |
| `DEPLOYMENT.md` | راهنمای ایمپورت نرخ‌ها (سیستم ۴-رُبعی) |
| `DEPLOYMENT_HANDOFF.md` | تحویل استقرار به تیم IT کارفرما |
| `04_Laravel/README.md` | راهنمای بک‌اند |
| `CLIENT_DELIVERY.md` | چک‌لیست وضعیت تحویل مشتری (منبع اصلی وضعیت تحویل) |

View File

@ -1,8 +1,8 @@
# IFNEX — چک‌لیست تحویل به مشتری
> **وضعیت:** آماده برای دیپلوی (۹۵٪ تکمیل)
> **فاز جاری:** فاز ۳.۶ — اصلاحات جلسهٔ کارفرما
> **تاریخ آخرین به‌روزرسانی:** ۲۰۲۶-۱۰-۰۴
> **وضعیت:** آماده برای دیپلوی (فاز ۳.۷ تکمیل شد)
> **فاز جاری:** فاز ۳.۷ — اصلاحات ارزی و فاکتور دستی (تکمیل)
> **تاریخ آخرین به‌روزرسانی:** ۲۰۲۶-۱۰-۳۰
> **مخزن:** [git.vernahost.ir/gitmodir110/ifnex](https://www.git.vernahost.ir/gitmodir110/ifnex)
> ⚠️ این فایل فقط برای مدیریت تعهدات، تست و تحویل نسخهٔ فعلی مشتری است و جایگزین `AGENT.md` یا `IFNEX_Roadmap.md` نیست.
@ -501,11 +501,11 @@ Create Import Order
# ۱۵. خلاصهٔ وضعیت تحویل
**وضعیت فعلی:** آماده برای دیپلوی (۹۵٪ تکمیل)
**وضعیت فعلی:** آماده برای دیپلوی (فاز ۳.۷ تکمیل شد)
**آخرین کامیت بازبینی‌شده:** ۲۰۲۶-۱۰-۰۴ — شامل بازطراحی PDF، صفحهٔ وضعیت مالی مشتری، Rate Limiting و سیستم اعتبار چندارزی کامل.
**آخرین کامیت بازبینی‌شده:** ۲۰۲۶-۱۰-۳۰ — شامل سیستم ۴-رُبعی نرخ‌ها، معماری IRR-only، و فیچر فاکتورهای دستی مدیر.
## ۱۵.۱ تکمیل‌شده در این دوره
## ۱۵.۱ تکمیل‌شده در فاز ۳.۶ (۲۰۲۶-۱۰-۰۴)
- [x] فلوی پذیرش End-to-End (کیف پول + درگاه پس از تأیید تعهدنامه)
- [x] بازطراحی داشبورد و صفحهٔ Login (پنل Filament)
@ -521,12 +521,34 @@ Create Import Order
- [x] استایل‌دهی صفحهٔ پروفایل مشتری در وردپرس
- [x] پاک‌سازی کد (حذف فایل‌های تستی، تأیید تمیزی کد)
## ۱۵.۲ باقی‌مانده
## ۱۵.۲ تکمیل‌شده در فاز ۳.۷ (۲۰۲۶-۱۰-۳۰)
- [x] **سیستم ۴-رُبعی نرخ‌ها** (Export/Import × Doc/Parcel) با ایمپورت از اکسل
- [x] **معماری IRR-only** — ارز مبنا = ریال ایران، حذف جفت‌ارز و تبدیل در زمان ایمپورت
- [x] **ایمپورت فایل اصلی مشتری** + قالب جدید `IFNEX_Rate_Template.xlsx`
- [x] **حذف تمام «تومان» و «درهم» از نمایش قیمت‌های داخلی** در همه UIها
- [x] **فاکتورهای دستی مدیر** — صدور، پرداخت از کیف پول، اعلان خودکار
- [x] **تب «فاکتورهای دستی» در پورتال وردپرس** (لیست + جزئیات + پرداخت)
- [x] **اضافه شدن فاکتورها به وضعیت مالی و داشبورد مشتری**
- [x] **فرمت هزارگان** در فیلدهای عددی فرم فاکتور ادمین
- [x] آپدیت خط قرمزها برای معماری ارزی
## ۱۵.۳ باقی‌مانده
- [ ] i18n (موکول به زمان دیپلوی)
- [ ] تست نهایی UAT کارفرما
- [ ] دیپلوی روی سرور Production
- [ ] سند پیشنهادی سیستم مالی (درخواست ۱۳ کارفرما — موکول به آینده)
- [ ] پلاگین SMS (منتظر تحویل پنل SMS مشتری)
- [ ] دفترچه آدرس (Address Book) مشتری — مطرح‌شده، آینده
- [ ] favicon و صفحه `/` سفارشی لاراول — اولویت پایین
- [ ] بازطراحی صفحه لاگین لاراول — اولویت پایین
### باقی‌مانده برای نسخه Pro (آینده)
- [ ] ارز مرجع قابل تنظیم (IRR/EUR/USD/AED) — `01_Documents/IFNEX_Pro_Backlog.md`
- [ ] سیستم لایسنس با Domain Lock + Feature Flags
- [ ] بروزرسانی خودکار از گیت
---

View File

@ -28,21 +28,23 @@
### ✨ امکانات کلیدی
- **موتور قیمت‌گذاری هوشمند** با ۴ زون مجزا (Export/Import × Parcel/Doc) و ۳ نوع سرویس (`DOC_NORMAL`، `DOC_ECONOMY`، `PARCEL`)
- **معماری ارزی IRR-only** — ارز مبنا = ریال ایران؛ تبدیل ارز در زمان ایمپورت، نه محاسبه
- **موتور قیمت‌گذاری هوشمند** با ۴-رُبعی (Export/Import × Doc/Parcel) و ایمپورت از اکسل
- **فاکتورهای دستی مدیر** — صدور فاکتور برای خدمات خارج از سفارش + پرداخت از کیف پول + اعلان خودکار
- **ثبت سفارش آنلاین چندمرحله‌ای** با Wizard و محاسبهٔ لحظه‌ای قیمت
- **پشتیبانی چندبسته‌ای** (Multi-Package) در یک سفارش با محاسبهٔ خودکار وزن حجمی
- **تولید خودکار اسناد** (AWB، Invoice، Label، فاکتور واردات) با بارکد Code-128 و پشتیبانی کامل از زبان انگلیسی
- **پورتال مشتری کامل** با کیف پول، پرداخت آنلاین، تراکنش‌ها، اعلان‌ها و رهگیری مرسوله
- **پورتال مشتری کامل** با کیف پول، پرداخت آنلاین، فاکتورهای دستی، تراکنش‌ها، اعلان‌ها و رهگیری مرسوله
- **فلوی تأیید سفارش** با مسیر `pending_approval → approved → paid → processed`
- **چرخهٔ تعهدنامه** با فلوی کامل End-to-End (دانلود قالب ← آپلود امضاشده ← تأیید یا رد ادمین ← اعلان مشتری)
- **سیستم اعتبار چندارزی** — بدهی به همان ارز ثبت می‌شود، تسویه با نرخ روز
- **مانده حساب** با نمایش موجودی کیف پول منهای بدهی‌های تأییدشده
- **مانده حساب** با نمایش موجودی کیف پول منهای بدهی‌های تأییدشده (سفارشات + فاکتورهای دستی)
- **وضعیت مالی مشتری** — صفحهٔ جامع در پنل ادمین (۴ KPI + بدهی‌های ارزی + سفارش‌ها و تراکنش‌ها)
- **ویجت هشدار بدهی‌های ارزی** روی داشبورد به‌همراه badge روی منو
- **چک‌لیست خودکار کارمند** — نمونه‌سازی از قالب پس از تأیید سفارش
- **ایمپورت گروهی وضعیت ترکینگ** با فایل CSV در پنل مدیریت
- **سیستم Audit Log** برای ثبت لاگ تغییرات مدیر
- **پنل مدیریت قدرتمند Filament** شامل مدیریت مرسوله‌ها، نرخ‌ها، ارزها، کاربران و گزارش‌ها
- **پنل مدیریت قدرتمند Filament** شامل مدیریت مرسوله‌ها، نرخ‌ها، ارزها، فاکتورهای دستی، کاربران و گزارش‌ها
- **سیستم ترکینگ** با مهاجرت داده‌های تاریخی و تایم‌لاین کامل
- **اعلان‌های دیتابیس** برای ادمین و مشتری با badge unread در سایدبار
- **Rate Limiting** روی همهٔ APIها (۶ لایه: auth / sms / public / customer / wallet / staff)
@ -207,7 +209,7 @@ IFNEX-Logistics/
- اصلاحات فنی (Enum casts، migration، model)
- پشتیبانی چندزبانه (i18n) — منتقل شد به زمان دیپلوی
### فاز ۳.۶ — اصلاحات جلسهٔ کارفرما ✅ (۹۵٪)
### فاز ۳.۶ — اصلاحات جلسهٔ کارفرما ✅ (۱۰۰٪)
- [x] فلوی تأیید سفارش `pending_approval → approved → پرداخت → processed` — تست End-to-End
- [x] تعهدنامه‌ها با فلوی کامل (دانلود قالب ← آپلود امضاشده ← تأیید/رد ادمین ← اعلان مشتری)
@ -227,6 +229,17 @@ IFNEX-Logistics/
- [x] استایل‌دهی صفحهٔ پروفایل مشتری در وردپرس
- [x] پاک‌سازی کد — حذف فایل‌های تستی، تأیید تمیزی `opcache_reset` / `dd` / `dump`
### فاز ۳.۷ — اصلاحات ارزی و فاکتور دستی ✅ (۱۰۰٪)
- [x] **سیستم ۴-رُبعی نرخ‌ها** (Export/Import × Doc/Parcel) با ایمپورت از اکسل
- [x] **معماری IRR-only** — ارز مبنا = ریال ایران، حذف جفت‌ارز و تبدیل در زمان ایمپورت
- [x] **ایمپورت فایل اصلی مشتری** + قالب جدید `IFNEX_Rate_Template.xlsx`
- [x] **حذف تمام «تومان» و «درهم» از نمایش قیمت‌های داخلی** در همه UIها
- [x] **فاکتورهای دستی مدیر** — صدور، پرداخت از کیف پول، اعلان خودکار
- [x] **تب «فاکتورهای دستی» در پورتال وردپرس** (لیست + جزئیات + پرداخت)
- [x] **اضافه شدن فاکتورها به وضعیت مالی و داشبورد مشتری**
- [x] **فرمت هزارگان** در فیلدهای عددی فرم فاکتور ادمین
### فاز ۴ (آینده) — سیستم نمایندگی 📋
- مدل نمایندگی کامل با کمیسیون و پنل جداگانه