Files
docs/cms/GRPC-SERVICES-AUDIT.md
T

16 KiB

آدیت سرویس‌های gRPC — CMS

تاریخ: ۱۴۰۴/۰۴
هدف: شناسایی RPCهایی که از هیچ‌کدام از فرانت‌ها (FrontOffice مشتری + BackOffice ادمین) فراخوانی نمی‌شوند


📊 خلاصه آمار

متریک تعداد
کل فایل‌های proto 43 (بدون google/)
کل سرویس‌های gRPC 42
کل RPC متدها 342
استفاده‌شده در FrontOffice 92
استفاده‌شده در BackOffice 159
استفاده‌شده (مجموع یکتا) 217
استفاده‌نشده از فرانت‌ها 125
↳ استفاده‌شده داخلی CMS 101
کد مُرده واقعی 24

🔴 دسته A — کد مُرده واقعی (Dead Code)

این RPCها نه از فرانت‌ها فراخوانی می‌شوند و نه در کد CMS پیاده‌سازی/استفاده شده‌اند (فقط ≤2 رفرنس = فقط کد proto-generated).

# RPC فایل Proto وضعیت
1 AssignFeatureToMembership clubmembership.proto Stub — هرگز پیاده‌سازی نشد
2 BulkAddStock inventory.proto Stub — هرگز پیاده‌سازی نشد
3 BulkAdjustStock inventory.proto Stub — 0 رفرنس
4 BulkUpdateProductStock products.proto Stub — هرگز پیاده‌سازی نشد
5 CalculateOrderPV userorder.proto Stub — هرگز پیاده‌سازی نشد
6 ChangeNetworkParent networkmembership.proto Stub — هرگز از فرانت استفاده نشد
7 CreateNewFileInfo fms.proto 0 رفرنس — سرویس FMS هرگز ساخته نشد
8 CreateNewOrderForCustomer userorder.proto Stub — سفارش مشتری از مسیر دیگر
9 CustomerReorderPreviousOrder userorder.proto Stub — فیچر تکرار سفارش پیاده‌سازی نشد
10 CustomerTrackOrder userorder.proto Stub — فیچر ردیابی سفارش پیاده‌سازی نشد
11 DeactivateConfiguration configuration.proto Stub — هرگز استفاده نشد
12 DeleteCity City.proto Stub — حذف شهر نیاز نیست
13 DeleteFileInfo fms.proto 0 رفرنس — سرویس FMS هرگز ساخته نشد
14 GetCategoryByIdForCustomer category.proto Stub — مشتری از GetAllCategoriesForCustomer استفاده می‌کند
15 GetConfigurationByKey configuration.proto Stub — فقط GetAllConfigurations استفاده می‌شود
16 GetConfigurationHistory configuration.proto Stub — تاریخچه تنظیمات پیاده‌سازی نشد
17 GetInventorySummary inventory.proto Stub — داشبورد خلاصه انبار پیاده‌سازی نشد
18 GetLowStockProducts products.proto Stub — از GetLowStockItems (inventory) استفاده می‌شود
19 GetOrdersByDateRange userorder.proto Stub — از فیلتر GetAllUserOrderByFilter استفاده می‌شود
20 GetServiceHealth health.proto Stub — فقط GetSystemHealth استفاده می‌شود
21 GetStockValueReport inventory.proto Stub — گزارش ارزش موجودی پیاده‌سازی نشد
22 SubmitOrderForCustomer userorder.proto Stub — سفارش مشتری از مسیر دیگر
23 UpdateCity City.proto Stub — ویرایش شهر نیاز نیست
24 UpdateCustomerSettings user.proto Stub — تنظیمات مشتری پیاده‌سازی نشد

🟡 دسته B — استفاده داخلی CMS (Internal Only)

این RPCها از فرانت‌ها فراخوانی نمی‌شوند ولی در کد بکند CMS فعال هستند (background services, handlers, internal flows). حذف نشوند!

B1. احراز هویت و کاربر (user.proto)

RPC رفرنس CMS علت
CreateNewUser 175 ثبت‌نام کاربر — اصلی‌ترین فلو
GetJwtToken 38 صدور توکن JWT
AdminGetJwtToken 19 لاگین ادمین
SetPasswordForUser 24 تنظیم رمز عبور
ChangeCustomerPassword 5 تغییر رمز مشتری
UploadCustomerAvatar 6 آپلود آواتار
GetCustomerProfile 13 پروفایل مشتری
GetCustomerReferrals 13 لیست معرفی‌شدگان
GetCustomerSettings 13 تنظیمات مشتری

B2. بسته‌ها و پرداخت (package.proto / manualpayment.proto)

RPC رفرنس CMS علت
PurchaseGoldenPackage 21 خرید بسته طلایی — فلو فعال
VerifyGoldenPackagePurchase 22 تأیید خرید بسته طلایی
CustomerPurchasePackage 3 خرید مشتری (proto-generated + service)
CustomerVerifyPackagePurchase 3 تأیید خرید مشتری
GetCustomerPurchaseHistory 13 تاریخچه خرید
ProcessManualMembershipPayment 20 پرداخت دستی عضویت

B3. شبکه و عضویت (networkmembership.proto / clubmembership.proto)

RPC رفرنس CMS علت
JoinNetwork 14 پیوستن به شبکه — فراخوانی خودکار
RemoveFromNetwork 14 حذف از شبکه

B4. کمیسیون (commission.proto)

RPC رفرنس CMS علت
CalculateWeeklyBalances 26 سرویس پس‌زمینه هفتگی
CalculateWeeklyCommissionPool 22 سرویس پس‌زمینه هفتگی
ProcessUserPayouts 15 پردازش پرداخت‌ها
GetCommissionPayoutHistory 20 تاریخچه پرداخت کمیسیون

B5. انبارداری (inventory.proto)

RPC رفرنس CMS علت
ConfirmSale 10 تأیید فروش — فلو سفارش
ReserveStock 12 رزرو موجودی — فلو سفارش
ReleaseReservation 10 آزادسازی رزرو
ProcessReturn 6 پردازش مرجوعی
DeleteWarehouse 18 حذف انبار
GetInventoryByProduct 26 موجودی بر اساس محصول
GetInventoryItem 19 آیتم انبار
GetWarehouse 18 دریافت انبار
SetDefaultWarehouse 18 تنظیم انبار پیش‌فرض
UpdateWarehouse 18 بروزرسانی انبار
GetStockMovementsByInventoryItem 17 حرکات موجودی

B6. تراکنش‌ها (transactions.proto)

RPC رفرنس CMS علت
CreateNewTransactions 26 ایجاد تراکنش — فلو پرداخت
DeleteTransactions 23 حذف تراکنش
GetAllTransactionsByFilter 25 لیست تراکنش‌ها
CustomerPaymentVerification 3 تأیید پرداخت مشتری
GetCustomerTransaction 27 تراکنش مشتری
GetCustomerTransactionsByFilter 14 فیلتر تراکنش‌ها
RefundTransaction 31 استرداد تراکنش
UpdateTransactions 23 بروزرسانی تراکنش
VerifyTransaction 24 تأیید تراکنش

B7. سایر CRUD داخلی

RPC فایل Proto رفرنس CMS علت
CreateNewContract contract.proto 26 قراردادها
UpdateContract contract.proto 23 بروزرسانی قرارداد
DeleteContract contract.proto 23 حذف قرارداد
GetContract contract.proto 19 دریافت قرارداد
GetAllContractByFilter contract.proto 25 لیست قراردادها
CreateNewUserContract usercontract.proto 26 قرارداد کاربر
UpdateUserContract usercontract.proto 23 بروزرسانی
DeleteUserContract usercontract.proto 23 حذف
GetUserContract usercontract.proto 19 دریافت
CreateNewFactorDetails factordetails.proto 26 جزئیات فاکتور
UpdateFactorDetails factordetails.proto 23 بروزرسانی
DeleteFactorDetails factordetails.proto 23 حذف
GetFactorDetails factordetails.proto 19 دریافت
GetAllFactorDetailsByFilter factordetails.proto 24 لیست
CreateNewProductCategory productcategory.proto 26 دسته‌بندی محصول
UpdateProductCategory productcategory.proto 23 بروزرسانی
DeleteProductCategory productcategory.proto 23 حذف
GetProductCategory productcategory.proto 19 دریافت
GetAllProductCategoryByFilter productcategory.proto 24 لیست
CreateNewProductGalleries productgalleries.proto 15 گالری محصول
UpdateProductGalleries productgalleries.proto 14 بروزرسانی
DeleteProductGalleries productgalleries.proto 14 حذف
GetProductGalleries productgalleries.proto 15 دریافت
GetAllProductGalleriesByFilter productgalleries.proto 15 لیست
CreateNewProductImages productimages.proto 26 تصاویر محصول
UpdateProductImages productimages.proto 23 بروزرسانی
DeleteProductImages productimages.proto 23 حذف
GetProductImages productimages.proto 19 دریافت
GetAllProductImagesByFilter productimages.proto 24 لیست
CreateNewUserWallet userwallet.proto 54 ایجاد کیف پول
UpdateUserWallet userwallet.proto 46 بروزرسانی
DeleteUserWallet userwallet.proto 46 حذف
GetUserWallet userwallet.proto 41 دریافت
CreateNewUserWalletChangeLog userwalletchangelog.proto 26 لاگ تغییرات
UpdateUserWalletChangeLog userwalletchangelog.proto 23 بروزرسانی
DeleteUserWalletChangeLog userwalletchangelog.proto 23 حذف
GetUserWalletChangeLog userwalletchangelog.proto 21 دریافت
GetAllOtpTokenByFilter otptoken.proto 24 لیست OTP
GetAllUserCartsByFilter usercarts.proto 7 لیست سبدها
AddNewUserCart usercarts.proto 9 افزودن سبد
DeleteUserCart usercarts.proto 7 حذف سبد
UpdateUserCart usercarts.proto 10 بروزرسانی سبد
AddDiscountProductImage discountproduct.proto 10 تصویر محصول تخفیفی
UpdateDiscountProductImage discountproduct.proto 9 بروزرسانی
DeleteDiscountProductImage discountproduct.proto 9 حذف
ReorderDiscountProductImages discountproduct.proto 9 مرتب‌سازی
GetActiveMessages public_messages.proto 16 پیام‌های فعال
GetAllCategories category.proto 4 همه دسته‌بندی‌ها
GetCustomerProducts products.proto 29 محصولات مشتری
GetCustomerProductsByFilter products.proto 16 فیلتر محصولات
GetProductTag producttag.proto 19 تگ محصول
GetProductsByTag tag.proto 16 محصولات بر اساس تگ
UpdateProductTag producttag.proto 23 بروزرسانی تگ
CreateCity City.proto 3 ایجاد شهر
GetCitiesForCustomer City.proto 3 شهرها برای مشتری
GetCityByIdForCustomer City.proto 3 شهر مشتری
GetCitiesByStateForCustomer City.proto 3 شهرها بر اساس استان
GetUserAddress useraddress.proto 19 آدرس کاربر
CustomerCancelOrder userorder.proto 4 لغو سفارش مشتری
GetCustomerOrderHistory userorder.proto 13 تاریخچه سفارشات

🟢 سرویس‌های کاملاً مورد استفاده

فایل‌های proto که تمام RPCهایشان استفاده می‌شود:

فایل Proto کل RPC استفاده FO استفاده BO
appversion.proto 3 1 3
blogcategory.proto 6 2 6
blogpost.proto 11 5 9
blogpostimage.proto 4 0 4
discountcategory.proto 4 1 4
discountorder.proto 7 3 4
discountshoppingcart.proto 5 5 0
manualpayment.proto 5 0 4
public_messages.proto 8 0 7
role.proto 5 0 5
sitepage.proto 10 2 10
sitepagesettings.proto 5 1 5
tag.proto 6 0 5
userrole.proto 5 0 5

📋 فایل‌های Proto با بیشترین RPC استفاده‌نشده

فایل Proto کل RPC استفاده‌نشده از فرانت وضعیت
factordetails.proto 5 5 (100%) CRUD داخلی — نیاز به UI ندارد
productgalleries.proto 5 5 (100%) CRUD داخلی — از products.proto استفاده می‌شود
productimages.proto 5 5 (100%) CRUD داخلی — از products.proto استفاده می‌شود
productcategory.proto 5 5 (100%) CRUD داخلی — از products.proto استفاده می‌شود
contract.proto 5 5 (100%) CRUD داخلی — مدیریت قراردادها
fms.proto 2 2 (100%) کد مُرده — هرگز پیاده‌سازی نشد
inventory.proto 24 15 (63%) بیشتر داخلی (فلو سفارش)
transactions.proto 11 9 (82%) بیشتر داخلی (فلو پرداخت)
user.proto 20 9 (45%) احراز هویت + پروفایل داخلی
userorder.proto 20 9 (45%) مدیریت سفارش داخلی

🗑️ کاندیدای حذف در آینده

اولویت ۱ — کد مُرده (می‌توان بی‌خطر حذف کرد)

  1. fms.proto — کامل (2 RPC) — سرویس FMS هرگز ساخته نشد
  2. SubmitOrderForCustomer — stub خالی
  3. CreateNewOrderForCustomer — stub خالی
  4. CustomerReorderPreviousOrder — فیچر پیاده‌سازی نشده
  5. CustomerTrackOrder — فیچر پیاده‌سازی نشده
  6. BulkAdjustStock — 0 رفرنس
  7. BulkAddStock — stub
  8. BulkUpdateProductStock — stub
  9. GetStockValueReport — stub
  10. GetInventorySummary — stub

اولویت ۲ — RPCهای تکراری (عملکرد مشابه موجود)

Dead RPC جایگزین فعال
GetCategoryByIdForCustomer GetAllCategoriesForCustomer
GetLowStockProducts GetLowStockItems (inventory)
GetOrdersByDateRange GetAllUserOrderByFilter (with date filter)
GetServiceHealth GetSystemHealth
GetConfigurationByKey GetAllConfigurations + filter

⚠️ نکات مهم

  1. حذف نکنید! — فقط مستند و آرشیو شدند
  2. RPCهای دسته B (Internal) حیاتی هستند — بدون آنها سیستم از کار می‌افتد
  3. RPCهای PurchaseGoldenPackage و VerifyGoldenPackagePurchase از فرانت فراخوانی نمی‌شوند ولی فلو خرید بسته فعلی از آنها استفاده می‌کند
  4. RPCهای Customer* (مثل CustomerPurchasePackage, CustomerVerifyPackagePurchase) تازه اضافه شده‌اند و هنوز از فرانت وصل نشده‌اند
  5. قبل از هر حذف، حتماً grep -rn "RpcName" CMS/src/ بزنید تا مطمئن شوید

آخرین بروزرسانی: $(date +%Y-%m-%d)