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:
+156
-86
@@ -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 @@
|
||||
---
|
||||
|
||||
**منتظر بروزرسانی روزانه هستیم** 🚀
|
||||
|
||||
|
||||
Reference in New Issue
Block a user