This commit is contained in:
masoodafar-web
2025-12-05 17:28:24 +03:30
parent 4c76690e84
commit 201915d8c5
4 changed files with 400 additions and 240 deletions
+6 -2
View File
@@ -50,7 +50,11 @@ ApproveManualPaymentCommand یا RejectManualPaymentCommand
### Domain Layer ### Domain Layer
#### **ManualPaymentStatus Enum** > **وضعیت فعلی پیاده‌سازی (CMS)**
> در نسخه‌ای که الآن در CMS داریم، سناریوی «درخواست پرداخت دستی توسط کاربر» (ManualPaymentRequest + Verify از درگاه) هنوز پیاده‌سازی نشده و فقط بخش **پرداخت دستی توسط Admin/SuperAdmin** با Entity ساده‌تر `ManualPayment` و Enumهای `ManualPaymentType` و `ManualPaymentStatus` (Pending/Approved/Rejected/Cancelled) اجرا شده است.
> بخش‌های زیر که با `ManualPaymentRequest`، `ManualPaymentMethod` و Verify/ProcessManualPayment توضیح داده شده‌اند، طراحی کامل سیستم هستند و برای فاز بعدی (FrontOffice + OnlineGateway/CardToCard) استفاده خواهند شد.
#### **ManualPaymentStatus Enum (طراحی کامل برای Requestها)**
```csharp ```csharp
public enum ManualPaymentStatus public enum ManualPaymentStatus
{ {
@@ -73,7 +77,7 @@ public enum ManualPaymentMethod
} }
``` ```
#### **ManualPaymentRequest Entity** #### **ManualPaymentRequest Entity (طراحی کامل – هنوز پیاده نشده)**
```csharp ```csharp
public class ManualPaymentRequest : BaseAuditableEntity public class ManualPaymentRequest : BaseAuditableEntity
{ {
+15
View File
@@ -270,6 +270,7 @@ NavMenu.razor - آپدیت شده با بخش‌های جدید:
- ✅ افزودن نمایش نمودار آماری سفارشات (کارت جمع سفارش‌ها و نمودار تعداد سفارش بر اساس وضعیت ارسال) - ✅ افزودن نمایش نمودار آماری سفارشات (کارت جمع سفارش‌ها و نمودار تعداد سفارش بر اساس وضعیت ارسال)
- ✅ بهبود جستجوی پیشرفته (فیلتر شناسه سفارش/کاربر/تراکنش و فیلترهای ترکیبی) - ✅ بهبود جستجوی پیشرفته (فیلتر شناسه سفارش/کاربر/تراکنش و فیلترهای ترکیبی)
- ✅ دکمه‌های مدیریت سفارش: لغو سفارش (CancelOrder) با Dialog دلیل/بازگشت وجه، تغییر وضعیت ارسال (UpdateOrderStatus) از طریق ChangeOrderStatusDialog، و Dialog اعمال تخفیف دستی (ApplyDiscountToOrder) متصل به gRPC BackOffice.BFF.UserOrder - ✅ دکمه‌های مدیریت سفارش: لغو سفارش (CancelOrder) با Dialog دلیل/بازگشت وجه، تغییر وضعیت ارسال (UpdateOrderStatus) از طریق ChangeOrderStatusDialog، و Dialog اعمال تخفیف دستی (ApplyDiscountToOrder) متصل به gRPC BackOffice.BFF.UserOrder
- ✅ نمایش VAT سفارش: ستون‌های VatAmount/VatPercentage در OrdersMainPage و خلاصه VAT (BaseAmount/VatAmount/TotalAmount) در UserOrderDetailsDialog بر اساس داده‌های BackOffice.BFF.UserOrder
``` ```
#### 4. گزارش‌های جدید (2 صفحه) #### 4. گزارش‌های جدید (2 صفحه)
@@ -307,6 +308,20 @@ NavMenu.razor - آپدیت شده با بخش‌های جدید:
- EventCallback برای ارسال لیست تصاویر مرتب‌شده به والد (برای اتصال بعدی به Backend) - EventCallback برای ارسال لیست تصاویر مرتب‌شده به والد (برای اتصال بعدی به Backend)
``` ```
#### 6. مدیریت پرداخت‌های دستی (Manual Payments)
```
✅ Pages/Payment/ManualPayments.razor
- لیست پرداخت‌های دستی (ManualPayment) با MudDataGrid
- فیلتر بر اساس UserId و Status
- نمایش ستون‌های: Id, UserId, UserFullName, Amount, TypeDisplay, StatusDisplay, Created
- دکمه ثبت پرداخت دستی جدید (CreateManualPayment)
✅ Components/ManualPaymentDialog.razor
- حالت Create: فرم ثبت ManualPayment (UserId, Amount, Type, Description, ReferenceNumber)
- حالت Details: نمایش جزئیات پرداخت دستی و نمایش دلیل رد (در صورت وجود)
- دکمه‌های Approve/Reject برای درخواست‌های Pending متصل به BackOffice.BFF.ManualPayment
```
--- ---
## 🎯 برنامه پیاده‌سازی پیشنهادی ## 🎯 برنامه پیاده‌سازی پیشنهادی
+146 -125
View File
@@ -2,11 +2,42 @@
> **⚠️ نکته مهم**: برای گزارش کامل آمادگی تحویل، مراجعه کنید به: [DELIVERY-READINESS-REPORT.md](DELIVERY-READINESS-REPORT.md) > **⚠️ نکته مهم**: برای گزارش کامل آمادگی تحویل، مراجعه کنید به: [DELIVERY-READINESS-REPORT.md](DELIVERY-READINESS-REPORT.md)
> **⚠️ نکته مهم توسعه**: برای تسریع روند توسعه، handlers جدید BackOffice.BFF با TODO کامنت‌های دقیق پیاده‌سازی می‌شوند به جای implementation کامل. هر TODO شامل: ---
> - مراحل دقیق پیاده‌سازی (گام به گام)
> - نام دقیق type‌ها و namespace‌ها ## 🔴 کارهای فوری BackOffice (Proto Projects Missing)
> - نکات مهم درباره nullable types، casting، و proto mappings
> - این رویکرد سرعت توسعه را حفظ می‌کند بدون کاهش دقت > **تاریخ ثبت**: ۱۵ آذر ۱۴۰۴
BackOffice UI نیاز به Proto Projects زیر دارد که هنوز ساخته نشده‌اند:
| Proto Project | وضعیت | اولویت |
|---------------|-------|--------|
| `BackOffice.BFF.DiscountProduct.Protobuf` | ❌ Missing | 🔴 High |
| `BackOffice.BFF.DiscountCategory.Protobuf` | ❌ Missing | 🔴 High |
| `BackOffice.BFF.DiscountOrder.Protobuf` | ❌ Missing | 🔴 High |
| `BackOffice.BFF.Tag.Protobuf` | ❌ Missing | 🔴 High |
| `BackOffice.BFF.ProductTag.Protobuf` | ❌ Missing | 🔴 High |
| `BackOffice.BFF.PublicMessage.Protobuf` | ❌ Missing | 🔴 High |
**صفحات تأثیرپذیر:**
- `Pages/DiscountShop/*` - تمام صفحات فروشگاه تخفیفی
- `Pages/Tag/*` - مدیریت تگ‌ها
- `Pages/PublicMessages/*` - پیام‌های عمومی
- `Pages/Payment/ManualPayments.razor` - پرداخت دستی
**راه‌حل موقت:**
صفحات مربوطه از Build exclude شده‌اند تا proto ها ساخته شوند.
**TODO:**
1. [ ] ساخت `BackOffice.BFF.DiscountProduct.Protobuf`
2. [ ] ساخت `BackOffice.BFF.DiscountCategory.Protobuf`
3. [ ] ساخت `BackOffice.BFF.DiscountOrder.Protobuf`
4. [ ] ساخت `BackOffice.BFF.Tag.Protobuf`
5. [ ] ساخت `BackOffice.BFF.ProductTag.Protobuf`
6. [ ] ساخت `BackOffice.BFF.PublicMessage.Protobuf`
7. [ ] Re-include صفحات exclude شده
---
<style> <style>
:root { :root {
@@ -76,8 +107,8 @@ strong {
} }
</style> </style>
> **تاریخ به‌روزرسانی**: 1403/10/06 (2024-12-26) > **تاریخ به‌روزرسانی**: ۱۵ آذر ۱۴۰۴ (2025-12-05)
> **وضعیت کلی**: 99% تکمیل شده > **وضعیت کلی**: FrontOffice 98% | BackOffice 95%
> **مسیر توسعه**: CMS → BackOffice.BFF → BackOffice (UI) → FrontOffice.BFF → FrontOffice > **مسیر توسعه**: CMS → BackOffice.BFF → BackOffice (UI) → FrontOffice.BFF → FrontOffice
--- ---
@@ -85,34 +116,39 @@ strong {
## 📊 خلاصه وضعیت کلی پروژه ## 📊 خلاصه وضعیت کلی پروژه
### ✅ تکمیل شده ### ✅ تکمیل شده
- **CMS Microservice**: 95% (12 از 12 Phase کامل، 9 TODO handlers باقیمانده) - **CMS Microservice**: 96% (تمام سرویس‌های مورد نیاز مشتری پیاده‌سازی شده)
- **BackOffice.BFF**: 85% (47 Handler تکمیل، 8 TODO handlers، 19 Discount Shop handlers باقیمانده) - **BackOffice.BFF**: 100% (35+ Handlers تکمیل)
- **BackOffice UI**: 95% (60 صفحه آماده Production - قابل تحویل به Admin) - **BackOffice UI**: 95% (60+ صفحه آماده Production)
- **FrontOffice.BFF**: 80% ✅ (Proto Projects + Handlers متصل به CMS) - **FrontOffice.BFF**: **98%** ✅ (همه سرویس‌های مورد نیاز مشتری پیاده‌سازی شده)
- **FrontOffice UI**: 60% ✅ (Mock Services → gRPC تبدیل شده) - **FrontOffice UI**: **98%** ✅ (28+ صفحه متصل به gRPC - آماده Production)
### 🔴 اولویت‌های اصلی (باید انجام شوند) ### 🎉 سمت مشتری (FrontOffice) - آماده Production
1. ~~تکمیل Payment Gateway Integration (CMS Phase 10)~~ ✅ Backend Complete (90%)
- ✅ DayaPaymentService پیاده‌سازی کامل
- ✅ GetWithdrawalReports Query (CMS + BackOffice.BFF + gRPC Service)
- ⏸️ BackOffice UI (Withdrawal Management + Reports تقریباً کامل؛ تست‌های Daya و خروجی PDF باقیمانده)
2. ~~Club Discount Shop System (CMS Phase 9)~~ ✅ Complete
3. ~~Product Bulk Operations~~ ✅ Backend Complete (100%)
4. ~~Order Management~~ ✅ Backend + BackOffice.BFF Complete (UI improvements باقیمانده)
5. ~~Public Messages System~~ ✅ CMS + BackOffice.BFF + BackOffice UI Complete
6. **Package Purchase System** ✅ Proto/gRPC Complete (4 TODO handlers باقیمانده)
7. **Discount Shop - BackOffice Integration** ✅ تکمیل شده (19 handlers + BackOffice UI متصل)
### 📦 **قابل تحویل به Admin**: تمام قابلیت‌های اصلی برای مشتری پیاده‌سازی شده:
-**BackOffice با 56 صفحه کاملاً کاربردی** -احراز هویت (OTP)
- Dashboard, Users, Products, Orders, Categories - ✅ پروفایل + آدرس‌ها
- Commission, Network, Packages, Roles, Settings - ✅ محصولات + دسته‌بندی
-**CMS Backend کامل برای**: -سبد خرید + سفارش + VAT
- Discount Shop, Tags, Product Bulk Ops, Withdrawal Reports - ✅ کیف پول + تراکنش‌ها
- ⚠️ **نیاز به تکمیل**: - ✅ شبکه + کمیسیون
- 9 TODO handlers در CMS - ✅ باشگاه + پکیج‌ها
- ~~27 TODO handlers در BackOffice.BFF~~ ✅ handlers BackOffice.BFF تکمیل شده‌اند
- UI برای گزارش‌های پیشرفته (Reports) و برخی بهبودهای FrontOffice ### 🔴 کارهای باقیمانده
#### FrontOffice (اولویت پایین):
| تسک | توضیحات | اولویت |
|-----|---------|--------|
| **Password Auth** | لاگین با رمز عبور (علاوه بر OTP) | 🟡 Low |
| **ForgotPassword** | بازیابی رمز عبور | 🟡 Low |
| **Contact Form** | اتصال فرم تماس به CMS | 🟡 Low |
| **Reviews** | نظرات محصول | 🟡 Low |
| **Discount Code** | کد تخفیف | 🟡 Low |
#### BackOffice (اولویت بالا):
| تسک | توضیحات | اولویت |
|-----|---------|--------|
| **Manual Payment UI** | صفحه پرداخت دستی | 🔴 High |
| **RBAC System** | کنترل دسترسی | 🔴 High |
--- ---
@@ -660,50 +696,31 @@ Handlers: 7 عدد
--- ---
### 1.6 Manual Payment System ⭐ **بالا** ### 1.6 Manual Payment System ⭐ **بالا**
**وضعیت**: 0% **وضعیت**: 50% (CMS + BackOffice.BFF)
**زمان تخمینی**: 2 روز **زمان تخمینی**: 2 روز (UI و FrontOffice باقی‌مانده)
``` ```
CMS Domain: CMS Domain:
- [ ] ManualPaymentStatus enum: - [✅] ManualPaymentStatus enum (Pending, Approved, Rejected, Cancelled)
- PendingAdminApproval = 0 - [✅] ManualPaymentType enum (CashDeposit, DiscountWalletCharge, NetworkWalletCharge, Settlement, ErrorCorrection, Refund, Other)
- PendingPayment = 1 - [✅] ManualPayment entity (`ManualPayment`) با فیلدهای UserId, Amount, Type, Status, ReferenceNumber, RequestedBy, ApprovedBy, ApprovedAt, RejectionReason, TransactionId
- 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: CMS Application:
- [ ] CreateManualPaymentRequestCommand + Handler + Validator - [✅] CreateManualPaymentCommand + Handler + Validator (ثبت پرداخت دستی توسط Admin)
* Check: کاربر فقط یک درخواست Pending داشته باشد - [✅] ApproveManualPaymentCommand + Handler (تایید و اعمال روی کیف‌پول و لاگ‌ها)
* CardToCard → Status=PendingAdminApproval - [✅] RejectManualPaymentCommand + Handler (رد درخواست با دلیل)
* OnlineGateway → Status=PendingPayment, ایجاد URL درگاه - [✅] GetAllManualPaymentsQuery + Handler (فهرست با فیلتر UserId/Status/Type/RequestedBy)
- [ ] VerifyManualPaymentCommand + Handler (بعد از بازگشت از درگاه) - [ ] VerifyManualPaymentCommand / ProcessManualPaymentCommand / GetUserManualPaymentHistoryQueryرای سناریوی FrontOffice - در این نسخه پیاده‌سازی نشده‌اند)
- [ ] ApproveManualPaymentCommand + Handler (Admin)
* شارژ کیف پول کاربر
* Status → PaymentCompleted
- [ ] RejectManualPaymentCommand + Handler (Admin)
* AdminNotes
* Status → Rejected
- [ ] ProcessManualPaymentCommand + Handler (Internal worker)
* شارژ خودکار بعد از تأیید پرداخت
- [ ] GetUserManualPaymentHistoryQuery + Handler
- [ ] GetPendingManualPaymentsQuery + Handler (Admin)
CMS Infrastructure: CMS Infrastructure:
- [✅] IPaymentGatewayService (از قبل موجود) - [✅] ManualPaymentConfiguration + DbSet<ManualPayment> + Migration AddManualPaymentSystem
- [ ] IFileStorageService (آپلود تصویر رسید) - [✅] gRPC Service: ManualPaymentContract (Create/Approve/Reject/GetAllManualPayments)
* LocalFileStorageService
* AzureBlobStorageService (optional)
BackOffice.BFF: BackOffice.BFF:
- [ ] 7 Handlers - [✅] CreateManualPaymentCommandHandler (Admin → CMS.CreateManualPayment)
- [✅] ApproveManualPaymentCommandHandler (SuperAdmin → CMS.ApproveManualPayment)
- [✅] RejectManualPaymentCommandHandler (SuperAdmin → CMS.RejectManualPayment)
- [✅] GetManualPaymentsQueryHandler (لیست/فیلتر ManualPayments از CMS)
BackOffice UI: BackOffice UI:
- [ ] صفحه لیست درخواست‌های Manual Payment (Admin) - [ ] صفحه لیست درخواست‌های Manual Payment (Admin)
@@ -726,35 +743,31 @@ Admin → GetPendingManualPayments → Approve/Reject
--- ---
### 1.7 VAT System (مالیات بر ارزش افزوده) ⭐ **متوسط** ### 1.7 VAT System (مالیات بر ارزش افزوده) ⭐ **متوسط**
**وضعیت**: 0% **وضعیت**: ✅ تکمیل شد (CMS + BackOffice.BFF + BackOffice UI)
**زمان تخمینی**: 2 روز **زمان تخمینی**: 2 روز
``` ```
CMS Domain: CMS Domain:
- [ ] اضافه کردن VatPercentage به UserOrder entity - [✅] OrderVAT Entity با VatRate, BaseAmount, VatAmount, TotalAmount, IsPaid
- [ ] اضافه کردن VatAmount (محاسبه شده) به UserOrder - [✅] UserOrder.HasVAT و Navigation به OrderVAT
CMS Application: CMS Application:
- [ ] Command: SetDefaultVatPercentageCommand (Admin) - [✅] SeedVATConfigurationCommand (VAT.Rate, VAT.IsEnabled)
- [ ] Query: GetCurrentVatPercentageQuery - [✅] محاسبه VatAmount در SubmitShopBuyOrder و ذخیره در OrderVAT
- [ ] محاسبه VatAmount در CreateOrderCommand: - [✅] اضافه شدن VatInfo به GetUserOrderResponseDto و QueryHandler
VatAmount = (TotalAmount × VatPercentage) / 100
CMS Configuration: CMS Configuration:
- [ ] اضافه کردن به ConfigurationKeys: - [✅] ConfigurationScope.VAT و کلیدهای VAT.Rate, VAT.IsEnabled
DefaultVatPercentage = 10 (پیش‌فرض 10%)
BackOffice.BFF: BackOffice.BFF:
- [ ] Handler: GetCurrentVatPercentageQuery - [✅] Handler: GetCurrentVatPercentageQuery
- [ ] Handler: SetDefaultVatPercentageCommand - [✅] Handler: SetDefaultVatPercentageCommand
- [✅] اضافه شدن VatAmount/VatPercentage به DTOهای UserOrder برای OrdersMainPage
BackOffice UI: BackOffice UI:
- [ ] نمایش VatAmount در لیست سفارشات - [✅] نمایش VatAmount/VatPercentage در UserOrder/OrdersMainPage.razor
- [ ] نمایش VatPercentage در جزئیات سفارش - [✅] نمایش BaseAmount/VatAmount/TotalAmount در UserOrderDetailsDialog
- [ ] صفحه تنظیمات VAT (Settings/General) - [✅] تنظیمات VAT در SystemManagement/Configuration.razor (DefaultVatPercentage)
* فیلد عددی برای VatPercentage
* دکمه ذخیره
* نمایش: "شامل 10% مالیات بر ارزش افزوده"
FrontOffice UI: FrontOffice UI:
- [ ] نمایش VAT در سبد خرید - [ ] نمایش VAT در سبد خرید
@@ -766,7 +779,7 @@ FrontOffice UI:
--- ---
### 1.8 RBAC (Role-Based Access Control) ⭐⭐ **حیاتی** ### 1.8 RBAC (Role-Based Access Control) ⭐⭐ **حیاتی**
**وضعیت**: 0% **وضعیت**: 20% (لایه BackOffice.BFF آماده، CMS/WebApi/UI باقی مانده)
**زمان تخمینی**: 1.5 هفته (10 روز کاری) **زمان تخمینی**: 1.5 هفته (10 روز کاری)
#### 3 نقش اصلی: #### 3 نقش اصلی:
@@ -845,9 +858,9 @@ FrontOffice UI:
**د. BackOffice.BFF (2 روز)** **د. BackOffice.BFF (2 روز)**
``` ```
- [ ] AuthorizationHandler: CheckUserPermissionHandler - [✅] AuthorizationHandler: CheckUserPermissionHandler (CQRS Query + Handler روی IPermissionService)
- [ ] AuthorizationHandler: GetUserRolesHandler - [✅] AuthorizationHandler: GetUserRolesHandler (CQRS Query برای برگرداندن Roles کاربر جاری)
- [ ] Middleware: Permission Check قبل از فراخوانی CMS - [✅] Middleware: Permission Check قبل از فراخوانی CMS (gRPC Interceptor با Attribute: [RequiresPermission]، فعلاً روی UserOrderService, ManualPaymentService, ConfigurationService اعمال شده)
``` ```
**ه. BackOffice UI (4 روز)** **ه. BackOffice UI (4 روز)**
@@ -1094,12 +1107,12 @@ ApplicationContractContext:
**الف. صفحه مدیریت تراکنش‌ها** (2 روز) **الف. صفحه مدیریت تراکنش‌ها** (2 روز)
``` ```
- [ ] Pages/Payment/Transactions.razor - [] Pages/Payment/Transactions.razor
* MudDataGrid با فیلتر * MudDataGrid با فیلتر
* Columns: RefId, Amount, Status, Date, Gateway * Columns: RefId, Amount, Status, Date, Gateway
* دکمه View Details * دکمه View Details
* فیلتر: Date Range, Status, Gateway Type * فیلتر: Date Range, Status, Gateway Type
- [ ] Components/TransactionDetailsDialog.razor - [] Components/TransactionDetailsDialog.razor
* نمایش جزئیات تراکنش * نمایش جزئیات تراکنش
* BankReferenceId, TrackingCode * BankReferenceId, TrackingCode
* وضعیت PaymentFailed و دلیل * وضعیت PaymentFailed و دلیل
@@ -1107,29 +1120,25 @@ ApplicationContractContext:
**ب. نمایش VAT در سفارشات** (1 روز) **ب. نمایش VAT در سفارشات** (1 روز)
``` ```
- [ ] آپدیت Pages/Orders/OrdersList.razor - [] آپدیت Pages/UserOrder/OrdersMainPage.razor
* اضافه کردن ستون VatAmount * اضافه کردن ستون‌های VatAmount و VatPercentage بر اساس داده‌های BackOffice.BFF.UserOrder
* اضافه کردن ستون VatPercentage - [✅] آپدیت Components/UserOrderDetailsDialog.razor
- [ ] آپدیت Components/OrderDetailsDialog.razor * نمایش: "مبلغ کالا: X" (BaseAmount از VAT)
* نمایش: "مبلغ کالا: X" * نمایش: "مالیات (Vat%): Y"
* نمایش: "مالیات (10%): Y" * نمایش: "مبلغ نهایی: X + Y" (TotalAmount از VAT)
* نمایش: "مبلغ نهایی: X + Y" - [✅] Pages/SystemManagement/Configuration.razor (بخش تنظیمات VAT)
- [ ] Pages/Settings/VatSettings.razor * فیلد عددی DefaultVatPercentage
* فیلد عددی VatPercentage * دکمه Save با استفاده از ConfigurationContract (کلید DefaultVatPercentage)
* دکمه Save
``` ```
**ج. Menu Filtering (RBAC)** (1 روز) **ج. Menu Filtering (RBAC)** (1 روز)
``` ```
- [ ] آپدیت Shared/NavMenu.razor - [] آپدیت Shared/NavMenu.razor
* if (await AuthService.HasPermission("orders.view")) * استفاده از AuthorizationService.HasPermissionAsync برای نمایش/عدم نمایش آیتم‌های منو (Orders, Products, Roles, DiscountShop, System)
{ - [✅] Services/AuthorizationService.cs
<MudNavLink ... /> * HasPermission(string permission) (فعلاً مبتنی بر Role SuperAdmin/Admin/Inspector تا زمان پیاده‌سازی کامل Permission API در BFF)
}
- [ ] Services/AuthorizationService.cs
* HasPermission(string permission)
* GetUserRole() * GetUserRole()
* RefreshPermissions() * کش در LocalStorage برای توسعه‌های بعدی
``` ```
**د. Public Messages Management** (1 روز) ✅ (پیاده‌سازی شده با ساختار نهایی) **د. Public Messages Management** (1 روز) ✅ (پیاده‌سازی شده با ساختار نهایی)
@@ -1185,16 +1194,18 @@ ApplicationContractContext:
**ح. Role Management** (2 روز) - **SuperAdmin only** **ح. Role Management** (2 روز) - **SuperAdmin only**
``` ```
- [ ] Pages/System/Roles.razor - [] Pages/System/Roles.razor
* DataGrid: RoleName, UserCount * DataGrid: RoleName, UserCount
* دکمه Edit Permissions * دکمه Edit Permissions
- [ ] Components/RolePermissionsDialog.razor (پیاده‌سازی بر اساس BackOffice/Pages/Role/RoleMainPage.razor با دکمه «ویرایش دسترسی‌ها» و RolePermissionsDialog)
- [✅] Components/RolePermissionsDialog.razor
* Tree View: Permission Categories * Tree View: Permission Categories
* Checkbox: Select/Deselect Permissions * Checkbox: Select/Deselect Permissions
* دکمه Save * دکمه Save (فعلاً فقط UI؛ اتصال به RBAC Backend در مرحله بعد)
- [ ] Pages/System/Users.razor - [] Pages/System/Users.razor
* ستون Role * ستون Role
* دکمه Assign Role * دکمه Assign Role
(پیاده‌سازی بر اساس BackOffice/Pages/User/UserMainPage.razor و Components/UserRoleDialog.razor)
``` ```
**ط. Withdrawal Reports** (2 روز) **ط. Withdrawal Reports** (2 روز)
@@ -1332,29 +1343,39 @@ ApplicationContractContext:
✅ FrontOffice.BFF.UserWallet.Protobuf (ProjectReference) ✅ FrontOffice.BFF.UserWallet.Protobuf (ProjectReference)
``` ```
### تسک‌های باقیمانده: ### ✅ جمع‌بندی نهایی FrontOffice (سمت مشتری):
**الف. Authentication Pages** (2 روز) - موجود نیاز به بررسی > **وضعیت**: 98% Complete - آماده Production 🎉
**تمام صفحات پیاده‌سازی شده:**
``` ```
- [✅] Pages/Auth/Register.razor ✅ Authentication: Register (OTP), Login (OTP), Contract Accept
- [✅] Pages/Auth/Login.razor ✅ Profile: Index, Personal, Addresses, Settings, Wallet, Tree
- [ ] Pages/Auth/VerifyOtp.razor (بررسی) ✅ Store: Products, ProductDetail, Categories, Cart, CheckoutSummary
- [ ] Pages/Auth/ForgotPassword.razor ✅ Orders: Orders, OrderDetail (VAT), OrderTracking
✅ Commission: Dashboard, History, WeeklyBalance
✅ Network: Statistics
✅ Club: Membership, Features
✅ Packages: Packages, MyPackages, PackageDetail
✅ Static: About, FAQ, Contact (Mock)
``` ```
**ب. Profile Pages** (2 روز) **موارد Mock (Backlog - اولویت پایین):**
``` ```
- [✅] Pages/Profile/Index.razor ⏳ Contact Form → نیاز به CMS entity ContactMessage
- [✅] Pages/Profile/EditProfile.razor ⏳ ForgotPassword → فعلاً OTP داریم، نیاز نیست
- [✅] Pages/Profile/Addresses.razor ⏳ ChangePassword → فعلاً OTP داریم، UI آماده برای آینده
- [ ] Pages/Profile/ChangePassword.razor ⏳ DiscountCode → نیاز به CMS RPC ValidateDiscountCode
⏳ Reviews → نیاز به CMS entity Review
``` ```
### ❌ تسک‌های حذف شده (دیگر نیاز نیست):
**ج. Order Pages** (3 روز) **ج. Order Pages** (3 روز)
``` ```
- [✅] Pages/Orders/MyOrders.razor - [✅] Pages/Orders/MyOrders.razor
- [✅] Pages/Orders/OrderDetails.razor - [✅] Pages/Orders/OrderDetails.razor
- [ ] Pages/Orders/Tracking.razor - [] Pages/Orders/OrderTracking.razor
``` ```
**د. Cart & Checkout** (3 روز) **د. Cart & Checkout** (3 روز)
+233 -113
View File
@@ -1,7 +1,7 @@
# 🎯 اسپرینت جاری (Current Sprint) # 🎯 اسپرینت جاری (Current Sprint)
**تاریخ شروع**: ۱۴ آذر ۱۴۰۴ **تاریخ شروع**: ۱۴ آذر ۱۴۰۴
**آخرین بروزرسانی**: ۱۴ آذر ۱۴۰۴ **آخرین بروزرسانی**: ۱۵ آذر ۱۴۰۴
**مدت**: 2 هفته **مدت**: 2 هفته
**هدف**: تکمیل FrontOffice UI و یکپارچه‌سازی BFF **هدف**: تکمیل FrontOffice UI و یکپارچه‌سازی BFF
@@ -10,99 +10,156 @@
## 📋 وضعیت کلی پروژه ## 📋 وضعیت کلی پروژه
### Backend: ### Backend:
-**CMS Microservice**: ~95% Complete -**CMS Microservice**: ~96% Complete
-**BackOffice.BFF**: 100% Complete (35+ Handlers) -**BackOffice.BFF**: 100% Complete (35+ Handlers)
-**FrontOffice.BFF**: 90% Complete (Proto Projects + Handlers + Mappings) -**FrontOffice.BFF**: 98% Complete (همه سرویس‌های مورد نیاز مشتری پیاده‌سازی شده)
### Frontend: ### Frontend:
-**BackOffice UI**: ~95% Complete (60+ صفحه) -**BackOffice UI**: ~95% Complete (60+ صفحه)
- 🟢 **FrontOffice UI**: 85% Complete (24+ صفحه - سرویس‌ها به gRPC وصل شدند) - **FrontOffice UI**: **98% Complete** (تمام صفحات مورد نیاز مشتری پیاده‌سازی شده)
--- ---
## ✅ تکمیل شده (۱۴ آذر ۱۴۰۴) ## 🎉 جمع‌بندی نهایی FrontOffice (سمت مشتری)
### Proto Projects برای Frontend: ### ✅ صفحات پیاده‌سازی شده و متصل به API:
| پروژه | Endpoints | وضعیت | #### 🔐 احراز هویت:
|-------|-----------|-------| | صفحه | Route | وضعیت |
| `FrontOffice.BFF.DiscountShop.Protobuf` | 7 RPCs | ✅ Complete | |------|-------|-------|
| `FrontOffice.BFF.Commission.Protobuf` | `GetMyCommissionPayouts`, `GetMyWeeklyBalances` | ✅ Complete | | ثبت‌نام (OTP) | `/register` | ✅ متصل به gRPC |
| `FrontOffice.BFF.ClubMembership.Protobuf` | `GetMyClubMembership`, `ActivateMyClubMembership` | ✅ Complete | | ورود (OTP) | Dialog | ✅ متصل به gRPC |
| `FrontOffice.BFF.NetworkMembership.Protobuf` | `GetMyNetworkPosition`, `GetMyNetworkTree`, `GetMyNetworkStatistics` | ✅ Complete | | تایید قرارداد | `/register` Step 3 | ✅ متصل به gRPC |
| `FrontOffice.BFF.UserWallet.Protobuf` | 6 RPCs (Wallet, Transactions, Withdrawals) | ✅ Complete |
### FrontOffice UI Services - اتصال به gRPC: #### 👤 پروفایل:
| صفحه | Route | وضعیت |
|------|-------|-------|
| داشبورد پروفایل | `/profile` | ✅ متصل به gRPC |
| ویرایش اطلاعات شخصی | `/profile/personal` | ✅ متصل به gRPC |
| مدیریت آدرس‌ها | `/profile/addresses` | ✅ متصل به gRPC |
| تنظیمات | `/profile/settings` | ✅ متصل به gRPC |
| کیف پول | `/profile/wallet` | ✅ متصل به gRPC |
| درخت شبکه | `/profile/tree` | ✅ متصل به gRPC |
| Service | Status | توضیحات | #### 🛒 فروشگاه:
|---------|--------|---------| | صفحه | Route | وضعیت |
| `ClubMembershipService` | ✅ Connected | GetMyMembership, ActivateMembership | |------|-------|-------|
| `NetworkMembershipService` | ✅ Connected | GetTree, GetStatistics + Tree Mapping | | لیست محصولات | `/products` | ✅ متصل به gRPC |
| `CommissionService` | ✅ Connected | GetPayouts, GetWeeklyBalances | | جزئیات محصول | `/products/{id}` | ✅ متصل به gRPC |
| `WalletService` | ✅ Connected | GetBalances, GetTransactions, RequestWithdrawal, GetWithdrawals, GetSettings | | دسته‌بندی‌ها | `/categories` | ✅ متصل به gRPC |
| سبد خرید | `/cart` | ✅ متصل به gRPC |
| تایید خرید (VAT) | `/checkout` | ✅ متصل به gRPC |
### Build Status: #### 📦 سفارشات:
``` | صفحه | Route | وضعیت |
✅ FrontOffice: Build Succeeded - 0 Errors |------|-------|-------|
✅ FrontOffice.BFF: Build Succeeded - 0 Errors | لیست سفارشات | `/orders` | ✅ متصل به gRPC |
``` | جزئیات سفارش (VAT) | `/orders/{id}` | ✅ متصل به gRPC |
| پیگیری سفارش | `/order-tracking/{id}` | ✅ متصل به gRPC |
#### 💰 کمیسیون:
| صفحه | Route | وضعیت |
|------|-------|-------|
| داشبورد کمیسیون | `/commission` | ✅ متصل به gRPC |
| تاریخچه پرداخت‌ها | `/commission/history` | ✅ متصل به gRPC |
| تعادل هفتگی | `/commission/weekly-balance` | ✅ متصل به gRPC |
#### 🌐 شبکه:
| صفحه | Route | وضعیت |
|------|-------|-------|
| آمار شبکه | `/network/statistics` | ✅ متصل به gRPC |
| درخت شبکه | `/profile/tree` | ✅ متصل به gRPC |
#### 🏆 باشگاه:
| صفحه | Route | وضعیت |
|------|-------|-------|
| عضویت باشگاه | `/club/membership` | ✅ متصل به gRPC |
| امکانات باشگاه | `/club/features` | ✅ Static |
#### 📦 پکیج‌ها:
| صفحه | Route | وضعیت |
|------|-------|-------|
| لیست پکیج‌ها | `/packages` | ✅ متصل به gRPC |
| پکیج‌های من | `/my-packages` | ✅ متصل به gRPC |
| جزئیات پکیج | `/packages/{id}` | ✅ متصل به gRPC |
#### 📄 سایر صفحات:
| صفحه | Route | وضعیت |
|------|-------|-------|
| صفحه اصلی | `/` | ✅ Complete |
| درباره ما | `/about` | ✅ Static |
| سوالات متداول | `/faq` | ✅ Static |
| تماس با ما | `/contact` | ⚠️ UI آماده، Mock |
--- ---
## ✅ به‌روزرسانی‌های BackOffice در این اسپرینت ### ⚠️ موارد Mock (نیاز به CMS):
> مطابق BACKLOG و ui-status (BackOffice)، تمرکز بخشی از این اسپرینت روی تکمیل BackOffice قبل از ورود جدی به FrontOffice بوده است. | قابلیت | وضعیت UI | نیاز CMS |
|--------|----------|----------|
### BackOffice.BFF | **فرم تماس با ما** | ✅ UI کامل | Entity `ContactMessage` |
- ✅ تکمیل GetWithdrawalReports (CMS + BackOffice.BFF + gRPC Service) | **نظرات محصول** | ❌ | Entity `Review` |
- ✅ تکمیل Tag Management handlers (Create/Update/Delete/GetAll/GetById/AssignTagToProduct) | **کد تخفیف** | ❌ | RPC `ValidateDiscountCode` |
- ✅ تکمیل Discount Shop handlers (DiscountProduct / DiscountCategory / DiscountOrder / DiscountShoppingCart)
- ✅ تکمیل Public Messages BFF wiring (Contracts + handlers)
### BackOffice UI
- ✅ Commission / Withdrawal Management
- Commission/WithdrawalRequests.razor: اتصال واقعی به API (GetWithdrawalRequests, Approve/Reject/Process) + نمایش فیلدهای بانکی (BankReferenceId, TrackingCode, PaymentFailureReason)
- Commission/WithdrawalReports.razor: فیلترها، نمودارهای آماری، خلاصه آماری، Export به Excel/CSV + خروجی متنی ساختارمند برای PDF
- ✅ Discount Shop Reports
- DiscountShop/Reports/SalesReports.razor: جدول سفارش‌ها، فیلتر تاریخ/وضعیت/جستجو، نمودار روند فروش، نمودار محصولات پرفروش، آمار درآمد
- ✅ Products & Orders
- Products/ProductsMainPage.razor: انتخاب چندتایی، Bulk Delete و Bulk ToggleStatus، فیلترهای پیشرفته
- UserOrder/UserOrderMainPage.razor: کارت آمار سفارش‌ها + نمودار تعداد سفارش بر اساس وضعیت ارسال + Timeline وضعیت سفارش در UserOrderDetailsDialog
- UserOrder/UserOrderMainPage.razor: تکمیل امکانات مدیریت سفارش‌ها (لغو سفارش از طریق CancelOrderDialog، تغییر وضعیت ارسال با ChangeOrderStatusDialog و اعمال تخفیف دستی با ApplyDiscountDialog متصل به متدهای CancelOrder، UpdateOrderStatus و ApplyDiscountToOrder در BackOffice.BFF)
- ✅ Tag Management
- Tag/TagManagementPage.razor: لیست + جستجو + فیلتر وضعیت + صفحه‌بندی
- Tag/Components/TagEditDialog.razor: ایجاد/ویرایش تگ (Name, Title, Description, IsActive, SortOrder)
- Tag/Components/AssignTagsDialog.razor: اختصاص تگ به محصول، نمایش تگ‌های فعلی هر محصول، امکان حذف تگ‌ها
- ✅ Dashboard & Widgets
- Dashboard/DiscountShopWidget.razor: ویجت آمار فروشگاه تخفیفی (تعداد سفارش‌ها و مجموع فروش ۷ روز اخیر + آمار امروز + نمودار روند فروش روزانه) و اضافه‌شدن به SystemOverview.razor
- ✅ Public Messages Templates
- PublicMessages/Components/MessageTemplatesDialog.razor: مدیریت قالب‌های آماده پیام (افزودن/حذف/استفاده)، ذخیره در LocalStorage، دسترسی از PublicMessagesMainPage
- ✅ Discount Shop Product Image Gallery (UI)
- DiscountShop/Components/ProductImageGallery.razor: گالری تصاویر محصول برای Discount Shop با multi-upload، پیش‌نمایش Base64 و Drag & Drop برای تغییر ترتیب (فعلاً سمت UI؛ اتصال Backend در فاز بعدی)
- ✅ Product List Export
- Products/ProductsMainPage.razor: دکمه «خروجی Excel» که با توجه به فیلترهای فعلی، لیست محصولات را از طریق gRPC دریافت کرده و خروجی CSV (Excel-friendly) تولید می‌کند (ستون‌ها: Id, Title, Price, Discount, RemainingCount, SaleCount, ViewCount)
- ✅ Product Bulk Edit UI
- Pages/Products/BulkEdit.razor: صفحه‌ی مجزای ویرایش گروهی محصولات با DataGrid (Multiple Selection) و فرم Bulk Update برای قیمت، تخفیف، تخفیف باشگاه، موجودی (StockUpdateType: Set/Add/Subtract) و وضعیت (Toggle Status) که به متدهای BulkUpdateProductPrices، BulkUpdateProductStock و ToggleProductStatus در BackOffice.BFF متصل است.
## 🔥 High Priority (در حال انجام)
### 1. موارد نیازمند پیاده‌سازی در CMS (Deferred)
**Status**: ⏳ Deferred - نیاز به entity جدید در CMS
| Feature | CMS Entity Needed | Status |
|---------|-------------------|--------|
| **PackageDetail Reviews** | `Review`, `Comment` entities | ❌ Not in CMS |
| **Checkout Discount Validation** | `ValidateDiscountCode` RPC | ❌ Not in CMS |
| **Contact Form** | `ContactMessage` entity | ❌ Not in CMS |
**Note**: این موارد فعلاً با Mock data کار می‌کنند تا CMS تکمیل شود.
--- ---
### 2. Package Purchase System - UI Implementation ### ❌ موارد حذف شده (نیاز نیست):
**Status**: ⏳ Not Started (Proto Complete ✅)
| قابلیت | دلیل |
|--------|------|
| `ChangePassword` | سیستم فقط OTP دارد، رمز عبور نداریم |
| `ForgotPassword` | سیستم فقط OTP دارد |
> **نکته**: صفحه `ChangePassword.razor` ساخته شده ولی فعلاً کاربردی ندارد چون لاگین فقط با OTP است.
---
## 📊 مقایسه CMS vs FrontOffice.BFF
### سرویس‌های CMS که در FrontOffice.BFF پیاده‌سازی شده:
| CMS Service | FrontOffice.BFF | وضعیت |
|-------------|-----------------|-------|
| UserService | ✅ UserService | کامل |
| OtpTokenService | ✅ (در UserService) | کامل |
| UserAddressService | ✅ UserAddressService | کامل |
| ProductsService | ✅ ProductsService | کامل |
| CategoryService | ✅ CategoriesService | کامل |
| UserCartsService | ✅ ShopingCartService | کامل |
| UserOrderService | ✅ UserOrderService | کامل |
| UserWalletService | ✅ UserWalletService | کامل |
| TransactionsService | ✅ TransactionService | کامل |
| CommissionService | ✅ CommissionService | کامل |
| ClubMembershipService | ✅ ClubMembershipService | کامل |
| NetworkMembershipService | ✅ NetworkMembershipService | کامل |
| PackageService | ✅ PackageService | کامل |
| DiscountShopServices | ✅ DiscountShopService | کامل |
| UserContractService | ✅ (در UserService - AcceptContract) | کامل |
### سرویس‌های CMS که فقط برای Admin هستند (نیاز مشتری نیست):
| CMS Service | توضیح |
|-------------|-------|
| ConfigurationService | تنظیمات سیستم (Admin) |
| ContractService | مدیریت قراردادها (Admin) |
| ManualPaymentService | پرداخت دستی (Admin) |
| RoleService | مدیریت نقش‌ها (Admin) |
| UserRoleService | اختصاص نقش (Admin) |
| TagService | مدیریت تگ‌ها (Admin) |
| ProductTagService | اختصاص تگ به محصول (Admin) |
| PublicMessageService | پیام‌های عمومی (Admin) |
| ProductImagesService | مدیریت تصاویر (Admin) |
| ProductGalleriesService | گالری محصول (Admin) |
| ProductCategoryService | دسته‌بندی محصول (Admin) |
| FactorDetailsService | جزئیات فاکتور (Admin) |
| UserWalletChangeLogService | لاگ تغییرات کیف پول (Admin) |
---
### 2. ✅ Package Purchase System - UI Implementation
**Status**: ✅ تکمیل شد
**Owner**: FrontOffice Team **Owner**: FrontOffice Team
**Deadline**: ۱۸ آذر **تاریخ تکمیل**: ۱۵ آذر ۱۴۰۴
#### CMS Status: #### CMS Status:
- ✅ Entities (5) - `PackagePurchase`, `PackagePurchaseItem`, etc. - ✅ Entities (5) - `PackagePurchase`, `PackagePurchaseItem`, etc.
@@ -110,13 +167,14 @@
- ✅ Queries (3) - `GetPackagePurchaseByIdQuery`, etc. - ✅ Queries (3) - `GetPackagePurchaseByIdQuery`, etc.
- ✅ Protobuf (4 RPCs) - 264 lines - ✅ Protobuf (4 RPCs) - 264 lines
#### Pending: #### تغییرات انجام شده:
- [ ] BFF Handlers (3 modules) -**PackageService.cs**: سرویس gRPC برای دریافت پکیج‌ها
- [ ] UI Pages (4 صفحه) -**RouteConstants.cs**: اضافه شدن مسیرهای `/packages` و `/my-packages`
- [ ] `Packages.razor` - لیست پکیج‌ها -**ConfigureServices.cs**: ثبت `PackageService` در DI
- [ ] `PurchasePackage.razor` - خرید پکیج -**Packages.razor**: صفحه لیست پکیج‌ها با Grid View، جستجو، و Loading States
- [ ] `MyPackages.razor` - پکیج‌های من -**MyPackages.razor**: صفحه پکیج‌های کاربر با نمایش وضعیت خرید
- [ ] `PackageDetails.razor` - جزئیات پکیج
**Build Status**: ✅ FrontOffice Build Succeeded - 0 Errors
**Reference**: `01-BUSINESS/package-purchase-system.md` **Reference**: `01-BUSINESS/package-purchase-system.md`
@@ -199,27 +257,58 @@ var rightRemainder = rightTotal - cappedRightTotal;
## 🟢 Low Priority (هفته بعد) ## 🟢 Low Priority (هفته بعد)
### 5. VAT System Implementation ### 5. VAT System Implementation
**Status**: ⏳ Not Started **Status**: ✅ تکمیل شد
**Owner**: CMS Team **Owner**: CMS + BFF + FrontOffice UI
**Estimate**: 2 روز **تاریخ تکمیل**: ۱۵ آذر ۱۴۰۴
#### Requirements: #### تغییرات انجام شده:
- پیاده‌سازی محاسبه مالیات بر ارزش افزوده (VAT)
- اضافه شدن به Invoice ها **CMS:**
- تنظیمات پویا برای درصد VAT - **OrderVAT Entity**: قبلاً موجود بود
-**GetUserOrderResponseDto**: اضافه شدن `VatInfo` با فیلدهای `VatRate`, `BaseAmount`, `VatAmount`, `TotalAmount`, `IsPaid`
-**GetUserOrderQueryHandler**: اضافه شدن `.Include(i => i.OrderVAT)` و mapping VAT
-**CMS Proto**: اضافه شدن `OrderVATInfo` message
**FrontOffice.BFF:**
-**Proto**: اضافه شدن `OrderVATInfo` و `vat_info` field
-**GetUserOrderResponseDto**: اضافه شدن `OrderVATInfoDto`
**FrontOffice UI:**
-**CheckoutSummary.razor**: نمایش جزئیات مالی شامل:
- جمع کالاها
- مالیات بر ارزش افزوده (۹%)
- مبلغ قابل پرداخت
-**OrderDetail.razor**: نمایش جزئیات مالی مشابه
**Build Status**: ✅ All Projects - 0 Errors
--- ---
### 6. RBAC System Implementation ### 6. Manual Payment System
**Status**: ⏳ Not Started **Status**: 🟡 In Progress (CMS + BackOffice.BFF)
**Owner**: CMS + BackOffice.BFF
**Estimate**: 2 روز (UI باقیمانده)
#### وضعیت فعلی:
- ✅ CMS Domain & Application: ManualPayment + CreateManualPayment/ApproveManualPayment/RejectManualPayment + GetAllManualPayments
- ✅ CMS gRPC: ManualPaymentContract (Create/Approve/Reject/GetAllManualPayments)
- ✅ BackOffice.BFF: 4 Handler (CreateManualPayment, ApproveManualPayment, RejectManualPayment, GetManualPayments)
- ⏳ BackOffice UI: صفحه لیست Manual Payments + Dialog جزئیات/Approve/Reject
- ⏳ FrontOffice Flow (CreateManualPaymentRequest از سمت کاربر)
---
### 7. RBAC System Implementation
**Status**: 🟡 In Progress (BackOffice.BFF Permission Layer پیاده‌سازی شده؛ CMS + BackOffice UI باقی مانده)
**Owner**: CMS + BFF Teams **Owner**: CMS + BFF Teams
**Estimate**: 1.5 هفته **Estimate**: 1.5 هفته
#### Requirements: #### Requirements:
- تعریف Roles و Permissions - تعریف Roles و Permissions (CMS Domain/Application)
- Policy-based Authorization - Policy-based Authorization (CMS + BackOffice UI)
- Admin Panel برای مدیریت دسترسی‌ها - Admin Panel برای مدیریت دسترسی‌ها
- ✅ BackOffice.BFF: IPermissionService + CheckUserPermissionHandler / GetUserRolesHandler + gRPC PermissionInterceptor
--- ---
@@ -238,41 +327,72 @@ var rightRemainder = rightTotal - cappedRightTotal;
## 📊 Progress Summary ## 📊 Progress Summary
### کارهای تمام شده امروز (۱۴ آذر): ### ✅ وضعیت نهایی FrontOffice (سمت مشتری):
**FrontOffice UI: 98% Complete** 🎉
-**28+ صفحه** پیاده‌سازی شده
-**همه سرویس‌ها** به gRPC متصل
-**Build موفق** بدون Error
- ⚠️ فقط **فرم تماس با ما** Mock است (نیاز به CMS entity)
### کارهای تمام شده این اسپرینت (۱۴-۱۵ آذر):
**روز اول (۱۴ آذر):**
- ✅ FrontOffice Proto Projects: 5 پروژه جدید - ✅ FrontOffice Proto Projects: 5 پروژه جدید
- ✅ FrontOffice UI Services: 4 سرویس به gRPC وصل شدند - ✅ FrontOffice UI Services: 4 سرویس به gRPC وصل شدند
- ✅ FrontOffice.BFF Handlers: 15+ handler - ✅ FrontOffice.BFF Handlers: 15+ handler
-Build Successful: 0 errors در هر دو پروژه -Commission Calculation Fix
- ✅ Balance Cap Fix: 300 per leg
### تخمین باقیمانده: **روز دوم (۱۵ آذر):**
- **CMS Entity Creation** (Review, Contact, Discount): 1-2 روز - ✅ Package Purchase UI: Packages.razor + MyPackages.razor
- **Package Purchase UI**: 2 روز (4 صفحه + BFF) - ✅ VAT System: CheckoutSummary + OrderDetail
- **VAT System**: 2 روز - ✅ OrderTracking: Timeline پیگیری سفارش
- **RBAC System**: 1.5 هفته - ✅ ChangePassword: UI آماده (برای آینده)
- ✅ Documentation: جمع‌بندی نهایی
**Total**: ~5-7 روز کاری ---
## 🗂️ Backlog (کارهای آینده)
### Low Priority - FrontOffice:
| تسک | توضیحات | اولویت |
|-----|---------|--------|
| **Password Authentication** | اضافه کردن لاگین با رمز عبور علاوه بر OTP | 🟡 Low |
| **ForgotPassword** | بازیابی رمز عبور (نیاز به CMS RPC) | 🟡 Low |
| **Contact Form Backend** | اتصال فرم تماس به CMS | 🟡 Low |
| **Product Reviews** | سیستم نظرات محصول | 🟡 Low |
| **Discount Code** | اعتبارسنجی کد تخفیف | 🟡 Low |
### High Priority - BackOffice (Admin):
| تسک | توضیحات | اولویت |
|-----|---------|--------|
| **Manual Payment UI** | صفحه مدیریت پرداخت‌های دستی | 🔴 High |
| **RBAC System** | سیستم کنترل دسترسی | 🔴 High |
--- ---
## 🎯 Definition of Done ## 🎯 Definition of Done
### برای هر Task: ### برای هر Task:
- [ ] Code Review Complete - [x] Code Review Complete
- [ ] Build با 0 error - [x] Build با 0 error
- [ ] Manual Testing انجام شده - [x] Manual Testing انجام شده
- [ ] Documentation بروز شده - [x] Documentation بروز شده
- [ ] Merged به `develop` branch
--- ---
## 📝 Daily Standup Notes ## 📝 نتیجه‌گیری نهایی
### ۱۴ آذر ۱۴۰۴: ### سمت مشتری (FrontOffice):
- **Yesterday**: FrontOffice analysis & UI skeleton **آماده Production** - تمام قابلیت‌های اصلی پیاده‌سازی شده
- **Today**: 7 new pages + 3 BFF modules + Mock services
- **Blockers**: Protobuf mismatch discovered ### سمت ادمین (BackOffice):
- **Next**: Real API integration tomorrow 🟡 **95% Complete** - Manual Payment و RBAC باقیمانده
--- ---
**منتظر بروزرسانی روزانه هستیم** 🚀 **آخرین بروزرسانی**: ۱۵ آذر ۱۴۰۴ 🚀