# 03 — Mobil: Android Shell, Asistan Birleşmesi, App Runtime

> **AI'lere sorulacak:** Birleşme planı doğru mu? Nav yapısı? WebView vs native sınırı nerede olmalı?

**Versiyon:** 1.0 · **2026-07-05**

---

## 1. İki mevcut Android uygulama

| | **Superapp (legacy)** | **Emare Asistan** |
|---|----------------------|-------------------|
| Path | `/Users/emre/Emare superapp` | `Mobile App/` |
| Paket | `com.emaresuperapp.crm` | `com.emare.asistan` |
| Sürüm | 1.0 | 2.3.4 |
| Güçlü yan | WebView shell, NFC, OCR, MiniApp | Inbox, calls, demo API, OTA |
| Zayıf yan | Gson login, legacy portal API | Ayrı APK |

**Hedef paket:** `com.emare.superapp`

---

## 2. Superapp — mevcut yapı

### Activity'ler
`SplashActivity` · `LoginActivity` · `RegisterActivity` · `MainActivity` · `MiniAppActivity` · `NfcReaderActivity` · `CameraOcrActivity` · `IdScanActivity`

### Bottom nav (legacy)
| Tab | Fragment | İçerik |
|-----|----------|--------|
| Ana Sayfa | DashboardFragment | WebView → demo-agent |
| Faturalar | FaturalarFragment | Legacy `api/site/v1` |
| Arızalar | ArizalarFragment | Legacy portal |
| Profil | ProfilFragment | Çıkış |

### API
`ApiClient.kt` — Retrofit/Gson, `X-Site-Api-Key`, Bearer token

---

## 3. Asistan — birleştirilecek modüller

| Modül | Dosyalar |
|-------|----------|
| Omni-inbox | `InboxFragment`, `InboxRepository`, `ChatThreadActivity` |
| Çağrılar | `CallHistoryFragment`, `CallRepository` |
| Demo arama | `DemoAgentFragment`, `DemoCallRepository` (OkHttp) |
| Login | `AuthRepository` (OkHttp + JSONObject) ✅ |
| OTA | `UpdatesController` entegrasyonu |
| Ayarlar | `SettingsFragment` |

**Networking standardı:** Asistan pattern'i (OkHttp + JSONObject) birleşik shell'de zorunlu.

---

## 4. Hedef birleşik navigasyon

```
Bottom Nav:
├── Ana Sayfa    — tenant app grid + özet
├── Sohbetler    — native inbox
├── Asistan      — demo / AI UI
├── Çağrılar     — native call log
└── Profil       — ayarlar, çıkış
```

Legacy Fatura/Arıza → web mini-app veya tenant manifest'ten.

---

## 5. Birleşme adımları (Faz 1)

1. `Mobile App/.../com/emare/asistan/` → `superapp/android/.../modules/asistan/`
2. Tek `SessionManager` + tek `ApiClient`
3. Manifest activity merge
4. `applicationId` → `com.emare.superapp`
5. OTA + ProGuard birleşik kurallar
6. Eski iki APK kaldırılır (OTA mesajı)

### Test checklist
- [ ] Login prod API
- [ ] Inbox + mesaj gönder
- [ ] Demo AI outbound
- [ ] Çağrı geçmişi
- [ ] WebView demo-agent oturum
- [ ] Release ProGuard smoke

---

## 6. Mini-app runtime

### Uygulama tipleri
| Tip | Açılış |
|-----|--------|
| `webview` | URL + auth inject |
| `native` | Fragment (inbox, calls, NFC) |
| `hybrid` | İleri faz |

### Manifest kaynağı
- **Hedef:** tenant `workspace.json` — `GET /api/v1/tenant/workspace-manifest`
- **Şimdilik:** statik katalog `catalog.json`

### WebView kuralları
- `domStorageEnabled = true`
- User-Agent: `EmareAndroidSuperApp/{version}`
- Görünürlük: URL `demo-agent` + login değilse göster

### JS Bridge (mevcut → hedef)
| Mevcut | Hedef |
|--------|--------|
| `showToast`, `closeMiniApp` | + `getDeviceId`, `openApp`, `getAuthToken` |

### Deep link
```
https://app.emarecloud.tr/open/{appId}
emare://app/{appId}
emare://module/inbox
```

### Ecosystem app eşlemesi
| ID | Entrypoint |
|----|------------|
| emare-asistan | `/demo-agent` |
| call-center | `/call-center` veya native |
| whatsapp-desk | `/whatsapp` |
| emare-crm | `/customers` |

---

## 7. Kimlik modülleri (korunacak)

NFC TC kimlik, ML Kit OCR, IdScan — `modules/identity/` altında.

---

## 8. Onboarding eksikleri (P1)

- [ ] `RegisterActivity` → `POST /onboarding/provision`
- [ ] Sahte ilerleme kaldır
- [ ] Provision sonrası auto-login

---

## 9. Build komutları

```bash
# Legacy superapp
cd "/Users/emre/Emare superapp" && ./gradlew assembleDebug

# Asistan
cd "Mobile App" && SITE_API_KEY=... ./gradlew assembleDebug
```

---

## 10. AI'den istenen geri bildirim

1. Bottom nav 5 tab yeterli mi? Farklı IA önerisi?
2. Faturalar/Arızalar: web mi native mi kalsın?
3. Mini-app: WebView mi React Native modül mü uzun vadede?
4. Birleşme sırası — hangi modül önce taşınmalı?
5. Package/module yapısı (`com.emare.superapp.*`) öneriniz?

**Önceki:** [02-MIMARI-VE-ENTEGRASYON.md](./02-MIMARI-VE-ENTEGRASYON.md) · **Sonraki:** [04-WEB-MAGAZA-CIHAZ-KONTROLU.md](./04-WEB-MAGAZA-CIHAZ-KONTROLU.md)
