docs: audit all CMS gRPC services — 342 RPCs, 125 unused from frontends, 24 dead code

This commit is contained in:
masoodafar-web
2026-02-24 22:25:53 +03:30
parent dd5a2617cf
commit 09b8b804d4
+276
View File
@@ -0,0 +1,276 @@
# آدیت سرویس‌های 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)*