docs: update for Phase 8e — per-package commission reports

- PACKAGE-TRANSFORMATION-TASKS: mark T4.8-T4.12 completed, add Phase 8e section, update tree diagram, bump to NuGet v0.0.187
- OVERVIEW-03-CHANGELOG: add Phase 8e entry, mark commission per-package items done, update timeline & summary table
This commit is contained in:
masoodafar-web
2026-02-26 21:13:16 +03:30
parent e6d086b559
commit 38aababc1a
2 changed files with 66 additions and 52 deletions
+15 -7
View File
@@ -1,7 +1,7 @@
# 📜 تاریخچه کارهای انجام‌شده
> **همه فعالیت‌های پروژه به صورت بولت با توضیح یک‌خطی و درصد تکمیل**
> **آخرین بروزرسانی:** اسفند ۱۴۰۴ (بروزرسانی: فاز ۸b-۸d — BO CRUD + FO Customer RPCs + Proto cleanup | NuGet v0.0.186)
> **آخرین بروزرسانی:** اسفند ۱۴۰۴ (بروزرسانی: فاز ۸e — Per-Package Commission Reports | NuGet v0.0.187)
---
@@ -12,10 +12,10 @@
| **BackOffice** | 61 | 61 | **100%** |
| **FrontOffice** | 40 | 40 | **100%** |
| **CMS Core** | 72 | 72 | **100%** |
| **Package-Based System** | 30 | 30 | **100%** |
| **Package-Based System** | 35 | 35 | **100%** |
| **Deployment** | 22 | 21 | **95%** |
| **Migration** | 16 | 16 | **100%** |
| **مجموع** | **241** | **240** | **99%** |
| **مجموع** | **246** | **245** | **99%** |
---
@@ -307,12 +307,19 @@
- ✅ Add MagicWallet per-package values to ConfigurationService (Multiplier, MaxDeposit, MaxCredit)
- ✅ تأیید: صفر رفرنس فعال به ۹ SystemConstants منسوخ — dead code آماده حذف
### Phase 7 — UI (در انتظار)
### Phase 7 — UI (گزارش per-package)
- ⬜ FrontOffice: کاشی‌های داینامیک پکیج
- ⬜ FrontOffice: MyPackages + re-purchase
- FrontOffice: Commission Dashboard per-package
- ⬜ BackOffice: Package CRUD UI
- BackOffice: فیلتر پکیج در گزارش‌ها
- FrontOffice: Commission Dashboard per-package — فیلتر dropdown پکیج + ستون پکیج + MudChip (دسکتاپ + موبایل)
- ✅ FrontOffice: WeeklyBalance per-package — فیلتر MudSelect پکیج + MudChip اطلاعات هفته
- BackOffice: فیلتر پکیج در گزارش‌ها — PackageSelect component + UserPayouts + BalancesReport
### Phase 8e — Per-Package Commission Reports ✅ (CMS:`aaaf7fc` FO:`a956cb9` BO:`8be98ae`)
- ✅ Proto: اضافه `package_id` فیلتر به ۴ request + `package_id`/`package_title` به ۴ response model
- ✅ CMS: اضافه PackageId فیلتر به ۴ query + handler + ۳ DTO + CommissionProfile mapping
- ✅ BO: کامپوننت PackageSelect + فیلتر و ستون پکیج در UserPayouts + BalancesReport
- ✅ FO: فیلتر و ستون پکیج در CommissionDashboard + WeeklyBalance
- ✅ NuGet: `0.0.186``0.0.187`
---
@@ -332,3 +339,4 @@
| اسفند ۱۴۰۴ (هفته ۱-۲) | 🪄 کیف‌پول جادویی (فاز 1-6) + اصلاح VAT 10% | 96% |
| اسفند ۱۴۰۴ (هفته ۳) | 🚀 فعال‌سازی درگاه + بهبود UI ادمین + مرج پروداکشن | 97% |
| اسفند ۱۴۰۴ (هفته ۴) | 📦 تحول پکیج‌بیس فاز ۰-۶ (Domain → Migration → Business → Package → CRUD → Commission per-pkg → Deprecation) | 97% |
| اسفند ۱۴۰۴ (هفته ۵) | 📦 فاز 8e: گزارش‌های پورسانت per-package (Proto + CMS + BO + FO) | 98% |
+51 -45
View File
@@ -1,13 +1,13 @@
# 🔄 نقشه‌راه تحول پکیج‌بیس — تسک‌های گام‌به‌گام
> **وضعیت:** در حال اجرا — **فاز ۰-۸d تکمیل ✅** | NuGet v0.0.186 | UI باقی‌مانده
> **تاریخ:** ۱۴۰۴/۱۲/۰۸
> **وضعیت:** در حال اجرا — **فاز ۰-۹ (per-package reports) تکمیل ✅** | NuGet v0.0.187 | تست باقی‌مانده
> **تاریخ:** ۱۴۰۴/۱۲/۰۹
> **پیش‌نیاز:** [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`→`ce8e248`→`7554d70`
> FrontOffice: `b82cac4`→`71f391a`→`0bbc11e`→`d71d463`→`40882c8`
> BackOffice: `f1b0085`→`89f5241`→`c96377a`
> CMS: `8b9c317`→`fe3edd1`→`ae92ab8`→`a9cd2fd`→`8e5c7c5`→`ccb938e`→`0002a5a`→`607f791`→`7176fe4`→`d19c569`→`469d97b`→`161f796`→`8446e0e`→`ce8e248`→`7554d70`→`aaaf7fc`
> FrontOffice: `b82cac4`→`71f391a`→`0bbc11e`→`d71d463`→`40882c8`→`a956cb9`
> BackOffice: `f1b0085`→`89f5241`→`c96377a`→`8be98ae`
> ⚠️ **تغییرات v3:** پورسانت per-package، carryover مجزا، SP parameters داینامیک، گزارش‌دهی FO/BO per-package
@@ -34,9 +34,10 @@
├─→ 8b: BO CRUD expansion ✅ CMS:`ce8e248` BO:`89f5241`
├─→ 8c: FO Package pages ✅ FO:`d71d463`
└─→ 8d: Proto cleanup ✅ CMS:`7554d70` FO:`40882c8` BO:`c96377a`
└─→ مرحله ۵: تست + استقرار (۳ روز) ⬜
└─→ 8e: Per-package reports ✅ CMS:`aaaf7fc` FO:`a956cb9` BO:`8be98ae`
└─→ مرحله ۵: تست + استقرار (۳ روز) ⬜
مسیر بحرانی: ۰→۱→۱.۵→۲→۳→۴→UI→۵ = ~۱۷ روز | انجام‌شده: ۰→8d (~۱۵ روز)
مسیر بحرانی: ۰→۱→۱.۵→۲→۳→۴→UI→۵ = ~۱۷ روز | انجام‌شده: ۰→8e (~۱۶ روز)
```
---
@@ -583,6 +584,33 @@ await connection.ExecuteAsync("CMS.sp_CalculateWeeklyBalances",
**NuGet:** `0.0.185``0.0.186` (همه ریپوها)
### فاز 8e — Per-Package Commission Reports ✅
> کامیت: CMS `aaaf7fc` | FO `a956cb9` | BO `8be98ae`
**Proto (commission.proto):**
- اضافه `package_id` فیلتر به ۴ request message: `GetUserCommissionPayoutsRequest`, `GetUserWeeklyBalancesRequest`, `GetMyCommissionPayoutsRequest`, `GetMyWeeklyBalancesRequest`
- اضافه `package_id` + `package_title` به ۴ response model: `UserCommissionPayoutModel`, `UserWeeklyBalanceModel`, `CustomerCommissionPayoutModel`, `CustomerWeeklyBalanceModel`
**CMS (12 فایل):**
- ۴ Query record: اضافه `public long? PackageId { get; init; }`
- ۴ Handler: اضافه `.Include(x => x.Package)` + فیلتر `Where(x => x.PackageId == request.PackageId.Value)` + map `PackageId`/`PackageTitle`
- ۳ Response DTO: اضافه `PackageId` + `PackageTitle`
- `CommissionProfile.cs`: تنظیم mapping‌های Mapster برای admin + customer
**BackOffice (6 فایل):**
- کامپوننت جدید `PackageSelect.razor/.cs`: dropdown قابل استفاده مجدد با بارگذاری پکیج‌ها از `PackageContract`
- `UserPayouts.razor/.cs`: فیلتر PackageSelect + ستون پکیج با MudChip
- `BalancesReport.razor`: فیلتر PackageSelect + ستون پکیج با MudChip + mapping PackageTitle
**FrontOffice (7 فایل):**
- `CommissionDtos.cs`: اضافه `PackageId` + `PackageTitle` به `CommissionPayoutDto` و `WeeklyBalanceDto`
- `CommissionService.cs`: اضافه پارامتر `packageId` به `GetMyCommissionPayoutsAsync` و `GetMyWeeklyBalanceAsync`
- `CommissionDashboardPage.razor/.cs`: فیلتر dropdown پکیج + ستون «پکیج» با MudChip (دسکتاپ + موبایل)
- `WeeklyBalancePage.razor/.cs`: فیلتر MudSelect پکیج + نمایش MudChip پکیج در بخش اطلاعات هفته
**NuGet:** `0.0.186``0.0.187` (همه ریپوها)
---
## مرحله ۴ — UI (FrontOffice + BackOffice)
@@ -634,48 +662,26 @@ else
}
```
### T4.8 — FrontOffice: CommissionDashboard per-package (🆕 v3)
### T4.8 — FrontOffice: CommissionDashboard per-package (🆕 v3) ✅ FO:`a956cb9`
**فایل:** `FrontOffice/src/.../Pages/Commission/CommissionDashboardPage.razor`
**پیاده‌سازی:**
- `CommissionDtos.cs`: اضافه `PackageId` + `PackageTitle` به `CommissionPayoutDto` و `WeeklyBalanceDto`
- `CommissionService.cs`: اضافه پارامتر `packageId` به `GetMyCommissionPayoutsAsync` و `GetMyWeeklyBalanceAsync`
- `CommissionDashboardPage.razor`: اضافه dropdown فیلتر پکیج + ستون «پکیج» با MudChip + نمایش پکیج در card موبایل
- `CommissionDashboardPage.razor.cs`: inject `PackageService`، فیلد `_filterPackageId`، بارگذاری لیست پکیج‌ها
```razor
@* v3: کارت‌های خلاصه بر اساس پکیج *@
<MudGrid>
@foreach (var summary in _packageSummaries)
{
<MudItem xs="12" md="6">
<MudCard>
<MudCardHeader>@summary.PackageTitle</MudCardHeader>
<MudCardContent>
<p>زیرمجموعه: @summary.DownlineCount نفر</p>
<p>تیم اول: @summary.LeftLegMembers | تیم دوم: @summary.RightLegMembers</p>
<p>تعادل: @summary.TotalBalances</p>
<p>💰 پاداش: @summary.CommissionFormatted</p>
</MudCardContent>
</MudCard>
</MudItem>
}
</MudGrid>
<MudAlert>📦 مجموع پاداش هفته: @_totalCommission</MudAlert>
```
### T4.9 — FrontOffice: WeeklyBalance per-package (🆕 v3) ✅ FO:`a956cb9`
### T4.9 — FrontOffice: WeeklyBalance per-package (🆕 v3)
**پیاده‌سازی:**
- `WeeklyBalancePage.razor`: اضافه MudSelect فیلتر پکیج کنار WeekSelector + نمایش MudChip پکیج در بخش اطلاعات هفته
- `WeeklyBalancePage.razor.cs`: inject `PackageService`، فیلد `_filterPackageId`، ارسال به `CommissionService.GetMyWeeklyBalanceAsync`
> تعادل تیم اول/دوم به تفکیک هر پکیج نمایش داده شود
### T4.10-T4.12 — BackOffice: گزارش‌های پورسانت per-package (🆕 v3) ✅ BO:`8be98ae`
### T4.10-T4.12 — BackOffice: گزارش‌های پورسانت per-package (🆕 v3)
**تغییرات مشترک:**
- اضافه dropdown فیلتر پکیج (همه / پایه / نقره‌ای / ...)
- اضافه ستون پکیج در جدول‌ها
- CSV export شامل ستون پکیج
| صفحه | تغییر |
|------|-------|
| Commission Dashboard | فیلتر + خلاصه per-package |
| Weekly Reports | فیلتر + CSV per-package |
| Balances Report | فیلتر + ستون پکیج |
| User Payouts | ستون پکیج + فیلتر |
**پیاده‌سازی:**
- کامپوننت جدید `PackageSelect.razor/.cs`: dropdown قابل استفاده مجدد با بارگذاری پکیج‌ها از `PackageContract`
- `UserPayouts.razor/.cs`: فیلتر PackageSelect + ستون پکیج با MudChip
- `BalancesReport.razor`: فیلتر PackageSelect + ستون پکیج با MudChip + mapping `PackageTitle`
### T4.13 — BackOffice: Package CRUD + Quick Access فیچرها (🆕 v3)
@@ -760,4 +766,4 @@ else
---
*آخرین بروزرسانی: ۱۴۰۴/۱۲/۰۸ — فاز ۰d تکمیل (۲۰ کامیت: ۱۵ CMS + ۵ FO + ۳ BO) | NuGet v0.0.186 | Proto cleanup: -4 RPCs -8 messages | FO+BO CRUD کامل per-package | باقی‌مانده: UI per-package reports + تست + deploy*
*آخرین بروزرسانی: ۱۴۰۴/۱۲/۰۹ — فاز ۰e تکمیل (۲۴ کامیت: ۱۶ CMS + ۶ FO + ۴ BO) | NuGet v0.0.187 | Proto: +package_id in commission messages | FO+BO per-package commission reports کامل | باقی‌مانده: تست + deploy*