docs: audit all CMS gRPC services — 342 RPCs, 125 unused from frontends, 24 dead code
This commit is contained in:
@@ -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)*
|
||||
Reference in New Issue
Block a user