Refactor code structure for improved readability and maintainability

This commit is contained in:
masoodafar-web
2026-02-10 22:06:46 +03:30
parent 8f02cec22f
commit 5149b9a89c
182 changed files with 7305 additions and 243980 deletions
+158
View File
@@ -0,0 +1,158 @@
# کارهای باقیمانده - CMS Microservice
> آخرین بروزرسانی: February 10, 2026
> Build Status: ✅ SUCCESS (0 Errors)
---
## 📊 خلاصه وضعیت
| دسته | تعداد | وضعیت |
|------|--------|--------|
| ~~متدهای Unimplemented~~ | ~~30~~**0** | ✅ همه انجام شد |
| ~~متدهای Mock/جعلی~~ | ~~13~~**0** | ✅ همه انجام شد |
| ~~گزارش‌های TODO (صفر برمی‌گردونه)~~ | ~~2~~**0** | ✅ هر دو پیاده شد |
| ~~فایل تنظیمات اشتباه (Staging)~~ | ~~1~~**0** | ✅ فیکس شد |
| ~~Entity‌های تکراری مُرده~~ | ~~3~~**0** | ✅ حذف شد |
| **مجموع باقیمانده** | **0** | ✅ 🎉 |
---
## ✅ کارهای انجام‌شده
### فاز ۱ — فیکس‌های فوری ✅
- [x] اصلاح `appsettings.Staging.json` — URL از `backoffice-bff` به `cms` تغییر کرد
- [x] حذف `Products.cs`, `ProductImages.cs`, `ProductGalleries.cs` (Entity‌های تکراری)
- [x] اصلاح `nameof(Products)``nameof(Product)` در `GetCustomerProductsQueryHandler`
### فاز ۲ — ProductsService ✅ (8 متد)
- [x] `BulkUpdateProductPrices` — بروزرسانی قیمت/تخفیف/تخفیف باشگاه
- [x] `BulkUpdateProductStock` — بروزرسانی موجودی (SET/ADD/SUBTRACT)
- [x] `GetLowStockProducts` — محصولات کم‌موجودی با صفحه‌بندی
- [x] `ToggleProductStatus` — فعال/غیرفعال محصول
- [x] `GetProductsForCategory` — DragDrop: محصولات برای دسته‌بندی
- [x] `GetCategories` — DragDrop: دسته‌بندی‌ها برای محصول
- [x] `UpdateProductCategories` — DragDrop: بروزرسانی دسته‌بندی‌های محصول
- [x] `UpdateCategoryProducts` — DragDrop: بروزرسانی محصولات دسته‌بندی
### فاز ۳ — CityService ✅ (6 متد) + CategoryService ✅ (1 متد)
- [x] `GetCitiesForCustomer` — لیست شهرها با فیلتر و صفحه‌بندی
- [x] `GetCityByIdForCustomer` — شهر با ID
- [x] `GetCitiesByStateForCustomer` — شهرهای استان
- [x] `CreateCity` — ایجاد شهر
- [x] `UpdateCity` — بروزرسانی شهر
- [x] `DeleteCity` — حذف نرم شهر
- [x] `GetCategoryByIdForCustomer` — دسته‌بندی با ID
### فاز ۴ — UserCartsService ✅ (5 متد)
- [x] `AddNewUserCart` — افزودن به سبد خرید
- [x] `UpdateUserCart` — بروزرسانی تعداد
- [x] `DeleteUserCart` — حذف نرم
- [x] `GetUserCart` — دریافت آیتم سبد
- [x] `GetAllUserCartsByFilter` — لیست سبد خرید با فیلتر و صفحه‌بندی
### فاز ۵ — InventoryService ✅ (7 متد)
- [x] `ReserveStock` — رزرو موجودی
- [x] `ReleaseReservation` — آزادسازی رزرو
- [x] `ConfirmSale` — تأیید فروش
- [x] `ProcessReturn` — پردازش مرجوعی
- [x] `BulkAddStock` — افزودن موجودی انبوه
- [x] `GetInventorySummary` — خلاصه انبارداری (واقعی با DB)
- [x] `GetStockValueReport` — گزارش ارزش موجودی (واقعی با DB)
### فاز ۶ — UserOrderService ✅ (8 Unimplemented + 3 Mock)
- [x] `CreateNewUserOrder` — ایجاد سفارش
- [x] `UpdateUserOrder` — بروزرسانی سفارش
- [x] `DeleteUserOrder` — حذف نرم
- [x] `CancelOrder` — لغو سفارش (ادمین)
- [x] `UpdateOrderStatus` — بروزرسانی وضعیت
- [x] `GetOrdersByDateRange` — سفارشات بازه زمانی
- [x] `ApplyDiscountToOrder` — اعمال تخفیف
- [x] `CalculateOrderPV` — محاسبه PV
- [x] `CustomerCancelOrder` — لغو سفارش مشتری (با ریفاند کیف پول)
- [x] `CustomerTrackOrder` — پیگیری سفارش واقعی
- [x] `CustomerReorderPreviousOrder` — سفارش مجدد واقعی
### فاز ۷ — ConfigurationService ✅ (2 متد)
- [x] `CreateOrUpdateConfiguration``FailedPrecondition` (عمداً read-only)
- [x] `DeactivateConfiguration``FailedPrecondition` (عمداً read-only)
### فاز ۸ — UserService ✅ (5 متد Mock → واقعی)
- [x] `GetCustomerUser` — خواندن از DB با `_context.Users` + JWT userId
- [x] `UpdateCustomerProfile` — بروزرسانی FirstName/LastName/Email/NationalCode/BirthDate
- [x] `ChangeCustomerPassword` — PBKDF2 verify + hash با `IHashService`
- [x] `UploadCustomerAvatar` — ارسال به FMS با `IFileManagementService` + ذخیره URL
- [x] `UpdateCustomerSettings` — بروزرسانی EmailNotifications/SmsNotifications/PushNotifications
### فاز ۹ — TransactionsService ✅ (2 متد Mock → واقعی)
- [x] `CustomerPaymentRequest` — ایجاد Transaction + `IPaymentGatewayService.InitiatePaymentAsync`
- [x] `CustomerPaymentVerification``IPaymentGatewayService.VerifyPaymentAsync` + آپدیت Transaction
### فاز ۱۰ — PackageService ✅ (2 متد Mock → واقعی)
- [x] `CustomerPurchasePackage` — ایجاد Transaction + UserPackagePurchase + payment initiate
- [x] `CustomerVerifyPackagePurchase` — verify payment + آپدیت Transaction و Purchase
### فاز ۱۱ — UserWalletService ✅ (1 متد Mock → واقعی)
- [x] `CustomerWithdrawBalance` — آپدیت UserCommissionPayout با WithdrawalMethod/IbanNumber + Status=WithdrawRequested
---
## ✅ همه ۴۹ آیتم تکمیل شد! 🎉
> هیچ Mock یا Unimplemented متدی باقی نمانده.
---
## 📝 نکات فنی مهم
### سایر آیتم‌ها (غیر‌بحرانی)
- `Infrastructure/Services/InventoryService.cs:L546` — یک `TODO: Implement rollback logic` (در لایه Infrastructure، نه WebApi)
- `Infrastructure/Services/DayaLoanApiService.cs``MockDayaLoanApiService` (سرویس شبیه‌سازی API دایا — عمدی برای تست)
### الگوهای فنی استفاده‌شده
- **oneof در protobuf**: باید از `request.HasPaymentStatus` استفاده بشه (نه `request.PaymentStatusItem != null`)
- **StringValue wrapper**: در C# مستقیم `string` هست (بدون `.Value`)
- **Int64Value wrapper**: در C# `long?` هست (`.Value` برای unwrap)
- **DeliveryStatus**: در proto فقط ۵ مقدار (None تا Returned)، در Domain ۶ مقدار (+ Cancelled)
- **ProductType**: در C# protobuf `ProductType.Unspecified` هست (نه `ProductTypeUnspecified`)
- **ICurrentUserService.UserId**: `string?` — همیشه با `long.TryParse` تبدیل بشه
- **IPaymentGatewayService**: ثبت‌شده در DI (`DayaPaymentService` واقعی / `MockPaymentGatewayService` تست)
- **IHashService**: PBKDF2 — `HashPassword()` / `VerifyPassword()`
- **IFileManagementService**: FMS gRPC — `UploadFileAsync(dir, bytes, mime, name, ct)`
---
## 📋 ترتیب انجام کارها (تکمیل‌شده)
- [x] فاز ۱ — فیکس‌های فوری (Staging URL, Dead Entities)
- [x] فاز ۲ — ProductsService (8 متد)
- [x] فاز ۳ — CityService (6 متد) + CategoryService (1 متد)
- [x] فاز ۴ — UserCartsService (5 متد)
- [x] فاز ۵ — InventoryService (7 متد)
- [x] فاز ۶ — UserOrderService (8 Unimplemented + 3 Mock)
- [x] فاز ۷ — ConfigurationService (2 متد)
- [x] فاز ۸ — UserService (5 Mock → واقعی)
- [x] فاز ۹ — TransactionsService (2 Mock → واقعی)
- [x] فاز ۱۰ — PackageService (2 Mock → واقعی)
- [x] فاز ۱۱ — UserWalletService (1 Mock → واقعی)
---
## ✅ تاریخچه انجام کارها
| تاریخ | کار | وضعیت |
|-------|------|--------|
| Dec 2025 | مهاجرت ۲۰/۲۰ سرویس BackOffice BFF→CMS | ✅ |
| Jan 2026 | فعال‌سازی ماژول‌های DiscountShop | ✅ |
| Feb 2026 | یکپارچه‌سازی FMS (آپلود فایل با ImageSharp) | ✅ |
| Feb 2026 | رفع باگ OTP SMS (Kavenegar) | ✅ |
| Feb 2026 | رفع باگ BCrypt Invalid Salt Version | ✅ |
| Feb 2026 | شناسایی مشکل Token/Roles (`_Imports.razor`) | ✅ |
| Feb 2026 | پیاده‌سازی ۳۰ متد Unimplemented | ✅ |
| Feb 2026 | جایگزینی ۳ متد Mock (UserOrder مشتری) | ✅ |
| Feb 2026 | فیکس Staging URL, Dead Entities, Build Errors | ✅ |
| Feb 2026 | جایگزینی ۵ متد Mock (UserService) — DB+JWT+FMS+Hash | ✅ |
| Feb 2026 | جایگزینی ۲ متد Mock (TransactionsService) — PaymentGateway | ✅ |
| Feb 2026 | جایگزینی ۲ متد Mock (PackageService) — Purchase+Verify | ✅ |
| Feb 2026 | جایگزینی ۱ متد Mock (UserWalletService) — Withdraw | ✅ |
| Feb 2026 | **همه ۴۹/۴۹ آیتم تکمیل — Build بدون خطا** | ✅ 🎉 |