# حالة تطبيق العميل — `smk_customer`

**آخر تحديث:** 2026-05-30  
**Commit مرجعي:** `stabilize-smk-customer-beta` (`87eea39`)  
**الحكم:** جاهز للـ **Beta المغلقة (Android)** — غير جاهز للنشر العام  

---

## نسبة الإنجاز الحالية

| المحور | النسبة | ملاحظة |
|--------|--------|--------|
| **المسار الأساسي** (تسجيل → طلب → تتبع) | **95%** | يعمل end-to-end |
| **الشاشات والـ UI** | **88%** | معظم الشاشات مكتملة؛ بعض الحقول بانتظار API |
| **جودة البيانات (صدق العرض)** | **90%** | أُزيلت البيانات الوهمية من الواجهة |
| **Error / Empty / Loading** | **85%** | 10+ شاشات مُصلحة؛ بعض الحالات الثانوية ناقصة |
| **Responsive (≤360px)** | **80%** | الرئيسية + الأقسام؛ باقي الشاشات تحتاج اختبار |
| **الأداء** | **75%** | تحسينات المتجر؛ pagination غير مكتمل |
| **Push & Notifications** | **70%** | Android جاهز تقنياً؛ iOS + deep links جزئية |
| **Production Readiness** | **45%** | HTTPS، توقيع release، SPF/DKIM، iOS |

### **الإنجاز الإجمالي المقدّر: ~85%**

> weighted average للـ Beta المغلقة — **ليس** جاهزية Store production.

---

## الشاشات المكتملة

الشاشات التالية **مربوطة بـ API** وتدعم Loading / Empty / Error (حيث ينطبق):

| # | الشاشة | الملف | الحالة |
|---|--------|-------|--------|
| 1 | Splash | `splash_screen.dart` | ✅ |
| 2 | تسجيل الدخول | `login_screen.dart` | ✅ |
| 3 | إنشاء حساب | `register_screen.dart` | ✅ |
| 4 | نسيت كلمة المرور | `forgot_password_screen.dart` | ✅ |
| 5 | إعادة تعيين كلمة المرور | `reset_password_screen.dart` | ✅ |
| 6 | الرئيسية | `home_screen.dart` | ✅ |
| 7 | الأقسام | `categories_screen.dart` | ✅ |
| 8 | تفاصيل القسم | `category_details_screen.dart` | ✅ |
| 9 | قائمة المتاجر | `stores_screen.dart` | ✅ |
| 10 | صفحة المتجر | `vendor_store_screen.dart` | ✅ |
| 11 | البحث | `search_screen.dart` | ✅ |
| 12 | مسح Barcode | `barcode_scanner_screen.dart` | ✅ |
| 13 | تفاصيل المنتج | `product_details_screen.dart` | ✅ |
| 14 | السلة | `cart_screen.dart` | ✅ |
| 15 | Checkout | `checkout_screen.dart` | ✅ |
| 16 | طلباتي | `customer_orders_screen.dart` | ✅ |
| 17 | تتبع الطلب | `order_tracking_screen.dart` | ✅ |
| 18 | العناوين | `addresses_screen.dart` | ✅ |
| 19 | المفضلة | `favorites_screen.dart` | ✅ |
| 20 | نقاطي | `my_points_screen.dart` | ✅ |
| 21 | الإشعارات | `notifications_screen.dart` | ✅ |
| 22 | العروض | `offers_screen.dart` | ✅ |
| 23 | الدعم — Hub | `support_hub_screen.dart` | ✅ |
| 24 | FAQ | `support_faq_screen.dart` | ✅ |
| 25 | تذاكر الدعم | `support_tickets_screen.dart` | ✅ |
| 26 | إنشاء تذكرة | `create_ticket_screen.dart` | ✅ |
| 27 | تفاصيل تذكرة | `ticket_detail_screen.dart` | ✅ |
| 28 | المزيد | `more_screen.dart` | ✅ |
| 29 | الملف الشخصي | `customer_profile_screen.dart` | ✅ |
| 30 | About | `about_screen.dart` | ✅ |
| 31 | Privacy / Terms | `legal_document_screen.dart` | ✅ |

**Shell:** `main_shell.dart` — 5 تبويبات (أقسام | طلبات | رئيسية | سلة | المزيد)

---

## الشاشات / الأجزاء غير المكتملة

| العنصر | الحالة | السبب | الأولوية |
|--------|--------|-------|----------|
| **وصف المنتج** | ⚠️ جزئي | لا حقل `description` في `ProductModel` / API العميل | P2 |
| **تقييمات المتجر/المنتج** | ➖ مُخفى | لا API تقييمات — أُزيل التبويب والعرض الوهمي | — |
| **مفضلة المتجر** | ➖ مُخفى | لا API — زر أُزيل من banner | — |
| **عروض بدون product/category** | ⚠️ | بطاقة غير قابلة للضغط (سلوك صحيح) | P3 |
| **Checkout — فشل تحميل عناوين** | ⚠️ | لا ErrorState واضح في `checkout_screen` | P2 |
| **Support Hub — فشل contact** | ⚠️ | لا UI خطأ صريح | P2 |
| **Push deep link** | ⚠️ | التنقل فقط عند `order_id` | P2 |
| **Pagination** | ❌ | أقسام، بحث، طلبات، منتجات متجر (50 max) | P2 |
| **IndexedStack 5 tabs** | ⚠️ | كل التبويبات في الذاكرة | P3 |
| **iOS Firebase / APNs** | ❌ | غير مُختبر للإنتاج | P1 (iOS) |
| **HTTPS Production API** | ❌ | cleartext للتطوير فقط | P1 |
| **Release signing** | ❌ | Android/iOS | P1 |
| **كود ميت** | ⚠️ | `home_quick_actions`, `home_promo_row`, `app_header` | P3 |

---

## المشاكل المفتوحة

### Backend / API

| # | المشكلة | التأثير |
|---|---------|---------|
| O1 | لا endpoint لوصف المنتج للعميل | «غير متوفر حالياً» في تفاصيل المنتج |
| O2 | لا API تقييمات متجر/منتج | التقييمات مُخفاة بالكامل |
| O3 | لا API مفضلة متاجر | زر المفضلة مُخفى |
| O4 | `displayRating` في `ProductModel`/`StoreModel` (shared) — computed وهمي | غير معروض في UI؛ يجب إزالته من الموديل لاحقاً |
| O5 | `CustomerOrderResource` — `driver.rating: 4.9` ثابت | قد يظهر في تتبع الطلب |
| O6 | Pagination ناقص في عدة endpoints | بطء مع قوائم كبيرة |
| O7 | SPF/DKIM للبريد | OTP قد لا يصل Gmail |

### Flutter (`smk_customer`)

| # | المشكلة | التأثير |
|---|---------|---------|
| O8 | Checkout لا يعرض خطأ تحميل عناوين | UX مربك |
| O9 | Push: إشعارات غير الطلبات لا تفتح شاشة | فقط foreground notification |
| O10 | `flutter analyze` — 26 issue (0 errors) | warnings/info فقط |
| O11 | Home error banner — retry غير موحّد | أقل من باقي الشاشات |
| O12 | Breadcrumb في تفاصيل المنتج — نص بدون navigation | P3 |

### البنية التحتية

| # | المشكلة | التأثير |
|---|---------|---------|
| O13 | FCM Service Account JSON في `storage/app/firebase/` | Push production |
| O14 | `APP_DEBUG=true` على WAMP | أمان |
| O15 | Git — commit أولي يشمل المشروع كاملاً | يحتاج remote + branching |

---

## المشاكل الحرجة (P1)

يجب حلها **قبل النشر العام** — Beta المغلقة يمكن أن تبدأ مع awareness:

| # | المشكلة | الإجراء المطلوب |
|---|---------|-----------------|
| **C1** | OTP/debug code في API | ✅ **مُصلَح** — لا `debug_code` |
| **C2** | بيانات وهمية في UI | ✅ **مُصلَح** في commit Beta |
| **C3** | Error يُعرض كـ Empty | ✅ **مُصلَح** في 10+ شاشات |
| **C4** | HTTPS للـ API في الإنتاج | ⏳ مطلوب قبل Store |
| **C5** | Release signing (Android) | ⏳ مطلوب قبل Store |
| **C6** | Firebase Service Account + FCM v1 production | ⏳ راجع `docs/FIREBASE_SETUP.md` |
| **C7** | `.env` secrets | ✅ في `.gitignore` — تحقق دورياً |
| **C8** | iOS push (APNs + GoogleService-Info.plist) | ⏳ قبل Beta iOS |

---

## خطة الإصدار Beta

### المرحلة 0 — الآن ✅

- [x] إزالة البيانات الوهمية من الواجهة
- [x] ErrorState موحّد + retry
- [x] إخفاء/تفعيل الأزرار غير الصادقة
- [x] Responsive أساسي (360px)
- [x] تحسين أداء grid المتجر
- [x] Commit: `stabilize-smk-customer-beta`
- [x] Checklist: `docs/BETA_TESTING_CHECKLIST.md`

### المرحلة 1 — Beta مغلقة (Android) — **الأسبوع 1–2**

**الهدف:** 5–10 مختبرين داخليين، مسار طلب كامل.

| المهمة | المسؤول |
|--------|---------|
| تشغيل Checklist كامل (`BETA_TESTING_CHECKLIST.md`) | QA / Dev |
| Emulator + 2 أجهزة LAN حقيقية | QA |
| التحقق من OTP email (webmail + Gmail) | DevOps |
| FCM push على Android (طلب status) | Dev |
| تجميع bugs في `docs/reports/` | QA |
| إصلاح P1 bugs فقط | Dev |

**معايير Go Beta:**

- [ ] 0 crash في مسار: تسجيل → طلب → تتبع
- [ ] 0 بيانات وهمية ظاهرة
- [ ] Error states تعمل في الشاشات الـ 10
- [ ] Push Android يفتح تتبع الطلب

### المرحلة 2 — Beta موسّعة — **الأسبوع 3–4**

| المهمة | الأولوية |
|--------|----------|
| إضافة `description` للمنتج (API + Flutter) | P2 |
| Pagination (أقسام، طلبات، بحث) | P2 |
| Checkout error state للعناوين | P2 |
| Push deep links لأنواع إشعارات أخرى | P2 |
| إصلاح `driver.rating` الثابت في Backend | P2 |
| SPF/DKIM | P1 |

### المرحلة 3 — Production — **بعد Beta**

| المهمة | ملاحظة |
|--------|--------|
| HTTPS + domain API | إلزامي |
| `APP_ENV=production`, `APP_DEBUG=false` | |
| Android App Bundle + Play Console | |
| iOS TestFlight (APNs) | |
| Firebase production credentials | |
| مراجعة أمنية نهائية | |
| Store listing (screenshots, privacy policy URL) | |

---

## أوامر التشغيل

```bash
# Backend
cd c:\wamp64\www\smk && php artisan config:clear

# Emulator
cd smk_customer && flutter pub get && flutter run

# Physical device
cd smk_customer && flutter run --dart-define=USE_LAN_HOST=true

# Analyze
cd smk_customer && flutter analyze lib
```

---

## مراجع

| المستند | المسار |
|---------|--------|
| Beta Testing Checklist | [`docs/BETA_TESTING_CHECKLIST.md`](../BETA_TESTING_CHECKLIST.md) |
| Firebase Setup | [`docs/FIREBASE_SETUP.md`](../FIREBASE_SETUP.md) |
| Git commit | `stabilize-smk-customer-beta` |

---

## سجل التحديثات

| التاريخ | التغيير |
|---------|---------|
| 2026-05-30 | إنشاء التقرير بعد commit Beta stabilization |
