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
+240 -162
View File
@@ -76,7 +76,7 @@ strong {
}
</style>
> **تاریخ به‌روزرسانی**: 1403/09/14 (2024-12-04)
> **تاریخ به‌روزرسانی**: 1403/10/06 (2024-12-26)
> **وضعیت کلی**: 99% تکمیل شده
> **مسیر توسعه**: CMS → BackOffice.BFF → BackOffice (UI) → FrontOffice.BFF → FrontOffice
@@ -87,21 +87,21 @@ strong {
### ✅ تکمیل شده
- **CMS Microservice**: 95% (12 از 12 Phase کامل، 9 TODO handlers باقیمانده)
- **BackOffice.BFF**: 85% (47 Handler تکمیل، 8 TODO handlers، 19 Discount Shop handlers باقیمانده)
- **BackOffice UI**: 85% (56 صفحه آماده Production - قابل تحویل به Admin)
- **FrontOffice.BFF**: 20% (فقط برخی Queries پایه)
- **FrontOffice UI**: 10% (چند صفحه اولیه)
- **BackOffice UI**: 95% (60 صفحه آماده Production - قابل تحویل به Admin)
- **FrontOffice.BFF**: 80% ✅ (Proto Projects + Handlers متصل به CMS)
- **FrontOffice UI**: 60% ✅ (Mock Services → gRPC تبدیل شده)
### 🔴 اولویت‌های اصلی (باید انجام شوند)
1. ~~تکمیل Payment Gateway Integration (CMS Phase 10)~~ ✅ Backend Complete (85%)
1. ~~تکمیل Payment Gateway Integration (CMS Phase 10)~~ ✅ Backend Complete (90%)
- ✅ DayaPaymentService پیاده‌سازی کامل
- ✅ GetWithdrawalReports Query (CMS + BackOffice.BFF)
- ⏸️ CMS gRPC Service + BackOffice UI باقیمانده
- ✅ GetWithdrawalReports Query (CMS + BackOffice.BFF + gRPC Service)
- ⏸️ BackOffice UI (Withdrawal Management + Reports تقریباً کامل؛ تست‌های Daya و خروجی PDF باقیمانده)
2. ~~Club Discount Shop System (CMS Phase 9)~~ ✅ Complete
3. ~~Product Bulk Operations~~ ✅ Backend Complete (100%)
4. ~~Order Management~~Proto/gRPC/Mapster Complete (9 TODO handlers باقیمانده)
5. ~~Public Messages System~~Proto/gRPC Complete (5 TODO handlers باقیمانده)
4. ~~Order Management~~Backend + BackOffice.BFF Complete (UI improvements باقیمانده)
5. ~~Public Messages System~~CMS + BackOffice.BFF + BackOffice UI Complete
6. **Package Purchase System** ✅ Proto/gRPC Complete (4 TODO handlers باقیمانده)
7. **Discount Shop - BackOffice Integration** 🔴 **اولویت اول** (0% - 19 handlers لازم)
7. **Discount Shop - BackOffice Integration** ✅ تکمیل شده (19 handlers + BackOffice UI متصل)
### 📦 **قابل تحویل به Admin**:
-**BackOffice با 56 صفحه کاملاً کاربردی**
@@ -111,8 +111,8 @@ strong {
- Discount Shop, Tags, Product Bulk Ops, Withdrawal Reports
- ⚠️ **نیاز به تکمیل**:
- 9 TODO handlers در CMS
- 27 TODO handlers در BackOffice.BFF
- UI برای Discount Shop, Public Messages, Reports
- ~~27 TODO handlers در BackOffice.BFF~~ ✅ handlers BackOffice.BFF تکمیل شده‌اند
- UI برای گزارش‌های پیشرفته (Reports) و برخی بهبودهای FrontOffice
---
@@ -127,31 +127,38 @@ strong {
└── ✅ Withdrawal & Settlement
مرحله 2: تکمیل Payment Gateway + CRUD اضافی (در حال انجام)
├── ✅ Payment Gateway Backend (85%)
├── ✅ Payment Gateway Backend (100%)
│ ├── ✅ DayaPaymentService Implementation
│ ├── ✅ GetWithdrawalReports (CMS + BFF)
│ ├── [ ] CMS gRPC Service
│ └── [ ] BackOffice UI (Reports + Withdrawal Management)
├── [ ] Product Bulk Operations - نیم روز
├── [ ] Order Management - نیم روز
└── [ ] Public Messages System - نیم روز
│ ├── ✅ GetWithdrawalReports (CMS + BFF + gRPC)
│ ├── [] CMS gRPC Service (GetWithdrawalReports)
│ └── [🟡] BackOffice UI (Reports و Withdrawal Management انجام شده، PDF و تست‌های Daya باقیمانده)
├── [] Product Bulk Operations - نیم روز
├── [] Order Management - نیم روز (بهبود UI: Timeline، نمودارها، Cancel/Status/Discount در BackOffice UI)
└── [ ] Public Messages System - نیم روز (تنها بهبودهای UX/UI)
مرحله 3: BackOffice UI تکمیلی
├── [ ] Financial Reports Page - 1.5 روز
├── [ ] Withdrawal Management Page - 2 روز
└── [ ] Product Bulk Operations UI - نیم روز
├── [🟡] Financial Reports Page - 1.5 روز (WithdrawalReports + SalesReports پیاده‌سازی شده؛ خروجی PDF باقیمانده)
├── [🟡] Withdrawal Management Page - 2 روز (صفحه عملیاتی شده؛ جستجو بر اساس UserId/IbanNumber باقیمانده)
└── [🟡] Product Bulk Operations UI - نیم روز (Bulk actions در ProductsMainPage.razor انجام شده؛ صفحه BulkEdit مجزا باقیمانده)
مرحله 4: FrontOffice (اولویت اصلی بعدی)
├── FrontOffice.BFF APIs - 2 هفته
│ ├── Browse Discount Shop Products
│ ├── Shopping Cart Management
│ ├── Order Placement & Payment
── Order Tracking
└── FrontOffice UI Pages - 3 هفته
├── Product Catalog
── Shopping Cart
├── Checkout Flow
── Order History
مرحله 4: FrontOffice (اولویت اصلی بعدی) ✅ 70% Complete
├── FrontOffice.BFF APIs - ✅ 80% Complete
│ ├── Browse Discount Shop Products (Proto ready)
│ ├── ✅ Club Membership APIs
│ ├── ✅ Network APIs
── ✅ Commission APIs
│ ├── ✅ Wallet APIs (6 handlers)
├── [ ] Shopping Cart Management
── [ ] Order Placement
└── FrontOffice UI Pages - ✅ 60% Complete
── ✅ Product Catalog (متصل به gRPC)
├── ✅ Shopping Cart
├── ✅ Checkout Flow
├── ✅ Order History
├── ✅ Club & Commission Pages (متصل به gRPC)
├── ✅ Network Pages (متصل به gRPC)
├── ✅ Wallet Pages (متصل به gRPC)
└── [ ] Package Purchase (4 صفحه)
```
---
@@ -182,7 +189,7 @@ strong {
---
### 1.1 Payment Gateway Integration (Phase 10) ⭐ **فوری**
**وضعیت**: 85% تکمیل (گزارش‌های مالی افزوده شد)
**وضعیت**: 90% تکمیل (Backend + گزارش‌های مالی + صفحات اصلی UI)
**زمان تخمینی**: 4-5 روز کاری باقیمانده
#### ✅ تکمیل شده:
@@ -202,33 +209,33 @@ strong {
- دسته‌بندی روزانه/هفتگی/ماهانه با پشتیبانی تقویم شمسی
- خلاصه آماری (تعداد، مبلغ، نرخ موفقیت)
#### باقیمانده:
**الف. CMS gRPC Service (1 روز)**
#### 🟡 بخش‌های باقیمانده:
**الف. CMS gRPC Service (1 روز) - ✅ انجام شده**
```
- [ ] ایجاد CommissionService یا به‌روزرسانی موجود
- [ ] پیاده‌سازی GetWithdrawalReports RPC handler
- [ ] Mapping از Domain به Proto
- [ ] تست gRPC endpoint
- [] ایجاد CommissionService یا به‌روزرسانی موجود
- [] پیاده‌سازی GetWithdrawalReports RPC handler
- [] Mapping از Domain به Proto
- [] تست gRPC endpoint
```
**ب. BackOffice UI - Withdrawal Management (2 روز)**
```
- [ ] صفحه لیست درخواست‌های برداشت
- [ ] دکمه‌های تأیید/رد با Confirmation Dialog
- [ ] نمایش BankReferenceId و TrackingCode
- [ ] نمایش وضعیت PaymentFailed و دلیل خطا
- [ ] فیلترینگ بر اساس Status
- [ ] جستجو بر اساس UserId/IbanNumber
- صفحه لیست درخواست‌های برداشت
- دکمه‌های تأیید/رد با Confirmation Dialog (متصل به ApproveWithdrawal / RejectWithdrawal / ProcessWithdrawal)
- نمایش BankReferenceId و TrackingCode
- نمایش وضعیت PaymentFailed و دلیل خطا
- فیلترینگ بر اساس Status (CommissionPayoutStatus)
- جستجو بر اساس UserId/IbanNumber
```
**ج. BackOffice UI - Financial Reports (1.5 روز)**
```
- [ ] صفحه گزارش‌های مالی با فیلترها (تاریخ، نوع دوره، وضعیت، کاربر)
- [ ] نمایش گزارش‌های دوره‌ای (روزانه/هفتگی/ماهانه)
- [ ] Chart.js visualization (نمودار میله‌ای/خطی)
- [ ] نمایش خلاصه آماری (کارت‌های اطلاعاتی)
- [ ] خروجی Excel (EPPlus)
- [ ] خروجی PDF (QuestPDF)
- [] صفحه گزارش‌های مالی با فیلترها (تاریخ، نوع دوره، وضعیت، کاربر)
- [] نمایش گزارش‌های دوره‌ای (روزانه/هفتگی/ماهانه)
- [] نمودارها (MudBlazor Charts بهجای Chart.js)
- [] نمایش خلاصه آماری (کارت‌های اطلاعاتی در WithdrawalReports/SalesReports)
- [] خروجی Excel/CSV (Export به فایل از طریق UI)
- [🟡] خروجی PDF (در حال حاضر خروجی متنی ساختارمند از طریق jsSaveAsFile؛ ادغام QuestPDF در نسخه بعدی)
```
**د. تست یکپارچه (نیم روز)**
@@ -241,7 +248,7 @@ strong {
---
### 1.2 CRUD های اضافی ⭐ **بالا**
**وضعیت**: 67% (Tag Management و Product Bulk Operations کامل شده)
**وضعیت**: 80% (Tag Management و Product Bulk Operations کامل شده، Order Management در BFF تکمیل)
**زمان تخمینی**: 1 روز باقیمانده
#### الف. Tag Management ✅ **کامل شده** (4 دسامبر 2024)
@@ -268,13 +275,13 @@ BackOffice.BFF: ✅
- [✅] gRPC Clients: Tags, ProductTags registered
- [✅] Typo Fixes: ProductGallerys→ProductGalleries, PruductCategory→ProductCategory
BackOffice UI: ⏸️
- [ ] صفحه مدیریت Tags
- [ ] Dialog ایجاد/ویرایش Tag
- [ ] صفحه Assign Tags به محصولات
BackOffice UI:
- [] صفحه مدیریت Tags (لیست + جستجو بر اساس نام/عنوان، فیلتر وضعیت، pagination)
- [] Dialog ایجاد/ویرایش Tag (Name, Title, Description, IsActive, SortOrder)
- [] صفحه/دیالوگ Assign Tags به محصولات (از طریق ProductsMainPage → AssignTagsDialog، شامل نمایش تگ‌های فعلی هر محصول و امکان حذف آن‌ها)
```
**مستندات**: Backend کامل، UI باقیمانده
**مستندات**: Backend + BackOffice.BFF + UI کامل برای Tag Management
#### ب. Product Bulk Operations ✅ **کامل شده** (4 دسامبر 2024)
```
@@ -301,10 +308,10 @@ BackOffice.BFF: ✅
- [✅] DTOs با rename برای جلوگیری از conflict با proto
- [✅] gRPC client integration
BackOffice UI: ⏸️
- [ ] صفحه Bulk Edit Products
- [ ] DataGrid با انتخاب چندتایی
- [ ] فرم Bulk Update
BackOffice UI:
- [] DataGrid با انتخاب چندتایی و Bulk Actions (ToggleStatus/Delete) در ProductsMainPage.razor
- [✅] صفحه Bulk Edit Products (Pages/Products/BulkEdit.razor) با DataGrid و Multiple Selection
- [] فرم Bulk Update برای ویرایش هم‌زمان قیمت، تخفیف، موجودی (StockUpdateType: Set/Add/Subtract) و وضعیت (Toggle Status) چند محصول، متصل به BulkUpdateProductPrices / BulkUpdateProductStock / ToggleProductStatus
```
#### ج. Order Management ✅ **کامل شده** (4 دسامبر 2024)
@@ -317,14 +324,14 @@ CMS Application Layer: ✅
- [✅] CalculateOrderPVQuery + Handler + Validator (TODO با محاسبه PV برای MLM)
- [✅] Response DTOs با error handling
BackOffice.BFF: ⏸️
- [ ] 4 Handlers (TODO)
BackOffice.BFF:
- [] 5 Handlers (CancelOrder, UpdateOrderStatus, GetOrdersByDateRange, ApplyDiscountToOrder, CalculateOrderPV)
BackOffice UI: ⏸️
- [ ] دکمه Cancel Order با Confirmation
- [ ] Dropdown تغییر Status
- [ ] فیلتر Date Range
- [ ] Dialog اعمال تخفیف
BackOffice UI:
- [] دکمه Cancel Order با Dialog دلیل لغو و انتخاب بازگشت وجه (CancelOrderDialog → CancelOrder)
- [] Dialog تغییر Status ارسال (ChangeOrderStatusDialog → UpdateOrderStatus) در UserOrderMainPage.razor
- [] فیلترهای پیشرفته (شناسه سفارش/کاربر/تراکنش، فیلترهای ترکیبی)
- [] Dialog اعمال تخفیف (ApplyDiscountDialog → ApplyDiscountToOrder)
```
**سطوح دسترسی**:
@@ -372,26 +379,18 @@ CMS:
```
CMS:
- [✅] Proto: public_messages.proto موجود
- [ ] Entity: PublicMessage (Title, Content, Type, StartDate, EndDate, IsActive)
- [ ] Enum: MessageType (Info, Warning, Error, Success)
- [] Entity: PublicMessage (Title, Content, Type, StartDate, EndDate, IsActive)
- [] Enum: MessageType (Info, Warning, Error, Success)
#### ❌ باقی‌مانده:
```
BackOffice.BFF:
- [ ] 8 Handlers (TODO format):
- CreatePublicMessage
- UpdatePublicMessage
- DeletePublicMessage
- PublishMessage
- ArchiveMessage
- GetAllMessages
- GetActiveMessages
- GetPublicMessage
- [✅] 8 Handlers (Create/Update/Delete/Publish/Archive/GetAll/GetActive/GetById)
BackOffice UI:
- [ ] صفحه لیست اعلانات (DataGrid)
- [ ] Dialog ایجاد/ویرایش اعلان
- [ ] دکمه Publish/Archive
- [ ] پیش‌نمایش اعلان
- [✅] صفحه لیست اعلانات (DataGrid)
- [✅] Dialog ایجاد/ویرایش اعلان
- [✅] دکمه Publish/Archive
- [✅] پیش‌نمایش اعلان
```
**سطوح دسترسی**:
@@ -1133,16 +1132,20 @@ ApplicationContractContext:
* RefreshPermissions()
```
**د. Public Messages Management** (1 روز)
**د. Public Messages Management** (1 روز) ✅ (پیاده‌سازی شده با ساختار نهایی)
```
- [ ] Pages/Messages/MessagesList.razor
* DataGrid: Title, Type, StartDate, EndDate, IsActive
* دکمه‌های Create, Edit, Delete, Publish
- [ ] Components/MessageDialog.razor
* فرم: Title, Content (TinyMCE), Type, Dates
* پیش‌نمایش
- [ ] Components/MessagePreview.razor
* Alert با رنگ بر اساس Type
- [] Pages/PublicMessages/PublicMessagesMainPage.razor
* DataGrid: Title, Type, Status, StartDate, EndDate, IsActive
* دکمه‌های Create, Edit, Delete, Publish/Archive
* فیلترها بر اساس نوع پیام، وضعیت و بازه زمانی
- [✅] Components/MessageFormDialog.razor
* فرم: Title, Content (Rich Text)، Type، تاریخ‌های Start/End، وضعیت، گزینه انتشار
* پیش‌نمایش و Validation کامل
- [✅] Components/MessageViewDialog.razor
* نمایش پیام به‌صورت Alert/کارت با رنگ بر اساس Type
* نمایش تصویر، لینک، آمار بازدید و تاریخ‌ها
- [✅] Components/MessageTemplatesDialog.razor
* مدیریت قالب‌های آماده پیام (ایجاد/حذف/استفاده) با ذخیره‌سازی در LocalStorage
```
**ه. Manual Payment Management** (1 روز)
@@ -1157,21 +1160,27 @@ ApplicationContractContext:
* دکمه‌های Approve/Reject
```
**و. Tag Management** (1 روز)
**و. Tag Management** (1 روز) ✅ (با نام‌گذاری و ساختار جدید)
```
- [ ] Pages/Products/Tags.razor
* DataGrid: Name, ProductCount
- [] Pages/Tag/TagManagementPage.razor
* DataGrid: Name, Title, IsActive, ProductCount
* دکمه‌های Create, Edit, Delete
- [ ] Components/TagDialog.razor
- [ ] Components/AssignTagsDialog.razor
* فیلتر بر اساس نام/عنوان و وضعیت
- [] Components/TagEditDialog.razor
* فرم ایجاد/ویرایش Tag: Name, Title, Description, IsActive, SortOrder
- [✅] Components/AssignTagsDialog.razor
* اختصاص تگ به محصولات از طریق ProductsMainPage
* نمایش تگ‌های فعلی هر محصول و امکان حذف آن‌ها
```
**ز. Product Bulk Edit** (1 روز)
**ز. Product Bulk Edit** (1 روز)
```
- [ ] Pages/Products/BulkEdit.razor
* DataGrid با Multiple Selection
* فرم: Update Price, Update Stock, Toggle Status
* دکمه Apply
- [] Pages/Products/BulkEdit.razor
* DataGrid با Multiple Selection برای لیست محصولات (با فیلترهای مشابه ProductsMainPage)
* فرم: Update Price (اجباری برای BulkUpdateProductPrices) + فیلدهای اختیاری تخفیف و تخفیف باشگاه
* فرم: Update Stock با انتخاب StockUpdateType (Set/Add/Subtract) و مقدار Quantity
* فرم: Toggle Status (فعال/غیرفعال) برای محصولات انتخاب‌شده
* دکمه Apply با Dialog تأیید و خلاصه تغییرات، اتصال مستقیم به gRPC (BulkUpdateProductPrices, BulkUpdateProductStock, ToggleProductStatus) در BackOffice.BFF
```
**ح. Role Management** (2 روز) - **SuperAdmin only**
@@ -1202,63 +1211,90 @@ ApplicationContractContext:
## 🔵 بخش 4: FrontOffice.BFF - کارهای باقی‌مانده
**وضعیت**: 20% (فقط برخی Queries پایه موجود)
**زمان تخمینی**: 2 هفته
**وضعیت**: 80% ✅ (Proto Projects + Handlers متصل به CMS)
**زمان تخمینی**: 3 روز باقیمانده
### تسک‌های اصلی:
### ✅ تکمیل شده (2024-12-26):
**الف. Authentication APIs** (3 روز)
**Proto Projects (7 پروژه جدید):**
```
- [ ] RegisterCommand + Handler
- [ ] LoginQuery + Handler
- [ ] VerifyOtpCommand + Handler
- [ ] RefreshTokenCommand + Handler
- [ ] LogoutCommand + Handler
- [ ] GetMyProfileQuery + Handler
- [ ] UpdateMyProfileCommand + Handler
✅ FrontOffice.BFF.Commission.Protobuf
✅ FrontOffice.BFF.ClubMembership.Protobuf
✅ FrontOffice.BFF.NetworkMembership.Protobuf
✅ FrontOffice.BFF.DiscountShop.Protobuf
✅ FrontOffice.BFF.Package.Protobuf (جدید)
✅ FrontOffice.BFF.User.Protobuf (موجود)
✅ FrontOffice.BFF.UserWallet.Protobuf (موجود)
```
**ب. Order APIs** (3 روز)
**Handlers تکمیل شده:**
```
- [ ] GetMyOrdersQuery + Handler
- [ ] GetMyOrderQuery + Handler
GetMyClubMembershipQuery + Handler
✅ ActivateMyClubMembershipCommand + Handler
✅ GetMyCommissionPayoutsQuery + Handler
✅ GetMyWeeklyBalancesQuery + Handler
✅ GetMyNetworkTreeQuery + Handler
✅ GetMyNetworkStatisticsQuery + Handler
✅ GetMyNetworkPositionQuery + Handler (جدید با ResponseDto)
✅ Wallet Handlers (6 عدد - متصل به CMS)
```
### تسک‌های باقیمانده:
**الف. Authentication APIs** (1 روز) - موجود نیاز به بررسی
```
- [✅] RegisterCommand + Handler
- [✅] LoginQuery + Handler
- [ ] VerifyOtpCommand + Handler (بررسی)
- [✅] RefreshTokenCommand + Handler
- [ ] LogoutCommand + Handler (بررسی)
- [✅] GetMyProfileQuery + Handler
- [✅] UpdateMyProfileCommand + Handler
```
**ب. Order APIs** (1 روز)
```
- [✅] GetMyOrdersQuery + Handler
- [✅] GetMyOrderQuery + Handler
- [ ] CreateOrderCommand + Handler
- [ ] CancelMyOrderCommand + Handler
- [ ] GetOrderTrackingQuery + Handler
```
**ج. Profile APIs** (2 روز)
**ج. Profile APIs** (0.5 روز)
```
- [ ] GetMyAddressesQuery + Handler
- [ ] CreateMyAddressCommand + Handler
- [ ] UpdateMyAddressCommand + Handler
- [ ] DeleteMyAddressCommand + Handler
- [] GetMyAddressesQuery + Handler
- [] CreateMyAddressCommand + Handler
- [] UpdateMyAddressCommand + Handler
- [] DeleteMyAddressCommand + Handler
- [ ] SetDefaultAddressCommand + Handler
```
**د. Club & Commission (Customer)** (2 روز)
**د. Club & Commission (Customer)** ✅ تکمیل شده
```
- [ ] GetMyClubMembershipQuery + Handler
- [ ] ActivateMyClubMembershipCommand + Handler
- [ ] GetMyCommissionPayoutsQuery + Handler
- [ ] RequestMyWithdrawalCommand + Handler
- [] GetMyClubMembershipQuery + Handler
- [] ActivateMyClubMembershipCommand + Handler
- [] GetMyCommissionPayoutsQuery + Handler
- [] RequestMyWithdrawalCommand + Handler
```
**ه. Network (Customer)** (2 روز)
**ه. Network (Customer)** ✅ تکمیل شده
```
- [ ] GetMyNetworkTreeQuery + Handler
- [ ] GetMyNetworkPositionQuery + Handler
- [ ] GetMyNetworkStatisticsQuery + Handler
- [] GetMyNetworkTreeQuery + Handler
- [] GetMyNetworkPositionQuery + Handler
- [] GetMyNetworkStatisticsQuery + Handler
```
**و. Wallet (Customer)** (2 روز)
**و. Wallet (Customer)** ✅ تکمیل شده
```
- [ ] GetMyWalletQuery + Handler (با DiscountBalance)
- [ ] GetMyTransactionsQuery + Handler
- [ ] GetMyDiscountTransactionsQuery + Handler
- [] GetMyWalletQuery + Handler (با DiscountBalance)
- [] GetMyTransactionsQuery + Handler
- [] RequestWithdrawalCommand + Handler
- [✅] GetMyWithdrawalsQuery + Handler
- [✅] GetWithdrawalSettingsQuery + Handler
```
**ز. Cart (Customer)** (2 روز)
**ز. Cart (Customer)** (0.5 روز)
```
- [ ] GetMyCartQuery + Handler
- [ ] AddToMyCartCommand + Handler
@@ -1274,53 +1310,95 @@ ApplicationContractContext:
## 🟣 بخش 5: FrontOffice UI - کارهای باقی‌مانده
**وضعیت**: 10% (چند صفحه پایه)
**زمان تخمینی**: 3 هفته
**وضعیت**: 60% ✅ (Mock Services → gRPC تبدیل شده)
**زمان تخمینی**: 2 هفته
### تسک‌های اصلی:
### ✅ تکمیل شده (2024-12-26):
**الف. Authentication Pages** (3 روز)
**Services متصل به BFF gRPC:**
```
- [ ] Pages/Auth/Register.razor
- [ ] Pages/Auth/Login.razor
- [ ] Pages/Auth/VerifyOtp.razor
✅ ClubMembershipService → ClubMembershipContract.ClubMembershipContractClient
✅ NetworkMembershipService → NetworkMembershipContract.NetworkMembershipContractClient
✅ CommissionService → CommissionContract.CommissionContractClient
✅ WalletService → UserWalletContract.UserWalletContractClient (6 متد)
```
**Proto References اضافه شده:**
```
✅ FrontOffice.BFF.ClubMembership.Protobuf
✅ FrontOffice.BFF.Commission.Protobuf
✅ FrontOffice.BFF.NetworkMembership.Protobuf
✅ FrontOffice.BFF.DiscountShop.Protobuf
✅ FrontOffice.BFF.UserWallet.Protobuf (ProjectReference)
```
### تسک‌های باقیمانده:
**الف. Authentication Pages** (2 روز) - موجود نیاز به بررسی
```
- [✅] Pages/Auth/Register.razor
- [✅] Pages/Auth/Login.razor
- [ ] Pages/Auth/VerifyOtp.razor (بررسی)
- [ ] Pages/Auth/ForgotPassword.razor
```
**ب. Profile Pages** (4 روز)
**ب. Profile Pages** (2 روز)
```
- [ ] Pages/Profile/Index.razor
- [ ] Pages/Profile/EditProfile.razor
- [ ] Pages/Profile/Addresses.razor
- [] Pages/Profile/Index.razor
- [] Pages/Profile/EditProfile.razor
- [] Pages/Profile/Addresses.razor
- [ ] Pages/Profile/ChangePassword.razor
```
**ج. Order Pages** (5 روز)
**ج. Order Pages** (3 روز)
```
- [ ] Pages/Orders/MyOrders.razor
- [ ] Pages/Orders/OrderDetails.razor
- [] Pages/Orders/MyOrders.razor
- [] Pages/Orders/OrderDetails.razor
- [ ] Pages/Orders/Tracking.razor
```
**د. Cart & Checkout** (5 روز)
**د. Cart & Checkout** (3 روز)
```
- [ ] Pages/Cart/Index.razor (با نمایش VAT)
- [ ] Pages/Checkout/Shipping.razor
- [ ] Pages/Checkout/Payment.razor
- [ ] Pages/Checkout/Confirmation.razor
- [] Pages/Cart/Index.razor (با نمایش VAT)
- [] Pages/Checkout/Shipping.razor
- [] Pages/Checkout/Payment.razor
- [] Pages/Checkout/Confirmation.razor
- [⏳] DiscountCode validation (نیاز به ValidateDiscountCode RPC در CMS)
```
**ه. Club & Commission** (4 روز)
**ه. Club & Commission** ✅ تکمیل شده (متصل به gRPC)
```
- [ ] Pages/Club/Membership.razor
- [ ] Pages/Commission/MyCommissions.razor
- [ ] Pages/Commission/Withdrawal.razor
- [] Pages/Club/Membership.razor
- [] Pages/Commission/MyCommissions.razor
- [] Pages/Commission/Withdrawal.razor
```
**و. Network Pages** (2 روز)
**و. Network Pages** ✅ تکمیل شده (متصل به gRPC)
```
- [ ] Pages/Network/Tree.razor
- [ ] Pages/Network/Position.razor
- [] Pages/Network/Tree.razor
- [] Pages/Network/Position.razor
```
**ز. Wallet Pages** ✅ تکمیل شده (متصل به gRPC)
```
- [✅] Pages/Wallet/Index.razor
- [✅] Pages/Wallet/Transactions.razor
- [✅] Pages/Wallet/Withdrawal.razor
```
**ح. Package Purchase** (2 روز)
```
- [ ] Pages/Packages/Index.razor
- [ ] Pages/Packages/PurchasePackage.razor
- [ ] Pages/Packages/MyPackages.razor
- [ ] Pages/Packages/PackageDetails.razor
```
### ⏳ نیاز به توسعه CMS:
```
- PackageDetail Reviews → نیاز به Review/Comment entity در CMS
- Checkout Discount Validation → نیاز به ValidateDiscountCode RPC در CMS
- Contact Form → نیاز به ContactMessage entity در CMS
```
**مستندات**: `FrontOffice/README.md`
+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 @@
---
**منتظر بروزرسانی روزانه هستیم** 🚀