ifnex/01_Documents/IFNEX_Pro_Backlog.md
Kazem Alghasi defdcc22c9 feat(core): complete phase 3.11 and prepare for production deployment
This commit marks the completion of phase 3.11 (UAT Ready) and includes
significant updates to deployment automation, testing, and documentation.

Key changes:
- Implement `ifnex:smoke-test` command for E2E post-deployment validation
- Implement `ifnex:preflight` command for environment audit before migration
- Implement `ifnex:import-fx-rates` for automated multi-source currency
  rate imports (Exir.io and FreeCurrencyAPI)
- Update `CurrencySeeder` to support base currencies (USD, AED, EUR, CNY, IRR)
- Enhance `IfnexSmokeTest` with improved environment-aware checks and
  robust HTTP mocking in tests
- Update project documentation (Roadmap, README, AGENT, Handoff) to reflect
  completed phases 3.7 through 3.11
- Add UAT checklist and installation guides for recent hotfixes
- Update project statistics (models, migrations, endpoints, and test counts)
2026-11-08 06:28:21 +03:30

134 lines
6.1 KiB
Markdown
Raw Permalink 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 Pro Version — Feature Backlog
> این فایل شامل فیچرهایی است که برای نسخه Pro (پولی) برنامه‌ریزی شده‌اند.
> هر مورد با برچسب نسخه و اولویت مشخص شده است.
> تاریخ ایجاد: ۲۰۲۶-۱۰-۲۹
> آخرین به‌روزرسانی: ۲۰۲۶-۱۱-۰۱
---
## 📝 خلاصه وضعیت (۲۰۲۶-۱۱-۰۱)
فازهای ۳.۷ تا ۳.۱۱ کامل شدند. فیچرهای زیر برای **نسخه Pro** نگه داشته شده‌اند:
| # | فیچر | اولویت | وابستگی |
|---|---|---|---|
| ۱ | ارز مرجع قابل تنظیم | 🔴 بالا | بازنویسی ExchangeRateService و PriceCalculatorService |
| ۲ | پلاگین SMS به‌صورت ماژول | 🟡 متوسط | منتظر پنل SMS مشتری |
| ۳ | سیستم لایسنس (Domain Lock) | 🔴 بالا | سرور لایسنس مرکزی |
| ۴ | بروزرسانی خودکار از گیت | 🟡 متوسط | نسخه‌بندی SemVer |
> ✅ **فیچر «دفترچه آدرس (Address Book)» در فاز ۳.۹ (۲۰۲۶-۱۱-۰۱) به‌عنوان فیچر استاندارد پیاده‌سازی شد** و از این لیست حذف گردید. مدل `AddressBookEntry` + CRUD API + dropdown در فرم سفارش + تب پنل کاربری + ۱۸ تست Feature.
### پیش‌نیاز ارز مرجع قابل تنظیم (مهم‌ترین فیچر 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 شده.
---
## 🔧 فیچر ۱: ارز مرجع قابل تنظیم (Configurable Base Currency)
### وضعیت: 📋 مطرح‌شده — برای نسخه Pro
### توضیح:
در نسخه فعلی، ارز مبنا (Base Currency) به‌صورت hard-code شده به **ریال ایران (IRR)**. این برای مشتریان ایرانی مناسب است، ولی اگر مشتری خارجی (مثلاً اروپایی) بخواهد از IFNEX استفاده کند، باید محاسبات بر مبنای یورو انجام شود.
### پیشنهاد پیاده‌سازی:
#### ۱. تنظیم در پنل ادمین:
در `System Settings` یک فیلد جدید اضافه شود:
- `base_currency` — کد ارز مرجع (مثلاً IRR, EUR, USD, AED)
- پیش‌فرض: IRR
#### ۲. تغییر در دیتابیس:
جدول `currencies`:
- ستون `rate_to_rial` → تغییر نام به `rate_to_base`
- هر ارز نرخ نسبت به ارز مرجع ذخیره می‌شود
جدول `rate_entries`:
- ستون `currency` به ارز مرجع تغییر می‌کند
- مثلاً اگه base=EUR، همه نرخ‌ها به EUR ذخیره می‌شوند
#### ۳. تغییر در `ExchangeRateService`:
```php
public function getBaseCurrency(): string
{
return SystemSetting::get('base_currency', 'IRR');
}
public function convertToBase(float $amount, string $fromCurrency): float
{
$baseCurrency = $this->getBaseCurrency();
if ($fromCurrency === $baseCurrency) return $amount;
$rate = Currency::where('code', $fromCurrency)->value('rate_to_base');
return $amount * $rate;
}
```
#### ۴. تغییر در `PriceCalculatorService`:
- همه ارجاعات به IRR با ارز مرجع جایگزین شود
- نمایش در پورتال مشتری هم با ارز مرجع
#### ۵. تأثیر روی فاکتورها و گزارش‌ها:
- PDF فاکتورها باید ارز مرجع رو نشون بدن
- گزارش‌های مالی بر مبنای ارز مرجع
- امکان نمایش معادل ارز دیگر (مثلاً معادل یورو و دلار)
### مزایا:
- ✅ پشتیبانی از مشتریان بین‌المللی
- ✅ انعطاف در انتخاب ارز محاسباتی
- ✅ White-label friendly
### چالش‌ها:
- ⚠️ تغییر اسکیمای دیتابیس (نیازمند migration)
- ⚠️ بازنویسی بخش‌های مالی سیستم
- ⚠️ تست مجدد همه فلوی پرداخت
### اولویت: 🔴 بالا (نسخه Pro)
---
## 📝 یادآوری‌های دیگر (در این چت مطرح شد)
### ✅ فیچر ۲: دفترچه آدرس (Address Book) — **تحویل‌شده در فاز ۳.۹**
> این فیچر در فاز ۳.۹ (۲۰۲۶-۱۱-۰۱) به‌عنوان فیچر استاندارد پیاده‌سازی شد و دیگر Pro نیست.
> - ✅ مدل `AddressBookEntry` + جدول `address_book_entries`
> - ✅ CRUD API محافظت‌شده با Sanctum + بررسی مالکیت
> - ✅ Dropdown در فرم سفارش + چک‌باکس «ذخیره این آدرس»
> - ✅ تب «دفترچه آدرس» در پنل کاربری وردپرس
> - ✅ ۱۸ تست Feature
### فیچر ۳: پلاگین SMS به‌صورت ماژول
- فعال‌سازی به‌صورت add-on
- پشتیبانی از چندین سرویس‌دهنده (Kavenegar, MeliPayamak, ...)
- پلن‌های جداگانه در مدل تجاری
### فیچر ۴: سیستم لایسنس (Domain Lock + Feature Flags)
- مدل: License Key + Domain Lock
- Feature Flags برای فعال‌سازی پلن‌های Starter/Business/Enterprise
- سرور لایسنس مرکزی
### فیچر ۵: بروزرسانی خودکار از گیت
- نسخه‌بندی سمنتیک (SemVer)
- آپدیت از گیت با تأیید مدیر
- بکاپ قبل از آپدیت
---
> این فایل توسط Z.ai در تاریخ ۲۰۲۶-۱۰-۲۹ ایجاد شد.
> در جلسات آینده با کارفرما باید هر فیچر به‌صورت جداگانه طراحی شود.