8.7 KiB
8.7 KiB
کارهای باقیمانده - CMS Microservice
آخرین بروزرسانی: February 10, 2026
Build Status: ✅ SUCCESS (0 Errors)
📊 خلاصه وضعیت
| دسته | تعداد | وضعیت |
|---|---|---|
| ✅ همه انجام شد | ||
| ✅ همه انجام شد | ||
| ✅ هر دو پیاده شد | ||
| ✅ فیکس شد | ||
| ✅ حذف شد | ||
| مجموع باقیمانده | 0 | ✅ 🎉 |
✅ کارهای انجامشده
فاز ۱ — فیکسهای فوری ✅
- اصلاح
appsettings.Staging.json— URL ازbackoffice-bffبهcmsتغییر کرد - حذف
Products.cs,ProductImages.cs,ProductGalleries.cs(Entityهای تکراری) - اصلاح
nameof(Products)→nameof(Product)درGetCustomerProductsQueryHandler
فاز ۲ — ProductsService ✅ (8 متد)
BulkUpdateProductPrices— بروزرسانی قیمت/تخفیف/تخفیف باشگاهBulkUpdateProductStock— بروزرسانی موجودی (SET/ADD/SUBTRACT)GetLowStockProducts— محصولات کمموجودی با صفحهبندیToggleProductStatus— فعال/غیرفعال محصولGetProductsForCategory— DragDrop: محصولات برای دستهبندیGetCategories— DragDrop: دستهبندیها برای محصولUpdateProductCategories— DragDrop: بروزرسانی دستهبندیهای محصولUpdateCategoryProducts— DragDrop: بروزرسانی محصولات دستهبندی
فاز ۳ — CityService ✅ (6 متد) + CategoryService ✅ (1 متد)
GetCitiesForCustomer— لیست شهرها با فیلتر و صفحهبندیGetCityByIdForCustomer— شهر با IDGetCitiesByStateForCustomer— شهرهای استانCreateCity— ایجاد شهرUpdateCity— بروزرسانی شهرDeleteCity— حذف نرم شهرGetCategoryByIdForCustomer— دستهبندی با ID
فاز ۴ — UserCartsService ✅ (5 متد)
AddNewUserCart— افزودن به سبد خریدUpdateUserCart— بروزرسانی تعدادDeleteUserCart— حذف نرمGetUserCart— دریافت آیتم سبدGetAllUserCartsByFilter— لیست سبد خرید با فیلتر و صفحهبندی
فاز ۵ — InventoryService ✅ (7 متد)
ReserveStock— رزرو موجودیReleaseReservation— آزادسازی رزروConfirmSale— تأیید فروشProcessReturn— پردازش مرجوعیBulkAddStock— افزودن موجودی انبوهGetInventorySummary— خلاصه انبارداری (واقعی با DB)GetStockValueReport— گزارش ارزش موجودی (واقعی با DB)
فاز ۶ — UserOrderService ✅ (8 Unimplemented + 3 Mock)
CreateNewUserOrder— ایجاد سفارشUpdateUserOrder— بروزرسانی سفارشDeleteUserOrder— حذف نرمCancelOrder— لغو سفارش (ادمین)UpdateOrderStatus— بروزرسانی وضعیتGetOrdersByDateRange— سفارشات بازه زمانیApplyDiscountToOrder— اعمال تخفیفCalculateOrderPV— محاسبه PVCustomerCancelOrder— لغو سفارش مشتری (با ریفاند کیف پول)CustomerTrackOrder— پیگیری سفارش واقعیCustomerReorderPreviousOrder— سفارش مجدد واقعی
فاز ۷ — ConfigurationService ✅ (2 متد)
CreateOrUpdateConfiguration→FailedPrecondition(عمداً read-only)DeactivateConfiguration→FailedPrecondition(عمداً read-only)
فاز ۸ — UserService ✅ (5 متد Mock → واقعی)
GetCustomerUser— خواندن از DB با_context.Users+ JWT userIdUpdateCustomerProfile— بروزرسانی FirstName/LastName/Email/NationalCode/BirthDateChangeCustomerPassword— PBKDF2 verify + hash باIHashServiceUploadCustomerAvatar— ارسال به FMS باIFileManagementService+ ذخیره URLUpdateCustomerSettings— بروزرسانی EmailNotifications/SmsNotifications/PushNotifications
فاز ۹ — TransactionsService ✅ (2 متد Mock → واقعی)
CustomerPaymentRequest— ایجاد Transaction +IPaymentGatewayService.InitiatePaymentAsyncCustomerPaymentVerification—IPaymentGatewayService.VerifyPaymentAsync+ آپدیت Transaction
فاز ۱۰ — PackageService ✅ (2 متد Mock → واقعی)
CustomerPurchasePackage— ایجاد Transaction + UserPackagePurchase + payment initiateCustomerVerifyPackagePurchase— verify payment + آپدیت Transaction و Purchase
فاز ۱۱ — UserWalletService ✅ (1 متد Mock → واقعی)
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)
📋 ترتیب انجام کارها (تکمیلشده)
- فاز ۱ — فیکسهای فوری (Staging URL, Dead Entities)
- فاز ۲ — ProductsService (8 متد)
- فاز ۳ — CityService (6 متد) + CategoryService (1 متد)
- فاز ۴ — UserCartsService (5 متد)
- فاز ۵ — InventoryService (7 متد)
- فاز ۶ — UserOrderService (8 Unimplemented + 3 Mock)
- فاز ۷ — ConfigurationService (2 متد)
- فاز ۸ — UserService (5 Mock → واقعی)
- فاز ۹ — TransactionsService (2 Mock → واقعی)
- فاز ۱۰ — PackageService (2 Mock → واقعی)
- فاز ۱۱ — 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 بدون خطا | ✅ 🎉 |