4.5 KiB
4.5 KiB
جریان کاربری — تسک ۱۴: پنل پیامکی
جریان شارژ کیف پول پیامک
کاربر وارد صفحه تنظیمات → تب «پیامک» میشود
│
▼
GET /api/v1/sms/wallet/balance
→ موجودی: ۱۵۰,۰۰۰ ریال (≈ ۶۰۰ پیامک)
│
▼
کاربر روی «شارژ کیف پول» کلیک میکند
فرم: مبلغ شارژ + انتخاب gateway
│
▼
POST /api/v1/sms/wallet/charge { gateway: 'mellat', amount_rials: 500000 }
│
▼
PaymentController → ایجاد Payment با type='sms_wallet'
│
▼
redirect به gateway بانک
│
▼
callback → SmsWalletService::charge()
→ balance_rials += 500000
→ ثبت credit transaction
│
▼
redirect به /admin/sms-settings?charged=1
جریان تنظیمات یادآوری خودکار
GET /api/v1/sms/settings → فرم پر میشود
│
▼
┌─────────────────────────────────────────────┐
│ تنظیمات پیامک │
├─────────────────────────────────────────────┤
│ یادآوری نوبت │
│ [✅] فعال │
│ چند ساعت قبل: [3 ساعت ▼] │
├─────────────────────────────────────────────┤
│ پیامک بعد از ویزیت │
│ [☐] فعال │
│ متن پیامک: [______________________________]│
└─────────────────────────────────────────────┘
│ [ذخیره تنظیمات] │
│
▼
PATCH /api/v1/sms/settings
{ reminder_enabled: true, reminder_hours_before: 3,
post_visit_enabled: false, post_visit_text: null }
جریان کسر خودکار هنگام ارسال یادآوری
Scheduler/Cronjob اجرا میشود (هر ساعت)
│
▼
نوبتهایی که در X ساعت آینده هستند پیدا میشوند
│
▼
برای هر نوبت:
entity_type/entity_id پیدا میشود
│
▼
SmsWallet پیدا میشود
│
├─► balance < sms_price_rials:
│ لاگ خطا: «موجودی ناکافی» — پیامک ارسال نشد
│
└─► balance کافی:
SmsService::send(phone, message, entityType, entityId)
→ ارسال پیامک
→ deduct balance
→ ثبت debit transaction با description='یادآوری نوبت'
نمایش در Frontend
┌─────────────────────────────────────────────────┐
│ تنظیمات پیامک │
├──────────────────────┬──────────────────────────┤
│ کیف پول پیامک │ تنظیمات ارسال │
│ │ │
│ موجودی: │ یادآوری: ✅ ۳ ساعت قبل │
│ ۱۵۰,۰۰۰ ریال │ │
│ ≈ ۶۰۰ پیامک │ پس از ویزیت: ☐ غیرفعال │
│ │ │
│ [شارژ کیف پول] │ [ذخیره تنظیمات] │
├──────────────────────┴──────────────────────────┤
│ تاریخچه تراکنشها │
│ ✅ +۵۰۰,۰۰۰ ریال — شارژ — ۱۴۰۵/۰۳/۱۰ │
│ ⬇️ -۲۵۰ ریال — یادآوری نوبت — ۱۴۰۵/۰۳/۱۱ │
└─────────────────────────────────────────────────┘