# 🎯 اسپرینت جاری (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 **تاریخ شروع**: ۱۴ آذر ۱۴۰۴ **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 **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 --- **منتظر بروزرسانی روزانه هستیم** 🚀