199 lines
13 KiB
Markdown
199 lines
13 KiB
Markdown
# AITURK Mobil — Android geliştirme sürümü 0.1.4
|
||
|
||
Bu bir **geliştirme paketi**; planın tamamlanmış ürün/kapalı beta kabulü değildir.
|
||
Android uygulaması, IDE adaptörü ve hesap doğrulamalı bağlantı servisi kodlandı.
|
||
Google Live ve gerçek telefon/ağ doğrulaması henüz yapılmadı. Canlı
|
||
turkservis.online veya kurulu IDE bu kaynak değişiklikleriyle güncellenmedi.
|
||
|
||
## Çalışan ve test edilen parçalar
|
||
|
||
- Capacitor 8.5.1 Android projesi; Türkçe erişilebilir kurulum ve yazılı kullanım.
|
||
- Tarayıcıda mevcut AITURK hesabıyla kısa kod onayı; uygulamaya parola girilmez.
|
||
Dar kapsamlı mobil oturum Windows/Android kasasında tutulur. Mevcut hesap API
|
||
anahtarı gelişmiş seçenek olarak korunur. Bu yeni giriş henüz canlıya dağıtılmadı.
|
||
Telefonun eşleşmesini hedef bilgisayar kendi cihaz tokenıyla onaylar.
|
||
- WebRTC DTLS/SCTP veri kanalı; büyük Unicode mesajları sınırlı parçalara bölme.
|
||
- Mevcut IDE `/api/sessions` ve JSON-RPC adaptörü. Konuşma ve seçili model
|
||
gönderimden önce doğrulanır. Model listesi icat edilmez.
|
||
- Görevden önce diske yazılan tekrar gönderim kaydı. Kabul sonucu belirsizse
|
||
ikinci kez çalıştırılmaz. Telefonun bekleyen gönderimi Android kasasında kalır.
|
||
- Gerçek IDE onay kimliği ve redakte edilmiş tam komutla yalnız `once`/`deny`.
|
||
Sürekli/genel izin, sudo/UAC veya ses modeli üzerinden onay yolu yoktur.
|
||
- Google anahtarı Windows `safeStorage`, hesap cihaz sırrı Android Keystore
|
||
AES-GCM kullanır. Android yedekleme ve cihazlar arası veri taşıma kapatılır.
|
||
- Anahtardan kısa ömürlü, model/araç/sistem talimatı kısıtlı Google Live token
|
||
üretme kodu; doğrudan Google WebSocket, PCM mikrofon/oynatma ve kapatma kodu.
|
||
- Ses görüşmesini kapatma IDE'ye interrupt göndermez. Görünür görev gönder
|
||
düğmesi ve ayrı IDE durdur düğmesi vardır.
|
||
- Google kullanım bildirimleri ücretli liste tarifesiyle tahmin edilir; her
|
||
isteğin tekrar faturalandırılan geçmişi de sayılır. Ayrıntısı eksik tokenlar
|
||
için fiyat aralığı gösterilir. Bu fatura, kredi veya ücretsiz kota sorgusu değildir.
|
||
- Kullanıcı her görüşme için 1–10 dakika ve 0,01–10 USD tahmini durdurma sınırı
|
||
seçer (varsayılan 10 dakika / 0,25 USD). Üst tahmin sınıra ulaşırsa, süre
|
||
dolarsa veya 120 saniye kullanım bildirimi gelmezse yalnız Google bağlantısı
|
||
kapanır. Otomatik yeniden bağlanılmaz. Her yeni oturumda sayaç sıfırlanır;
|
||
bu günlük/aylık bütçe veya Google tarafında kesin harcama tavanı değildir.
|
||
|
||
## Geliştirme kurulumu
|
||
|
||
Node 22+, JDK 21 ve Android API 36 gerekir. Bu çalışma sırasında araçlar
|
||
`%LOCALAPPDATA%/aiturk-mobile-tools` altına kuruldu; kullanıcı sistem PATH'i
|
||
veya yönetici ayarları değiştirilmedi.
|
||
|
||
```powershell
|
||
# Bu klasörde; kök depodaki kurulumu etkilemeyen Android kurulumu
|
||
npm ci --workspaces=false --ignore-scripts
|
||
npm test --workspaces=false
|
||
npm run android:sync --workspaces=false
|
||
# JAVA_HOME ve ANDROID_HOME kendi araç yollarınızı göstermeli
|
||
.\android\gradlew.bat -p android assembleDebug assembleRelease lintDebug
|
||
```
|
||
|
||
`app-debug.apk` geliştirici anahtarıyla imzalanır. `app-release-unsigned.apk`
|
||
üretim imzası içermez ve kurulabilir sürüm olarak paylaşılmamalıdır. Özel üretim
|
||
imza anahtarı oluşturulmadı; mağaza hesabı veya ücretli hizmet açılmadı.
|
||
|
||
## Uyumlu IDE ve bağlantı servisi
|
||
|
||
Bu kaynak ağacındaki masaüstü paketini normal masaüstü build süreciyle derleyin.
|
||
Derlenmiş IDE'yi `--aiturk-mobile` parametresiyle açın. IDE zaten açıksa parametre
|
||
mobil bağlantı penceresini açar; çalışmakta olan konuşma kapatılmaz.
|
||
Mobil pencere açılmadan uzaktan erişim etkinleşmez.
|
||
|
||
1. Bilgisayardaki mobil pencerede “AITURK hesabımla giriş yap” seçin; tarayıcıda
|
||
hesabınıza girip uygulamanın kodunu onaylayın. “Girişi kontrol et” ile tamamlayın.
|
||
2. Bilgisayarı hesapla eşleştirin; açılan mevcut portal sayfasında kodu onaylayın.
|
||
3. Android'de aynı AITURK hesabıyla tarayıcı kod girişini tamamlayın. Bilgisayarda
|
||
“Telefon için QR oluştur” seçip telefonda kamerayla veya QR resmiyle okuyun.
|
||
4. Bilgisayarda “QR ile gelen telefonu getir” seçin; telefonun gösterdiği kısa
|
||
kodu girip açıkça onaylayın. Uzun kimliği elle yazmak gerekmez.
|
||
5. Bilgisayarda “Mobil bağlantıyı aç”, telefonda “Bilgisayarları bul” ve “Bağlan”.
|
||
6. Gerçek IDE konuşmasını seçin. Yazılı görevi görünür önizlemeden gönderin.
|
||
7. Google anahtarını telefondaki ayrı güvenli girişten bilgisayara aktarın.
|
||
Veri/ücret bilgisini kabul ettikten sonra Google görüşmesini başlatın.
|
||
|
||
Gateway eş değişikliği `portal/routes_mobile.py` ve `router_gateway.py` içindedir.
|
||
Mevcut member guard korunur. Üretim kurulumu ve TURN koşulları eş gateway
|
||
deposunun `docs/aiturk-mobile-operations.md` dosyasında açıklanır.
|
||
|
||
## Doğrulama ve sınırlar
|
||
|
||
0.1.4-dev (Android versionCode 5), 12 Eylül 2026: 41 mobil test geçti;
|
||
tarayıcı uygulama testi, yerel sertifika/DTLS testi ve Electron IPC/Windows kasa
|
||
testi geçti. Telefon kimliği QR resminin onaysız içe alınması ve değiştirilmiş
|
||
cihaz kimliklerinin reddi test edildi. `assembleDebug lintDebug` başarılı,
|
||
uygulama lint sonucu 0 hata / 17 uyarı. Debug APK imzası doğrulandı ve kimlik,
|
||
taşıma, uygulama, davet, gizlilik ve ana sayfa dosyaları kaynakla karşılaştırıldı.
|
||
APK SHA-256: `94835E223B71BE36AFB26686D3EBC79D8976514FFDB4E7CDFC189ACE7E2F12A5`.
|
||
Bu APK geliştirici imzalıdır; üretim/gerçek Android kabulü değildir.
|
||
|
||
12 Eylül 2026 yerel doğrulaması: `npm test` 37/37 geçti. Ses başlangıcı
|
||
beklerken iptal ve kapatılmış oturumu yeniden açma regresyonları önce başarısız
|
||
testlerle gösterildi, sonra düzeltildi. `npm run android:sync` ve
|
||
`gradlew.bat assembleDebug lintDebug` başarılı; uygulama lint sonucu 0 hata,
|
||
17 uyarı. `scripts/browser-smoke.mjs` gerçek DTLS veri kanalında 240.000
|
||
karakter aktarımını ve sentetik Google kullanım sınırını doğruladı; Google'a
|
||
gerçek çağrı yapmadı. APK içindeki `voice.mjs` kaynakla birebir karşılaştırıldı.
|
||
Debug imzası `apksigner verify` ile doğrulandı; bu üretim imzası değildir.
|
||
APK SHA-256: `F5DB098DF0F1C59B92F274969FCAD926BCB2DD25AF823533A983085A18BFB966`.
|
||
Bu kontrolde `adb devices -l` bağlı cihaz göstermedi; fiziksel telefon kabulü
|
||
ve canlı yayın hâlâ tamamlanmadı.
|
||
|
||
`npm test`: davranış, tekrar gönderim, onay sınırı, ses temizliği ve token kısıtları.
|
||
`scripts/browser-smoke.mjs`: yeni test tarayıcısında gerçek DTLS veri kanalı,
|
||
240.000 karakter Unicode aktarımı, dar ekran taşması ve dokunma hedefi.
|
||
`scripts/electron-smoke.mjs`: gerçek Electron IPC ve Windows safeStorage turu;
|
||
yalnız sentetik bir test anahtarı kullanır.
|
||
|
||
`src/peer-identity.mjs` cihaz kimliğine göre kalıcı standart RTCCertificate
|
||
kaydını, atomik ilk oluşturmayı, kayıtlı parmak iziyle yüklemeyi ve SDP kimlik
|
||
kontrolünü uygular. Anahtar eksik veya geçersizse yükleme yeni sertifika üretmez.
|
||
Bilgisayar QR daveti sürüm 2 ile sertifika parmak izini taşır; telefon bunu
|
||
eşleştirme kaydına alır ve SDP uygulanmadan önce kontrol eder. Bilgisayar
|
||
bağlantıda kayıtlı sertifikasını kullanır. Eski sürüm 1 QR ve kimliği olmayan
|
||
elle eşleştirmeler veri bağlantısı açamaz; yeni QR ile yeniden eşleştirme gerekir.
|
||
Telefon da eşleştirmede kendi sertifikasını oluşturur ve bağlantıda aynı
|
||
sertifikayı yükler. Kullanıcı telefondaki kimlik belgesini bilgisayardaki
|
||
ilgili alana aktarır; `phone.approve` belgeyi eşleştirme kimliği ve sunucunun
|
||
onayladığı cihaz kimliğiyle karşılaştırıp Windows kasasına kaydeder. IDE hem
|
||
gelen bağlantı listesinde hem `channel.answer` yolunda kayıtlı telefon
|
||
parmak izini kontrol eder; renderer SDP'yi uygulamadan önce tekrar doğrular.
|
||
İlk kayıt için yerel açık onay gerekir; mevcut telefon kimliği sessizce
|
||
değiştirilemez. Telefon kimliğini QR olarak da gösterir. Kullanıcı ekran
|
||
görüntüsünü kendi bilgisayarına aktararak “Telefon kimliği QR resmi” alanından
|
||
okutabilir; eşleştirme kimliği ve belge doldurulur, fakat otomatik onay verilmez.
|
||
Kısa kod ve ayrı onay düğmesi gereklidir; elle belge aktarma yolu da korunur.
|
||
|
||
`node scripts/certificate-smoke.mjs`: 12 Eylül 2026'da izole Edge bağlamında
|
||
yerel WebRTC sertifikasının IndexedDB'ye yazılıp sayfa yenilendikten sonra
|
||
aynı parmak iziyle geri alınması, geri alınan sertifikayla gerçek DTLS veri
|
||
aktarımı ve yanlış SDP parmak izinde DTLS'nin `failed` durumuna geçmesi
|
||
doğrulandı. Test artık gerçek `peer-identity.mjs` modülünü kullanıyor; eşzamanlı
|
||
dört oluşturma çağrısının tek kimlikte birleşmesi, kayıp kaydın ve yanlış
|
||
parmak izinin reddi de geçti. Tarayıcı uygulama testi ayrıca QR ile eşlenen
|
||
bilgisayar yerine farklı sertifikalı SDP geldiğinde görünür kimlik hatası
|
||
verildiğini ve hiçbir IDE isteği gönderilmediğini doğruladı. Electron IPC testi
|
||
Windows kasasındaki parmak iziyle sertifikanın pencere yenilemesinden sonra
|
||
yüklenmesini ve sessiz kimlik değişiminin reddini doğruladı. Bu testlerde portal
|
||
ve Google gerçek servisleri kullanılmadı; canlı karşılıklı kimlik kabulü değildir.
|
||
|
||
Gerçek IDE yolunun testi, kök dizinden zorunlu test sarmalayıcısıyla çalışır:
|
||
|
||
```bash
|
||
scripts/run_tests.sh tests/tui_gateway/test_mobile_runtime_integration.py -q
|
||
```
|
||
|
||
Bu test gerçek IDE HTTP, WebSocket, konuşma veritabanı, prompt.submit ve
|
||
message.complete yolunu çalıştırır. Ücretli çıkarım servisi yerine yerel
|
||
deterministik sağlayıcı kullanılır. Aynı görev ikinci defa gönderildiğinde IDE
|
||
geçmişinde yalnız bir kullanıcı görevi oluşur. Gerçek Google/iş modeli kalite
|
||
ve maliyet testi olarak sayılmaz.
|
||
|
||
12 Eylül 2026, 0.1.4 kaynak doğrulaması: zorunlu `scripts/run_tests.sh`
|
||
sarmalayıcısıyla `test_compute_host.py`, `test_compute_host_phase1.py` ve
|
||
`test_mobile_runtime_integration.py` birlikte çalıştırıldı. 3 dosyada 16 test
|
||
geçti, 0 başarısız; süre 32,9 saniye. Windows venv yönlendirici sürecinin
|
||
bildirdiği PID, gerçek süreç soy ağacı üzerinden doğrulanır. Bu koşu yalnız
|
||
yerel sentetik sağlayıcı kullanır, telefon donanımı veya Google kabulü değildir.
|
||
|
||
Henüz tamamlanmayanlar:
|
||
|
||
- Karşılıklı cihaz kimliğinin gerçek Android ve paketlenmiş IDE arasında,
|
||
yeniden başlatma/iptal/anahtar kaybı senaryolarıyla uçtan uca kabulü.
|
||
İki yönün kodu var; tarayıcı ve Electron testleri gerçek cihaz kabulünün
|
||
yerine geçmez. Telefon QR çıktısının pikselden geri okunması ve Electron'da
|
||
QR resminin açık onay vermeden alanlara aktarılması test edildi; gerçek
|
||
telefon ekran görüntüsü aktarımı henüz denenmedi.
|
||
- Fiziksel Android'de kurulum, mikrofon, kesme, Keystore ve arka plan testi.
|
||
- Kullanıcıya ait test anahtarıyla Google Live doğrulaması ve Türkçe konuşma
|
||
senaryoları. Sıfır gerçek Google çağrısı yapıldı; ücret oluştuğu iddia edilmiyor.
|
||
- Canlı gateway/TURN kurulumu, ayrı mobil ve bilgisayar ağlarıyla tam akış.
|
||
- Giriş ve QR artık kodlandı: 9 HTTP/DB testi, 27 mobil testi, gerçek QR pikseli
|
||
okuyan (hesap/claim yanıtları sahte) tarayıcı akışı geçti. Fiziksel Android
|
||
kamera/giriş kabulü ve farklı ağ bağlantısı henüz yapılmadı.
|
||
- Açık talimatla prepare_task/submit_task devri ve görev kimlikli terminal
|
||
olayları kodlandı. 25 Node testi ve üç görevli gerçek yerel IDE bağlantı
|
||
testi geçti. Canlı Google transkript sırası ve Türkçe kalite kabulü henüz yok.
|
||
- Yeniden bağlantı bounded IDE olay tamponunu okuyarak kaçırılan görev
|
||
sonucunu alır. Tampon kaybı/backend yeniden başlaması durumunda sonuç
|
||
bilinmiyor kalabilir; iş otomatik tekrar çalıştırılmaz.
|
||
- Maliyet tahmini/ayarlanabilir oturum sınırı uygulandı: 35 Node testi ve
|
||
derlenmiş uygulamanın gerçek WebRTC, sentetik IDE/Google yanıtlı sınır akışı
|
||
geçti. Gerçek Google faturasına karşı karşılaştırma henüz yapılmadı.
|
||
- Bağımsız güvenlik incelemesi ve sinyalleşme sunucusuna karşı doğrulanmış
|
||
kalıcı eş parmak izi. WebRTC standart şifrelemesi vardır; eş kimliğinin
|
||
sinyalleşme hizmetine güven sınırı gizlenmez.
|
||
- Üretim imzası, kapalı beta kabulü ve turkservis.online indirme yayını.
|
||
|
||
Capacitor CLI'nin kullanılmayan iOS araç zincirinde `xcode → uuid` üzerinden
|
||
3 moderate geliştirme bağımlılığı uyarısı mevcut; Android runtime audit sonucu
|
||
ayrıca kontrol edilir. Bunları gizlemek için `npm audit fix --force` uygulanmadı.
|
||
|
||
## Resmî dayanaklar
|
||
|
||
- https://capacitorjs.com/docs/getting-started/environment-setup
|
||
- https://ai.google.dev/gemini-api/docs/live-api/ephemeral-tokens
|
||
- https://ai.google.dev/api/live
|
||
- https://ai.google.dev/gemini-api/docs/pricing
|
||
- https://github.com/coturn/coturn/blob/master/README.turnserver
|