Implement Persian Date Conversion and Enhance User Network Information Service

- Added PersianDateTimeService for converting Gregorian dates to Persian format in the BackOffice frontend.
- Updated multiple frontend pages (Dashboard, UserPayouts, WorkerControl, UserNetworkInfo) to utilize the new Persian date service.
- Enhanced GetUserNetworkPositionDto with 28+ new fields for comprehensive user network data.
- Updated GetUserNetworkPositionQueryHandler to include new methods for calculating network statistics.
- Modified Protobuf messages to accommodate the new fields, increasing from 14 to 42.
- Refined week number calculation algorithm to ensure consistency across C# and SQL implementations.
- Created new CSV and Excel files for binary plan calculations.
- Ensured all changes are tested and validated for accuracy and performance.
This commit is contained in:
masoodafar-web
2025-12-20 06:15:59 +03:30
parent 13a3489765
commit 002e99f6bf
32 changed files with 10263 additions and 106 deletions
+122 -3
View File
@@ -1,9 +1,122 @@
# 🎯 اسپرینت جاری (Current Sprint)
**تاریخ شروع**: ۱۴ آذر ۱۴۰۴
**آخرین بروزرسانی**: ۱۵ آذر ۱۴۰۴
**آخرین بروزرسانی**: ۲۸ آذر ۱۴۰۴
**مدت**: 2 هفته
**هدف**: تکمیل FrontOffice UI و یکپارچه‌سازی BFF
**هدف**: تکمیل BackOffice UI و رفع Anti-Patterns معماری
---
## 🔧 تغییرات اخیر (۲۸ آذر) - Session 2
### ✅ سیستم مدیریت موجودی محصولات
**CMS Handler**: چک موجودی در `SubmitShopBuyOrderCommandHandler`
- چک موجودی قبل از تأیید سفارش
- کاهش `RemainingCount` و افزایش `SaleCount` بعد از پرداخت
- پیام خطای فارسی با جزئیات محصول و تعداد
**FrontOffice ProductDetail**:
- `MaxQty` داینامیک بر اساس موجودی واقعی
- نمایش Chip موجودی (سبز/قرمز) با تعداد
- غیرفعال کردن دکمه افزودن وقتی ناموجود
### ✅ ویژگی‌های باشگاه (ClubFeatures) - اصلاح معماری
**حذف فیلدها از UserClubFeature**:
- `DetailedDescriptionHtml`, `Icon`, `Color` فقط در `ClubFeature` (جدول قالب)
- `UserClubFeature` فقط: `IsActive`, `GrantedAt`, `Notes`
**فایل‌های اصلاح‌شده**:
- CMS: `UserClubFeatureDto`, `clubmembership.proto`, `ClubFeatureProfile`
- BFF: `GetClubFeaturesQueryHandler`, `GetClubFeaturesResponseDto`, `configuration.proto`, `ConfigurationProfile`
- FrontOffice: `ClubConfigurationService`, `FeaturesPage`
**MembershipPage - مزایای عضویت**:
1. شارژ ۵۶ میلیون تومان کیف پول فروشگاه تخفیفی
2. عضویت در شبکه بازاریابی و دریافت پورسانت
3. امکان جذب زیرمجموعه
### ✅ رفع باگ مدال آدرس‌ها
- **Snackbar تکراری**: حذف inject از code-behind (global در `_Imports.razor`)
- **NullReferenceException**: null check برای `dialog.Result`
### ✅ VAT و Cart Services
- **VATService**: نرخ پیش‌فرض 9.99% برای debug
- **CartService**: `EnsureInitializedAsync` + `IsAuthenticatedAsync` برای لود فقط برای کاربران لاگین‌شده
---
## 🔧 تغییرات قبلی (۲۸ آذر) - Session 1
### ✅ نمودار درختی شبکه در FrontOffice با d3-org-chart
**کتابخانه‌ها**: d3-org-chart v3 + d3.js v7 + d3-flextree v2.1.2
**ویژگی‌ها**:
- نمایش درختی باینری شبکه
- کلیک روی نود → نمایش درخت زیرمجموعه
- دکمه بازگشت به نود قبلی
- دکمه "درخت من" برای بازگشت به درخت کاربر
- انتخاب عمق درخت با MudSelect (2-10 سطح)
- FitToScreen برای تناسب با صفحه
- Responsive با MudBlazor components
### ✅ API جدید GetSubordinateTree
**Proto**: `GetSubordinateTreeRequest` با `target_user_id` و `max_depth`
**BFF Handler**: `GetSubordinateTreeQueryHandler.cs`
**Frontend Service**: `GetSubordinateTreeAsync(targetUserId, maxDepth)`
**امنیت**: JWT Authentication (بدون check سنگین subordinate)
### ✅ رفع مشکل Encoding فارسی در Geography
**Entity های تغییر یافته**: Country, State, City
**تغییرات Configuration**: `NVARCHAR` با `Persian_100_CI_AI` collation
**Migration**: `FixPersianCollation_Geography`
---
## 🔧 تغییرات قبلی (۱۷ آذر)
### ✅ رفع Anti-Pattern معماری در BackOffice.BFF
**مشکل**: BackOffice.BFF.WebApi از پکیج‌های Protobuf مربوط به CMS استفاده می‌کرد
**راه‌حل**:
- ساخت Protobuf های اختصاصی BackOffice.BFF (ClubMembership, Commission, Configuration, NetworkMembership)
- تغییر namespace از `CMSMicroservice` به `Foursat.BackOffice.BFF.*`
- تغییر GrpcServices از "Client" به "Both" (برای پشتیبانی هم از Server و هم Client)
- نسخه‌های منتشر شده: 0.0.6 (ClubMembership, Commission, NetworkMembership), 1.0.6 (Configuration)
### ✅ اضافه شدن HTTP Annotations به Protobuf
- افزودن `google/api/annotations.proto` به 4 پروژه Protobuf
- پیاده‌سازی HTTP endpoints برای Swagger: 33 endpoint
- ClubMembership: 7 endpoints
- Commission: 14 endpoints
- Configuration: 5 endpoints
- NetworkMembership: 7 endpoints
- نصب `Google.Api.CommonProtos v2.10.0`
### ✅ رفع مشکل Mapster با Immutable Types
- ساخت `NetworkMembershipProfile.cs` با استفاده از `MapWith()`
- مپینگ دستی برای `RepeatedField` و `Timestamp`
- رفع خطای "Cannot convert immutable type"
### ✅ پشتیبانی از Multi-Role Authorization
- تغییر `AuthorizationService` برای خواندن چندین رول از JWT
- اضافه شدن متد `GetUserRolesAsync()`
- استفاده از `user.FindAll(ClaimTypes.Role)` بجای `FindFirst`
- پشتیبانی از رول‌های آرایه‌ای در `ApiAuthenticationStateProvider`
### ✅ نمایش درختی شبکه (Network Tree Visualization)
- پیاده‌سازی درخت تعاملی با D3.js v7
- ویژگی‌های درخت:
- Zoom & Pan با mouse/touch
- دکمه Reset برای بازگشت به حالت اولیه
- رنگ‌بندی: سبز (فعال), قرمز (غیرفعال), سبز (چپ), نارنجی (راست)
- کلیک روی node برای بارگذاری درخت آن کاربر
- Responsive با viewBox و preserveAspectRatio
- اضافه شدن `UserAutoComplete` برای جستجوی کاربر
- جستجوی همزمان در Mobile, FirstName, LastName, NationalCode
- نمایش نام + موبایل در لیست
### ✅ رفع مشکلات UI
- رفع NullReferenceException در `NetworkTreeViewer` (JoinedAt null check)
- رفع timing issue در render درخت (StateHasChanged + Task.Delay)
- رفع خطای JSInterop با استفاده از `setDotNetReference`
---
@@ -42,10 +155,16 @@ GitLab Registry: `https://git.afrino.co/api/packages/FourSat/nuget/index.json`
-**CMS Microservice**: ~98% Complete
-**Daya Loan Integration**: 100% Complete (Real API implemented - Dec 6, 2025)
-**BackOffice.BFF**: 100% Complete (35+ Handlers)
-**Architecture Fixed**: Anti-pattern با CMS Protobuf رفع شد
-**HTTP Annotations**: 33 endpoint با Swagger support
-**Mapster Profiles**: NetworkMembership, Products با MapWith()
-**FrontOffice.BFF**: 98% Complete (همه سرویس‌های مورد نیاز مشتری پیاده‌سازی شده)
### Frontend:
-**BackOffice UI**: ~95% Complete (60+ صفحه)
-**BackOffice UI**: ~97% Complete (65+ صفحه)
-**Multi-Role Authorization**: پشتیبانی از چندین نقش همزمان
-**Network Tree Visualization**: نمایش درختی تعاملی با D3.js
-**User AutoComplete**: جستجوی پیشرفته کاربران
-**FrontOffice UI**: **98% Complete** (تمام صفحات مورد نیاز مشتری پیاده‌سازی شده)
---