# آدیت سرویس‌های 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)*