279 lines
12 KiB
Markdown
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
|
|
|
|
---
|
|
|
|
**منتظر بروزرسانی روزانه هستیم** 🚀
|