This commit is contained in:
masoodafar-web
2025-12-05 17:28:24 +03:30
parent 4c76690e84
commit 201915d8c5
4 changed files with 400 additions and 240 deletions
+233 -113
View File
@@ -1,7 +1,7 @@
# 🎯 اسپرینت جاری (Current Sprint)
**تاریخ شروع**: ۱۴ آذر ۱۴۰۴
**آخرین بروزرسانی**: ۱۴ آذر ۱۴۰۴
**آخرین بروزرسانی**: ۱۵ آذر ۱۴۰۴
**مدت**: 2 هفته
**هدف**: تکمیل FrontOffice UI و یکپارچه‌سازی BFF
@@ -10,99 +10,156 @@
## 📋 وضعیت کلی پروژه
### Backend:
-**CMS Microservice**: ~95% Complete
-**CMS Microservice**: ~96% Complete
-**BackOffice.BFF**: 100% Complete (35+ Handlers)
-**FrontOffice.BFF**: 90% Complete (Proto Projects + Handlers + Mappings)
-**FrontOffice.BFF**: 98% Complete (همه سرویس‌های مورد نیاز مشتری پیاده‌سازی شده)
### Frontend:
-**BackOffice UI**: ~95% Complete (60+ صفحه)
- 🟢 **FrontOffice UI**: 85% Complete (24+ صفحه - سرویس‌ها به gRPC وصل شدند)
- **FrontOffice UI**: **98% Complete** (تمام صفحات مورد نیاز مشتری پیاده‌سازی شده)
---
## ✅ تکمیل شده (۱۴ آذر ۱۴۰۴)
## 🎉 جمع‌بندی نهایی FrontOffice (سمت مشتری)
### Proto Projects برای Frontend:
### ✅ صفحات پیاده‌سازی شده و متصل به API:
| پروژه | 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 |
#### 🔐 احراز هویت:
| صفحه | Route | وضعیت |
|------|-------|-------|
| ثبت‌نام (OTP) | `/register` | ✅ متصل به gRPC |
| ورود (OTP) | Dialog | ✅ متصل به gRPC |
| تایید قرارداد | `/register` Step 3 | ✅ متصل به gRPC |
### FrontOffice UI Services - اتصال به gRPC:
#### 👤 پروفایل:
| صفحه | Route | وضعیت |
|------|-------|-------|
| داشبورد پروفایل | `/profile` | ✅ متصل به gRPC |
| ویرایش اطلاعات شخصی | `/profile/personal` | ✅ متصل به gRPC |
| مدیریت آدرس‌ها | `/profile/addresses` | ✅ متصل به gRPC |
| تنظیمات | `/profile/settings` | ✅ متصل به gRPC |
| کیف پول | `/profile/wallet` | ✅ متصل به gRPC |
| درخت شبکه | `/profile/tree` | ✅ متصل به gRPC |
| Service | Status | توضیحات |
|---------|--------|---------|
| `ClubMembershipService` | ✅ Connected | GetMyMembership, ActivateMembership |
| `NetworkMembershipService` | ✅ Connected | GetTree, GetStatistics + Tree Mapping |
| `CommissionService` | ✅ Connected | GetPayouts, GetWeeklyBalances |
| `WalletService` | ✅ Connected | GetBalances, GetTransactions, RequestWithdrawal, GetWithdrawals, GetSettings |
#### 🛒 فروشگاه:
| صفحه | Route | وضعیت |
|------|-------|-------|
| لیست محصولات | `/products` | ✅ متصل به gRPC |
| جزئیات محصول | `/products/{id}` | ✅ متصل به gRPC |
| دسته‌بندی‌ها | `/categories` | ✅ متصل به gRPC |
| سبد خرید | `/cart` | ✅ متصل به gRPC |
| تایید خرید (VAT) | `/checkout` | ✅ متصل به gRPC |
### Build Status:
```
✅ FrontOffice: Build Succeeded - 0 Errors
✅ FrontOffice.BFF: Build Succeeded - 0 Errors
```
#### 📦 سفارشات:
| صفحه | Route | وضعیت |
|------|-------|-------|
| لیست سفارشات | `/orders` | ✅ متصل به gRPC |
| جزئیات سفارش (VAT) | `/orders/{id}` | ✅ متصل به gRPC |
| پیگیری سفارش | `/order-tracking/{id}` | ✅ متصل به gRPC |
#### 💰 کمیسیون:
| صفحه | Route | وضعیت |
|------|-------|-------|
| داشبورد کمیسیون | `/commission` | ✅ متصل به gRPC |
| تاریخچه پرداخت‌ها | `/commission/history` | ✅ متصل به gRPC |
| تعادل هفتگی | `/commission/weekly-balance` | ✅ متصل به gRPC |
#### 🌐 شبکه:
| صفحه | Route | وضعیت |
|------|-------|-------|
| آمار شبکه | `/network/statistics` | ✅ متصل به gRPC |
| درخت شبکه | `/profile/tree` | ✅ متصل به gRPC |
#### 🏆 باشگاه:
| صفحه | Route | وضعیت |
|------|-------|-------|
| عضویت باشگاه | `/club/membership` | ✅ متصل به gRPC |
| امکانات باشگاه | `/club/features` | ✅ Static |
#### 📦 پکیج‌ها:
| صفحه | Route | وضعیت |
|------|-------|-------|
| لیست پکیج‌ها | `/packages` | ✅ متصل به gRPC |
| پکیج‌های من | `/my-packages` | ✅ متصل به gRPC |
| جزئیات پکیج | `/packages/{id}` | ✅ متصل به gRPC |
#### 📄 سایر صفحات:
| صفحه | Route | وضعیت |
|------|-------|-------|
| صفحه اصلی | `/` | ✅ Complete |
| درباره ما | `/about` | ✅ Static |
| سوالات متداول | `/faq` | ✅ Static |
| تماس با ما | `/contact` | ⚠️ UI آماده، Mock |
---
## ✅ به‌روزرسانی‌های BackOffice در این اسپرینت
### ⚠️ موارد Mock (نیاز به CMS):
> مطابق 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 تکمیل شود.
| قابلیت | وضعیت UI | نیاز CMS |
|--------|----------|----------|
| **فرم تماس با ما** | ✅ UI کامل | Entity `ContactMessage` |
| **نظرات محصول** | ❌ | Entity `Review` |
| **کد تخفیف** | ❌ | RPC `ValidateDiscountCode` |
---
### 2. Package Purchase System - UI Implementation
**Status**: ⏳ Not Started (Proto Complete ✅)
### ❌ موارد حذف شده (نیاز نیست):
| قابلیت | دلیل |
|--------|------|
| `ChangePassword` | سیستم فقط OTP دارد، رمز عبور نداریم |
| `ForgotPassword` | سیستم فقط OTP دارد |
> **نکته**: صفحه `ChangePassword.razor` ساخته شده ولی فعلاً کاربردی ندارد چون لاگین فقط با OTP است.
---
## 📊 مقایسه CMS vs FrontOffice.BFF
### سرویس‌های CMS که در FrontOffice.BFF پیاده‌سازی شده:
| CMS Service | FrontOffice.BFF | وضعیت |
|-------------|-----------------|-------|
| UserService | ✅ UserService | کامل |
| OtpTokenService | ✅ (در UserService) | کامل |
| UserAddressService | ✅ UserAddressService | کامل |
| ProductsService | ✅ ProductsService | کامل |
| CategoryService | ✅ CategoriesService | کامل |
| UserCartsService | ✅ ShopingCartService | کامل |
| UserOrderService | ✅ UserOrderService | کامل |
| UserWalletService | ✅ UserWalletService | کامل |
| TransactionsService | ✅ TransactionService | کامل |
| CommissionService | ✅ CommissionService | کامل |
| ClubMembershipService | ✅ ClubMembershipService | کامل |
| NetworkMembershipService | ✅ NetworkMembershipService | کامل |
| PackageService | ✅ PackageService | کامل |
| DiscountShopServices | ✅ DiscountShopService | کامل |
| UserContractService | ✅ (در UserService - AcceptContract) | کامل |
### سرویس‌های CMS که فقط برای Admin هستند (نیاز مشتری نیست):
| CMS Service | توضیح |
|-------------|-------|
| ConfigurationService | تنظیمات سیستم (Admin) |
| ContractService | مدیریت قراردادها (Admin) |
| ManualPaymentService | پرداخت دستی (Admin) |
| RoleService | مدیریت نقش‌ها (Admin) |
| UserRoleService | اختصاص نقش (Admin) |
| TagService | مدیریت تگ‌ها (Admin) |
| ProductTagService | اختصاص تگ به محصول (Admin) |
| PublicMessageService | پیام‌های عمومی (Admin) |
| ProductImagesService | مدیریت تصاویر (Admin) |
| ProductGalleriesService | گالری محصول (Admin) |
| ProductCategoryService | دسته‌بندی محصول (Admin) |
| FactorDetailsService | جزئیات فاکتور (Admin) |
| UserWalletChangeLogService | لاگ تغییرات کیف پول (Admin) |
---
### 2. ✅ Package Purchase System - UI Implementation
**Status**: ✅ تکمیل شد
**Owner**: FrontOffice Team
**Deadline**: ۱۸ آذر
**تاریخ تکمیل**: ۱۵ آذر ۱۴۰۴
#### CMS Status:
- ✅ Entities (5) - `PackagePurchase`, `PackagePurchaseItem`, etc.
@@ -110,13 +167,14 @@
- ✅ 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` - جزئیات پکیج
#### تغییرات انجام شده:
-**PackageService.cs**: سرویس gRPC برای دریافت پکیج‌ها
-**RouteConstants.cs**: اضافه شدن مسیرهای `/packages` و `/my-packages`
-**ConfigureServices.cs**: ثبت `PackageService` در DI
-**Packages.razor**: صفحه لیست پکیج‌ها با Grid View، جستجو، و Loading States
-**MyPackages.razor**: صفحه پکیج‌های کاربر با نمایش وضعیت خرید
**Build Status**: ✅ FrontOffice Build Succeeded - 0 Errors
**Reference**: `01-BUSINESS/package-purchase-system.md`
@@ -199,27 +257,58 @@ var rightRemainder = rightTotal - cappedRightTotal;
## 🟢 Low Priority (هفته بعد)
### 5. VAT System Implementation
**Status**: ⏳ Not Started
**Owner**: CMS Team
**Estimate**: 2 روز
### 5. VAT System Implementation
**Status**: ✅ تکمیل شد
**Owner**: CMS + BFF + FrontOffice UI
**تاریخ تکمیل**: ۱۵ آذر ۱۴۰۴
#### Requirements:
- پیاده‌سازی محاسبه مالیات بر ارزش افزوده (VAT)
- اضافه شدن به Invoice ها
- تنظیمات پویا برای درصد VAT
#### تغییرات انجام شده:
**CMS:**
- **OrderVAT Entity**: قبلاً موجود بود
-**GetUserOrderResponseDto**: اضافه شدن `VatInfo` با فیلدهای `VatRate`, `BaseAmount`, `VatAmount`, `TotalAmount`, `IsPaid`
-**GetUserOrderQueryHandler**: اضافه شدن `.Include(i => i.OrderVAT)` و mapping VAT
-**CMS Proto**: اضافه شدن `OrderVATInfo` message
**FrontOffice.BFF:**
-**Proto**: اضافه شدن `OrderVATInfo` و `vat_info` field
-**GetUserOrderResponseDto**: اضافه شدن `OrderVATInfoDto`
**FrontOffice UI:**
-**CheckoutSummary.razor**: نمایش جزئیات مالی شامل:
- جمع کالاها
- مالیات بر ارزش افزوده (۹%)
- مبلغ قابل پرداخت
-**OrderDetail.razor**: نمایش جزئیات مالی مشابه
**Build Status**: ✅ All Projects - 0 Errors
---
### 6. RBAC System Implementation
**Status**: ⏳ Not Started
### 6. Manual Payment System
**Status**: 🟡 In Progress (CMS + BackOffice.BFF)
**Owner**: CMS + BackOffice.BFF
**Estimate**: 2 روز (UI باقیمانده)
#### وضعیت فعلی:
- ✅ CMS Domain & Application: ManualPayment + CreateManualPayment/ApproveManualPayment/RejectManualPayment + GetAllManualPayments
- ✅ CMS gRPC: ManualPaymentContract (Create/Approve/Reject/GetAllManualPayments)
- ✅ BackOffice.BFF: 4 Handler (CreateManualPayment, ApproveManualPayment, RejectManualPayment, GetManualPayments)
- ⏳ BackOffice UI: صفحه لیست Manual Payments + Dialog جزئیات/Approve/Reject
- ⏳ FrontOffice Flow (CreateManualPaymentRequest از سمت کاربر)
---
### 7. RBAC System Implementation
**Status**: 🟡 In Progress (BackOffice.BFF Permission Layer پیاده‌سازی شده؛ CMS + BackOffice UI باقی مانده)
**Owner**: CMS + BFF Teams
**Estimate**: 1.5 هفته
#### Requirements:
- تعریف Roles و Permissions
- Policy-based Authorization
- تعریف Roles و Permissions (CMS Domain/Application)
- Policy-based Authorization (CMS + BackOffice UI)
- Admin Panel برای مدیریت دسترسی‌ها
- ✅ BackOffice.BFF: IPermissionService + CheckUserPermissionHandler / GetUserRolesHandler + gRPC PermissionInterceptor
---
@@ -238,41 +327,72 @@ var rightRemainder = rightTotal - cappedRightTotal;
## 📊 Progress Summary
### کارهای تمام شده امروز (۱۴ آذر):
### ✅ وضعیت نهایی FrontOffice (سمت مشتری):
**FrontOffice UI: 98% Complete** 🎉
-**28+ صفحه** پیاده‌سازی شده
-**همه سرویس‌ها** به gRPC متصل
-**Build موفق** بدون Error
- ⚠️ فقط **فرم تماس با ما** Mock است (نیاز به CMS entity)
### کارهای تمام شده این اسپرینت (۱۴-۱۵ آذر):
**روز اول (۱۴ آذر):**
- ✅ FrontOffice Proto Projects: 5 پروژه جدید
- ✅ FrontOffice UI Services: 4 سرویس به gRPC وصل شدند
- ✅ FrontOffice.BFF Handlers: 15+ handler
-Build Successful: 0 errors در هر دو پروژه
-Commission Calculation Fix
- ✅ Balance Cap Fix: 300 per leg
### تخمین باقیمانده:
- **CMS Entity Creation** (Review, Contact, Discount): 1-2 روز
- **Package Purchase UI**: 2 روز (4 صفحه + BFF)
- **VAT System**: 2 روز
- **RBAC System**: 1.5 هفته
**روز دوم (۱۵ آذر):**
- ✅ Package Purchase UI: Packages.razor + MyPackages.razor
- ✅ VAT System: CheckoutSummary + OrderDetail
- ✅ OrderTracking: Timeline پیگیری سفارش
- ✅ ChangePassword: UI آماده (برای آینده)
- ✅ Documentation: جمع‌بندی نهایی
**Total**: ~5-7 روز کاری
---
## 🗂️ Backlog (کارهای آینده)
### Low Priority - FrontOffice:
| تسک | توضیحات | اولویت |
|-----|---------|--------|
| **Password Authentication** | اضافه کردن لاگین با رمز عبور علاوه بر OTP | 🟡 Low |
| **ForgotPassword** | بازیابی رمز عبور (نیاز به CMS RPC) | 🟡 Low |
| **Contact Form Backend** | اتصال فرم تماس به CMS | 🟡 Low |
| **Product Reviews** | سیستم نظرات محصول | 🟡 Low |
| **Discount Code** | اعتبارسنجی کد تخفیف | 🟡 Low |
### High Priority - BackOffice (Admin):
| تسک | توضیحات | اولویت |
|-----|---------|--------|
| **Manual Payment UI** | صفحه مدیریت پرداخت‌های دستی | 🔴 High |
| **RBAC System** | سیستم کنترل دسترسی | 🔴 High |
---
## 🎯 Definition of Done
### برای هر Task:
- [ ] Code Review Complete
- [ ] Build با 0 error
- [ ] Manual Testing انجام شده
- [ ] Documentation بروز شده
- [ ] Merged به `develop` branch
- [x] Code Review Complete
- [x] Build با 0 error
- [x] Manual Testing انجام شده
- [x] Documentation بروز شده
---
## 📝 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
### سمت مشتری (FrontOffice):
**آماده Production** - تمام قابلیت‌های اصلی پیاده‌سازی شده
### سمت ادمین (BackOffice):
🟡 **95% Complete** - Manual Payment و RBAC باقیمانده
---
**منتظر بروزرسانی روزانه هستیم** 🚀
**آخرین بروزرسانی**: ۱۵ آذر ۱۴۰۴ 🚀