From 09b8b804d497cebdee977cde4763e982f48e0cb8 Mon Sep 17 00:00:00 2001 From: masoodafar-web Date: Tue, 24 Feb 2026 22:25:53 +0330 Subject: [PATCH] =?UTF-8?q?docs:=20audit=20all=20CMS=20gRPC=20services=20?= =?UTF-8?q?=E2=80=94=20342=20RPCs,=20125=20unused=20from=20frontends,=2024?= =?UTF-8?q?=20dead=20code?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cms/GRPC-SERVICES-AUDIT.md | 276 +++++++++++++++++++++++++++++++++++++ 1 file changed, 276 insertions(+) create mode 100644 cms/GRPC-SERVICES-AUDIT.md diff --git a/cms/GRPC-SERVICES-AUDIT.md b/cms/GRPC-SERVICES-AUDIT.md new file mode 100644 index 0000000..88074eb --- /dev/null +++ b/cms/GRPC-SERVICES-AUDIT.md @@ -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)*