docs: update BUSINESS-02, BUSINESS-03, TECH-03

BUSINESS-02:
- فرمول هایبرید: حذف MIN، اضافه validation کیف‌پول اعتباری
- فلوی خرید: اضافه مرحله بررسی موجودی + UserWalletChangeLog
- نام‌گذاری جدید کیف‌پول‌ها: اصلی، اعتباری، پاداش تیمی
- جدول وضعیت: اضافه WalletChangeLog + Validation

BUSINESS-03:
- بخش ۹ جدید: ExpirePendingOrdersService (۱۵ دقیقه)
- دیاگرام Mermaid فلوی انقضا

TECH-03:
- فیکس URL پروداکشن (kbs1→kbs2) + هشدار
- ۴ کامیت جدید در بخش ۹.۲
- بخش ۹.۳ فیکس URL پروداکشن
- بخش ۹.۴ نام‌گذاری کیف‌پول‌ها
This commit is contained in:
masoodafar-web
2026-02-24 00:29:03 +03:30
parent 0115142faf
commit c78850f86e
4 changed files with 671 additions and 11 deletions
+40 -1
View File
@@ -1,7 +1,7 @@
# 🛒 فروشگاه، موجودی و محصولات
> **منابع ادغام‌شده:** `discount-shop-business.md`, `DISCOUNT-STORE-STATUS.md`, `package-purchase-system.md`, `INVENTORY-IMPROVEMENTS.md`, `INVENTORY-REFACTORING-STATUS.md`, `PRODUCT-BUNDLE-FEATURE.md`, `SHOP-UNIFICATION.md`
> **آخرین بروزرسانی:** اسفند ۱۴۰۴ (بروزرسانی: VAT 10%)
> **آخرین بروزرسانی:** اسفند ۱۴۰۴ (بروزرسانی: ExpirePendingOrders ۱۵ دقیقه + فروشگاه اعتباری نام‌گذاری)
---
@@ -226,5 +226,44 @@ graph TD
| Lazy Loading | ✅ کامل | 100% |
| موجودی خودکار | ✅ کامل | 100% |
| تصاویر مربعی | ✅ کامل | 100% |
| انقضای سفارشات Pending | ✅ کامل | 100% |
| باندل محصولات | ⬜ طراحی | 30% |
| مقایسه محصول | ⬜ ایده | 0% |
---
## ۹. انقضای خودکار سفارشات Pending (ExpirePendingOrdersService)
> سرویس پس‌زمینه‌ای که سفارشات فروشگاه اعتباری را بعد از ۱۵ دقیقه منقضی می‌کند.
### ۹.۱ پارامترها
| پارامتر | مقدار | توضیح |
|---------|-------|-------|
| `ExpirationTime` | **۱۵ دقیقه** | مدت زمان مجاز برای پرداخت |
| `CheckInterval` | ۵ دقیقه | فاصله بررسی |
### ۹.۲ عملکرد
```mermaid
flowchart TD
A["هر ۵ دقیقه\nExpirePendingOrdersService"] --> B["جستجوی DiscountOrders\nPaymentStatus=Pending\nCreated < (now - 15 min)"]
B --> C{"سفارشی یافت شد?"}
C -->|خیر| A
C -->|بله| D["آزادسازی رزرو موجودی\nReleaseReservationAsync"]
D --> E["PaymentStatus → Reject\nDeliveryStatus → Cancelled"]
E --> F["Transaction.PaymentStatus → Reject"]
F --> G["Log: Expired order #X"]
G --> A
```
### ۹.۳ فایل
```
CMS/src/CMSMicroservice.Infrastructure/BackgroundServices/ExpirePendingOrdersService.cs
```
رجیستر شده در `ConfigureServices.cs`:
```csharp
services.AddHostedService<ExpirePendingOrdersService>();
```