Docs: Phase 8b-8d — BO CRUD expansion + FO Customer RPCs + Proto cleanup

- PACKAGE-TRANSFORMATION-TASKS.md: Add phases 8b, 8c, 8d with full details
  Updated overview diagram, commit hashes, status to 0-8d complete
- OVERVIEW-03-CHANGELOG.md: Add Phase 8b (BO CRUD) + Phase 8a+8c (FO)
  Updated summary table to 99% (240/241 complete)
This commit is contained in:
masoodafar-web
2026-02-26 18:04:04 +03:30
parent a61a987b57
commit e6d086b559
2 changed files with 111 additions and 24 deletions
+20 -6
View File
@@ -1,7 +1,7 @@
# 📜 تاریخچه کارهای انجام‌شده
> **همه فعالیت‌های پروژه به صورت بولت با توضیح یک‌خطی و درصد تکمیل**
> **آخرین بروزرسانی:** اسفند ۱۴۰۴ (بروزرسانی: تحول پکیج‌بیس فاز ۰-۶ + per-package commission + deprecation cleanup)
> **آخرین بروزرسانی:** اسفند ۱۴۰۴ (بروزرسانی: فاز ۸b-۸d — BO CRUD + FO Customer RPCs + Proto cleanup | NuGet v0.0.186)
---
@@ -9,13 +9,13 @@
| حوزه | تعداد آیتم | تکمیل‌شده | درصد کل |
|------|-----------|----------|---------|
| **BackOffice** | 61 | 60 | **98%** |
| **FrontOffice** | 40 | 38 | **95%** |
| **CMS Core** | 72 | 70 | **97%** |
| **Package-Based System** | 30 | 28 | **93%** |
| **BackOffice** | 61 | 61 | **100%** |
| **FrontOffice** | 40 | 40 | **100%** |
| **CMS Core** | 72 | 72 | **100%** |
| **Package-Based System** | 30 | 30 | **100%** |
| **Deployment** | 22 | 21 | **95%** |
| **Migration** | 16 | 16 | **100%** |
| **مجموع** | **241** | **233** | **97%** |
| **مجموع** | **241** | **240** | **99%** |
---
@@ -67,6 +67,13 @@
- ✅ فیلتر کاربر در صفحه ClubMembers — UserAutoComplete در تولبار جستجو
- ✅ نمایش نام کاربر در WalletManagementPage — TemplateColumn با UserName + ID
### Phase 8b: CRUD پکیج کامل (اسفند ۱۴۰۴)
- ✅ CreateDialog: اضافه ۱۲ فیلد جدید — SortOrder, ActivationFee, DiscountMultiplier, MagicWallet*, MaxBalancesPerLeg, MaxNetworkLevel, IsActive, IsBasePackage, SupportsDirectPurchase, SupportsDayaPurchase
- ✅ UpdateDialog: همان ۱۲ فیلد جدید — ایجاد فرم کامل ادمین
- ✅ PackageMainPage Grid: ۴ ستون جدید — قیمت (N0), ترتیب, وضعیت (فعال/غیرفعال chip), نوع (پایه/عادی chip)
- ✅ فیکس `HasPurchasedGoldenPackage``HasPurchasedPackage` — UserNetworkInfo.razor
- ✅ NuGet bump 0.0.184 → 0.0.186 + local feed source
---
## ۲. FrontOffice — فازها (95% کامل)
@@ -98,6 +105,13 @@
- ✅ دکمه پرداخت شارژ کیف‌پول اعتباری — ChargeDiscountWallet.razor فعال شد (حذف «بزودی»)
- ✅ دکمه پرداخت شارژ کیف‌پول جادویی — MagicWallet.razor فعال شد (حذف «بزودی»)
- ✅ دکمه‌های پرداخت مستقیم خرید پکیج — Index.razor هر دو شاخه فعال شدند (حذف «بزودی»)
### Phase 8a+8c: Checkout + Package Pages (اسفند ۱۴۰۴)
- ✅ Checkout wire-up — مهاجرت به `CustomerPurchasePackageAsync` (حذف dead code قدیمی)
- ✅ PackageDetail: `GetPackageAsync``GetCustomerPackageDetailsAsync` — features/specs از API (نه hardcoded)
- ✅ Packages.razor: un-exclude از build + dynamic feature bullets از `CustomerPackageModel`
- ✅ PackageService: `PackageDto` غنی‌شده با ۸ فیلد جدید + `GetUserPackageStatusAsync` متصل به RPC واقعی
- ✅ NuGet bump 0.0.182 → 0.0.186 + local feed source
- ✅ فیکس GwUrl پروداکشن — تصحیح از cms.kbs1.ir به cms.kbs2.ir
### محتوا و ناوبری
+91 -18
View File
@@ -1,13 +1,13 @@
# 🔄 نقشه‌راه تحول پکیج‌بیس — تسک‌های گام‌به‌گام
> **وضعیت:** در حال اجرا — **فاز ۰-۷c تکمیل ✅** | **فاز 8a تکمیل ✅** | NuGet + UI باقی‌مانده
> **تاریخ:** ۱۴۰۴/۱۲/۰۹
> **وضعیت:** در حال اجرا — **فاز ۰-۸d تکمیل ✅** | NuGet v0.0.186 | UI باقی‌مانده
> **تاریخ:** ۱۴۰۴/۱۲/۰۸
> **پیش‌نیاز:** [BIZ-PACKAGE-BASED-SYSTEM.md](../business/BIZ-PACKAGE-BASED-SYSTEM.md) **v3** (تکمیل پورسانت per-package)
> **هدف:** شکستن **۴۸+ تغییر** به تسک‌های اتمیک با ترتیب اجرا و وابستگی‌ها
> **کامیت‌ها:**
> CMS: `8b9c317`→`fe3edd1`→`ae92ab8`→`a9cd2fd`→`8e5c7c5`→`ccb938e`→`0002a5a`→`607f791`→`7176fe4`→`d19c569`→`469d97b`→`161f796`→`8446e0e`
> FrontOffice: `b82cac4`→`71f391a`→`0bbc11e`
> BackOffice: `f1b0085`
> CMS: `8b9c317`→`fe3edd1`→`ae92ab8`→`a9cd2fd`→`8e5c7c5`→`ccb938e`→`0002a5a`→`607f791`→`7176fe4`→`d19c569`→`469d97b`→`161f796`→`8446e0e`→`ce8e248`→`7554d70`
> FrontOffice: `b82cac4`→`71f391a`→`0bbc11e`→`d71d463`→`40882c8`
> BackOffice: `f1b0085`→`89f5241`→`c96377a`
> ⚠️ **تغییرات v3:** پورسانت per-package، carryover مجزا، SP parameters داینامیک، گزارش‌دهی FO/BO per-package
@@ -29,11 +29,14 @@
├─→ 7a: Cosmetic cleanup ✅ CMS:`469d97b` FO:`b82cac4` BO:`f1b0085`
├─→ 7b: FO RPC migration ✅ CMS:`161f796` FO:`71f391a`
└─→ 7c: Delete deprecated ✅ CMS:`8446e0e`
└─→ مرحله ۸: FO Checkout + NuGet
─→ 8a: Checkout wire-up ✅ FO:`0bbc11e`
└─→ مرحله ۸: FO/BO Completion
─→ 8a: Checkout wire-up ✅ FO:`0bbc11e`
├─→ 8b: BO CRUD expansion ✅ CMS:`ce8e248` BO:`89f5241`
├─→ 8c: FO Package pages ✅ FO:`d71d463`
└─→ 8d: Proto cleanup ✅ CMS:`7554d70` FO:`40882c8` BO:`c96377a`
└─→ مرحله ۵: تست + استقرار (۳ روز) ⬜
مسیر بحرانی: ۰→۱→۱.۵→۲→۳→۴→UI→۵ = ~۱۷ روز | انجام‌شده: ۰→8a (~۱۴ روز)
مسیر بحرانی: ۰→۱→۱.۵→۲→۳→۴→UI→۵ = ~۱۷ روز | انجام‌شده: ۰→8d (~۱۵ روز)
```
---
@@ -498,17 +501,87 @@ await connection.ExecuteAsync("CMS.sp_CalculateWeeklyBalances",
**Profile/Index.razor.cs (cosmetic):**
- Rename `basePackage``selectedPackage`, `tempCallbackUrl``callbackUrl`
### فاز 8b — NuGet Rebuild + BackOffice Fix ⬜
### فاز 8b — BackOffice Package CRUD Expansion ✅
> بلاکر: BackOffice هنوز از `HasPurchasedGoldenPackage` استفاده می‌کند (NuGet v0.0.184)
> Proto field renamed: `has_purchased_golden_package` → `has_purchased_package` (field 35)
> FrontOffice هم روی v0.0.182 هست (۲ نسخه عقب)
> کامیت: CMS `ce8e248` | BO `89f5241` (7 فایل، +138/-23)
**تسک‌ها:**
1. Bump proto version → `0.0.185`
2. Pack + Push NuGet
3. BackOffice: `HasPurchasedGoldenPackage``HasPurchasedPackage` در `UserNetworkInfo.razor`
4. FrontOffice: Bump NuGet `0.0.182``0.0.185`
**NuGet Rebuild:**
- Proto version bump: `0.0.184``0.0.185`
- Pack و deploy به local feed (`/nupkg`)
- BackOffice NuGet.config: اضافه local feed source
**CreateDialog.razor (۱۲ فیلد جدید):**
- `SortOrder` — MudNumericField<int> ترتیب نمایش
- `ActivationFee` — MudNumericField<long> هزینه فعال‌سازی
- `DiscountMultiplier` — MudNumericField<double> ضریب تخفیف
- `MagicWalletMultiplier` — MudNumericField<double> ضریب کیف پول جادویی
- `MagicWalletMaxDeposit` — MudNumericField<long> سقف واریز جادویی
- `MagicWalletMaxCredit` — MudNumericField<long> سقف اعتبار جادویی
- `MaxBalancesPerLeg` — MudNumericField<int> حداکثر تعادل هر پا
- `MaxNetworkLevel` — MudNumericField<int> حداکثر سطح شبکه
- `IsActive` — MudCheckBox فعال/غیرفعال
- `IsBasePackage` — MudCheckBox پکیج پایه
- `SupportsDirectPurchase` — MudCheckBox پرداخت مستقیم
- `SupportsDayaPurchase` — MudCheckBox اعتبار دایا
**UpdateDialog.razor:** همان ۱۲ فیلد
**PackageMainPage Grid (۴ ستون جدید):**
- `Price` — فرمت‌شده با N0
- `SortOrder` — ترتیب
- `IsActive` — MudChip فعال/غیرفعال
- `IsBasePackage` — MudChip پایه/عادی
**سایر:**
- Dialog size: `MaxWidth.Small``MaxWidth.Medium`
- CreateNew defaults: `IsActive=true, DiscountMultiplier=2.0, MagicWalletMultiplier=2.5, ...`
- فیکس `HasPurchasedGoldenPackage``HasPurchasedPackage` در `UserNetworkInfo.razor`
### فاز 8c — FrontOffice Package Pages ✅
> کامیت: FO `d71d463` (5 فایل، +109/-56)
**NuGet:** `0.0.182``0.0.185` + local feed source
**PackageDetail.razor.cs:**
- مهاجرت `GetPackageAsync` (admin RPC) → `GetCustomerPackageDetailsAsync` (customer RPC)
- Features: از hardcoded ثابت → از `PackageFeature` API داینامیک
- Specifications: از hardcoded → از `PackageFeature.IsHighlighted` API
- حذف ۵ hardcoded feature string + ۴ hardcoded specification
**PackageService.cs:**
- `PackageDto`: اضافه ۸ فیلد جدید (ActivationFee, DiscountMultiplier, MagicWalletMultiplier, etc.)
- `GetAllPackagesAsync`: مپ فیلدهای جدید از `CustomerPackageModel`
- `GetUserPackageStatusAsync`: از stub → اتصال واقعی به `GetUserPackageStatusAsync` RPC
**Packages.razor:**
- Un-exclude از build (حذف `<Content Remove>` + `<Compile Remove>`)
- جایگزینی ۳ feature bullet hardcoded → dynamic features:
- `SupportsDirectPurchase` → پرداخت مستقیم
- `SupportsDayaPurchase` → پرداخت با اعتبار دایا
- `DiscountMultiplier` → ضریب تخفیف: X.Xx
- `MagicWalletMultiplier` → کیف پول جادویی: X.Xx
- `IsBasePackage` → پکیج پایه ⭐
### فاز 8d — Proto Cleanup ✅
> کامیت: CMS `7554d70` (2 فایل، -103) | FO `40882c8` | BO `c96377a`
**حذف ۴ deprecated RPC:**
- `PurchaseGoldenPackage` — جایگزین: `CustomerPurchasePackage`
- `VerifyGoldenPackagePurchase` — جایگزین: `CustomerVerifyPackagePurchase`
- `InitiateBasePackagePayment` — جایگزین: `CustomerPurchasePackage`
- `VerifyBasePackagePayment` — جایگزین: `CustomerVerifyPackagePurchase`
**حذف ۸ deprecated message type:**
- `PurchaseGoldenPackageRequest` / `PurchaseGoldenPackageResponse`
- `VerifyGoldenPackagePurchaseRequest` / `VerifyGoldenPackagePurchaseResponse`
- `InitiateBasePackagePaymentRequest` / `InitiateBasePackagePaymentResponse`
- `VerifyBasePackagePaymentRequest` / `VerifyBasePackagePaymentResponse`
**حفظ شده:** `GetUserPackageStatus` RPC + messages (هنوز در استفاده)
**NuGet:** `0.0.185``0.0.186` (همه ریپوها)
---
@@ -687,4 +760,4 @@ else
---
*آخرین بروزرسانی: ۱۴۰۴/۱۲/۰۹ — فاز ۰a تکمیل (۱۷ کامیت: ۱۳ CMS + ۳ FO + ۱ BO) | Checkout فعال‌شده | ۴ deprecated handler حذف | FO کامل مهاجرت به Customer* RPCs*
*آخرین بروزرسانی: ۱۴۰۴/۱۲/۰۸ — فاز ۰d تکمیل (۲۰ کامیت: ۱۵ CMS + ۵ FO + ۳ BO) | NuGet v0.0.186 | Proto cleanup: -4 RPCs -8 messages | FO+BO CRUD کامل per-package | باقی‌مانده: UI per-package reports + تست + deploy*