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
This commit is contained in:
masoodafar-web
2026-02-24 23:18:50 +03:30
parent 3575e483b9
commit 01244f426e
4 changed files with 998 additions and 4 deletions
+494
View File
@@ -0,0 +1,494 @@
# 🏗️ تحلیل تحول پکیج‌بیس — تاثیر بر تجربه کاربر (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) | مستند عضویت کاربر |
---
*آخرین بروزرسانی: ۱۴۰۴/۱۲/۰۶*