update
This commit is contained in:
+146
-125
@@ -2,11 +2,42 @@
|
||||
|
||||
> **⚠️ نکته مهم**: برای گزارش کامل آمادگی تحویل، مراجعه کنید به: [DELIVERY-READINESS-REPORT.md](DELIVERY-READINESS-REPORT.md)
|
||||
|
||||
> **⚠️ نکته مهم توسعه**: برای تسریع روند توسعه، handlers جدید BackOffice.BFF با TODO کامنتهای دقیق پیادهسازی میشوند به جای implementation کامل. هر TODO شامل:
|
||||
> - مراحل دقیق پیادهسازی (گام به گام)
|
||||
> - نام دقیق typeها و namespaceها
|
||||
> - نکات مهم درباره nullable types، casting، و proto mappings
|
||||
> - این رویکرد سرعت توسعه را حفظ میکند بدون کاهش دقت
|
||||
---
|
||||
|
||||
## 🔴 کارهای فوری BackOffice (Proto Projects Missing)
|
||||
|
||||
> **تاریخ ثبت**: ۱۵ آذر ۱۴۰۴
|
||||
|
||||
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>
|
||||
:root {
|
||||
@@ -76,8 +107,8 @@ strong {
|
||||
}
|
||||
</style>
|
||||
|
||||
> **تاریخ بهروزرسانی**: 1403/10/06 (2024-12-26)
|
||||
> **وضعیت کلی**: 99% تکمیل شده
|
||||
> **تاریخ بهروزرسانی**: ۱۵ آذر ۱۴۰۴ (2025-12-05)
|
||||
> **وضعیت کلی**: FrontOffice 98% | BackOffice 95%
|
||||
> **مسیر توسعه**: CMS → BackOffice.BFF → BackOffice (UI) → FrontOffice.BFF → FrontOffice
|
||||
|
||||
---
|
||||
@@ -85,34 +116,39 @@ strong {
|
||||
## 📊 خلاصه وضعیت کلی پروژه
|
||||
|
||||
### ✅ تکمیل شده
|
||||
- **CMS Microservice**: 95% (12 از 12 Phase کامل، 9 TODO handlers باقیمانده)
|
||||
- **BackOffice.BFF**: 85% (47 Handler تکمیل، 8 TODO handlers، 19 Discount Shop handlers باقیمانده)
|
||||
- **BackOffice UI**: 95% (60 صفحه آماده Production - قابل تحویل به Admin)
|
||||
- **FrontOffice.BFF**: 80% ✅ (Proto Projects + Handlers متصل به CMS)
|
||||
- **FrontOffice UI**: 60% ✅ (Mock Services → gRPC تبدیل شده)
|
||||
- **CMS Microservice**: 96% (تمام سرویسهای مورد نیاز مشتری پیادهسازی شده)
|
||||
- **BackOffice.BFF**: 100% (35+ Handlers تکمیل)
|
||||
- **BackOffice UI**: 95% (60+ صفحه آماده Production)
|
||||
- **FrontOffice.BFF**: **98%** ✅ (همه سرویسهای مورد نیاز مشتری پیادهسازی شده)
|
||||
- **FrontOffice UI**: **98%** ✅ (28+ صفحه متصل به gRPC - آماده 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 متصل)
|
||||
### 🎉 سمت مشتری (FrontOffice) - آماده Production
|
||||
|
||||
### 📦 **قابل تحویل به 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~~ ✅ handlers BackOffice.BFF تکمیل شدهاند
|
||||
- UI برای گزارشهای پیشرفته (Reports) و برخی بهبودهای FrontOffice
|
||||
تمام قابلیتهای اصلی برای مشتری پیادهسازی شده:
|
||||
- ✅ احراز هویت (OTP)
|
||||
- ✅ پروفایل + آدرسها
|
||||
- ✅ محصولات + دستهبندی
|
||||
- ✅ سبد خرید + سفارش + VAT
|
||||
- ✅ کیف پول + تراکنشها
|
||||
- ✅ شبکه + کمیسیون
|
||||
- ✅ باشگاه + پکیجها
|
||||
|
||||
### 🔴 کارهای باقیمانده
|
||||
|
||||
#### 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 ⭐ **بالا**
|
||||
**وضعیت**: 0%
|
||||
**زمان تخمینی**: 2 روز
|
||||
**وضعیت**: 50% (CMS + BackOffice.BFF)
|
||||
**زمان تخمینی**: 2 روز (UI و FrontOffice باقیمانده)
|
||||
|
||||
```
|
||||
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
|
||||
- [✅] ManualPaymentStatus enum (Pending, Approved, Rejected, Cancelled)
|
||||
- [✅] ManualPaymentType enum (CashDeposit, DiscountWalletCharge, NetworkWalletCharge, Settlement, ErrorCorrection, Refund, Other)
|
||||
- [✅] ManualPayment entity (`ManualPayment`) با فیلدهای UserId, Amount, Type, Status, ReferenceNumber, RequestedBy, ApprovedBy, ApprovedAt, RejectionReason, TransactionId
|
||||
|
||||
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)
|
||||
- [✅] CreateManualPaymentCommand + Handler + Validator (ثبت پرداخت دستی توسط Admin)
|
||||
- [✅] ApproveManualPaymentCommand + Handler (تایید و اعمال روی کیفپول و لاگها)
|
||||
- [✅] RejectManualPaymentCommand + Handler (رد درخواست با دلیل)
|
||||
- [✅] GetAllManualPaymentsQuery + Handler (فهرست با فیلتر UserId/Status/Type/RequestedBy)
|
||||
- [ ] VerifyManualPaymentCommand / ProcessManualPaymentCommand / GetUserManualPaymentHistoryQuery (برای سناریوی FrontOffice - در این نسخه پیادهسازی نشدهاند)
|
||||
|
||||
CMS Infrastructure:
|
||||
- [✅] IPaymentGatewayService (از قبل موجود)
|
||||
- [ ] IFileStorageService (آپلود تصویر رسید)
|
||||
* LocalFileStorageService
|
||||
* AzureBlobStorageService (optional)
|
||||
- [✅] ManualPaymentConfiguration + DbSet<ManualPayment> + Migration AddManualPaymentSystem
|
||||
- [✅] gRPC Service: ManualPaymentContract (Create/Approve/Reject/GetAllManualPayments)
|
||||
|
||||
BackOffice.BFF:
|
||||
- [ ] 7 Handlers
|
||||
- [✅] CreateManualPaymentCommandHandler (Admin → CMS.CreateManualPayment)
|
||||
- [✅] ApproveManualPaymentCommandHandler (SuperAdmin → CMS.ApproveManualPayment)
|
||||
- [✅] RejectManualPaymentCommandHandler (SuperAdmin → CMS.RejectManualPayment)
|
||||
- [✅] GetManualPaymentsQueryHandler (لیست/فیلتر ManualPayments از CMS)
|
||||
|
||||
BackOffice UI:
|
||||
- [ ] صفحه لیست درخواستهای Manual Payment (Admin)
|
||||
@@ -726,35 +743,31 @@ Admin → GetPendingManualPayments → Approve/Reject
|
||||
---
|
||||
|
||||
### 1.7 VAT System (مالیات بر ارزش افزوده) ⭐ **متوسط**
|
||||
**وضعیت**: 0%
|
||||
**وضعیت**: ✅ تکمیل شد (CMS + BackOffice.BFF + BackOffice UI)
|
||||
**زمان تخمینی**: 2 روز
|
||||
|
||||
```
|
||||
CMS Domain:
|
||||
- [ ] اضافه کردن VatPercentage به UserOrder entity
|
||||
- [ ] اضافه کردن VatAmount (محاسبه شده) به UserOrder
|
||||
- [✅] OrderVAT Entity با VatRate, BaseAmount, VatAmount, TotalAmount, IsPaid
|
||||
- [✅] UserOrder.HasVAT و Navigation به OrderVAT
|
||||
|
||||
CMS Application:
|
||||
- [ ] Command: SetDefaultVatPercentageCommand (Admin)
|
||||
- [ ] Query: GetCurrentVatPercentageQuery
|
||||
- [ ] محاسبه VatAmount در CreateOrderCommand:
|
||||
VatAmount = (TotalAmount × VatPercentage) / 100
|
||||
- [✅] SeedVATConfigurationCommand (VAT.Rate, VAT.IsEnabled)
|
||||
- [✅] محاسبه VatAmount در SubmitShopBuyOrder و ذخیره در OrderVAT
|
||||
- [✅] اضافه شدن VatInfo به GetUserOrderResponseDto و QueryHandler
|
||||
|
||||
CMS Configuration:
|
||||
- [ ] اضافه کردن به ConfigurationKeys:
|
||||
DefaultVatPercentage = 10 (پیشفرض 10%)
|
||||
- [✅] ConfigurationScope.VAT و کلیدهای VAT.Rate, VAT.IsEnabled
|
||||
|
||||
BackOffice.BFF:
|
||||
- [ ] Handler: GetCurrentVatPercentageQuery
|
||||
- [ ] Handler: SetDefaultVatPercentageCommand
|
||||
- [✅] Handler: GetCurrentVatPercentageQuery
|
||||
- [✅] Handler: SetDefaultVatPercentageCommand
|
||||
- [✅] اضافه شدن VatAmount/VatPercentage به DTOهای UserOrder برای OrdersMainPage
|
||||
|
||||
BackOffice UI:
|
||||
- [ ] نمایش VatAmount در لیست سفارشات
|
||||
- [ ] نمایش VatPercentage در جزئیات سفارش
|
||||
- [ ] صفحه تنظیمات VAT (Settings/General)
|
||||
* فیلد عددی برای VatPercentage
|
||||
* دکمه ذخیره
|
||||
* نمایش: "شامل 10% مالیات بر ارزش افزوده"
|
||||
- [✅] نمایش VatAmount/VatPercentage در UserOrder/OrdersMainPage.razor
|
||||
- [✅] نمایش BaseAmount/VatAmount/TotalAmount در UserOrderDetailsDialog
|
||||
- [✅] تنظیمات VAT در SystemManagement/Configuration.razor (DefaultVatPercentage)
|
||||
|
||||
FrontOffice UI:
|
||||
- [ ] نمایش VAT در سبد خرید
|
||||
@@ -766,7 +779,7 @@ FrontOffice UI:
|
||||
---
|
||||
|
||||
### 1.8 RBAC (Role-Based Access Control) ⭐⭐ **حیاتی**
|
||||
**وضعیت**: 0%
|
||||
**وضعیت**: 20% (لایه BackOffice.BFF آماده، CMS/WebApi/UI باقی مانده)
|
||||
**زمان تخمینی**: 1.5 هفته (10 روز کاری)
|
||||
|
||||
#### 3 نقش اصلی:
|
||||
@@ -845,9 +858,9 @@ FrontOffice UI:
|
||||
|
||||
**د. BackOffice.BFF (2 روز)**
|
||||
```
|
||||
- [ ] AuthorizationHandler: CheckUserPermissionHandler
|
||||
- [ ] AuthorizationHandler: GetUserRolesHandler
|
||||
- [ ] Middleware: Permission Check قبل از فراخوانی CMS
|
||||
- [✅] AuthorizationHandler: CheckUserPermissionHandler (CQRS Query + Handler روی IPermissionService)
|
||||
- [✅] AuthorizationHandler: GetUserRolesHandler (CQRS Query برای برگرداندن Roles کاربر جاری)
|
||||
- [✅] Middleware: Permission Check قبل از فراخوانی CMS (gRPC Interceptor با Attribute: [RequiresPermission]، فعلاً روی UserOrderService, ManualPaymentService, ConfigurationService اعمال شده)
|
||||
```
|
||||
|
||||
**ه. BackOffice UI (4 روز)**
|
||||
@@ -1094,12 +1107,12 @@ ApplicationContractContext:
|
||||
|
||||
**الف. صفحه مدیریت تراکنشها** (2 روز)
|
||||
```
|
||||
- [ ] Pages/Payment/Transactions.razor
|
||||
- [✅] Pages/Payment/Transactions.razor
|
||||
* MudDataGrid با فیلتر
|
||||
* Columns: RefId, Amount, Status, Date, Gateway
|
||||
* دکمه View Details
|
||||
* فیلتر: Date Range, Status, Gateway Type
|
||||
- [ ] Components/TransactionDetailsDialog.razor
|
||||
- [✅] Components/TransactionDetailsDialog.razor
|
||||
* نمایش جزئیات تراکنش
|
||||
* BankReferenceId, TrackingCode
|
||||
* وضعیت PaymentFailed و دلیل
|
||||
@@ -1107,29 +1120,25 @@ ApplicationContractContext:
|
||||
|
||||
**ب. نمایش VAT در سفارشات** (1 روز)
|
||||
```
|
||||
- [ ] آپدیت Pages/Orders/OrdersList.razor
|
||||
* اضافه کردن ستون VatAmount
|
||||
* اضافه کردن ستون VatPercentage
|
||||
- [ ] آپدیت Components/OrderDetailsDialog.razor
|
||||
* نمایش: "مبلغ کالا: X"
|
||||
* نمایش: "مالیات (10%): Y"
|
||||
* نمایش: "مبلغ نهایی: X + Y"
|
||||
- [ ] Pages/Settings/VatSettings.razor
|
||||
* فیلد عددی VatPercentage
|
||||
* دکمه Save
|
||||
- [✅] آپدیت Pages/UserOrder/OrdersMainPage.razor
|
||||
* اضافه کردن ستونهای VatAmount و VatPercentage بر اساس دادههای BackOffice.BFF.UserOrder
|
||||
- [✅] آپدیت Components/UserOrderDetailsDialog.razor
|
||||
* نمایش: "مبلغ کالا: X" (BaseAmount از VAT)
|
||||
* نمایش: "مالیات (Vat%): Y"
|
||||
* نمایش: "مبلغ نهایی: X + Y" (TotalAmount از VAT)
|
||||
- [✅] Pages/SystemManagement/Configuration.razor (بخش تنظیمات VAT)
|
||||
* فیلد عددی DefaultVatPercentage
|
||||
* دکمه Save با استفاده از ConfigurationContract (کلید DefaultVatPercentage)
|
||||
```
|
||||
|
||||
**ج. Menu Filtering (RBAC)** (1 روز)
|
||||
```
|
||||
- [ ] آپدیت Shared/NavMenu.razor
|
||||
* if (await AuthService.HasPermission("orders.view"))
|
||||
{
|
||||
<MudNavLink ... />
|
||||
}
|
||||
- [ ] Services/AuthorizationService.cs
|
||||
* HasPermission(string permission)
|
||||
- [✅] آپدیت Shared/NavMenu.razor
|
||||
* استفاده از AuthorizationService.HasPermissionAsync برای نمایش/عدم نمایش آیتمهای منو (Orders, Products, Roles, DiscountShop, System)
|
||||
- [✅] Services/AuthorizationService.cs
|
||||
* HasPermission(string permission) (فعلاً مبتنی بر Role SuperAdmin/Admin/Inspector تا زمان پیادهسازی کامل Permission API در BFF)
|
||||
* GetUserRole()
|
||||
* RefreshPermissions()
|
||||
* کش در LocalStorage برای توسعههای بعدی
|
||||
```
|
||||
|
||||
**د. Public Messages Management** (1 روز) ✅ (پیادهسازی شده با ساختار نهایی)
|
||||
@@ -1185,16 +1194,18 @@ ApplicationContractContext:
|
||||
|
||||
**ح. Role Management** (2 روز) - **SuperAdmin only**
|
||||
```
|
||||
- [ ] Pages/System/Roles.razor
|
||||
- [✅] Pages/System/Roles.razor
|
||||
* DataGrid: RoleName, UserCount
|
||||
* دکمه Edit Permissions
|
||||
- [ ] Components/RolePermissionsDialog.razor
|
||||
(پیادهسازی بر اساس BackOffice/Pages/Role/RoleMainPage.razor با دکمه «ویرایش دسترسیها» و RolePermissionsDialog)
|
||||
- [✅] Components/RolePermissionsDialog.razor
|
||||
* Tree View: Permission Categories
|
||||
* Checkbox: Select/Deselect Permissions
|
||||
* دکمه Save
|
||||
- [ ] Pages/System/Users.razor
|
||||
* دکمه Save (فعلاً فقط UI؛ اتصال به RBAC Backend در مرحله بعد)
|
||||
- [✅] Pages/System/Users.razor
|
||||
* ستون Role
|
||||
* دکمه Assign Role
|
||||
(پیادهسازی بر اساس BackOffice/Pages/User/UserMainPage.razor و Components/UserRoleDialog.razor)
|
||||
```
|
||||
|
||||
**ط. Withdrawal Reports** (2 روز)
|
||||
@@ -1332,29 +1343,39 @@ ApplicationContractContext:
|
||||
✅ FrontOffice.BFF.UserWallet.Protobuf (ProjectReference)
|
||||
```
|
||||
|
||||
### تسکهای باقیمانده:
|
||||
### ✅ جمعبندی نهایی FrontOffice (سمت مشتری):
|
||||
|
||||
**الف. Authentication Pages** (2 روز) - موجود نیاز به بررسی
|
||||
> **وضعیت**: 98% Complete - آماده Production 🎉
|
||||
|
||||
**تمام صفحات پیادهسازی شده:**
|
||||
```
|
||||
- [✅] Pages/Auth/Register.razor
|
||||
- [✅] Pages/Auth/Login.razor
|
||||
- [ ] Pages/Auth/VerifyOtp.razor (بررسی)
|
||||
- [ ] Pages/Auth/ForgotPassword.razor
|
||||
✅ Authentication: Register (OTP), Login (OTP), Contract Accept
|
||||
✅ Profile: Index, Personal, Addresses, Settings, Wallet, Tree
|
||||
✅ Store: Products, ProductDetail, Categories, Cart, CheckoutSummary
|
||||
✅ 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
|
||||
- [✅] Pages/Profile/EditProfile.razor
|
||||
- [✅] Pages/Profile/Addresses.razor
|
||||
- [ ] Pages/Profile/ChangePassword.razor
|
||||
⏳ Contact Form → نیاز به CMS entity ContactMessage
|
||||
⏳ ForgotPassword → فعلاً OTP داریم، نیاز نیست
|
||||
⏳ ChangePassword → فعلاً OTP داریم، UI آماده برای آینده
|
||||
⏳ DiscountCode → نیاز به CMS RPC ValidateDiscountCode
|
||||
⏳ Reviews → نیاز به CMS entity Review
|
||||
```
|
||||
|
||||
### ❌ تسکهای حذف شده (دیگر نیاز نیست):
|
||||
|
||||
**ج. Order Pages** (3 روز)
|
||||
```
|
||||
- [✅] Pages/Orders/MyOrders.razor
|
||||
- [✅] Pages/Orders/OrderDetails.razor
|
||||
- [ ] Pages/Orders/Tracking.razor
|
||||
- [✅] Pages/Orders/OrderTracking.razor
|
||||
```
|
||||
|
||||
**د. Cart & Checkout** (3 روز)
|
||||
|
||||
Reference in New Issue
Block a user