feat: Update CURRENT-SPRINT.md with progress and task completion details

- Added last updated date and refined project status for Backend and Frontend.
- Updated completion percentages for FrontOffice UI and BFF.
- Documented completed tasks for BackOffice in the current sprint.
- Added new high-priority tasks related to commission calculation fixes.
- Resolved blockers and minor issues, providing a clearer progress summary.

docs: Create commission-calculation-fix.md for weekly commission calculation analysis

- Documented critical issues affecting commission calculations.
- Provided a detailed plan for fixing the commission calculation logic.
- Included code analysis, affected files, and step-by-step tasks for implementation.
- Outlined the expected timeline and important notes regarding changes.
This commit is contained in:
masoodafar-web
2025-12-04 19:54:08 +03:30
parent 119e870a26
commit 996a6e885b
8 changed files with 997 additions and 498 deletions
+156 -86
View File
@@ -1,6 +1,7 @@
# 🎯 اسپرینت جاری (Current Sprint)
**تاریخ شروع**: ۱۴ آذر ۱۴۰۴
**آخرین بروزرسانی**: ۱۴ آذر ۱۴۰۴
**مدت**: 2 هفته
**هدف**: تکمیل FrontOffice UI و یکپارچه‌سازی BFF
@@ -9,90 +10,96 @@
## 📋 وضعیت کلی پروژه
### Backend:
-**CMS Microservice**: 95% Complete (Phase 9 & 12 Complete)
-**BackOffice.BFF**: 100% Complete (35 Handlers)
- 🚧 **FrontOffice.BFF**: 60% Complete (12 Handlers - 3 new today)
-**CMS Microservice**: ~95% Complete
-**BackOffice.BFF**: 100% Complete (35+ Handlers)
- **FrontOffice.BFF**: 90% Complete (Proto Projects + Handlers + Mappings)
### Frontend:
-**BackOffice UI**: 100% Complete (23 Pages)
- 🚧 **FrontOffice UI**: 75% Complete (24 Pages - 7 new today)
-**BackOffice UI**: ~95% Complete (60+ صفحه)
- 🟢 **FrontOffice UI**: 85% Complete (24+ صفحه - سرویس‌ها به gRPC وصل شدند)
---
## 🔥 High Priority (باید امروز/فردا تمام شود)
## ✅ تکمیل شده (۱۴ آذر ۱۴۰۴)
### 1. FrontOffice UI - Integration با BFF Real APIs ⏰
**Status**: 🚧 In Progress (Mock → Real API)
**Owner**: Frontend Team
**Deadline**: ۱۵ آذر (فردا)
### Proto Projects برای Frontend:
#### Tasks:
- [ ] **ClubMembership صفحات** (3 صفحه)
- [ ] `ClubInfo.razor` - اتصال به `GetClubMembershipInfo`
- [ ] `ActivateClub.razor` - اتصال به `ActivateClubMembership`
- [ ] `ClubFeatures.razor` - اتصال به `GetAvailableClubFeatures`
| پروژه | Endpoints | وضعیت |
|-------|-----------|-------|
| `FrontOffice.BFF.DiscountShop.Protobuf` | 7 RPCs | ✅ Complete |
| `FrontOffice.BFF.Commission.Protobuf` | `GetMyCommissionPayouts`, `GetMyWeeklyBalances` | ✅ Complete |
| `FrontOffice.BFF.ClubMembership.Protobuf` | `GetMyClubMembership`, `ActivateMyClubMembership` | ✅ Complete |
| `FrontOffice.BFF.NetworkMembership.Protobuf` | `GetMyNetworkPosition`, `GetMyNetworkTree`, `GetMyNetworkStatistics` | ✅ Complete |
| `FrontOffice.BFF.UserWallet.Protobuf` | 6 RPCs (Wallet, Transactions, Withdrawals) | ✅ Complete |
- [ ] **NetworkMembership صفحات** (2 صفحه)
- [ ] `Tree.razor` - اتصال به `GetNetworkTree` + Tree Builder
- [ ] `NetworkStats.razor` - اتصال به `GetNetworkStatistics`
### FrontOffice UI Services - اتصال به gRPC:
- [ ] **Commission صفحات** (2 صفحه)
- [ ] `WeeklyReport.razor` - اتصال به `GetWeeklyCommissionReport`
- [ ] `PayoutHistory.razor` - اتصال به `GetUserPayouts`
| Service | Status | توضیحات |
|---------|--------|---------|
| `ClubMembershipService` | ✅ Connected | GetMyMembership, ActivateMembership |
| `NetworkMembershipService` | ✅ Connected | GetTree, GetStatistics + Tree Mapping |
| `CommissionService` | ✅ Connected | GetPayouts, GetWeeklyBalances |
| `WalletService` | ✅ Connected | GetBalances, GetTransactions, RequestWithdrawal, GetWithdrawals, GetSettings |
**Blockers**:
- ⚠️ Protobuf mismatch (ActivationDate vs ActivatedAt) - نیاز به هماهنگی با Backend
- ⚠️ Tree structure در CMS flat list است - نیاز به Tree Builder در BFF
### Build Status:
```
✅ FrontOffice: Build Succeeded - 0 Errors
✅ FrontOffice.BFF: Build Succeeded - 0 Errors
```
---
### 2. FrontOffice.BFF - رفع Protobuf Mismatches ⏰
**Status**: 🚧 In Progress
**Owner**: Backend Team
**Deadline**: ۱۵ آذر
## ✅ به‌روزرسانی‌های BackOffice در این اسپرینت
#### Tasks:
- [ ] **ClubMembershipHandler** - تطبیق field names
```csharp
// CMS: ActivationDate → BFF: ActivatedAt
// FIX: Rename in proto or add mapping
```
> مطابق BACKLOG و ui-status (BackOffice)، تمرکز بخشی از این اسپرینت روی تکمیل BackOffice قبل از ورود جدی به FrontOffice بوده است.
- [ ] **NetworkMembershipHandler** - پیاده‌سازی Tree Builder
```csharp
// CMS: Flat list → BFF: Tree structure
// FIX: Build tree from flat list recursively
```
### BackOffice.BFF
- ✅ تکمیل GetWithdrawalReports (CMS + BackOffice.BFF + gRPC Service)
- ✅ تکمیل Tag Management handlers (Create/Update/Delete/GetAll/GetById/AssignTagToProduct)
- ✅ تکمیل Discount Shop handlers (DiscountProduct / DiscountCategory / DiscountOrder / DiscountShoppingCart)
- ✅ تکمیل Public Messages BFF wiring (Contracts + handlers)
- [ ] **CommissionHandler** - تطبیق WeekNumber type
```csharp
// CMS: WeekNumber (int) → BFF: WeekNumber (string)
// FIX: Convert int to "YYYY-Www" format
```
### BackOffice UI
- ✅ Commission / Withdrawal Management
- Commission/WithdrawalRequests.razor: اتصال واقعی به API (GetWithdrawalRequests, Approve/Reject/Process) + نمایش فیلدهای بانکی (BankReferenceId, TrackingCode, PaymentFailureReason)
- Commission/WithdrawalReports.razor: فیلترها، نمودارهای آماری، خلاصه آماری، Export به Excel/CSV + خروجی متنی ساختارمند برای PDF
- ✅ Discount Shop Reports
- DiscountShop/Reports/SalesReports.razor: جدول سفارش‌ها، فیلتر تاریخ/وضعیت/جستجو، نمودار روند فروش، نمودار محصولات پرفروش، آمار درآمد
- ✅ Products & Orders
- Products/ProductsMainPage.razor: انتخاب چندتایی، Bulk Delete و Bulk ToggleStatus، فیلترهای پیشرفته
- UserOrder/UserOrderMainPage.razor: کارت آمار سفارش‌ها + نمودار تعداد سفارش بر اساس وضعیت ارسال + Timeline وضعیت سفارش در UserOrderDetailsDialog
- UserOrder/UserOrderMainPage.razor: تکمیل امکانات مدیریت سفارش‌ها (لغو سفارش از طریق CancelOrderDialog، تغییر وضعیت ارسال با ChangeOrderStatusDialog و اعمال تخفیف دستی با ApplyDiscountDialog متصل به متدهای CancelOrder، UpdateOrderStatus و ApplyDiscountToOrder در BackOffice.BFF)
- ✅ Tag Management
- Tag/TagManagementPage.razor: لیست + جستجو + فیلتر وضعیت + صفحه‌بندی
- Tag/Components/TagEditDialog.razor: ایجاد/ویرایش تگ (Name, Title, Description, IsActive, SortOrder)
- Tag/Components/AssignTagsDialog.razor: اختصاص تگ به محصول، نمایش تگ‌های فعلی هر محصول، امکان حذف تگ‌ها
- ✅ Dashboard & Widgets
- Dashboard/DiscountShopWidget.razor: ویجت آمار فروشگاه تخفیفی (تعداد سفارش‌ها و مجموع فروش ۷ روز اخیر + آمار امروز + نمودار روند فروش روزانه) و اضافه‌شدن به SystemOverview.razor
- ✅ Public Messages Templates
- PublicMessages/Components/MessageTemplatesDialog.razor: مدیریت قالب‌های آماده پیام (افزودن/حذف/استفاده)، ذخیره در LocalStorage، دسترسی از PublicMessagesMainPage
- ✅ Discount Shop Product Image Gallery (UI)
- DiscountShop/Components/ProductImageGallery.razor: گالری تصاویر محصول برای Discount Shop با multi-upload، پیش‌نمایش Base64 و Drag & Drop برای تغییر ترتیب (فعلاً سمت UI؛ اتصال Backend در فاز بعدی)
- ✅ Product List Export
- Products/ProductsMainPage.razor: دکمه «خروجی Excel» که با توجه به فیلترهای فعلی، لیست محصولات را از طریق gRPC دریافت کرده و خروجی CSV (Excel-friendly) تولید می‌کند (ستون‌ها: Id, Title, Price, Discount, RemainingCount, SaleCount, ViewCount)
- ✅ Product Bulk Edit UI
- Pages/Products/BulkEdit.razor: صفحه‌ی مجزای ویرایش گروهی محصولات با DataGrid (Multiple Selection) و فرم Bulk Update برای قیمت، تخفیف، تخفیف باشگاه، موجودی (StockUpdateType: Set/Add/Subtract) و وضعیت (Toggle Status) که به متدهای BulkUpdateProductPrices، BulkUpdateProductStock و ToggleProductStatus در BackOffice.BFF متصل است.
**File**: `03-BACKEND/FrontOffice.BFF/protobuf-mismatch.md` دارای جزئیات کامل
## 🔥 High Priority (در حال انجام)
### 1. موارد نیازمند پیاده‌سازی در CMS (Deferred)
**Status**: ⏳ Deferred - نیاز به entity جدید در CMS
| Feature | CMS Entity Needed | Status |
|---------|-------------------|--------|
| **PackageDetail Reviews** | `Review`, `Comment` entities | ❌ Not in CMS |
| **Checkout Discount Validation** | `ValidateDiscountCode` RPC | ❌ Not in CMS |
| **Contact Form** | `ContactMessage` entity | ❌ Not in CMS |
**Note**: این موارد فعلاً با Mock data کار می‌کنند تا CMS تکمیل شود.
---
## 🟡 Medium Priority (این هفته)
### 3. WalletService - پیاده‌سازی متدهای TODO
**Status**: ⏳ Not Started
**Owner**: Frontend Team
**Deadline**: ۱۷ آذر
#### Tasks (5 متد):
- [ ] `GetUserWalletBalanceAsync()` - دریافت موجودی کیف پول
- [ ] `ChargeWalletAsync()` - شارژ کیف پول
- [ ] `WithdrawFromWalletAsync()` - برداشت از کیف پول
- [ ] `GetWalletTransactionsAsync()` - تاریخچه تراکنش‌ها
- [ ] `TransferBetweenWalletsAsync()` - انتقال بین کیف پول‌ها
**File**: `04-FRONTEND/FrontOffice/todo-commented-code.md`
---
### 4. Package Purchase System - UI Implementation
### 2. Package Purchase System - UI Implementation
**Status**: ⏳ Not Started (Proto Complete ✅)
**Owner**: FrontOffice Team
**Deadline**: ۱۸ آذر
@@ -115,6 +122,76 @@
---
### 3. 🔴 اصلاح محاسبه کمیسیون هفتگی (بحرانی)
**Status**: 🔄 در حال انجام
**Owner**: CMS Team
**تاریخ شروع**: ۱۴ آذر ۱۴۰۴
**Estimate**: 2.5 روز
#### شرح مشکلات:
| # | مشکل | وضعیت |
|---|------|-------|
| 1 | محدودیت لول (15) پیاده‌سازی نشده | 🔄 در حال انجام |
| 2 | فقط تعادل شخصی حساب می‌شود (نه زیرمجموعه) | ⏳ Pending |
#### فرمول صحیح:
```
کمیسیون = (تعادل_شخص + SUM(تعادل_زیرمجموعه تا 15 لول)) × ارزش_هر_تعادل
```
#### تسک‌ها:
| فاز | شرح | وضعیت |
|-----|------|-------|
| 1 | اضافه کردن `Commission.MaxNetworkLevel` به Config | 🔄 |
| 2 | اصلاح `CalculateWeeklyBalancesCommandHandler` - محدودیت لول | ⏳ |
| 3 | اصلاح `ProcessUserPayoutsCommandHandler` - تعادل زیرمجموعه | ⏳ |
| 4 | تست و Build | ⏳ |
**Reference**: `01-BUSINESS/commission-calculation-fix.md`
---
### 4. ✅ اصلاح سقف تعادل هفتگی (MaxWeeklyBalances)
**Status**: ✅ تکمیل شد
**Owner**: CMS Team
**تاریخ تکمیل**: ۱۴ آذر ۱۴۰۴
#### شرح مشکل:
سقف تعادل هفتگی در پیاده‌سازی فعلی **300 کل** بود، اما باید **300 برای هر دست** باشد.
| توضیح | منطق قدیم | منطق جدید |
|-------|-----------|-----------|
| سقف | 300 کل | 300 هر دست |
| Max Total | 300 | 300+300=600 |
#### تغییرات انجام شده:
**CMS Changes:**
-**SystemConfiguration**: تغییر کلید از `MaxWeeklyBalancesPerUser` به `MaxWeeklyBalancesPerLeg`
-**CalculateWeeklyBalancesCommandHandler**: اصلاح منطق محاسبه سقف
- اعمال سقف روی هر دست جداگانه قبل از محاسبه MIN
- باقیمانده = مازاد سقف هر دست (نه نصف تعادل کل)
-**ApplicationDbContextInitialiser**: اصلاح Seed Data
**منطق جدید:**
```csharp
// ✅ سقف روی هر دست جداگانه
var cappedLeftTotal = Math.Min(leftTotal, maxBalancesPerLeg);
var cappedRightTotal = Math.Min(rightTotal, maxBalancesPerLeg);
var totalBalances = Math.Min(cappedLeftTotal, cappedRightTotal);
var leftRemainder = leftTotal - cappedLeftTotal; // مازاد سقف
var rightRemainder = rightTotal - cappedRightTotal;
```
**Build Status**: ✅ CMS Build Succeeded - 0 Errors
**مستندات:**
-`01-BUSINESS/balance-calculation-rules.md` - آپدیت شد
---
## 🟢 Low Priority (هفته بعد)
### 5. VAT System Implementation
@@ -143,38 +220,32 @@
## ⚠️ Blockers & Dependencies
### 🔴 Critical Blockers:
1. **Protobuf Mismatch** (FrontOffice.BFF ↔ CMS)
- Impact: 3 modules affected
- Resolution: Backend coordination needed
- ETA: امروز/فردا
2. **Tree Builder Missing** (NetworkMembership)
- Impact: Tree.razor can't display network
- Resolution: Implement recursive tree builder in BFF
- ETA: 1 روز
### 🟢 Resolved:
1. ~~**Protobuf Mismatch** (FrontOffice.BFF ↔ CMS)~~ ✅ Fixed
2. ~~**WalletService Mock Data**~~ ✅ Connected to gRPC
3. ~~**Tree Builder Missing** (NetworkMembership)~~ ✅ Implemented
### 🟡 Minor Issues:
1. **WalletService Mock Data** - نیاز به پاکسازی بعد از اتصال API
2. **MudBlazor Warnings** - 113 warning (غیر critical)
1. **MudBlazor Warnings** - ~100 warnings (غیر critical)
2. **Missing CMS Entities** - Review, ContactMessage, DiscountValidation
---
## 📊 Velocity Tracking
## 📊 Progress Summary
### کارهای تمام شده امروز (۱۴ آذر):
- ✅ FrontOffice UI: 7 صفحه جدید (Club, Network, Commission)
- ✅ FrontOffice.BFF: 3 CQ module جدید
-Build Successful: 0 errors
-Documentation: 2 فایل تحلیل جدید
- ✅ FrontOffice Proto Projects: 5 پروژه جدید
- ✅ FrontOffice UI Services: 4 سرویس به gRPC وصل شدند
-FrontOffice.BFF Handlers: 15+ handler
-Build Successful: 0 errors در هر دو پروژه
### تخمین باقیمانده:
- **FrontOffice UI Integration**: 2 روز (7 صفحه × 3-4 ساعت)
- **Protobuf Fixes**: 1 روز (3 handler)
- **WalletService Implementation**: 1 روز (5 متد)
- **CMS Entity Creation** (Review, Contact, Discount): 1-2 روز
- **Package Purchase UI**: 2 روز (4 صفحه + BFF)
- **VAT System**: 2 روز
- **RBAC System**: 1.5 هفته
**Total**: ~6 روز کاری (1.5 هفته)
**Total**: ~5-7 روز کاری
---
@@ -200,4 +271,3 @@
---
**منتظر بروزرسانی روزانه هستیم** 🚀