Files
docs/cms/GRPC-SERVICES-AUDIT.md
masoodafar-web 01244f426e docs: package-based transformation — complete roadmap + UX impact + feature backlog
New documents:
- roadmap/FEATURE-BACKLOG.md: 12 kept RPCs → feature tasks with priority,
  target pages, and time estimates (F1-F12)
- roadmap/PACKAGE-TRANSFORMATION-UX.md: UX impact analysis —
  before/after wireframes for 19 pages (10 FO + 9 BO),
  customer + admin experience changes, future needs prediction
- roadmap/PACKAGE-TRANSFORMATION-TASKS.md: step-by-step implementation
  plan (6 phases, ~13 day critical path), atomic tasks with
  code diffs, dependency graph, test checklist

Updated:
- cms/GRPC-SERVICES-AUDIT.md: cross-references to new docs

Total: 998 lines of documentation covering:
- 12 RPC feature tasks prioritized by package-based relevance
- 19 page wireframes (before/after comparison)
- 39 transformation tasks broken into 6 phases
- 10 predicted future requirements (N1-N10)
- Risk analysis + rollback plan + calendar
2026-02-24 23:18:50 +03:30

14 KiB
Raw Permalink Blame History

آدیت سرویس‌های 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 مُرده

✅ نگهداری (12):  CustomerReorderPreviousOrder, CustomerTrackOrder,
                   CalculateOrderPV, GetInventorySummary, GetStockValueReport,
                   BulkAddStock, BulkUpdateProductStock, GetConfigurationByKey,
                   UpdateCustomerSettings, ChangeNetworkParent,
                   AssignFeatureToMembership, GetLowStockProducts

🗑️ آرشیو (12):   CreateNewFileInfo, DeleteFileInfo, BulkAdjustStock,
                   CreateNewOrderForCustomer, SubmitOrderForCustomer,
                   DeactivateConfiguration, GetConfigurationHistory,
                   DeleteCity, UpdateCity, GetOrdersByDateRange,
                   GetServiceHealth, GetCategoryByIdForCustomer

فایل‌های 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 فعال

⚠️ نکات مهم

  1. آرشیو ≠ حذف! — RPCهای آرشیو‌شده با [Obsolete] + #region [ARCHIVED] علامت‌گذاری شدند (کامیت 13dd0f5)
  2. RPCهای دسته B (Internal — ۱۰۱ عدد) حیاتی هستند — بدون آنها سیستم از کار می‌افتد
  3. RPCهای «نگهداری» (۱۲ عدد) کد کامل و آماده دارند — بکلاگ فیچر: FEATURE-BACKLOG.md
  4. fms.proto از csproj اکسکلود شد (کامیت 13dd0f5)
  5. نقشه‌راه تحول پکیج‌بیس: PACKAGE-TRANSFORMATION-TASKS.md
  6. قبل از هر تغییر، حتماً grep -rn "RpcName" CMS/src/ بزنید تا مطمئن شوید

آخرین بروزرسانی: ۱۴۰۴/۱۲/۰۶