# 04 — Web Mağaza ve Cihaz Kontrolü (Device Agent)

> **AI'lere sorulacak:** Mağaza UX yeterli mi? Device komut seti güvenli mi? Shizuku mu root mu önce?

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

---

## Bölüm A — Web Mağaza (`app.emarecloud.tr`)

### Durum
✅ **Canlı:** https://app.emarecloud.tr  
**Kaynak:** `tenant-sites/superapp/`

### Dosyalar
| Dosya | Rol |
|-------|-----|
| `index.html` | Landing + mağaza UI |
| `assets/site.css` | Dark theme tasarım |
| `assets/app.js` | Arama, filtre, sayfalama |
| `assets/catalog.json` | 2.420 app (~770 KB) |
| `scripts/generate-catalog.py` | Katalog üretici (seed: 20260705) |
| `app.emarecloud.tr.conf` | Nginx vhost |

### Özellikler
- 20 kategori, 20 gerçek Emare modülü + üretilmiş mini-app'ler
- Arama, sıralama (popüler/puan/yeni/ad), 48/sayfa pagination
- CTA: Giriş → `aiasistan.emarecloud.tr/login`
- "Aç" → şimdilik login (Faz 2: deep link)

### Deploy
```bash
./scripts/deploy/deploy-superapp-site.sh
# → /var/www/superapp on prod nginx
```

### Faz 2 hedefleri (web)
- [ ] Tenant API katalog
- [ ] "Aç" → `emare://app/{id}` / App Links
- [ ] PWA manifest
- [ ] Gerçek install metrikleri

---

## Bölüm B — Device Control (telefon yönetimi)

### Amaç
AI asistan, yetki sınırları içinde **bağlı telefonu yönetir** (uygulama aç, arama başlat, bildirim vb.).

### Yetki seviyeleri

| Seviye | Ad | Örnek yetkiler | Root |
|--------|-----|----------------|------|
| **A** | Standart | `open_app`, `open_url`, bildirim, demo arama | Hayır |
| **B** | Gelişmiş | Shizuku install, screenshot, brightness | Hayır* |
| **C** | Root | Sistem shell (whitelist) | Evet |

\* Shizuku = ADB shell izni, root değil. **Varsayılan: sadece A açık.**

### Device Agent bileşenleri (hedef)
```
DeviceAgentService
├── DeviceRegistry      — kayıt, fingerprint
├── CommandReceiver     — API / FCM
├── PolicyEngine        — tenant + user + seviye
├── ActionExecutor      — aksiyon
└── AuditLogger         — audit trail
```

### Komut şeması (hedef API)
```json
POST /api/v1/device/commands
{
  "deviceId": "uuid",
  "command": "open_app",
  "params": { "packageName": "com.android.chrome" },
  "requiresLevel": "A",
  "correlationId": "uuid"
}
```

### Komut kataloğu

**Seviye A (Faz 3 MVP):**
| Komut | Açıklama |
|-------|----------|
| `open_app` | Paket veya appId ile aç |
| `open_url` | HTTPS deep link |
| `show_notification` | Local notification |
| `start_ai_call` | Mevcut ai-outbound wrapper |
| `get_installed_apps` | Label listesi |

**Seviye B (Faz 4):** `install_apk`, `uninstall_app`, screenshot, brightness — Shizuku + kullanıcı onayı

**Seviye C (opt-in flavor):** whitelist `shell_exec` — sadece test/fleet

### AI entegrasyonu
```
Kullanıcı ses/yazı → AI Action Engine → device command → Agent → audit
```
Platform referans: `docs/AI_ACTION_ENGINE.md`

### Güvenlik
1. `POST /api/v1/device/register` → deviceId
2. Komut: tenant + user + device binding
3. Seviye B+: biyometrik/PIN onay
4. Audit her komut; rate limit
5. Root kodu **ayrı flavor**, Play Store'da kapalı

### Shizuku vs Root

| | Shizuku | Root |
|---|---------|------|
| Kurulum | Kullanıcı app | Bootloader |
| Play Store | Uyumlu (dikkatli) | Risk |
| Silent install | Evet | Evet |

**Öneri:** Önce Shizuku; root yalnızca internal fleet.

---

## AI'den istenen geri bildirim

**Web:**
1. Statik 2420 app gerçekçi mi? API'ye ne zaman geçilmeli?
2. Mağaza mobil-first yeterli mi?

**Device:**
3. Seviye A komut listesi eksik/fazla mı?
4. FCM mi polling mi?
5. Root hiç olmamalı mı? Enterprise MDM alternatifi?
6. Accessibility ile otomasyon etik/legal risk?

**Önceki:** [03-MOBIL-ANDROID-ASISTAN.md](./03-MOBIL-ANDROID-ASISTAN.md) · **Sonraki:** [05-YOL-HARITASI-AI-GELISTIRME.md](./05-YOL-HARITASI-AI-GELISTIRME.md)
