آدیت سرویسهای gRPC — CMS
تاریخ: ۱۴۰۴/۰۴
آخرین بروزرسانی: ۱۴۰۴/۱۲/۰۶
هدف: شناسایی RPCهایی که از هیچکدام از فرانتها (FrontOffice مشتری + BackOffice ادمین) فراخوانی نمیشوند + تصمیمگیری نگهداری vs آرشیو
📊 خلاصه آمار
| متریک |
تعداد |
| کل فایلهای proto |
43 (بدون google/) |
| کل سرویسهای gRPC |
42 |
| کل RPC متدها |
342 |
| استفادهشده در FrontOffice |
92 |
| استفادهشده در BackOffice |
159 |
| استفادهشده (مجموع یکتا) |
217 |
| استفادهنشده از فرانتها |
125 |
| ↳ استفادهشده داخلی CMS |
101 |
| ↳ کد مُرده واقعی |
24 |
🔴 بخش ۱ — تحلیل ۲۴ RPC مُرده: نگهداری vs آرشیو
✅ نگهداری (آیندهنگرانه — ۱۲ عدد)
این RPCها پیادهسازی کامل دارند و در نقشهراه آینده محصول کاربرد دارند.
| # |
RPC |
فایل Proto |
کیفیت کد |
دلیل نگهداری |
| 1 |
CustomerReorderPreviousOrder |
userorder.proto |
✅ کامل — آیتمهای سفارش قبلی به سبد اضافه میشود |
UX حیاتی: «تکرار سفارش قبلی» — فیچر رایج فروشگاهی، فقط نیاز به دکمه در FrontOffice |
| 2 |
CustomerTrackOrder |
userorder.proto |
✅ کامل — وضعیت + TrackingCode + DeliveryInfo |
UX حیاتی: «ردیابی سفارش» — وقتی ارسال پستی فعال شود ضروری است |
| 3 |
CalculateOrderPV |
userorder.proto |
✅ کامل — PV هر آیتم + جمع کل |
سیستم MLM: محاسبه PV (Point Value) سفارش — برای فاز بعدی کمیسیون بر اساس خرید |
| 4 |
GetInventorySummary |
inventory.proto |
✅ کامل — آمار تعداد + ارزش کل |
داشبورد ادمین: خلاصه موجودی انبار — نیاز به کارت در BackOffice Dashboard |
| 5 |
GetStockValueReport |
inventory.proto |
✅ کامل — گزارش ارزش ریالی موجودی |
گزارش مالی: ارزش دارایی انبار — برای حسابداری ضروری |
| 6 |
BulkAddStock |
inventory.proto |
✅ کامل — loop با error handling |
عملیات انبوه: افزودن موجودی دستهای — بعد از ورود کالای فیزیکی |
| 7 |
BulkUpdateProductStock |
products.proto |
✅ کامل — Set/Add/Subtract با error handling |
عملیات انبوه: بروزرسانی دستهای موجودی محصول |
| 8 |
GetConfigurationByKey |
configuration.proto |
✅ کامل — خواندن از SystemConstants |
API مفید: دریافت یک تنظیم خاص بدون بارگذاری همه — performance بهتر |
| 9 |
UpdateCustomerSettings |
user.proto |
✅ کامل — Email/SMS/Push notifications |
تنظیمات اعلانها: وقتی پنل تنظیمات مشتری ساخته شود |
| 10 |
ChangeNetworkParent |
networkmembership.proto |
✅ CQRS کامل → MoveInNetworkCommand |
مدیریت شبکه: جابجایی کاربر در درخت — ابزار ادمین ضروری |
| 11 |
AssignFeatureToMembership |
clubmembership.proto |
✅ CQRS کامل → AssignClubFeatureCommand |
مدیریت عضویت: اختصاص فیچر به عضویت — برای فاز بستهبندی پویا |
| 12 |
GetLowStockProducts |
products.proto |
✅ کامل — فیلتر threshold + pagination |
هشدار موجودی: مکمل GetLowStockItems — فیلتر ClubExclusive اضافه دارد |
🗑️ آرشیو (حذف امن — ۱۲ عدد)
این RPCها یا stub خالی هستند، یا جایگزین بهتری دارند، یا هرگز ساخته نشدند.
| # |
RPC |
فایل Proto |
وضعیت کد |
دلیل آرشیو |
| 1 |
CreateNewFileInfo |
fms.proto |
❌ ۰ رفرنس — هیچ Service/Handler ندارد |
سرویس FMS هرگز طراحی نشد — فایلها از imageresolver استفاده میکنند |
| 2 |
DeleteFileInfo |
fms.proto |
❌ ۰ رفرنس — هیچ Service/Handler ندارد |
همان — کل fms.proto حذفشدنی |
| 3 |
BulkAdjustStock |
inventory.proto |
❌ ۰ رفرنس — حتی Service method ندارد |
هرگز پیادهسازی نشد — از AdjustStock تکی استفاده میشود |
| 4 |
CreateNewOrderForCustomer |
userorder.proto |
❌ Stub خالی — return new() |
مسیر سفارش مشتری از SubmitShopBuyOrder میگذرد — تکراری |
| 5 |
SubmitOrderForCustomer |
userorder.proto |
❌ Stub خالی — return new() |
مسیر سفارش مشتری از SubmitShopBuyOrder میگذرد — تکراری |
| 6 |
DeactivateConfiguration |
configuration.proto |
❌ throw میکند — «تنظیمات فقط خواندنی هستند» |
عمداً غیرفعال شده — SystemConstants ثابت هستند |
| 7 |
GetConfigurationHistory |
configuration.proto |
❌ خالی برمیگرداند — return new() |
SystemConstants تاریخچه ندارند — بیمعنی |
| 8 |
DeleteCity |
City.proto |
✅ کامل ولی بینیاز |
شهرها seed دیتا هستند — حذف شهر باعث خرابی آدرسها میشود |
| 9 |
UpdateCity |
City.proto |
✅ کامل ولی بینیاز |
شهرها از سرویس خارجی seed شدهاند — ویرایش دستی نیاز نیست |
| 10 |
GetOrdersByDateRange |
userorder.proto |
✅ کامل ولی تکراری |
GetAllUserOrderByFilter همین قابلیت + فیلترهای بیشتر دارد |
| 11 |
GetServiceHealth |
health.proto |
✅ کامل ولی تکراری |
GetSystemHealth کل سیستم را برمیگرداند — فیلتر client-side کافی است |
| 12 |
GetCategoryByIdForCustomer |
category.proto |
✅ کامل ولی تکراری |
GetCategory (admin) + GetAllCategoriesForCustomer کافی است |
🟡 بخش ۲ — استفاده داخلی 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 در فایلهای contract, usercontract, factordetails, productcategory, productgalleries, productimages, userwallet, userwalletchangelog, otptoken, usercarts, discountproduct, public_messages, category, products, producttag, tag, City, useraddress, userorder — همه CRUD داخلی با ≥3 رفرنس در CMS.
🟢 بخش ۳ — سرویسهای کاملاً مورد استفاده
فایلهای 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 |
📋 بخش ۴ — خلاصه تصمیمات
ماتریکس نهایی ۲۴ RPC مُرده
فایلهای proto آرشیوشدنی (کامل)
| فایل |
وضعیت |
اقدام |
| fms.proto |
کل فایل مُرده (2 RPC) |
حذف از csproj — ساخته نشود |
RPCهای آرشیوشدنی (جزئی — داخل فایلهای فعال)
| فایل Proto |
RPCهای آرشیو |
RPCهای فعال |
| inventory.proto |
BulkAdjustStock (1) |
23 فعال |
| userorder.proto |
CreateNewOrderForCustomer, SubmitOrderForCustomer (2) |
18 فعال |
| configuration.proto |
DeactivateConfiguration, GetConfigurationHistory (2) |
5 فعال |
| City.proto |
DeleteCity, UpdateCity (2) |
6 فعال |
| health.proto |
GetServiceHealth (1) |
1 فعال |
| category.proto |
GetCategoryByIdForCustomer (1) |
7 فعال |
⚠️ نکات مهم
- آرشیو ≠ حذف! — RPCهای آرشیوشده با
[Obsolete] + #region [ARCHIVED] علامتگذاری شدند (کامیت 13dd0f5)
- RPCهای دسته B (Internal — ۱۰۱ عدد) حیاتی هستند — بدون آنها سیستم از کار میافتد
- RPCهای «نگهداری» (۱۲ عدد) کد کامل و آماده دارند — بکلاگ فیچر: FEATURE-BACKLOG.md
- fms.proto از csproj اکسکلود شد (کامیت
13dd0f5)
- نقشهراه تحول پکیجبیس: PACKAGE-TRANSFORMATION-TASKS.md
- قبل از هر تغییر، حتماً
grep -rn "RpcName" CMS/src/ بزنید تا مطمئن شوید
آخرین بروزرسانی: ۱۴۰۴/۱۲/۰۶