Files
docs/roadmap/PACKAGE-TRANSFORMATION-UX.md
T
masoodafar-web 01244f426e docs: package-based transformation — complete roadmap + UX impact + feature backlog
New documents:
- roadmap/FEATURE-BACKLOG.md: 12 kept RPCs → feature tasks with priority,
  target pages, and time estimates (F1-F12)
- roadmap/PACKAGE-TRANSFORMATION-UX.md: UX impact analysis —
  before/after wireframes for 19 pages (10 FO + 9 BO),
  customer + admin experience changes, future needs prediction
- roadmap/PACKAGE-TRANSFORMATION-TASKS.md: step-by-step implementation
  plan (6 phases, ~13 day critical path), atomic tasks with
  code diffs, dependency graph, test checklist

Updated:
- cms/GRPC-SERVICES-AUDIT.md: cross-references to new docs

Total: 998 lines of documentation covering:
- 12 RPC feature tasks prioritized by package-based relevance
- 19 page wireframes (before/after comparison)
- 39 transformation tasks broken into 6 phases
- 10 predicted future requirements (N1-N10)
- Risk analysis + rollback plan + calendar
2026-02-24 23:18:50 +03:30

495 lines
30 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.
# 🏗️ تحلیل تحول پکیج‌بیس — تاثیر بر تجربه کاربر (UX)
> **وضعیت:** در حال تحلیل
> **تاریخ:** ۱۴۰۴/۱۲/۰۶
> **پیش‌نیاز:** [BIZ-PACKAGE-BASED-SYSTEM.md](../business/BIZ-PACKAGE-BASED-SYSTEM.md) v2
> **هدف:** مستندسازی تاثیر تغییر رویکرد پکیج‌بیس بر تجربه مشتری و ادمین در فرانت‌ها
---
## فهرست
1. [چشم‌انداز کلی](#۱-چشمانداز-کلی)
2. [تجربه مشتری (FrontOffice) — قبل و بعد](#۲-تجربه-مشتری-frontoffice--قبل-و-بعد)
3. [تجربه ادمین (BackOffice) — قبل و بعد](#۳-تجربه-ادمین-backoffice--قبل-و-بعد)
4. [تسک‌های تحول — مرحله‌به‌مرحله](#۴-تسکهای-تحول--مرحلهبهمرحله)
5. [پیش‌بینی نیازمندی‌های آینده](#۵-پیشبینی-نیازمندیهای-آینده)
6. [ماتریس تاثیرگذاری بر صفحات](#۶-ماتریس-تاثیرگذاری-بر-صفحات)
---
## ۱. چشم‌انداز کلی
### فلسفه تغییر
| بُعد | **فعلی (تک‌پکیج)** | **هدف (چند‌پکیج)** |
|------|-------------------|--------------------|
| **مدل قیمتی** | فقط ۵۶M تومان — "همه یا هیچ" | سطوح متنوع (نقره‌ای ۵.۶M, پایه ۵۶M, ...) — "ورود تدریجی" |
| **تجربه ورود** | سنگین — کاربر باید ۵۶M بپردازد | سبک — شروع از ۵.۶M و ارتقا بعدی |
| **چرخه عمر** | یک‌بار خرید → برای همیشه | چند‌بار خرید → هر چرخه Magic Wallet |
| **فیچرها** | ثابت — همه فیچرها برای همه | پویا — هر پکیج فیچرهای خودش |
| **کمیسیون** | یک Pool مشترک | Pool جداگانه هر پکیج |
| **مدیریت** | hardcoded — تغییر = deploy | داینامیک — ادمین از پنل تغییر می‌دهد |
### چه کسانی تاثیر می‌بینند؟
```
👤 مشتری (FrontOffice):
├── ثبت‌نام‌کننده جدید: گزینه‌های بیشتر → تصمیم‌گیری آسان‌تر
├── مشتری فعال: دکمه "ارتقا" + "خرید مجدد"
└── مشتری Magic: نمایش پیشرفت چرخه + آماده‌سازی خرید بعدی
👔 ادمین (BackOffice):
├── مدیر محصول: CRUD پکیج + ماتریس فیچر
├── مدیر مالی: Commission Pool جداگانه + گزارش‌ها
└── پشتیبان: فعالسازی دستی با انتخاب پکیج
```
---
## ۲. تجربه مشتری (FrontOffice) — قبل و بعد
### ۲.۱ صفحه لیست پکیج‌ها (`Packages.razor`)
#### قبل (فعلی):
```
┌─────────────────────────────────────────────┐
│ پکیج طلایی │
│ ──────────── │
│ ✅ دسترسی به باشگاه مشتریان │
│ ✅ کیف‌پول جادویی │
│ ✅ فروشگاه تخفیفی │
│ │
│ 💰 ۵۶,۰۰۰,۰۰۰ تومان │
│ │
│ [خرید پکیج] │
└─────────────────────────────────────────────┘
```
#### بعد (پکیج‌بیس):
```
┌──────────────────────┐ ┌──────────────────────┐ ┌──────────────────────┐
│ 🥈 پکیج نقره‌ای │ │ 🏆 پکیج پایه │ │ 💎 پکیج ویژه │
│ ──────────── │ │ ──────────── │ │ ──────────── │
│ ✅ باشگاه مشتریان │ │ ✅ باشگاه مشتریان │ │ ✅ باشگاه مشتریان │
│ ✅ کیف‌پول جادویی │ │ ✅ کیف‌پول جادویی │ │ ✅ کیف‌پول جادویی │
│ ❌ فروشگاه تخفیفی │ │ ✅ فروشگاه تخفیفی │ │ ✅ فروشگاه تخفیفی │
│ ❌ پشتیبانی اختصاصی │ │ ❌ پشتیبانی اختصاصی │ │ ✅ پشتیبانی اختصاصی │
│ │ │ │ │ │
│ 💰 ۵,۶۰۰,۰۰۰ تومان │ │ 💰 ۵۶,۰۰۰,۰۰۰ تومان │ │ 💰 ??? تومان │
│ │ │ ⭐ محبوب‌ترین │ │ 🆕 بزودی │
│ [خرید] [جزئیات] │ │ [خرید] [جزئیات] │ │ [در انتظار] │
│ ────────────────── │ │ ────────────────── │ │ ────────────────── │
│ 📊 PV: 5,600,000 │ │ 📊 PV: 56,000,000 │ │ │
│ 🎁 هدیه: 11,200,000 │ │ 🎁 هدیه: 112,000,000 │ │ │
└──────────────────────┘ └──────────────────────┘ └──────────────────────┘
```
**تغییرات کلیدی:**
- کاشی‌ها از API می‌آیند (نه hardcoded)
- فیچرهای هر پکیج از `PackageFeature` خوانده می‌شود
- نمایش PV (Point Value) برای هر پکیج
- نمایش Gift Value (= `Price × DiscountMultiplier`)
- دکمه‌های شرطی: دایا فقط برای پکیج‌های `SupportsDayaPurchase`
- Badge «محبوب‌ترین» / «ارزان‌ترین» بر اساس `SortOrder`
### ۲.۲ صفحه پکیج‌های من (`MyPackages.razor`)
#### قبل:
```
وضعیت عضویت: فعال ✅
پکیج: طلایی
تاریخ فعالسازی: ۱۴۰۳/۰۹/۱۵
```
#### بعد:
```
┌─────────────────────────────────────────────────────────────┐
│ 📦 پکیج فعال: پکیج پایه │
│ ──────────── │
│ وضعیت: فعال ✅ | چرخه: ۲ | مدت: ۱۸۰ روز │
│ │
│ ┌──── کیف‌پول جادویی ────┐ │
│ │ موجودی: ۱۲,۳۰۰,۰۰۰ │ │
│ │ شارژ: ۴۳۵,۰۰۰,۰۰۰ │ │
│ │ سقف: ۱,۰۰۰,۰۰۰,۰۰۰ │ │
│ │ ████████░░░░ ۴۳.۵% │ │
│ └─────────────────────────┘ │
│ │
│ ┌──── PV انباشته ────┐ │
│ │ PV کل: ۸۹,۶۰۰,۰۰۰ │ │
│ │ آخرین سفارش: ۴.۲M │ │
│ └─────────────────────┘ │
│ │
│ ❌ چرخه جادویی تکمیل نشده — هنوز امکان خرید مجدد نیست │
│ ───── یا ───── │
│ ✅ چرخه جادویی تکمیل شد! [خرید پکیج جدید] │
└─────────────────────────────────────────────────────────────┘
┌─── تاریخچه چرخه‌ها ───┐
│ چرخه ۱: پایه — ۱۴۰۳/۰۹ تا ۱۴۰۴/۰۳ — ✅ تکمیل │
│ چرخه ۲: پایه — ۱۴۰۴/۰۳ تا ادامه دارد — 🔄 فعال │
└────────────────────────┘
```
**تغییرات کلیدی:**
- نمایش شماره چرخه و نوع پکیج
- نوار پیشرفت Magic Wallet (چقدر تا تکمیل چرخه)
- PV انباشته (از `CalculateOrderPV`)
- دکمه شرطی «خرید مجدد» (فقط بعد تکمیل چرخه)
- تاریخچه چرخه‌ها (از `ClubMembershipCycle`)
### ۲.۳ صفحه چک‌اوت (`Checkout.razor`)
#### قبل:
```
سبد خرید:
محصول A × 2 = ۲,۰۰۰,۰۰۰ تومان
مالیات (۹%): ۱۸۰,۰۰۰ تومان
────────────────
جمع: ۲,۱۸۰,۰۰۰ تومان
```
#### بعد:
```
سبد خرید:
محصول A × 2 = ۲,۰۰۰,۰۰۰ تومان
مالیات (۹%): ۱۸۰,۰۰۰ تومان
────────────────
جمع: ۲,۱۸۰,۰۰۰ تومان
📊 PV این سفارش: ۲,۰۰۰,۰۰۰ ← جدید
💎 PV انباشته: ۹۱,۶۰۰,۰۰۰ ← جدید
```
### ۲.۴ پرداخت پکیج — مودال خرید
#### قبل:
```
┌─── خرید پکیج طلایی ───┐
│ │
│ مبلغ: ۵۶,۰۰۰,۰۰۰ تومان │
│ │
│ [پرداخت آنلاین] │
│ [اقساط دایا] │
│ [پرداخت دستی] │
└──────────────────────────┘
```
#### بعد:
```
┌─── خرید پکیج نقره‌ای ───┐ ┌─── خرید پکیج پایه ───┐
│ │ │ │
│ مبلغ: ۵,۶۰۰,۰۰۰ تومان │ │ مبلغ: ۵۶,۰۰۰,۰۰۰ تومان│
│ │ │ │
│ سهم باشگاه: ۲,۵۲۰,۰۰۰ │ │ سهم باشگاه: ۲۵,۲۰۰,۰۰│
│ شارژ کیف‌پول: ۵,۶۰۰,۰۰۰ │ │ شارژ کیف‌پول: ۵۶,۰۰۰,۰│
│ هدیه تخفیفی: ۱۱,۲۰۰,۰۰۰ │ │ هدیه تخفیفی: ۱۱۲,۰۰۰,۰│
│ │ │ │
│ [پرداخت آنلاین] ✅ │ │ [پرداخت آنلاین] ✅ │
│ [اقساط دایا] ❌ ندارد │ │ [اقساط دایا] ✅ │
│ [پرداخت دستی] ✅ │ │ [پرداخت دستی] ✅ │
└────────────────────────────┘ └────────────────────────┘
```
**تغییرات کلیدی:**
- نمایش breakdown مالی: سهم باشگاه + شارژ کیف‌پول + هدیه تخفیفی
- دکمه‌های پرداخت شرطی بر اساس `SupportsDayaPurchase` / `SupportsDirectPurchase`
- متن قرارداد داینامیک بر اساس پکیج انتخاب‌شده
### ۲.۵ صفحه تنظیمات مشتری (`Settings.razor`) — جدید
```
┌─── تنظیمات اعلان‌ها ───┐
│ │
│ 📧 اعلان ایمیل: [✅] │
│ 📱 اعلان SMS: [✅] │
│ 🔔 اعلان Push: [❌] │
│ │
│ [ذخیره تغییرات] │
└──────────────────────────┘
```
> وصل به RPC: `UpdateCustomerSettings`
### ۲.۶ تاریخچه سفارشات — دکمه تکرار
```
┌─── تاریخچه سفارشات ────────────────────────────────────────┐
│ # │ تاریخ │ مبلغ │ وضعیت │ PV │ عملیات │
│───┼────────────┼────────────┼───────────┼───────────┼────────│
│ 1 │ ۱۴۰۴/۱۱/۰۲│ ۴,۲۰۰,۰۰۰ │ تحویل ✅ │ ۴,۲۰۰,۰۰ │ [🔄] [📍]│
│ 2 │ ۱۴۰۴/۱۰/۱۵│ ۱,۸۰۰,۰۰۰ │ ارسال 📦 │ ۱,۸۰۰,۰۰ │ [📍]│
│ 3 │ ۱۴۰۴/۰۹/۲۰│ ۳,۵۰۰,۰۰۰ │ تحویل ✅ │ ۳,۵۰۰,۰۰ │ [🔄] [📍]│
└─────────────────────────────────────────────────────────────┘
🔄 = تکرار سفارش (CustomerReorderPreviousOrder)
📍 = ردیابی سفارش (CustomerTrackOrder)
```
---
## ۳. تجربه ادمین (BackOffice) — قبل و بعد
### ۳.۱ مدیریت پکیج‌ها (`PackageMainPage.razor`)
#### قبل:
```
┌─── مدیریت پکیج‌ها ────────────────────────────────┐
│ # │ عنوان │ قیمت │ وضعیت │ عملیات │
│───┼──────────┼─────────────┼───────┼──────────────│
│ 1 │ طلایی │ ۵۶,۰۰۰,۰۰۰ │ فعال │ [ویرایش] │
└────────────────────────────────────────────────────┘
```
#### بعد:
```
┌─── مدیریت پکیج‌ها ──────────────────────────────────────────────────────┐
│ # │ عنوان │ قیمت │ سهم باشگاه │ ضریب │ دایا │ پایه │ ترتیب│ عملیات │
│───┼─────────┼─────────────┼────────────┼────────┼──────┼──────┼──────┼───────────────│
│ 1 │ نقره‌ای │ ۵,۶۰۰,۰۰۰ │ ۲,۵۲۰,۰۰۰ │ ×2.0 │ ❌ │ ❌ │ 1 │ [✏️] [📋] [❌] │
│ 2 │ پایه │ ۵۶,۰۰۰,۰۰۰ │ ۲۵,۲۰۰,۰۰│ ×2.0 │ ✅ │ ✅ │ 2 │ [✏️] [📋] [❌] │
└──────────────────────────────────────────────────────────────────────────┘
✏️ = ویرایش 📋 = مدیریت فیچرها ❌ = حذف
```
### ۳.۲ ماتریس فیچر × پکیج (`PackageFeatureMatrixPage.razor`) — صفحه جدید
```
┌─── ماتریس فیچر × پکیج ─────────────────────────────────────────┐
│ │
│ فیچر │ نقره‌ای │ پایه │ ویژه │
│ ─────────────────────────┼─────────┼────────┼──────────────────│
│ دسترسی به باشگاه │ ✅ │ ✅ │ ✅ │
│ کیف‌پول جادویی │ ✅ │ ✅ │ ✅ │
│ فروشگاه عادی │ ✅ │ ✅ │ ✅ │
│ فروشگاه تخفیفی │ ❌ │ ✅ │ ✅ │
│ محصولات ClubExclusive │ ❌ │ ✅ │ ✅ │
│ پشتیبانی اختصاصی │ ❌ │ ❌ │ ✅ │
│ کمیسیون شبکه │ ✅ │ ✅ │ ✅ │
│ ─────────────────────────┼─────────┼────────┼──────────────────│
│ │ [ذخیره] │ [ذخیره]│ [ذخیره] │
└─────────────────────────────────────────────────────────────────┘
ادمین با checkbox فیچرها را به هر پکیج اختصاص می‌دهد.
وصل به RPC: AssignFeatureToMembership
```
### ۳.۳ فعالسازی باشگاه (`ActivateClubDialog.razor`)
#### قبل:
```
فعالسازی باشگاه مشتریان
کاربر: علی محمدی
[فعالسازی] ← hardcoded 56M + همه فیچرها
```
#### بعد:
```
فعالسازی باشگاه مشتریان
کاربر: علی محمدی
پکیج: [▼ انتخاب پکیج ▼] ← dropdown از API
├── نقره‌ای (۵,۶۰۰,۰۰۰)
└── پایه (۵۶,۰۰۰,۰۰۰)
جزئیات:
سهم باشگاه: _________ (خودکار)
فیچرها: _________ (از ماتریس پکیج)
[فعالسازی]
```
### ۳.۴ داشبورد (`Index.razor`) — بهبود
```
┌─── آمار باشگاه ────────────────────────────────────────────────┐
│ │
│ 👥 کل اعضا: ۱,۲۴۰ │
│ 📦 پکیج نقره‌ای: ۸۲۰ | پکیج پایه: ۴۲۰ │
│ 💰 Pool نقره‌ای: ۲,۰۶۶,۴۰۰,۰۰۰ | Pool پایه: ۱۰,۵۸۴,۰۰۰,۰۰│
│ ⚠️ هشدار: ۱۲ محصول موجودی کم │
│ │
│ ┌── موجودی انبار ──┐ ┌── ارزش کل انبار ──┐ │
│ │ ۳,۴۵۰ آیتم │ │ ۸۹,۲۰۰,۰۰۰,۰۰۰ │ │
│ │ ۱۲ نوع محصول │ │ ریال │ │
│ └───────────────────┘ └───────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
وصل به: GetInventorySummary, GetStockValueReport, GetLowStockProducts
```
### ۳.۵ مدیریت شبکه (`UserNetworkInfo.razor`) — بهبود
```
┌─── مدیریت شبکه ─────────────────────────────────────────┐
│ │
│ کاربر: سارا احمدی (ID: 1045) │
│ پکیج: نقره‌ای │ چرخه: ۱ │ PV: ۵,۶۰۰,۰۰۰ │
│ Parent: علی محمدی (ID: 1001) │
│ شاخه: چپ │ عمق: ۳ │
│ │
│ [جابجایی در شبکه] ← مودال: انتخاب parent جدید │
│ │
└───────────────────────────────────────────────────────────┘
وصل به: ChangeNetworkParent
```
---
## ۴. تسک‌های تحول — مرحله‌به‌مرحله
### مرحله ۱: زیرساخت Domain + DB (پایه)
> ⚠️ **بدون این مرحله هیچ‌کدام از تغییرات UI ممکن نیست**
| # | تسک | لایه | فایل‌ها | شرح |
|---|------|------|--------|------|
| T1.1 | اضافه ۷ فیلد به Package entity | Domain | Package.cs, PackageConfiguration.cs | SortOrder, IsActive, IsBasePackage, SupportsDayaPurchase, SupportsDirectPurchase, ActivationFee, DiscountMultiplier, MagicWalletMultiplier |
| T1.2 | ایجاد PackageFeature entity | Domain | PackageFeature.cs, PackageFeatureConfiguration.cs | join table: Package ↔ ClubFeature |
| T1.3 | اضافه PackageId به ClubMembership | Domain | ClubMembership.cs | FK nullable → بعد migration → required |
| T1.4 | اضافه PackageId به ClubMembershipCycle | Domain | ClubMembershipCycle.cs | FK nullable → بعد migration → required |
| T1.5 | اضافه PackageId به WeeklyCommissionPool | Domain | WeeklyCommissionPool.cs | FK + Unique(WeekDefinitionId, PackageId) |
| T1.6 | اضافه PackageId به UserCommissionPayout | Domain | UserCommissionPayout.cs | FK nullable |
| T1.7 | حذف ۵ SystemConstants | Domain | SystemConstants.cs | BasePackageAmount, DayaLoanAmount, ClubActivationFee, ClubMembershipGiftValue, MagicWalletMultiplier |
| T1.8 | EF Migration + Seed | Infrastructure | Migration file | ۲ پکیج + فیچرها + FKها |
| T1.9 | Data Migration Script | Infrastructure | SQL script | کاربران فعلی → PackageId = پکیج پایه |
| T1.10 | بروزرسانی Protoها | Proto | package.proto, clubmembership.proto, commission.proto | فیلدهای جدید |
### مرحله ۲: منطق کسب‌وکار (Handlers)
> **هر handler باید از Package entity مقادیر مالی بخواند**
| # | تسک | فایل | شرح |
|---|------|------|------|
| T2.1 | Generic Verify Handler | VerifyPackagePurchaseCommandHandler.cs | DiscountMultiplier از Package + ساخت UserPackagePurchase |
| T2.2 | Generic Purchase Handler | PurchasePackageCommandHandler.cs | حذف "طلایی" و ID=4 |
| T2.3 | ActivateClubMembership بهبود | ActivateClubMembershipCommandHandler.cs | فیچر از PackageFeature + ActivationFee از Package |
| T2.4 | EXIT Magic Mode ریست | UserOrderService.cs | PackagePurchaseMethod=None, membership.IsActive=false |
| T2.5 | Guards re-purchase | G1-G3 handlers | اجازه خرید اگر MagicCompletedAt پر |
| T2.6 | Re-contract | AcceptClubMembershipContractCommandHandler.cs | اجازه قرارداد مجدد |
| T2.7 | Manual Payment بهبود | CreateManualPaymentCommandHandler.cs | DiscountMultiplier از Package |
| T2.8 | Daya Loan بهبود | CheckAndProcessDayaLoansCommandHandler.cs | حذف ID=4 |
| T2.9 | PackageFeature CRUD | جدید | ادمین بتواند فیچر ↔ پکیج مدیریت کند |
| T2.10 | JWT claims جدید | JWT builder | اضافه CanRepurchase + PackageType |
### مرحله ۳: محاسبه پورسانت (Commission)
| # | تسک | فایل | شرح |
|---|------|------|------|
| T3.1 | SP WeeklyBalances + PackageId | sp_CalculateWeeklyBalances.sql | فیلتر بر اساس PackageId |
| T3.2 | SP CommissionPool + PackageId | sp_CalculateWeeklyCommissionPool.sql | Pool جداگانه هر پکیج |
| T3.3 | Loop روی پکیج‌ها | WeeklyCommissionCalculationService.cs | هر پکیج فعال → محاسبه جداگانه |
| T3.4 | ORM Strategy بهبود | OrmCommissionCalculationStrategy.cs | فیلتر PackageId |
| T3.5 | تست محاسبات | — | با داده واقعی staging |
### مرحله ۴: FrontOffice UI
| # | تسک | صفحه | شرح |
|---|------|------|------|
| T4.1 | کاشی‌های داینامیک | Packages.razor | لود از API + فیچر مقایسه |
| T4.2 | مودال پرداخت شرطی | PackageDetail.razor | دکمه دایا فقط اگر SupportsDayaPurchase |
| T4.3 | MyPackages re-purchase | MyPackages.razor | نوار پیشرفت + دکمه خرید مجدد |
| T4.4 | ActivationSection داینامیک | ActivationSection.razor | قیمت از پکیج |
| T4.5 | قرارداد داینامیک | ClubMembershipContractDialog.razor | متن متناسب با پکیج |
| T4.6 | PV در Checkout | Checkout.razor | نمایش PV سفارش |
| T4.7 | تکرار سفارش | Store Orders pages | دکمه 🔄 |
| T4.8 | ردیابی سفارش | OrderTracking.razor | وصل به API |
| T4.9 | تنظیمات اعلان | Settings.razor | فرم Email/SMS/Push |
### مرحله ۵: BackOffice UI
| # | تسک | صفحه | شرح |
|---|------|------|------|
| T5.1 | CRUD پکیج بهبود | PackageMainPage.razor | فیلدهای جدید + ستون‌های اضافه |
| T5.2 | ماتریس فیچر | PackageFeatureMatrixPage.razor (جدید) | checkbox grid |
| T5.3 | ActivateClub dropdown | ActivateClubDialog.razor | انتخاب پکیج |
| T5.4 | داشبورد بهبود | Index.razor | آمار Pool جداگانه + موجودی |
| T5.5 | شبکه بهبود | UserNetworkInfo.razor | جابجایی parent |
| T5.6 | موجودی کم | LowStockPage.razor | وصل API |
| T5.7 | گزارش ارزش انبار | InventoryMainPage.razor | تب گزارش |
| T5.8 | عملیات دسته‌ای | InventoryMainPage.razor | Bulk Add/Update |
### مرحله ۶: تست و استقرار
| # | تسک | شرح |
|---|------|------|
| T6.1 | تست خرید هر پکیج | ZarinPal + Manual |
| T6.2 | تست re-purchase | تکمیل چرخه → خرید مجدد |
| T6.3 | تست Commission Pool | جداگانه بودن هر پکیج |
| T6.4 | تست Migration | rollback plan |
| T6.5 | Deploy staging → production | blue-green |
---
## ۵. پیش‌بینی نیازمندی‌های آینده
### ۵.۱ نیازمندی‌های مشتری (که فعلاً اولویت پایین هستند)
| # | نیاز | RPC آماده? | توضیح |
|---|------|-----------|-------|
| N1 | ارتقای پکیج (نقره‌ای → پایه) | ❌ جدید | پرداخت تفاضل + فعالسازی فیچرهای جدید |
| N2 | مقایسه پکیج‌ها side-by-side | ❌ جدید | جدول فیچر مقایسه‌ای (client-side) |
| N3 | اعلان قبل از اتمام چرخه | ❌ جدید | Background service: 5 روز قبل → push/SMS |
| N4 | گزارش PV ماهانه | CalculateOrderPV ✅ | جدول PV هر ماه + نمودار |
| N5 | پروفایل شبکه | ❌ جدید | مشتری درخت خودش را ببیند |
### ۵.۲ نیازمندی‌های ادمین (که فعلاً اولویت پایین هستند)
| # | نیاز | RPC آماده? | توضیح |
|---|------|-----------|-------|
| N6 | پکیج تخفیفی زمان‌دار | ❌ جدید | پکیج با قیمت ویژه برای مدت محدود |
| N7 | گزارش تبدیل (conversion) | ❌ جدید | چند نفر از نقره‌ای به پایه ارتقا دادند |
| N8 | هشدار Pool خالی | ❌ جدید | اگر Pool یک پکیج خالی شد → هشدار |
| N9 | export گزارش مالی | GetStockValueReport ✅ | دانلود Excel |
| N10 | تخصیص فیچر bulk | AssignFeatureToMembership ✅ | فیچر به همه اعضای یک پکیج |
---
## ۶. ماتریس تاثیرگذاری بر صفحات
### FrontOffice
| صفحه | تغییر | شدت | مرحله |
|------|-------|------|-------|
| Packages.razor | بازنویسی کامل — کاشی‌های داینامیک | 🔴 | مرحله ۴ |
| PackageDetail.razor | فیچرها از API + دکمه شرطی | 🟡 | مرحله ۴ |
| MyPackages.razor | چرخه + پیشرفت + re-purchase | 🔴 | مرحله ۴ |
| Checkout.razor | PV display | 🟢 | مرحله ۴ |
| ActivationSection.razor | قیمت داینامیک | 🟡 | مرحله ۴ |
| ClubMembershipContractDialog.razor | متن داینامیک | 🟡 | مرحله ۴ |
| PaymentCallback.razor | تغییر JWT claims | 🟡 | مرحله ۴ |
| MembershipPage.razor | نمایش نوع پکیج | 🟢 | مرحله ۴ |
| Settings.razor | فرم اعلان جدید | 🟡 | مرحله ۴ |
| Store Orders | دکمه تکرار + ردیابی | 🟡 | مرحله ۴ |
### BackOffice
| صفحه | تغییر | شدت | مرحله |
|------|-------|------|-------|
| PackageMainPage.razor | ستون‌های جدید + CRUD بهبود | 🟡 | مرحله ۵ |
| PackageFeatureMatrixPage.razor | **صفحه کاملاً جدید** | 🔴 | مرحله ۵ |
| ActivateClubDialog.razor | dropdown پکیج | 🟡 | مرحله ۵ |
| Index.razor (Dashboard) | آمار Pool جداگانه + موجودی | 🟡 | مرحله ۵ |
| UserNetworkInfo.razor | جابجایی + نمایش پکیج | 🟡 | مرحله ۵ |
| ClubMembers.razor | ستون پکیج | 🟢 | مرحله ۵ |
| Statistics.razor | چارت توزیع پکیج | 🟡 | مرحله ۵ |
| InventoryMainPage.razor | خلاصه + گزارش + bulk | 🟡 | مرحله ۵ |
| LowStockPage.razor | وصل API | 🟢 | مرحله ۵ |
---
## 🔗 ارجاعات
| مستند | ربط |
|-------|-----|
| [BIZ-PACKAGE-BASED-SYSTEM.md](../business/BIZ-PACKAGE-BASED-SYSTEM.md) | طراحی فنی ۳۹ تغییر |
| [FEATURE-BACKLOG.md](FEATURE-BACKLOG.md) | بکلاگ ۱۲ RPC آماده |
| [GRPC-SERVICES-AUDIT.md](../cms/GRPC-SERVICES-AUDIT.md) | آدیت ۳۴۲ RPC |
| [BUSINESS-01-CLUB-COMMISSION.md](../business/BUSINESS-01-CLUB-COMMISSION.md) | مستند باشگاه و کمیسیون |
| [BUSINESS-04-USER-MEMBERSHIP.md](../business/BUSINESS-04-USER-MEMBERSHIP.md) | مستند عضویت کاربر |
---
*آخرین بروزرسانی: ۱۴۰۴/۱۲/۰۶*