# 🏗️ تحلیل تحول پکیج‌بیس — تاثیر بر تجربه کاربر (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) | مستند عضویت کاربر | --- *آخرین بروزرسانی: ۱۴۰۴/۱۲/۰۶*