Files
docs/05-TASKS/CURRENT-SPRINT.md
T

279 lines
12 KiB
Markdown

# 🎯 اسپرینت جاری (Current Sprint)
**تاریخ شروع**: ۱۴ آذر ۱۴۰۴
**آخرین بروزرسانی**: ۱۴ آذر ۱۴۰۴
**مدت**: 2 هفته
**هدف**: تکمیل FrontOffice UI و یکپارچه‌سازی BFF
---
## 📋 وضعیت کلی پروژه
### Backend:
-**CMS Microservice**: ~95% Complete
-**BackOffice.BFF**: 100% Complete (35+ Handlers)
-**FrontOffice.BFF**: 90% Complete (Proto Projects + Handlers + Mappings)
### Frontend:
-**BackOffice UI**: ~95% Complete (60+ صفحه)
- 🟢 **FrontOffice UI**: 85% Complete (24+ صفحه - سرویس‌ها به gRPC وصل شدند)
---
## ✅ تکمیل شده (۱۴ آذر ۱۴۰۴)
### Proto Projects برای Frontend:
| پروژه | 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 |
### FrontOffice UI Services - اتصال به gRPC:
| Service | Status | توضیحات |
|---------|--------|---------|
| `ClubMembershipService` | ✅ Connected | GetMyMembership, ActivateMembership |
| `NetworkMembershipService` | ✅ Connected | GetTree, GetStatistics + Tree Mapping |
| `CommissionService` | ✅ Connected | GetPayouts, GetWeeklyBalances |
| `WalletService` | ✅ Connected | GetBalances, GetTransactions, RequestWithdrawal, GetWithdrawals, GetSettings |
### Build Status:
```
✅ FrontOffice: Build Succeeded - 0 Errors
✅ FrontOffice.BFF: Build Succeeded - 0 Errors
```
---
## ✅ به‌روزرسانی‌های BackOffice در این اسپرینت
> مطابق BACKLOG و ui-status (BackOffice)، تمرکز بخشی از این اسپرینت روی تکمیل BackOffice قبل از ورود جدی به FrontOffice بوده است.
### 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)
### 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 متصل است.
## 🔥 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 تکمیل شود.
---
### 2. Package Purchase System - UI Implementation
**Status**: ⏳ Not Started (Proto Complete ✅)
**Owner**: FrontOffice Team
**Deadline**: ۱۸ آذر
#### CMS Status:
- ✅ Entities (5) - `PackagePurchase`, `PackagePurchaseItem`, etc.
- ✅ Commands (6) - `CreatePackagePurchaseCommand`, etc.
- ✅ Queries (3) - `GetPackagePurchaseByIdQuery`, etc.
- ✅ Protobuf (4 RPCs) - 264 lines
#### Pending:
- [ ] BFF Handlers (3 modules)
- [ ] UI Pages (4 صفحه)
- [ ] `Packages.razor` - لیست پکیج‌ها
- [ ] `PurchasePackage.razor` - خرید پکیج
- [ ] `MyPackages.razor` - پکیج‌های من
- [ ] `PackageDetails.razor` - جزئیات پکیج
**Reference**: `01-BUSINESS/package-purchase-system.md`
---
### 3. ✅ اصلاح محاسبه کمیسیون هفتگی (بحرانی)
**Status**: ✅ تکمیل شد
**Owner**: CMS Team
**تاریخ شروع**: ۱۴ آذر ۱۴۰۴
**تاریخ تکمیل**: ۱۴ آذر ۱۴۰۴
#### شرح مشکلات رفع شده:
| # | مشکل | وضعیت |
|---|------|-------|
| 1 | محدودیت لول (15) پیاده‌سازی نشده | ✅ Fixed |
| 2 | فقط تعادل شخصی حساب می‌شود (نه زیرمجموعه) | ✅ Fixed |
#### فرمول پیاده‌سازی شده:
```
کمیسیون = (تعادل_شخص + SUM(تعادل_زیرمجموعه تا 15 لول)) × ارزش_هر_تعادل
```
#### تسک‌های تکمیل شده:
| فاز | شرح | وضعیت |
|-----|------|-------|
| 1 | اضافه کردن `Commission.MaxNetworkLevel` به Config | ✅ |
| 2 | اصلاح `CalculateWeeklyBalancesCommandHandler` - محدودیت لول | ✅ |
| 3 | اصلاح `ProcessUserPayoutsCommandHandler` - تعادل زیرمجموعه | ✅ |
| 4 | تست و Build | ✅ (0 Errors) |
#### تغییرات انجام شده:
- **Config**: اضافه کردن `Commission.MaxNetworkLevel = 15`
- **CalculateWeeklyBalances**: پارامتر `maxLevel` به متدهای بازگشتی اضافه شد
- **ProcessUserPayouts**: متد `SumSubordinateBalancesAsync` برای جمع تعادل زیرمجموعه‌ها تا 15 لول
**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
**Status**: ⏳ Not Started
**Owner**: CMS Team
**Estimate**: 2 روز
#### Requirements:
- پیاده‌سازی محاسبه مالیات بر ارزش افزوده (VAT)
- اضافه شدن به Invoice ها
- تنظیمات پویا برای درصد VAT
---
### 6. RBAC System Implementation
**Status**: ⏳ Not Started
**Owner**: CMS + BFF Teams
**Estimate**: 1.5 هفته
#### Requirements:
- تعریف Roles و Permissions
- Policy-based Authorization
- Admin Panel برای مدیریت دسترسی‌ها
---
## ⚠️ Blockers & Dependencies
### 🟢 Resolved:
1. ~~**Protobuf Mismatch** (FrontOffice.BFF ↔ CMS)~~ ✅ Fixed
2. ~~**WalletService Mock Data**~~ ✅ Connected to gRPC
3. ~~**Tree Builder Missing** (NetworkMembership)~~ ✅ Implemented
### 🟡 Minor Issues:
1. **MudBlazor Warnings** - ~100 warnings (غیر critical)
2. **Missing CMS Entities** - Review, ContactMessage, DiscountValidation
---
## 📊 Progress Summary
### کارهای تمام شده امروز (۱۴ آذر):
- ✅ FrontOffice Proto Projects: 5 پروژه جدید
- ✅ FrontOffice UI Services: 4 سرویس به gRPC وصل شدند
- ✅ FrontOffice.BFF Handlers: 15+ handler
- ✅ Build Successful: 0 errors در هر دو پروژه
### تخمین باقیمانده:
- **CMS Entity Creation** (Review, Contact, Discount): 1-2 روز
- **Package Purchase UI**: 2 روز (4 صفحه + BFF)
- **VAT System**: 2 روز
- **RBAC System**: 1.5 هفته
**Total**: ~5-7 روز کاری
---
## 🎯 Definition of Done
### برای هر Task:
- [ ] Code Review Complete
- [ ] Build با 0 error
- [ ] Manual Testing انجام شده
- [ ] Documentation بروز شده
- [ ] Merged به `develop` branch
---
## 📝 Daily Standup Notes
### ۱۴ آذر ۱۴۰۴:
- **Yesterday**: FrontOffice analysis & UI skeleton
- **Today**: 7 new pages + 3 BFF modules + Mock services
- **Blockers**: Protobuf mismatch discovered
- **Next**: Real API integration tomorrow
---
**منتظر بروزرسانی روزانه هستیم** 🚀