# Beta Testing Checklist — `smk_merchant`

**الإصدار:** Production Phase A  
**المنصة المستهدفة:** Android (أولوية) — iOS لاحقاً  
**اسم التطبيق:** SMK Merchant  

---

## معلومات جلسة الاختبار

| الحقل | القيمة |
|-------|--------|
| المختبر | |
| التاريخ | |
| الجهاز / الموديل | |
| Android / iOS | |
| Backend | Staging / Production |
| Build | Debug / Release |
| `--dart-define` | APP_ENV= |
| حساب التاجر | |

---

## تهيئة البيئة

- [ ] Laravel staging/production: `APP_DEBUG=false`, `SMK_FORCE_HTTPS=true`
- [ ] FCM Service Account في `storage/app/firebase/`
- [ ] Firebase: `google-services.json` + `firebase_options.dart` (`isConfigured=true`)
- [ ] **Release build:**
  ```bash
  cd smk_merchant
  flutter build appbundle --dart-define=APP_ENV=production --release
  ```
- [ ] **Dev LAN:**
  ```bash
  flutter run --dart-define=APP_ENV=dev --dart-define=API_HOST=http://YOUR_IP
  ```
- [ ] حساب تاجر **معتمد** + حساب **قيد المراجعة**

**API المتوقع:**

| البيئة | Base URL |
|--------|----------|
| dev (WAMP) | `http://10.0.2.2/smk/public/api/v1` |
| production | `https://api.smkiraq.com/api/v1` |

---

## 1. التسجيل والدخول

- [ ] Splash → login أو dashboard (إن مسجّل)
- [ ] **تسجيل تاجر جديد** — كل الحقول + محافظة
- [ ] بعد الت register → **Pending Approval** أو shell محدود
- [ ] **تسجيل دخول** تاجر معتمد
- [ ] بيانات خاطئة → رسالة خطأ
- [ ] **تسجيل خروج** → login
- [ ] **حذف الحساب** (إن وُجد)

---

## 2. Dashboard

- [ ] إحصائيات + رصيد المحفظة
- [ ] طلبات حديثة
- [ ] Quick actions (طلبات، مخزون، عملاء)
- [ ] Pull-to-refresh

---

## 3. المنتجات

- [ ] قائمة + بحث
- [ ] **إضافة منتج** (صورة، سعر، وزن، SKU)
- [ ] **تعديل منتج**
- [ ] **حذف منتج**
- [ ] Error + retry عند فشل API

---

## 4. المخزون

- [ ] قائمة المخزون
- [ ] تبويب **منخفض المخزون** (`?low_stock=1`)
- [ ] تعديل كمية (in/out/adjustment)
- [ ] سجل الحركات

---

## 5. الطلبات — سير العمل الكامل

- [ ] إشعار **طلب جديد** (push + in-app)
- [ ] قائمة الطلبات + فلتر الحالة
- [ ] **قبول الطلب** → `accepted`
- [ ] **بدء التجهيز** → `preparing`
- [ ] **اكتمل التجهيز** → `ready_for_pickup`
- [ ] **إرسال للتوصيل المركزي** → `sent_to_central_logistics`
- [ ] **خصم 1000 د.ع** من المحفظة بعد الإرسال
- [ ] الطلب **مقفل** — لا تعديل بعد الإرسال
- [ ] رصيد غير كافٍ → رسالة واضحة

---

## 6. المحفظة

- [ ] عرض الرصيد
- [ ] سجل المعاملات
- [ ] **Top-up** — اختيار طريقة دفع + مرجع
- [ ] بعد top-up (موافقة admin) → الرصيد يتحدث

---

## 7. الإعدادات والملف

- [ ] إعدادات الإشعارات
- [ ] إعدادات الشحن بالوزن
- [ ] تعديل الملف (اسم المتجر، هاتف…)

---

## 8. Push Notifications

- [ ] Token يُسجّل بعد login (`/merchant/devices/register`)
- [ ] **طلب جديد** → push على الجهاز
- [ ] الضغط على الإشعار → **تفاصيل الطلب**
- [ ] Foreground → local notification
- [ ] Logout → unregister token

---

## 9. Regression

- [ ] لا HTTP cleartext في **release** build
- [ ] لا debug keys في release (AAB signed)
- [ ] Rate limit login — لا crash بعد 10 محاولات سريعة

---

## ملخص الجلسة

| القسم | Passed | Failed |
|-------|--------|--------|
| Auth | | |
| Dashboard | | |
| Products | | |
| Inventory | | |
| Orders workflow | | |
| Wallet | | |
| Push | | |

**الحكم:** ☐ Go Beta  ☐ No-Go  

**توقيع المختبر:** _______________  **التاريخ:** _______________

**مرجع:** [`docs/BETA_TESTING_CHECKLIST.md`](BETA_TESTING_CHECKLIST.md) (العميل)
