# CMS API Coverage - مقایسه CMS با BackOffice.BFF

**تاریخ بررسی**: 2025-12-01  
**هدف**: شناسایی APIهای CMS که در BackOffice.BFF پوشش داده نشده‌اند

---

## 📊 خلاصه وضعیت

| دسته | تعداد Proto در CMS | پوشش در BFF | وضعیت |
|------|-------------------|--------------|--------|
| **User Management** | 1 | ✅ کامل | 100% |
| **Network & Tree** | 1 | ✅ کامل | 100% |
| **Club Membership** | 1 | ✅ کامل | 100% |
| **Commission & Wallet** | 3 | ✅ کامل | 100% |
| **Products** | 6 | ⚠️ جزئی | 70% |
| **Orders** | 2 | ⚠️ جزئی | 60% |
| **Configuration** | 1 | ✅ کامل | 100% |
| **Roles & Permissions** | 2 | ✅ کامل | 100% |
| **Cart** | 1 | ❌ خیر | 0% |
| **Transactions** | 1 | ❌ خیر | 0% |
| **Contracts** | 2 | ❌ خیر | 0% |
| **OTP** | 1 | ✅ کامل | 100% |
| **Public Messages** | 1 | ❌ خیر | 0% |

---

## ✅ APIهای کامل پوشش داده شده (در BFF موجود است)

### 1. User Management (`user.proto`)
- ✅ CreateNewUserCommand
- ✅ UpdateUserCommand
- ✅ DeleteUserCommand
- ✅ GetAllUserByFilterQuery
- ✅ GetUserQuery
- ✅ SendOtpCommand
- ✅ VerifyOtpCodeCommand

**تنظیمات دسترسی پیشنهادی**:
- SuperAdmin: همه عملیات
- Admin: Create, Update, GetAll, Get (بدون Delete)
- Inspector: فقط GetAll, Get

---

### 2. Network Management (`networkmembership.proto`)
- ✅ GetNetworkTreeQuery
- ✅ GetNetworkHistoryQuery
- ✅ GetNetworkStatisticsQuery
- ✅ GetUserNetworkInfoQuery

**تنظیمات دسترسی پیشنهادی**:
- SuperAdmin: همه
- Admin: همه
- Inspector: فقط مشاهده (همه)

---

### 3. Club Membership (`clubmembership.proto`)
- ✅ ActivateClubCommand
- ✅ GetAllClubMembersQuery
- ✅ GetClubStatisticsQuery

**تنظیمات دسترسی پیشنهادی**:
- SuperAdmin: همه
- Admin: ActivateClub, GetAll, Get
- Inspector: فقط GetAll, Get

---

### 4. Commission & Balance (`commission.proto`, `userwallet.proto`, `userwalletchangelog.proto`)
- ✅ GetAllWeeklyPoolsQuery
- ✅ GetWeeklyPoolQuery
- ✅ GetUserWeeklyBalancesQuery
- ✅ GetUserPayoutsQuery
- ✅ ApproveWithdrawalCommand
- ✅ RejectWithdrawalCommand
- ✅ ProcessWithdrawalCommand
- ✅ GetWithdrawalRequestsQuery
- ✅ TriggerWeeklyCalculationCommand (Worker)
- ✅ GetWorkerStatusQuery
- ✅ GetWorkerExecutionLogsQuery

**تنظیمات دسترسی پیشنهادی**:
- SuperAdmin: همه عملیات + Trigger Worker
- Admin: Approve/Reject Withdrawal, GetAll queries
- Inspector: فقط Get queries (بدون Approve/Reject)

---

### 5. Configuration (`configuration.proto`)
- ✅ CreateOrUpdateConfigurationCommand
- ✅ DeactivateConfigurationCommand
- ✅ GetAllConfigurationsQuery

**تنظیمات دسترسی پیشنهادی**:
- SuperAdmin: همه عملیات
- Admin: فقط GetAll (بدون Update)
- Inspector: فقط GetAll

---

### 6. Roles & Permissions (`role.proto`, `userrole.proto`)
- ✅ CreateNewRoleCommand
- ✅ UpdateRoleCommand
- ✅ DeleteRoleCommand
- ✅ GetAllRoleByFilterQuery
- ✅ GetRoleQuery
- ✅ CreateNewUserRoleCommand
- ✅ UpdateUserRoleCommand
- ✅ DeleteUserRoleCommand
- ✅ GetAllUserRoleByFilterQuery
- ✅ GetUserRoleQuery

**تنظیمات دسترسی پیشنهادی**:
- SuperAdmin: همه عملیات
- Admin: ❌ هیچ دسترسی (فقط SuperAdmin)
- Inspector: ❌ هیچ دسترسی

---

## ⚠️ APIهای جزئی پوشش داده شده

### 7. Products (`products.proto`, `category.proto`, `tag.proto`, `package.proto`, `productgallerys.proto`, `productimages.proto`)

#### ✅ موجود در BFF:
- CreateNewProductsCommand
- UpdateProductsCommand
- DeleteProductsCommand
- GetAllProductsByFilterQuery
- GetProductsQuery
- GetProductsForCategoryQuery
- AddProductImageCommand
- RemoveProductImageCommand
- GetProductGalleryQuery

#### ⚠️ موجود در CMS ولی نه در BFF:
```
Products:
  - BulkUpdateProductsCommand (به‌روزرسانی دسته‌ای)
  - GetProductBySkuQuery (جستجو با SKU)
  - ToggleProductStatusCommand (فعال/غیرفعال)
  - GetLowStockProductsQuery (محصولات کم موجودی)

Category:
  - CreateNewCategoryCommand ✅
  - UpdateCategoryCommand ✅
  - DeleteCategoryCommand ✅
  - GetAllCategoryByFilterQuery ✅
  - GetCategoriesQuery ✅
  - GetCategoryQuery ✅
  - UpdateCategoryProductsCommand ✅ (ارتباط Product-Category)
  - UpdateProductCategoriesCommand ✅

Tags:
  - CreateTagCommand ❌
  - UpdateTagCommand ❌
  - DeleteTagCommand ❌
  - GetAllTagsQuery ❌
  - AssignTagToProductCommand ❌ (ارتباط Product-Tag)

Package (بسته‌بندی):
  - CreateNewPackageCommand ✅
  - UpdatePackageCommand ✅
  - DeletePackageCommand ✅
  - GetAllPackageByFilterQuery ✅
  - GetPackageQuery ✅
```

**تنظیمات دسترسی پیشنهادی**:
- SuperAdmin: همه عملیات
- Admin: همه عملیات محصولات (Create, Update, Delete)
- Inspector: فقط Get queries

---

### 8. Orders (`userorder.proto`, `factordetails.proto`)

#### ✅ موجود در BFF:
- CreateNewUserOrderCommand
- UpdateUserOrderCommand
- DeleteUserOrderCommand
- GetAllUserOrderByFilterQuery
- GetUserOrderQuery

#### ⚠️ موجود در CMS ولی نه در BFF:
```
UserOrder:
  - CancelOrderCommand (لغو سفارش)
  - UpdateOrderStatusCommand (تغییر وضعیت)
  - GetOrderByInvoiceNumberQuery (جستجو با شماره فاکتور)
  - GetOrdersByDateRangeQuery (گزارش بازه زمانی)
  - CalculateOrderPVQuery (محاسبه PV سفارش)
  - ApplyDiscountToOrderCommand (اعمال تخفیف)

FactorDetails:
  - GetFactorDetailsQuery (جزئیات کامل فاکتور)
  - UpdateFactorDetailCommand (ویرایش آیتم فاکتور)
  - RemoveFactorDetailCommand (حذف آیتم فاکتور)
```

**تنظیمات دسترسی پیشنهادی**:
- SuperAdmin: همه عملیات
- Admin: همه عملیات (Create, Update, Cancel, Status)
- Inspector: فقط Get queries

---

## ❌ APIهای بدون پوشش (باید اضافه شوند)

### 9. Shopping Cart (`usercarts.proto`)
**وضعیت**: هیچ Handler در BFF وجود ندارد

```
باید اضافه شود:
  - AddToCartCommand
  - UpdateCartItemCommand
  - RemoveFromCartCommand
  - GetUserCartQuery
  - ClearCartCommand
  - MergeCartCommand (برای کاربران مهمان → لاگین)
```

**تنظیمات دسترسی پیشنهادی**:
- SuperAdmin: مشاهده سبد همه کاربران
- Admin: مشاهده سبد همه کاربران
- Inspector: مشاهده فقط (بدون ویرایش)

**اولویت**: 🟡 متوسط (برای فروشگاه ضروری است)

---

### 10. Transactions (`transactions.proto`)
**وضعیت**: هیچ Handler در BFF وجود ندارد

```
باید اضافه شود:
  - CreateTransactionCommand (ثبت تراکنش پرداخت)
  - GetTransactionQuery
  - GetAllTransactionsByFilterQuery
  - GetTransactionByReferenceQuery (جستجو با شماره پیگیری)
  - GetUserTransactionsQuery (تراکنش‌های یک کاربر)
  - VerifyTransactionCommand (تأیید پرداخت از درگاه)
  - RefundTransactionCommand (بازگشت وجه)
```

**تنظیمات دسترسی پیشنهادی**:
- SuperAdmin: همه عملیات + Refund
- Admin: مشاهده تراکنش‌ها (بدون Refund)
- Inspector: فقط مشاهده

**اولویت**: 🔴 بالا (برای درگاه پرداخت ضروری است)

---

### 11. Contracts (`contract.proto`, `usercontract.proto`)
**وضعیت**: هیچ Handler در BFF وجود ندارد

```
باید اضافه شود:
Contract:
  - CreateContractCommand
  - UpdateContractCommand
  - DeleteContractCommand
  - GetAllContractsQuery
  - GetContractQuery
  - ActivateContractCommand
  - DeactivateContractCommand

UserContract:
  - AssignContractToUserCommand
  - GetUserContractsQuery
  - GetContractUsersQuery
  - RevokeUserContractCommand
```

**توضیح**: Contracts احتمالاً برای قراردادهای عضویت یا خریدهای خاص است.

**تنظیمات دسترسی پیشنهادی**:
- SuperAdmin: همه عملیات
- Admin: Assign, Get queries
- Inspector: فقط Get queries

**اولویت**: 🟢 پایین (در صورت نیاز بیزینسی)

---

### 12. Public Messages (`public_messages.proto`)
**وضعیت**: هیچ Handler در BFF وجود ندارد

```
باید اضافه شود:
  - CreatePublicMessageCommand (ایجاد اعلان عمومی)
  - UpdatePublicMessageCommand
  - DeletePublicMessageCommand
  - GetAllPublicMessagesQuery
  - GetPublicMessageQuery
  - PublishMessageCommand (انتشار اعلان)
  - ArchiveMessageCommand (بایگانی)
```

**توضیح**: پیام‌های عمومی برای اطلاع‌رسانی به تمام کاربران

**تنظیمات دسترسی پیشنهادی**:
- SuperAdmin: همه عملیات
- Admin: Create, Update, Publish
- Inspector: فقط Get queries

**اولویت**: 🟡 متوسط

---

### 13. User Address (`useraddress.proto`)
**وضعیت**: در BFF موجود است ✅

- ✅ CreateNewUserAddressCommand
- ✅ UpdateUserAddressCommand
- ✅ DeleteUserAddressCommand
- ✅ GetAllUserAddressByFilterQuery
- ✅ GetUserAddressQuery

---

## 📋 خلاصه کارهای باقی‌مانده در CMS

### 🔴 اولویت بالا (برای Launch ضروری):
1. **Transactions** - درگاه پرداخت
   - زمان: 3 روز
   - Commands: 7 مورد
   - ✅ داکیومنت: در `REMAINING-TASKS.md`

### 🟡 اولویت متوسط (برای فروشگاه):
2. **Shopping Cart**
   - زمان: 2 روز
   - Commands: 6 مورد
   
3. **Public Messages**
   - زمان: 1 روز
   - Commands: 6 مورد
   
4. **Products (تکمیل)**
   - Tags Management
   - Bulk Operations
   - Low Stock Alerts
   - زمان: 2 روز

5. **Orders (تکمیل)**
   - Cancel/Status/Discount
   - Reports
   - زمان: 2 روز

### 🟢 اولویت پایین:
6. **Contracts** (در صورت نیاز بیزینسی)
   - زمان: 2 روز

---

## 🎯 نقشه راه پیشنهادی

### هفته 1: Transaction System (درگاه پرداخت)
- CMS: 7 Command/Query
- BFF: 7 Handler
- BackOffice: صفحه تراکنش‌ها
- ✅ داکیومنت

### هفته 2: Shopping Cart
- CMS: 6 Command/Query
- BFF: 6 Handler
- BackOffice: صفحه مدیریت سبدهای خرید کاربران
- ✅ داکیومنت

### هفته 3: Products & Orders تکمیل
- Tags Management
- Bulk Operations
- Order Cancel/Status
- ✅ داکیومنت

### هفته 4: Public Messages
- Create/Publish Messages
- Notification System
- ✅ داکیومنت

---

## 📊 تخمین زمان کل

| فیچر | CMS | BFF | BackOffice | جمع |
|------|-----|-----|------------|-----|
| Transactions | 3 روز | 2 روز | 2 روز | **1 هفته** |
| Shopping Cart | 2 روز | 1 روز | 2 روز | **1 هفته** |
| Products/Orders تکمیل | 2 روز | 1 روز | 2 روز | **1 هفته** |
| Public Messages | 1 روز | 1 روز | 1 روز | **3 روز** |
| **جمع کل** | | | | **3.5 هفته** |

---

## ✅ چک‌لیست قبل از شروع هر فیچر

- [ ] بیزینس در `network-club-commission-system-v1.1.md` مستند شده؟
- [ ] Proto file در CMS تعریف شده؟
- [ ] Commands/Queries در CMS پیاده‌سازی شده؟
- [ ] Migration اجرا شده؟
- [ ] Handlers در BFF اضافه شده؟
- [ ] Controllers در BFF تعریف شده؟
- [ ] صفحات در BackOffice ایجاد شده؟
- [ ] تست‌های دستی انجام شده؟
- [ ] ✅ داکیومنت نهایی (مقایسه کد با داکیومنت)

---

**آخرین به‌روزرسانی**: 2025-12-01
