From cf7b76b7072cb97859c7f154ed82215c00b1e4ba Mon Sep 17 00:00:00 2001 From: Kazem Alghasi Date: Fri, 30 Oct 2026 00:33:42 +0330 Subject: [PATCH] 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. --- 01_Documents/IFNEX_Pro_Backlog.md | 26 +++ ...29_150000_create_manual_invoices_table.php | 2 +- AGENT.md | 178 ++++++++++++++++-- CLIENT_DELIVERY.md | 36 +++- README.md | 23 ++- 5 files changed, 236 insertions(+), 29 deletions(-) diff --git a/01_Documents/IFNEX_Pro_Backlog.md b/01_Documents/IFNEX_Pro_Backlog.md index 1fde4af..5da80de 100644 --- a/01_Documents/IFNEX_Pro_Backlog.md +++ b/01_Documents/IFNEX_Pro_Backlog.md @@ -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 شده. --- diff --git a/04_Laravel/database/migrations/2026_10_29_150000_create_manual_invoices_table.php b/04_Laravel/database/migrations/2026_10_29_150000_create_manual_invoices_table.php index 3e0d009..eccdebe 100644 --- a/04_Laravel/database/migrations/2026_10_29_150000_create_manual_invoices_table.php +++ b/04_Laravel/database/migrations/2026_10_29_150000_create_manual_invoices_table.php @@ -114,4 +114,4 @@ return new class extends Migration { Schema::dropIfExists('manual_invoices'); } -}; \ No newline at end of file +}; diff --git a/AGENT.md b/AGENT.md index 0a5600e..97ef29c 100644 --- a/AGENT.md +++ b/AGENT.md @@ -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` | چک‌لیست وضعیت تحویل مشتری (منبع اصلی وضعیت تحویل) | diff --git a/CLIENT_DELIVERY.md b/CLIENT_DELIVERY.md index 5f0b1bc..2624ae4 100644 --- a/CLIENT_DELIVERY.md +++ b/CLIENT_DELIVERY.md @@ -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 +- [ ] بروزرسانی خودکار از گیت --- diff --git a/README.md b/README.md index 1094eaf..fb68ee0 100644 --- a/README.md +++ b/README.md @@ -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] **فرمت هزارگان** در فیلدهای عددی فرم فاکتور ادمین + ### فاز ۴ (آینده) — سیستم نمایندگی 📋 - مدل نمایندگی کامل با کمیسیون و پنل جداگانه