Files
docs/cms/REMAINING-TASKS.md
T

8.7 KiB
Raw Blame History

کارهای باقیمانده - CMS Microservice

آخرین بروزرسانی: February 10, 2026
Build Status: SUCCESS (0 Errors)


📊 خلاصه وضعیت

دسته تعداد وضعیت
متدهای Unimplemented 300 همه انجام شد
متدهای Mock/جعلی 130 همه انجام شد
گزارش‌های TODO (صفر برمی‌گردونه) 20 هر دو پیاده شد
فایل تنظیمات اشتباه (Staging) 10 فیکس شد
Entity‌های تکراری مُرده 30 حذف شد
مجموع باقیمانده 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 — شهر با ID
  • GetCitiesByStateForCustomer — شهرهای استان
  • 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 — محاسبه PV
  • CustomerCancelOrder — لغو سفارش مشتری (با ریفاند کیف پول)
  • CustomerTrackOrder — پیگیری سفارش واقعی
  • CustomerReorderPreviousOrder — سفارش مجدد واقعی

فاز ۷ — ConfigurationService (2 متد)

  • CreateOrUpdateConfigurationFailedPrecondition (عمداً read-only)
  • DeactivateConfigurationFailedPrecondition (عمداً read-only)

فاز ۸ — UserService (5 متد Mock → واقعی)

  • GetCustomerUser — خواندن از DB با _context.Users + JWT userId
  • UpdateCustomerProfile — بروزرسانی FirstName/LastName/Email/NationalCode/BirthDate
  • ChangeCustomerPassword — PBKDF2 verify + hash با IHashService
  • UploadCustomerAvatar — ارسال به FMS با IFileManagementService + ذخیره URL
  • UpdateCustomerSettings — بروزرسانی EmailNotifications/SmsNotifications/PushNotifications

فاز ۹ — TransactionsService (2 متد Mock → واقعی)

  • CustomerPaymentRequest — ایجاد Transaction + IPaymentGatewayService.InitiatePaymentAsync
  • CustomerPaymentVerificationIPaymentGatewayService.VerifyPaymentAsync + آپدیت Transaction

فاز ۱۰ — PackageService (2 متد Mock → واقعی)

  • CustomerPurchasePackage — ایجاد Transaction + UserPackagePurchase + payment initiate
  • CustomerVerifyPackagePurchase — 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.csMockDayaLoanApiService (سرویس شبیه‌سازی 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 بدون خطا 🎉