Files
docs/05-TASKS/CURRENT-SPRINT.md
T
masoodafar-web 996a6e885b 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.
2025-12-04 19:54:08 +03:30

12 KiB

🎯 اسپرینت جاری (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

منطق جدید:

// ✅ سقف روی هر دست جداگانه
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

منتظر بروزرسانی روزانه هستیم 🚀