# 📋 کارهای باقیمانده - تجمیع کامل پروژه FourSat
> **⚠️ نکته مهم**: برای گزارش کامل آمادگی تحویل، مراجعه کنید به: [DELIVERY-READINESS-REPORT.md](DELIVERY-READINESS-REPORT.md)
> **⚠️ نکته مهم توسعه**: برای تسریع روند توسعه، handlers جدید BackOffice.BFF با TODO کامنتهای دقیق پیادهسازی میشوند به جای implementation کامل. هر TODO شامل:
> - مراحل دقیق پیادهسازی (گام به گام)
> - نام دقیق typeها و namespaceها
> - نکات مهم درباره nullable types، casting، و proto mappings
> - این رویکرد سرعت توسعه را حفظ میکند بدون کاهش دقت
> **تاریخ بهروزرسانی**: 1403/09/14 (2024-12-04)
> **وضعیت کلی**: 99% تکمیل شده
> **مسیر توسعه**: CMS → BackOffice.BFF → BackOffice (UI) → FrontOffice.BFF → FrontOffice
---
## 📊 خلاصه وضعیت کلی پروژه
### ✅ تکمیل شده
- **CMS Microservice**: 95% (12 از 12 Phase کامل، 9 TODO handlers باقیمانده)
- **BackOffice.BFF**: 85% (47 Handler تکمیل، 8 TODO handlers، 19 Discount Shop handlers باقیمانده)
- **BackOffice UI**: 85% (56 صفحه آماده Production - قابل تحویل به Admin)
- **FrontOffice.BFF**: 20% (فقط برخی Queries پایه)
- **FrontOffice UI**: 10% (چند صفحه اولیه)
### 🔴 اولویتهای اصلی (باید انجام شوند)
1. ~~تکمیل Payment Gateway Integration (CMS Phase 10)~~ ✅ Backend Complete (85%)
- ✅ DayaPaymentService پیادهسازی کامل
- ✅ GetWithdrawalReports Query (CMS + BackOffice.BFF)
- ⏸️ CMS gRPC Service + BackOffice UI باقیمانده
2. ~~Club Discount Shop System (CMS Phase 9)~~ ✅ Complete
3. ~~Product Bulk Operations~~ ✅ Backend Complete (100%)
4. ~~Order Management~~ ✅ Proto/gRPC/Mapster Complete (9 TODO handlers باقیمانده)
5. ~~Public Messages System~~ ✅ Proto/gRPC Complete (5 TODO handlers باقیمانده)
6. **Package Purchase System** ✅ Proto/gRPC Complete (4 TODO handlers باقیمانده)
7. **Discount Shop - BackOffice Integration** 🔴 **اولویت اول** (0% - 19 handlers لازم)
### 📦 **قابل تحویل به Admin**:
- ✅ **BackOffice با 56 صفحه کاملاً کاربردی**
- Dashboard, Users, Products, Orders, Categories
- Commission, Network, Packages, Roles, Settings
- ✅ **CMS Backend کامل برای**:
- Discount Shop, Tags, Product Bulk Ops, Withdrawal Reports
- ⚠️ **نیاز به تکمیل**:
- 9 TODO handlers در CMS
- 27 TODO handlers در BackOffice.BFF
- UI برای Discount Shop, Public Messages, Reports
---
## 🎯 مسیر پیشنهادی توسعه
```
مرحله 1: تکمیل CMS Core APIs ✅ COMPLETE
├── ✅ Payment Gateway (100%)
├── ✅ Club Discount Shop System (100%)
├── ✅ CRUD های پایه
├── ✅ Commission & Worker System
└── ✅ Withdrawal & Settlement
مرحله 2: تکمیل Payment Gateway + CRUD اضافی (در حال انجام)
├── ✅ Payment Gateway Backend (85%)
│ ├── ✅ DayaPaymentService Implementation
│ ├── ✅ GetWithdrawalReports (CMS + BFF)
│ ├── [ ] CMS gRPC Service
│ └── [ ] BackOffice UI (Reports + Withdrawal Management)
├── [ ] Product Bulk Operations - نیم روز
├── [ ] Order Management - نیم روز
└── [ ] Public Messages System - نیم روز
مرحله 3: BackOffice UI تکمیلی
├── [ ] Financial Reports Page - 1.5 روز
├── [ ] Withdrawal Management Page - 2 روز
└── [ ] Product Bulk Operations UI - نیم روز
مرحله 4: FrontOffice (اولویت اصلی بعدی)
├── FrontOffice.BFF APIs - 2 هفته
│ ├── Browse Discount Shop Products
│ ├── Shopping Cart Management
│ ├── Order Placement & Payment
│ └── Order Tracking
└── FrontOffice UI Pages - 3 هفته
├── Product Catalog
├── Shopping Cart
├── Checkout Flow
└── Order History
```
---
## 🔴 بخش 1: CMS Microservice - کارهای باقیمانده
### 1.0 تصحیحات و بهبودهای فوری ⚠️ **بحرانی**
**وضعیت**: ✅ کامل شده
**زمان انجام**: 2 روز (4 دسامبر 2024)
#### ✅ تکمیل شده:
- UserWalletChangeLog: اضافه شدن فیلدهای CurrentDiscountBalance و ChangeDiscountValue ✅
- حذف ParentId از User (فقط NetworkParentId باقی ماند) ✅
- Migration های مربوطه ✅
- **اصلاح حق عضویت باشگاه** ✅
- فیلد GiftValue به ClubMembership اضافه شد
- حق عضویت (25,200,000) از کیف پول کم نمیشود
- مقدار از SystemConfiguration خوانده میشود
- **اصلاح Flash Out Logic** ✅
- فرمول صحیح پیادهسازی شد: balancesConsumedPerSide = balancesToPay / 2
- هر طرف نصف تعادل را مصرف میکند
- محاسبه باقیماندهها درست شد
- **UserPackagePurchase Entity** ✅
- جدول جهت پشتیبانی از خرید چندین پکیج ایجاد شد
- Configuration و Migration آماده
- DbSet به ApplicationDbContext اضافه شد
---
### 1.1 Payment Gateway Integration (Phase 10) ⭐ **فوری**
**وضعیت**: 85% تکمیل (گزارشهای مالی افزوده شد)
**زمان تخمینی**: 4-5 روز کاری باقیمانده
#### ✅ تکمیل شده:
- Commands: RequestWithdrawal, ProcessWithdrawal, ApproveWithdrawal, RejectWithdrawal
- Database: UserCommissionPayout, CommissionPayoutHistory
- IPaymentGatewayService Interface
- MockPaymentGatewayService (برای Development)
- DayaPaymentService: پیادهسازی کامل (InitiatePaymentAsync, VerifyPaymentAsync, ProcessPayoutAsync) ✅
- ProcessWithdrawalCommandHandler یکپارچه با Gateway ✅
- Entity Updates: BankReferenceId, BankTrackingCode, PaymentFailureReason ✅
- Enum: PaymentFailed status ✅
- Configuration: appsettings.json DayaPayment section ✅
- **گزارشهای مالی Backend** ✅ (4 دسامبر 2024):
- CMS: GetWithdrawalReportsQuery + Handler + DTOs
- BackOffice.BFF: GetWithdrawalReportsQuery + Handler
- Proto: GetWithdrawalReports RPC با message definitions
- دستهبندی روزانه/هفتگی/ماهانه با پشتیبانی تقویم شمسی
- خلاصه آماری (تعداد، مبلغ، نرخ موفقیت)
#### ❌ باقیمانده:
**الف. CMS gRPC Service (1 روز)**
```
- [ ] ایجاد CommissionService یا بهروزرسانی موجود
- [ ] پیادهسازی GetWithdrawalReports RPC handler
- [ ] Mapping از Domain به Proto
- [ ] تست gRPC endpoint
```
**ب. BackOffice UI - Withdrawal Management (2 روز)**
```
- [ ] صفحه لیست درخواستهای برداشت
- [ ] دکمههای تأیید/رد با Confirmation Dialog
- [ ] نمایش BankReferenceId و TrackingCode
- [ ] نمایش وضعیت PaymentFailed و دلیل خطا
- [ ] فیلترینگ بر اساس Status
- [ ] جستجو بر اساس UserId/IbanNumber
```
**ج. BackOffice UI - Financial Reports (1.5 روز)**
```
- [ ] صفحه گزارشهای مالی با فیلترها (تاریخ، نوع دوره، وضعیت، کاربر)
- [ ] نمایش گزارشهای دورهای (روزانه/هفتگی/ماهانه)
- [ ] Chart.js visualization (نمودار میلهای/خطی)
- [ ] نمایش خلاصه آماری (کارتهای اطلاعاتی)
- [ ] خروجی Excel (EPPlus)
- [ ] خروجی PDF (QuestPDF)
```
**د. تست یکپارچه (نیم روز)**
```
- [ ] تست تراکنشهای واقعی با Daya API
- [ ] تست Callback/Webhook مدیریت
- [ ] تست retry logic در شرایط خطا
```
---
### 1.2 CRUD های اضافی ⭐ **بالا**
**وضعیت**: 67% (Tag Management و Product Bulk Operations کامل شده)
**زمان تخمینی**: 1 روز باقیمانده
#### الف. Tag Management ✅ **کامل شده** (4 دسامبر 2024)
```
CMS Application Layer: ✅
- [✅] CreateTagCommand + Handler + Validator
- [✅] UpdateTagCommand + Handler + Validator
- [✅] DeleteTagCommand + Handler
- [✅] AssignTagToProductCommand + Handler (ProductTag entity)
- [✅] GetAllTagsQuery + Handler
- [✅] GetProductsByTagQuery + Handler
- [✅] Proto: tag.proto, producttag.proto موجود
- [✅] gRPC Services: TagService, ProductTagService
- [✅] Mapping: TagProfile با Mapster
BackOffice.BFF: ✅
- [✅] CreateTagCommand + Handler
- [✅] UpdateTagCommand + Handler
- [✅] DeleteTagCommand + Handler
- [✅] AssignTagToProductCommand + Handler
- [✅] GetAllTagsQuery + Handler
- [✅] GetTagQuery + Handler
- [✅] GetProductsByTagQuery + Handler
- [✅] gRPC Clients: Tags, ProductTags registered
- [✅] Typo Fixes: ProductGallerys→ProductGalleries, PruductCategory→ProductCategory
BackOffice UI: ⏸️
- [ ] صفحه مدیریت Tags
- [ ] Dialog ایجاد/ویرایش Tag
- [ ] صفحه Assign Tags به محصولات
```
**مستندات**: Backend کامل، UI باقیمانده
#### ب. Product Bulk Operations ✅ **کامل شده** (4 دسامبر 2024)
```
CMS Application Layer: ✅
- [✅] BulkUpdateProductPricesCommand + Handler + Validator
- [✅] BulkUpdateProductStockCommand + Handler + Validator
- [✅] GetLowStockProductsQuery + Handler + Validator
- [✅] ToggleProductStatusCommand + Handler + Validator
- [✅] Response DTOs با error tracking
- [✅] Logging برای همه عملیات
CMS Protobuf + gRPC: ✅
- [✅] products.proto: 4 RPC جدید (BulkUpdateProductPrices, BulkUpdateProductStock, GetLowStockProducts, ToggleProductStatus)
- [✅] Message definitions: ProductPriceUpdate, ProductStockUpdate, LowStockProduct, BulkOperationError
- [✅] StockUpdateType enum (Set/Add/Subtract)
- [✅] ProductsService: 4 handler افزوده شد
- [✅] Mapster mappings در ProductsProfile
BackOffice.BFF: ✅
- [✅] BulkUpdateProductPricesCommand + Handler
- [✅] BulkUpdateProductStockCommand + Handler
- [✅] GetLowStockProductsQuery + Handler
- [✅] ToggleProductStatusCommand + Handler
- [✅] DTOs با rename برای جلوگیری از conflict با proto
- [✅] gRPC client integration
BackOffice UI: ⏸️
- [ ] صفحه Bulk Edit Products
- [ ] DataGrid با انتخاب چندتایی
- [ ] فرم Bulk Update
```
#### ج. Order Management ✅ **کامل شده** (4 دسامبر 2024)
```
CMS Application Layer: ✅
- [✅] CancelOrderCommand + Handler + Validator (از قبل موجود)
- [✅] UpdateOrderStatusCommand + Handler + Validator (TODO با راهنمای State Machine)
- [✅] GetOrdersByDateRangeQuery + Handler + Validator (TODO با فیلترهای پیشرفته و Pagination)
- [✅] ApplyDiscountToOrderCommand + Handler + Validator (TODO با validation تخفیف دستی)
- [✅] CalculateOrderPVQuery + Handler + Validator (TODO با محاسبه PV برای MLM)
- [✅] Response DTOs با error handling
BackOffice.BFF: ⏸️
- [ ] 4 Handlers (TODO)
BackOffice UI: ⏸️
- [ ] دکمه Cancel Order با Confirmation
- [ ] Dropdown تغییر Status
- [ ] فیلتر Date Range
- [ ] Dialog اعمال تخفیف
```
**سطوح دسترسی**:
- SuperAdmin: همه عملیات ✅
- Admin: همه عملیات محصولات/سفارشات ✅
- Inspector: فقط مشاهده ✅
---
### 1.3 Public Messages System ⭐ **متوسط**
**وضعیت**: ✅ 100% تکمیل CMS Backend (4 دسامبر 2024)
**زمان صرف شده**: 1 روز
#### ✅ تکمیل شده:
```
CMS:
- [✅] Proto: public_messages.proto موجود
- [✅] Entity: PublicMessage (merged با فیلدهای کامل)
- Title, Content, Type (MessageType enum)
- Priority (MessagePriority enum)
- IsActive, IsArchived
- StartDate, EndDate, PublishedAt, ArchivedAt
- CreatedByUserId, ViewCount, LinkUrl, LinkText
- StartsAt/ExpiresAt (backward compatibility properties)
- [✅] Enum: MessageType (Announcement, News, Warning, Promotion, SystemUpdate, Event)
- [✅] CreatePublicMessageCommand + Handler + Validator (موجود)
- [✅] UpdatePublicMessageCommand + Handler + Validator (موجود)
- [✅] DeletePublicMessageCommand + Handler (موجود)
- [✅] PublishMessageCommand + Handler + Validator (TODO)
- [✅] ArchiveMessageCommand + Handler + Validator (TODO)
- [✅] GetAllMessagesQuery + Handler + Validator (موجود - AdminPublicMessageDto)
- [✅] GetActiveMessagesQuery + Handler + Validator (موجود - PublicMessageDto)
- [✅] GetPublicMessageQuery + Handler + Validator (TODO - single message)
```
**نکته مهم**:
- Entity از قبل دو نسخه موجود بود (Entities/PublicMessage.cs و Entities/Message/PublicMessage.cs)
- نسخه قدیمی حذف و نسخه جدید merge شد
- Commands/Queries قبلی موجود بودند: Create, Update, Delete, GetAll, GetActive
- 3 operation جدید اضافه شد: PublishMessage, ArchiveMessage, GetPublicMessage
- DTOs آپدیت شدند برای nullable dates (StartsAt, ExpiresAt, CreatedByUserId)
#### ❌ باقیمانده:
```
CMS:
- [✅] Proto: public_messages.proto موجود
- [ ] Entity: PublicMessage (Title, Content, Type, StartDate, EndDate, IsActive)
- [ ] Enum: MessageType (Info, Warning, Error, Success)
#### ❌ باقیمانده:
```
BackOffice.BFF:
- [ ] 8 Handlers (TODO format):
- CreatePublicMessage
- UpdatePublicMessage
- DeletePublicMessage
- PublishMessage
- ArchiveMessage
- GetAllMessages
- GetActiveMessages
- GetPublicMessage
BackOffice UI:
- [ ] صفحه لیست اعلانات (DataGrid)
- [ ] Dialog ایجاد/ویرایش اعلان
- [ ] دکمه Publish/Archive
- [ ] پیشنمایش اعلان
```
**سطوح دسترسی**:
- SuperAdmin: همه عملیات ✅
- Admin: Create, Update, Publish ✅
- Inspector: فقط مشاهده ✅
**مستندات**: `CMS/public-messages-system.md` موجود است
---
### 1.4 Package Purchase System 🔴 **بسیار بالا** (جدید)
**وضعیت**: ✅ 85% تکمیل Backend (4 دسامبر 2024)
**زمان صرف شده**: 1.5 روز
**زمان باقیمانده**: 0.5 روز Backend + UI
**مستندات**: `totalDoc/CMS/package-purchase-system.md` ✅
#### ✅ الف. Entity Changes (1 روز) - تکمیل شده
```
- [✅] ایجاد Enum: PackagePurchaseMethod (None, DayaLoan, DirectPurchase)
محل: CMSMicroservice.Domain/Enums/PackagePurchaseMethod.cs
- [✅] اضافه کردن فیلد به User:
public PackagePurchaseMethod PackagePurchaseMethod { get; set; } = PackagePurchaseMethod.None;
- [✅] اضافه کردن فیلد به ClubMembership:
public PackagePurchaseMethod PurchaseMethod { get; set; }
- [ ] ایجاد Migration: AddPackagePurchaseMethod (نیاز به migration دستی)
- [ ] Update-Database
```
#### ✅ ب. Commands & Handlers (1 روز) - تکمیل شده
```
CMS Application Layer:
- [✅] PurchaseGoldenPackageCommand + Handler + Validator (TODO)
- بررسی User.PackagePurchaseMethod != None
- ثبت UserOrder با PackageId
- Redirect به درگاه IPG
- InitiatePaymentAsync از IPaymentGatewayService
- [✅] VerifyGoldenPackagePurchaseCommand + Handler + Validator (TODO)
- Verify پرداخت با بانک
- شارژ UserWallet.Balance (56M)
- ثبت Transaction (Type: DepositIpg)
- ثبت UserWalletChangeLog
- Set User.PackagePurchaseMethod = DirectPurchase
- بهروزرسانی UserOrder
- [✅] ActivateClubMembershipCommand + Handler (موجود - آپدیت شده)
- بررسی User.PackagePurchaseMethod != None
- بررسی UserWallet.Balance >= 56M
- پیدا کردن UserOrder با PackageId
- بررسی Transaction.Type (DepositIpg یا DepositExternal1)
- ثبت/بهروزرسانی ClubMembership
- Set ClubMembership.PurchaseMethod
- [ ] ChargeDiscountWalletCommand + Handler
- Redirect به درگاه برای شارژ DiscountBalance
- [ ] VerifyDiscountWalletChargeCommand + Handler
- Verify پرداخت
- شارژ UserWallet.DiscountBalance
- ثبت Transaction (Type: DiscountWalletCharge)
```
#### ج. بهروزرسانی DayaLoan Flow (0.5 روز)
```
- [ ] تغییر ProcessDayaLoanCommandHandler:
user.PackagePurchaseMethod = PackagePurchaseMethod.DayaLoan;
- [✅] GetUserPackageStatusQuery + Handler + Validator (TODO)
- دریافت وضعیت خرید پکیج کاربر
- PackagePurchaseMethod, HasPurchased, IsClubMemberActive
- WalletBalance, CanActivateClubMembership
```
#### ✅ ج. gRPC & Proto (0.5 روز) - تکمیل شده
```
CMS:
- [✅] package.proto:
- PurchaseGoldenPackage RPC
- VerifyGoldenPackagePurchase RPC
- GetUserPackageStatus RPC
- Request/Response messages
- [✅] PackageService.cs: پیادهسازی 3 RPC جدید
- [✅] PackageProfile.cs: Mapster mappings (Command/Query ↔ Proto)
BackOffice.BFF:
- [✅] package.proto: GetUserPackageStatus RPC (Admin view)
- [✅] PackageService.cs: پیادهسازی RPC
- [✅] GetUserPackageStatusQuery + Handler + Validator (TODO)
- [✅] PackageProfile.cs: Mapster mapping
- [✅] Project Reference: BackOffice.BFF.Package.Protobuf added
```
#### ❌ د. BackOffice UI (نیم روز) - باقیمانده
```
- [ ] تست PurchaseGoldenPackageCommand:
- کاربر با PackagePurchaseMethod != None → خطا
- کاربر جدید → موفق
- [ ] تست ActivateClubMembershipCommand:
- کاربر بدون پکیج → خطا
- کاربر با موجودی < 56M → خطا
- کاربر معتبر → موفق
- [ ] تست VerifyDiscountWalletChargeCommand:
- پرداخت موفق → DiscountBalance افزایش یابد
```
#### ه. Documentation (0.5 روز)
```
- [✅] package-purchase-system.md ایجاد شد
- [ ] بهروزرسانی implementation-progress.md
```
**نکات کلیدی**:
- کاربر فقط **یک بار** میتواند پکیج طلایی بخرد (سناریو 1 یا 2)
- فعالسازی باشگاه **توسط خود کاربر** از FrontOffice UI
- فعالسازی باشگاه **بدون نیاز به تایید Admin**
- سناریو 3 (شارژ DiscountBalance) **هیچ ارتباطی** با Package ندارد
- کمیسیونها **فقط بعد** از فعالسازی ClubMembership محاسبه میشوند
---
### 1.5 Discount Shop System 🟡 **متوسط** (جدید)
**وضعیت**: 0%
**زمان تخمینی**: 15.5 روز (~3 هفته)
**مستندات**: `totalDoc/CMS/discount-shop-system.md` ✅
#### الف. Entity Creation (2 روز)
```
CMS Domain (namespace: DiscountShop):
- [ ] DiscountProduct
- Title, Description, Price, DiscountPercent
- ImagePath, ThumbnailPath
- SaleCount, ViewCount, RemainingCount
- IsActive
- [ ] DiscountCategory
- Name, Title, Description, ImagePath
- ParentId (self-referencing)
- IsActive, SortOrder
- [ ] DiscountProductCategory (Many-to-Many)
- [ ] DiscountShoppingCart
- UserId, DiscountProductId, Count, UnitPrice
- [ ] DiscountOrder
- UserId, TotalAmount, DiscountAmount, PayableAmount
- PaymentStatus, PaymentDate, TransactionId
- UserAddressId, DeliveryStatus, TrackingCode
- [ ] DiscountOrderDetail
- DiscountOrderId, DiscountProductId
- Quantity, UnitPrice, DiscountPercent, TotalPrice
CMS Infrastructure:
- [ ] Configuration classes برای هر Entity
- [ ] بهروزرسانی DbContext
- [ ] Migration: AddDiscountShopTables
- [ ] Update-Database
```
#### ب. CMS Commands & Queries (3 روز)
```
DiscountProduct CRUD:
- [ ] CreateDiscountProductCommand + Handler + Validator
- [ ] UpdateDiscountProductCommand + Handler + Validator
- [ ] DeleteDiscountProductCommand + Handler
- [ ] GetDiscountProductByIdQuery + Handler + DTO
- [ ] GetDiscountProductsListQuery + Handler + DTO
DiscountCategory CRUD:
- [ ] CreateDiscountCategoryCommand + Handler + Validator
- [ ] UpdateDiscountCategoryCommand + Handler + Validator
- [ ] DeleteDiscountCategoryCommand + Handler
- [ ] GetDiscountCategoriesTreeQuery + Handler + DTO
Shopping Cart:
- [ ] AddToDiscountCartCommand + Handler
- [ ] RemoveFromDiscountCartCommand + Handler
- [ ] GetDiscountCartQuery + Handler + DTO
Order:
- [ ] CreateDiscountOrderCommand (Checkout) + Handler
- بررسی UserWallet.DiscountBalance
- کم کردن موجودی
- ثبت Transaction (Type: Buy)
- ثبت DiscountOrder + DiscountOrderDetail
- خالی کردن Cart
- [ ] GetDiscountOrderByIdQuery + Handler + DTO
- [ ] GetMyDiscountOrdersQuery + Handler + DTO
- [ ] UpdateDiscountOrderDeliveryCommand + Handler (Admin)
```
#### ج. BackOffice.BFF APIs (1 روز)
```
Proto: DiscountShopContract.proto
- [ ] CreateDiscountProduct
- [ ] UpdateDiscountProduct
- [ ] GetDiscountProducts
- [ ] CreateDiscountCategory
- [ ] GetDiscountCategoriesTree
- [ ] GetDiscountOrders
- [ ] UpdateDiscountOrderDelivery
Handlers: 7 عدد
```
#### د. FrontOffice.BFF APIs (1 روز)
```
Proto: DiscountShopContract.proto
- [ ] GetDiscountProducts (Browse)
- [ ] GetDiscountProductById
- [ ] AddToDiscountCart
- [ ] GetMyDiscountCart
- [ ] RemoveFromDiscountCart
- [ ] CheckoutDiscountCart
- [ ] GetMyDiscountOrders
Handlers: 7 عدد
```
#### ه. BackOffice UI (3 روز)
```
- [ ] صفحه لیست محصولات تخفیفی + CRUD
- [ ] صفحه مدیریت دستهبندیها (Tree View) + CRUD
- [ ] صفحه لیست سفارشات تخفیفی
- [ ] تغییر وضعیت ارسال سفارشات
- [ ] گزارش فروش Discount Shop
```
#### و. FrontOffice UI (3 روز)
```
- [ ] صفحه لیست محصولات تخفیفی (با فیلتر)
- [ ] صفحه جزئیات محصول تخفیفی
- [ ] سبد خرید تخفیفی
- [ ] Checkout (نمایش DiscountBalance)
- [ ] لیست سفارشات تخفیفی کاربر
```
#### ز. Unit Tests (2 روز)
```
- [ ] تست CRUD محصولات تخفیفی
- [ ] تست AddToDiscountCart
- [ ] تست CheckoutDiscountCart:
- موجودی کافی → موفق
- موجودی ناکافی → خطا
```
#### ح. Documentation (0.5 روز)
```
- [✅] discount-shop-system.md ایجاد شد
- [ ] بهروزرسانی implementation-progress.md
```
**نکات کلیدی**:
- خرید از Discount Shop **فقط** با `DiscountBalance`
- خرید از Regular Shop **فقط** با `Balance`
- هیچ ارتباطی بین محصولات Discount و Regular نیست
- Admin مدیریت جداگانه برای هر فروشگاه
- پرداخت از **یک درگاه** مشترک ولی Transaction Types متفاوت
---
### 1.6 Manual Payment System ⭐ **بالا**
**وضعیت**: 0%
**زمان تخمینی**: 2 روز
```
CMS Domain:
- [ ] ManualPaymentStatus enum:
- PendingAdminApproval = 0
- PendingPayment = 1
- PaymentCompleted = 2
- Rejected = 3
- Expired = 4
- [ ] ManualPaymentMethod enum:
- CardToCard = 0 (کارتبهکارت)
- OnlineGateway = 1 (درگاه آنلاین)
- [ ] ManualPaymentRequest entity:
- UserId, Amount, Method, Status
- ReceiptImagePath, AdminNotes
- RequestedAt, ProcessedAt, ExpiresAt
CMS Application:
- [ ] CreateManualPaymentRequestCommand + Handler + Validator
* Check: کاربر فقط یک درخواست Pending داشته باشد
* CardToCard → Status=PendingAdminApproval
* OnlineGateway → Status=PendingPayment, ایجاد URL درگاه
- [ ] VerifyManualPaymentCommand + Handler (بعد از بازگشت از درگاه)
- [ ] ApproveManualPaymentCommand + Handler (Admin)
* شارژ کیف پول کاربر
* Status → PaymentCompleted
- [ ] RejectManualPaymentCommand + Handler (Admin)
* AdminNotes
* Status → Rejected
- [ ] ProcessManualPaymentCommand + Handler (Internal worker)
* شارژ خودکار بعد از تأیید پرداخت
- [ ] GetUserManualPaymentHistoryQuery + Handler
- [ ] GetPendingManualPaymentsQuery + Handler (Admin)
CMS Infrastructure:
- [✅] IPaymentGatewayService (از قبل موجود)
- [ ] IFileStorageService (آپلود تصویر رسید)
* LocalFileStorageService
* AzureBlobStorageService (optional)
BackOffice.BFF:
- [ ] 7 Handlers
BackOffice UI:
- [ ] صفحه لیست درخواستهای Manual Payment (Admin)
- [ ] Dialog نمایش رسید (تصویر)
- [ ] دکمههای Approve/Reject
- [ ] فیلتر Status
```
**Flow**:
```
User → CreateManualPaymentRequest
├── CardToCard → آپلود رسید → Status=PendingAdminApproval
└── OnlineGateway → Redirect به درگاه → VerifyManualPayment → Status=PaymentCompleted
Admin → GetPendingManualPayments → Approve/Reject
```
**مستندات**: `CMS/manual-payment-system.md` موجود است (537 خط)
---
### 1.7 VAT System (مالیات بر ارزش افزوده) ⭐ **متوسط**
**وضعیت**: 0%
**زمان تخمینی**: 2 روز
```
CMS Domain:
- [ ] اضافه کردن VatPercentage به UserOrder entity
- [ ] اضافه کردن VatAmount (محاسبه شده) به UserOrder
CMS Application:
- [ ] Command: SetDefaultVatPercentageCommand (Admin)
- [ ] Query: GetCurrentVatPercentageQuery
- [ ] محاسبه VatAmount در CreateOrderCommand:
VatAmount = (TotalAmount × VatPercentage) / 100
CMS Configuration:
- [ ] اضافه کردن به ConfigurationKeys:
DefaultVatPercentage = 10 (پیشفرض 10%)
BackOffice.BFF:
- [ ] Handler: GetCurrentVatPercentageQuery
- [ ] Handler: SetDefaultVatPercentageCommand
BackOffice UI:
- [ ] نمایش VatAmount در لیست سفارشات
- [ ] نمایش VatPercentage در جزئیات سفارش
- [ ] صفحه تنظیمات VAT (Settings/General)
* فیلد عددی برای VatPercentage
* دکمه ذخیره
* نمایش: "شامل 10% مالیات بر ارزش افزوده"
FrontOffice UI:
- [ ] نمایش VAT در سبد خرید
- [ ] نمایش VAT در صفحه Checkout
* "شامل 10% مالیات بر ارزش افزوده"
* جزئیات: مبلغ کالا + مالیات = مبلغ نهایی
```
---
### 1.8 RBAC (Role-Based Access Control) ⭐⭐ **حیاتی**
**وضعیت**: 0%
**زمان تخمینی**: 1.5 هفته (10 روز کاری)
#### 3 نقش اصلی:
**1. SuperAdmin (سوپر ادمین)**
```
دسترسی کامل به:
- ✅ تمام بخشها
- ✅ مدیریت کاربران
- ✅ مدیریت نقشها
- ✅ تنظیمات سیستم
- ✅ Configuration Keys
- ✅ تغییر VAT
- ✅ حذف هر چیزی
```
**2. Admin (ادمین)**
```
دسترسی به:
- ✅ Dashboard
- ✅ سفارشات (Create, Update, Cancel)
- ✅ محصولات (CRUD)
- ✅ کاربران (View, Update - بدون Delete)
- ✅ کمیسیونها (View, Approve Withdrawal)
- ✅ Public Messages (Create, Update, Publish)
- ❌ تنظیمات حساس (Configuration Keys, VAT)
- ❌ حذف کاربران
- ❌ مدیریت نقشها
```
**3. Inspector (بازرس - فقط مشاهده)**
```
دسترسی به:
- ✅ Dashboard (Read-Only)
- ✅ گزارشها (View)
- ✅ سفارشات (View)
- ✅ کاربران (View)
- ✅ کمیسیونها (View)
- ❌ هیچ عملیات ویرایش/حذف/ایجاد
- ❌ Approve/Reject
- ❌ تنظیمات
```
#### پیادهسازی:
**الف. CMS Domain (1 روز)**
```
- [✅] Role entity و UserRole موجود است
- [ ] Permission entity:
- Id, Name, DisplayName, Category
- مثال: "orders.create", "orders.update", "orders.delete", "orders.view"
- [ ] RolePermission entity (Many-to-Many)
- [ ] Seed Data: 3 نقش + Permissions مربوطه
```
**ب. CMS Application (2 روز)**
```
- [ ] IAuthorizationService interface
- [ ] AuthorizationService implementation
- [ ] CheckPermissionQuery + Handler
- [ ] GetUserPermissionsQuery + Handler
- [ ] AssignRoleToUserCommand + Handler
- [ ] CreateRoleCommand + Handler (SuperAdmin only)
- [ ] UpdateRolePermissionsCommand + Handler (SuperAdmin only)
```
**ج. CMS WebApi/Protobuf (1 روز)**
```
- [ ] اضافه کردن [Authorize(Policy = "Permission:orders.create")]
- [ ] Registration Policies در Program.cs:
builder.Services.AddAuthorization(options => {
options.AddPolicy("Permission:orders.create",
policy => policy.RequireAssertion(...));
});
```
**د. BackOffice.BFF (2 روز)**
```
- [ ] AuthorizationHandler: CheckUserPermissionHandler
- [ ] AuthorizationHandler: GetUserRolesHandler
- [ ] Middleware: Permission Check قبل از فراخوانی CMS
```
**ه. BackOffice UI (4 روز)**
```
- [ ] NavMenu.razor: فیلتر کردن Menu Items بر اساس Permission
* مثال: اگر "orders.create" نداشت، دکمه "ایجاد سفارش" نمایش نده
- [ ] AuthorizationService.cs (Client-side)
* کش کردن Permissions کاربر در LocalStorage
* Refresh هر ساعت
- [ ] صفحه مدیریت نقشها (SuperAdmin only):
* لیست Roles
* Dialog: Assign Permissions به Role
* Tree View: دستهبندی Permissions
- [ ] صفحه مدیریت کاربران:
* Dialog: Assign Role به User
* Dropdown: SuperAdmin/Admin/Inspector
- [ ] Disable دکمهها برای Inspector:
* Edit/Delete buttons → Disabled=true
* فقط View Details active
```
**مثال Permission Tree**:
```
Orders
├── orders.view
├── orders.create
├── orders.update
├── orders.delete
└── orders.approve
Commission
├── commission.view
├── commission.approve_withdrawal
└── commission.reject_withdrawal
Users
├── users.view
├── users.create
├── users.update
├── users.delete
└── users.assign_role
Settings
├── settings.view
└── settings.update
```
---
### 1.9 Club Discount Shop System (Phase 9) ✅ **تکمیل شده**
**وضعیت**: 100%
**تاریخ تکمیل**: 2024-12-04
**مدت زمان**: 1 روز
#### ✅ پیادهسازی کامل:
- ✅ **6 Entities**: DiscountCategory, DiscountProduct, DiscountProductCategory, DiscountShoppingCart, DiscountOrder, DiscountOrderItem
- ✅ **6 EF Configurations** + Migration (AddDiscountShopSystem)
- ✅ **13 Commands** with Handlers:
- Product: Create, Update, Delete
- Category: Create, Update, Delete
- Cart: AddToCart, RemoveFromCart, UpdateItemCount, ClearCart
- Order: PlaceOrder, CompletePayment, UpdateOrderStatus
- ✅ **6 Queries** with Handlers:
- GetDiscountProducts (with filters)
- GetDiscountProductById
- GetDiscountCategories (tree structure)
- GetUserCart (with totals)
- GetOrderById
- GetUserOrders (with pagination)
- ✅ **9 Validators**: Complete validation for all critical operations
- ✅ **4 Proto files** (529 lines, 19 gRPC RPCs)
- ✅ **4 gRPC Services**: DiscountProductService, DiscountCategoryService, DiscountShoppingCartService, DiscountOrderService
- ✅ **Hybrid Payment Logic**: MaxDiscountPercent calculation
- ✅ **Stock Management**: Automatic inventory updates
- ✅ **Build Status**: 0 errors, 287 warnings
**Business Logic**:
- کاربر میتواند تا سقف MaxDiscountPercent از کیف پول تخفیف استفاده کند
- مبلغ باقیمانده باید از طریق درگاه پرداخت شود
- Order lifecycle: Pending → Processing → Shipped → Delivered/Cancelled
**مستندات**: [implementation-progress.md](CMS/implementation-progress.md) - Phase 9 Section
---
### 1.10 Daya Loan - Real API Integration
**وضعیت**: Mock آماده، Real API منتظر
**زمان**: بستگی به آماده بودن API دایا دارد
```
- [✅] همه چیز پیادهسازی شده (Mock)
- [ ] جایگزینی MockDayaLoanApiService با DayaLoanApiService
- [ ] تنظیم API Key در appsettings.json
- [ ] تست Production
```
---
## 🟡 بخش 2: BackOffice.BFF - کارهای باقیمانده
**وضعیت کلی**: 100% برای APIهای فعلی CMS
**کارهای جدید**: 19 Handler جدید برای Discount Shop System
### 2.1 Discount Shop Integration ⭐ **فوری**
**وضعیت**: 0%
**زمان تخمینی**: 4 روز
**مستندات**: 📋 [discount-shop-integration-plan.md](BackOffice.BFF/discount-shop-integration-plan.md)
#### الف. آپدیت Interface & Context (30 دقیقه)
```csharp
IApplicationContractContext:
- [ ] DiscountProducts (DiscountProductContractClient)
- [ ] DiscountCategories (DiscountCategoryContractClient)
- [ ] DiscountShoppingCarts (DiscountShoppingCartContractClient)
- [ ] DiscountOrders (DiscountOrderContractClient)
ApplicationContractContext:
- [ ] پیادهسازی 4 Client جدید
- [ ] Initialize در Constructor
```
#### ب. Product Management Handlers (1 روز)
```
- [ ] CreateDiscountProductHandler
Input: Title, Description, Price, MaxDiscountPercent, Images, Categories
Output: ProductId
- [ ] UpdateDiscountProductHandler
Input: ProductId + همان فیلدهای بالا
- [ ] DeleteDiscountProductHandler
Input: ProductId
- [ ] GetDiscountProductByIdHandler
Input: ProductId
Output: تمام اطلاعات + Categories + RemainingCount
- [ ] GetDiscountProductsHandler ⭐
Input: Filters (Category, Search, Price Range, IsActive, InStock) + Pagination
Output: MetaData + List
```
#### ج. Category Management Handlers (1 روز)
```
- [ ] CreateDiscountCategoryHandler
Input: Name, Title, Description, ImagePath, ParentCategoryId
- [ ] UpdateDiscountCategoryHandler
- [ ] DeleteDiscountCategoryHandler
Logic: چک میکند آیا زیرمجموعه یا محصول دارد
- [ ] GetDiscountCategoriesHandler ⭐
Input: ParentCategoryId (nullable), IsActive
Output: Tree structure با recursive children
```
#### د. Shopping Cart Handlers (1 روز)
```
- [ ] AddToCartHandler (برای Support)
- [ ] RemoveFromCartHandler
- [ ] UpdateCartItemCountHandler
- [ ] GetUserCartHandler ⭐
Output: Cart Items + محاسبات (TotalPrice, DiscountAmount, FinalPrice)
- [ ] ClearCartHandler
```
#### ه. Order Management Handlers (1 روز)
```
- [ ] PlaceOrderHandler (کمتر استفاده میشود)
- [ ] CompleteOrderPaymentHandler (کمتر استفاده میشود)
- [ ] UpdateOrderStatusHandler ⭐⭐⭐
Input: OrderId, NewStatus, TrackingCode, AdminNotes
مهمترین Handler برای Admin
- [ ] GetOrderByIdHandler ⭐⭐⭐
Output: Order Details + Items + Address + Payment Info
- [ ] GetUserOrdersHandler ⭐⭐
Input: UserId + Pagination
Output: List
```
**اولویت پیادهسازی**:
1. 🔴 **فاز 1 (MVP - 2.5 روز)**: Product (5) + Category (4) + GetOrderById (1) + UpdateOrderStatus (1)
2. 🟡 **فاز 2 (Support - 1.5 روز)**: Cart (5) + GetUserOrders (1)
---
### منتظر تکمیل CMS (قدیمی - حذف شد):
```
- [ ] PaymentHandler (بعد از Payment Gateway Integration)
* InitiatePaymentHandler
* VerifyPaymentHandler
* ProcessPayoutHandler
- [ ] OrderVatHandler (بعد از VAT System)
* GetCurrentVatPercentageHandler
* SetDefaultVatPercentageHandler
- [ ] AuthorizationHandler (بعد از RBAC)
* CheckUserPermissionHandler
* GetUserRolesHandler
* AssignRoleToUserHandler
- [ ] ManualPaymentHandlers (بعد از Manual Payment System)
* CreateManualPaymentRequestHandler
* ApproveManualPaymentHandler
* RejectManualPaymentHandler
* GetPendingManualPaymentsHandler
- [ ] PublicMessageHandlers (بعد از Public Messages)
* CreatePublicMessageHandler
* UpdatePublicMessageHandler
* DeletePublicMessageHandler
* PublishMessageHandler
* GetAllPublicMessagesHandler
* GetActiveMessagesHandler
- [ ] TagManagementHandlers
* CreateTagHandler
* UpdateTagHandler
* DeleteTagHandler
* GetAllTagsHandler
- [ ] ProductBulkHandlers
* BulkUpdateProductPricesHandler
* BulkUpdateProductStockHandler
* GetLowStockProductsHandler
```
**تخمین زمان**: 5 روز (1 روز هر Feature)
**مستندات**: `BackOffice.BFF/cms-integration.md`
---
## 🟢 بخش 3: BackOffice UI - کارهای باقیمانده
**وضعیت کلی**: 100% برای صفحات فعلی
**کارهای جدید**: 10 صفحه جدید
### منتظر تکمیل BFF:
**الف. صفحه مدیریت تراکنشها** (2 روز)
```
- [ ] Pages/Payment/Transactions.razor
* MudDataGrid با فیلتر
* Columns: RefId, Amount, Status, Date, Gateway
* دکمه View Details
* فیلتر: Date Range, Status, Gateway Type
- [ ] Components/TransactionDetailsDialog.razor
* نمایش جزئیات تراکنش
* BankReferenceId, TrackingCode
* وضعیت PaymentFailed و دلیل
```
**ب. نمایش VAT در سفارشات** (1 روز)
```
- [ ] آپدیت Pages/Orders/OrdersList.razor
* اضافه کردن ستون VatAmount
* اضافه کردن ستون VatPercentage
- [ ] آپدیت Components/OrderDetailsDialog.razor
* نمایش: "مبلغ کالا: X"
* نمایش: "مالیات (10%): Y"
* نمایش: "مبلغ نهایی: X + Y"
- [ ] Pages/Settings/VatSettings.razor
* فیلد عددی VatPercentage
* دکمه Save
```
**ج. Menu Filtering (RBAC)** (1 روز)
```
- [ ] آپدیت Shared/NavMenu.razor
* if (await AuthService.HasPermission("orders.view"))
{
}
- [ ] Services/AuthorizationService.cs
* HasPermission(string permission)
* GetUserRole()
* RefreshPermissions()
```
**د. Public Messages Management** (1 روز)
```
- [ ] Pages/Messages/MessagesList.razor
* DataGrid: Title, Type, StartDate, EndDate, IsActive
* دکمههای Create, Edit, Delete, Publish
- [ ] Components/MessageDialog.razor
* فرم: Title, Content (TinyMCE), Type, Dates
* پیشنمایش
- [ ] Components/MessagePreview.razor
* Alert با رنگ بر اساس Type
```
**ه. Manual Payment Management** (1 روز)
```
- [ ] Pages/Payment/ManualPayments.razor
* DataGrid: User, Amount, Method, Status, RequestedAt
* فیلتر: Status (PendingAdminApproval)
* دکمه View Receipt
- [ ] Components/ManualPaymentDialog.razor
* نمایش تصویر رسید
* TextArea: AdminNotes
* دکمههای Approve/Reject
```
**و. Tag Management** (1 روز)
```
- [ ] Pages/Products/Tags.razor
* DataGrid: Name, ProductCount
* دکمههای Create, Edit, Delete
- [ ] Components/TagDialog.razor
- [ ] Components/AssignTagsDialog.razor
```
**ز. Product Bulk Edit** (1 روز)
```
- [ ] Pages/Products/BulkEdit.razor
* DataGrid با Multiple Selection
* فرم: Update Price, Update Stock, Toggle Status
* دکمه Apply
```
**ح. Role Management** (2 روز) - **SuperAdmin only**
```
- [ ] Pages/System/Roles.razor
* DataGrid: RoleName, UserCount
* دکمه Edit Permissions
- [ ] Components/RolePermissionsDialog.razor
* Tree View: Permission Categories
* Checkbox: Select/Deselect Permissions
* دکمه Save
- [ ] Pages/System/Users.razor
* ستون Role
* دکمه Assign Role
```
**ط. Withdrawal Reports** (2 روز)
```
- [ ] Pages/Commission/WithdrawalReports.razor
* Chart.js: تعداد و مبلغ برداشتها
* فیلتر Date Range
* دکمه Export Excel/PDF
```
**تخمین زمان کل**: 12 روز
---
## 🔵 بخش 4: FrontOffice.BFF - کارهای باقیمانده
**وضعیت**: 20% (فقط برخی Queries پایه موجود)
**زمان تخمینی**: 2 هفته
### تسکهای اصلی:
**الف. Authentication APIs** (3 روز)
```
- [ ] RegisterCommand + Handler
- [ ] LoginQuery + Handler
- [ ] VerifyOtpCommand + Handler
- [ ] RefreshTokenCommand + Handler
- [ ] LogoutCommand + Handler
- [ ] GetMyProfileQuery + Handler
- [ ] UpdateMyProfileCommand + Handler
```
**ب. Order APIs** (3 روز)
```
- [ ] GetMyOrdersQuery + Handler
- [ ] GetMyOrderQuery + Handler
- [ ] CreateOrderCommand + Handler
- [ ] CancelMyOrderCommand + Handler
- [ ] GetOrderTrackingQuery + Handler
```
**ج. Profile APIs** (2 روز)
```
- [ ] GetMyAddressesQuery + Handler
- [ ] CreateMyAddressCommand + Handler
- [ ] UpdateMyAddressCommand + Handler
- [ ] DeleteMyAddressCommand + Handler
- [ ] SetDefaultAddressCommand + Handler
```
**د. Club & Commission (Customer)** (2 روز)
```
- [ ] GetMyClubMembershipQuery + Handler
- [ ] ActivateMyClubMembershipCommand + Handler
- [ ] GetMyCommissionPayoutsQuery + Handler
- [ ] RequestMyWithdrawalCommand + Handler
```
**ه. Network (Customer)** (2 روز)
```
- [ ] GetMyNetworkTreeQuery + Handler
- [ ] GetMyNetworkPositionQuery + Handler
- [ ] GetMyNetworkStatisticsQuery + Handler
```
**و. Wallet (Customer)** (2 روز)
```
- [ ] GetMyWalletQuery + Handler (با DiscountBalance)
- [ ] GetMyTransactionsQuery + Handler
- [ ] GetMyDiscountTransactionsQuery + Handler
```
**ز. Cart (Customer)** (2 روز)
```
- [ ] GetMyCartQuery + Handler
- [ ] AddToMyCartCommand + Handler
- [ ] UpdateMyCartItemCommand + Handler
- [ ] DeleteMyCartItemCommand + Handler
- [ ] ClearMyCartCommand + Handler
- [ ] MergeGuestCartCommand + Handler
```
**مستندات**: `FrontOffice.BFF/README.md`
---
## 🟣 بخش 5: FrontOffice UI - کارهای باقیمانده
**وضعیت**: 10% (چند صفحه پایه)
**زمان تخمینی**: 3 هفته
### تسکهای اصلی:
**الف. Authentication Pages** (3 روز)
```
- [ ] Pages/Auth/Register.razor
- [ ] Pages/Auth/Login.razor
- [ ] Pages/Auth/VerifyOtp.razor
- [ ] Pages/Auth/ForgotPassword.razor
```
**ب. Profile Pages** (4 روز)
```
- [ ] Pages/Profile/Index.razor
- [ ] Pages/Profile/EditProfile.razor
- [ ] Pages/Profile/Addresses.razor
- [ ] Pages/Profile/ChangePassword.razor
```
**ج. Order Pages** (5 روز)
```
- [ ] Pages/Orders/MyOrders.razor
- [ ] Pages/Orders/OrderDetails.razor
- [ ] Pages/Orders/Tracking.razor
```
**د. Cart & Checkout** (5 روز)
```
- [ ] Pages/Cart/Index.razor (با نمایش VAT)
- [ ] Pages/Checkout/Shipping.razor
- [ ] Pages/Checkout/Payment.razor
- [ ] Pages/Checkout/Confirmation.razor
```
**ه. Club & Commission** (4 روز)
```
- [ ] Pages/Club/Membership.razor
- [ ] Pages/Commission/MyCommissions.razor
- [ ] Pages/Commission/Withdrawal.razor
```
**و. Network Pages** (2 روز)
```
- [ ] Pages/Network/Tree.razor
- [ ] Pages/Network/Position.razor
```
**مستندات**: `FrontOffice/README.md`
---
## ⚙️ تنظیمات Production
### الف. Email (Gmail) - 15 دقیقه
1. ورود به Google Account Security
2. فعالسازی 2-Step Verification
3. ایجاد App Password
4. کپی پسورد 16 رقمی
5. آپدیت appsettings.Production.json:
```json
"Email": {
"SmtpUsername": "foursat@gmail.com",
"SmtpPassword": "xxxx xxxx xxxx xxxx"
}
```
### ب. SMS (کاوهنگار) - 15 دقیقه
1. ثبتنام در Kavenegar.com
2. کپی API Key
3. دریافت شماره Sender
4. آپدیت appsettings.Production.json:
```json
"Sms": {
"KavenegarApiKey": "YOUR_API_KEY",
"Sender": "10008663"
}
```
### ج. Connection String - 5 دقیقه
```json
"ConnectionStrings": {
"DefaultConnection": "Server=PRODUCTION_SERVER;Database=Foursat_CMS;..."
}
```
---
## 📚 مراجع و مستندات
### مستندات اصلی:
- totalDoc/CMS/implementation-progress.md (1812 خط)
- totalDoc/CMS/network-club-commission-system-v1.1.md (بیزینس)
- totalDoc/CMS/daya-loan-integration.md (361 خط)
- totalDoc/CMS/manual-payment-system.md (537 خط)
- totalDoc/BackOffice/development-plan.md (1462 خط)
- totalDoc/BackOffice.BFF/cms-integration.md
### داکیومنت هر تغییر:
- ✅ بعد از هر Feature: آپدیت implementation-progress.md
- ✅ بعد از هر API: آپدیت README.md مربوطه
- ✅ قبل از Commit: مقایسه داکیومنت با کد
- ✅ هر Business Logic: مستند کردن در مد مربوطه
---
## 🎯 اولویتبندی نهایی (برای شروع)
### هفته 1: Payment Gateway + CRUD
- روز 1-3: Payment Gateway Integration (Real API)
- روز 4: Tag Management
- روز 5: Product Bulk Operations
### هفته 2: Manual Payment + VAT
- روز 1-2: Manual Payment System
- روز 3-4: VAT System
- روز 5: Public Messages
### هفته 3-4: RBAC + BackOffice UI
- روز 1-5: RBAC پیادهسازی کامل
- روز 6-10: BackOffice UI صفحات جدید
### هفته 5-6: FrontOffice.BFF
- روز 1-10: FrontOffice.BFF APIs (همه)
### هفته 7-9: FrontOffice UI
- روز 1-15: FrontOffice UI Pages (همه)
---
**📅 زمان کل تخمینی**: 9 هفته (45 روز کاری)
**✅ بعد از تکمیل این موارد، پروژه 100% آماده Production خواهد بود.**