diff --git a/overview/OVERVIEW-03-CHANGELOG.md b/overview/OVERVIEW-03-CHANGELOG.md index 4ca3325..0beb8a6 100644 --- a/overview/OVERVIEW-03-CHANGELOG.md +++ b/overview/OVERVIEW-03-CHANGELOG.md @@ -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 ### محتوا و ناوبری diff --git a/roadmap/PACKAGE-TRANSFORMATION-TASKS.md b/roadmap/PACKAGE-TRANSFORMATION-TASKS.md index 8d19985..bbf5f3f 100644 --- a/roadmap/PACKAGE-TRANSFORMATION-TASKS.md +++ b/roadmap/PACKAGE-TRANSFORMATION-TASKS.md @@ -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 ترتیب نمایش +- `ActivationFee` — MudNumericField هزینه فعال‌سازی +- `DiscountMultiplier` — MudNumericField ضریب تخفیف +- `MagicWalletMultiplier` — MudNumericField ضریب کیف پول جادویی +- `MagicWalletMaxDeposit` — MudNumericField سقف واریز جادویی +- `MagicWalletMaxCredit` — MudNumericField سقف اعتبار جادویی +- `MaxBalancesPerLeg` — MudNumericField حداکثر تعادل هر پا +- `MaxNetworkLevel` — MudNumericField حداکثر سطح شبکه +- `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 (حذف `` + ``) +- جایگزینی ۳ 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*