README.md

YapayZeka Docs Index

Bu klasor, 724 Transfer AI Lab mimarisi ve operasyon surecleri icin ana dokumantasyon kaynagidir.

Hizli Baslangic

  1. 01-mimari-ozeti.md
  1. 06-api-sozlesmesi.md
  1. 04-config-sozlugu.md
  1. 05-operasyon-runbook.md

Dokuman Listesi

  • 00-dokuman-haritasi.md: Hangi durumda hangi dosya okunur.
  • 01-mimari-ozeti.md: Mimari omurga, fazlar, temel kararlar.
  • 02-servis-envanteri.md: Servis rolleri ve bagimliliklar.
  • 03-domain-network.md: Tek subdomain, DNS/SSL/proxy tasarimi.
  • 04-config-sozlugu.md: .env anahtar sozlugu.
  • 05-operasyon-runbook.md: Baslat/durdur, health, incident, rollback.
  • 06-api-sozlesmesi.md: Request/response ve hata sozlesmesi.
  • 07-gecis-plani-cloud-local.md: Cloud -> local gecis plani.
  • 08-troubleshooting-katalogu.md: Yaygin hata kartlari.
  • 09-makine-tasima-checklist.md: Yeni makineye tasima checklist'i.
  • 10-degisim-gecmisi-template.md: Degisiklik kayit sablonu.
  • 11-kabul-kriterleri.md: MVP/Operasyon/Canli kabul kriterleri.
  • 12-terimler-sozlugu.md: Ortak teknik terimler.
  • 13-guvenlik-backlogu.md: Ertelenen guvenlik maddeleri.
  • 14-ilk-kurulum-checklist.md: Day-1 kurulum adimlari.
  • 15-go-live-checklist.md: Canliya cikis Go/No-Go kontrolu.

Surum Notu

  • Docs Version: v1.5-beta
  • Son Guncelleme: 2026-02-22
  • Asama: Faz 1 (Cloud MVP) canli, Faz 1.5 (RAG) planlaniyor.
00-dokuman-haritasi.md

00 - Dokuman Haritasi

Bu dosya, AI Lab icinde dogru dokumana en hizli sekilde ulasmak icin hazirlandi.

Hangi Durumda Hangi Dokuman?

IhtiyacOnce OkuSonra Oku
Sistemi genel anlamak01-mimari-ozeti.md02-servis-envanteri.md, 03-domain-network.md
API entegrasyonu06-api-sozlesmesi.md03-domain-network.md, 11-kabul-kriterleri.md
Config ayarlari04-config-sozlugu.md05-operasyon-runbook.md
Ariza cozum08-troubleshooting-katalogu.md05-operasyon-runbook.md
Cloud -> local gecis07-gecis-plani-cloud-local.md11-kabul-kriterleri.md, 09-makine-tasima-checklist.md

Rol Bazli Okuma

  • Teknik lider: 01 -> 02 -> 03 -> 07 -> 11
  • Entegrasyon: 06 -> 03 -> 04 -> 11
  • Operasyon: 05 -> 08 -> 09 -> 15

Baslangic Paketi

  1. README.md
  1. 01-mimari-ozeti.md
  1. 04-config-sozlugu.md
  1. 05-operasyon-runbook.md
  1. 06-api-sozlesmesi.md

Surum Notlari

  • Docs Version: v1.5-beta
  • Guncellenme: 2026-02-22
  • Ozet: Faz 1 (MVP) canli uzerinde dogrulandi, Streaming (SSE), VAD, UI ve Ses Senkronu eklendi. Guncel dokumanlar RAG (Faz 1.5) asamasina hazirlandi.
01-mimari-ozeti.md

01 - Mimari Ozeti

Amac

724 Transfer icin sesli cagri merkezi asistani kurmak: tek giris noktasi, degistirilebilir STT/TTS/LLM motorlari, asistan arayuzu ve kontrollu handoff.

Temel Kararlar

  • Dis erisim (API): ai.724test.com (Gateway).
  • Dis erisim (UI): asistan.724test.com (Kullanici Arayuzu).
  • Kod yerine config ile engine degisimi.

Yuksek Seviye Akis

Musteri -> Chat UI (asistan.724test.com) -> Gateway (ai.724test.com) -> Orchestrator -> (STT/RAG/LLM/TTS) -> Output (Streaming/Audio)

Katmanlar

  • Chat UI: React/Vanilla web arayuzu. VAD (Sesli Mod), Typewriter ve Audio Queue yonetimi.
  • Gateway: Tek API endpoint, CORS, auth, rate-limit, trace.
  • Orchestrator: Is kurallari, streaming yonetimi, paralel TTS, handoff.
  • STT: Cloud/local speech-to-text (Deepgram).
  • RAG (Bilgi Tabani): Vektor DB destekli sirket/is bilgisi getirme.
  • LLM: Baglamli cevap uretimi (OpenAI).
  • TTS: Text-to-speech cikisi (OpenAI).

Fazlar

  1. Faz 1 (Cloud MVP): STT + LLM + TTS ucu uca cloud motorlariyla hizlica ayaga kaldirildi ve UI baglandi (Tamamlandi).
  1. Faz 1.5 (RAG & Emniyet): 724 Transfer bilgi tabaninin sisteme ogretilmesi (Vektor DB). Sonrasinda Handoff, Troubleshooting ve Rollback testlerinin yapilmasi (Aktif Faz).
  1. Faz 2 (Hybrid/Local): Katmanlari tek tek locale alma (Donanim gerektirir).
  1. Faz 3 (Olgunluk/Islem): Function calling (rezervasyon yapabilme), KPI optimizasyonu, kurumsal operasyon.
02-servis-envanteri.md

02 - Servis Envanteri

ServisZorunluGorevDisa AcikFaz Durumu
Chat UI (Frontend)EvetMusteri ile temas noktasi (asistan.724test.com)EvetFaz 1 (Aktif)
Assistant GatewayEvetTek giris endpoint ve routing (ai.724test.com)EvetFaz 1 (Aktif)
OrchestratorEvetSTT -> RAG -> LLM -> TTS yonetimiHayirFaz 1 (Aktif)
STT AdapterEvetSes -> metin donusumu (Deepgram)HayirFaz 1 (Aktif)
LLM AdapterEvetModel cevap uretimi (OpenAI gpt-4.1-mini)HayirFaz 1 (Aktif)
TTS AdapterEvetMetin -> ses donusumu (OpenAI tts-1)HayirFaz 1 (Aktif)
RAG ServiceEvetBilgi tabani (724 Transfer context'i)HayirFaz 1.5 (Bekliyor)
Metrics/LogsOnerilirGozlemlenebilirlik (Plesk/IIS)HayirFaz 1 (Aktif)
Session StoreOnerilirOturum baglami (Gecici file/memory)HayirFaz 1 (Aktif)

Baslatma Sirasi (Operasyon)

  1. RAG Veritabani (Vektor DB) - *Yakinda eklenecek*
  1. STT/LLM/TTS adapterleri (Cloud oldugu icin pasif servislerdir, Orchestrator cagirir)
  1. Orchestrator (Port 8081 - Task scheduler)
  1. Gateway (Port 8080 - Task scheduler)
  1. IIS Proxy / Web Server (asistan.724test.com statik servis)

Cekirdek Kurallar

  • Ust sistemler (UI) sadece Gateway'i bilir.
  • Provider degisimi adapter seviyesinde kalir.
  • Gateway ve Orchestrator GET /health ile dinlenmelidir.
03-domain-network.md

03 - Domain ve Network

Temel Model

Sistem iki ana domaine ayrilmistir:

  1. API / Gateway: ai.724test.com (Tum dis servislerin ve UI'in istek attigi tek API noktasi)
  1. Kullanici Arayuzu (UI): asistan.724test.com (Musterilerin asistanla konustugu web arayuzu)

DNS ve IIS Stratejisi

  • Her iki domain de A/CNAME kaydi ile ayni VPS'e (91.230.149.125) yonlendirilmistir.
  • asistan.724test.com: IIS uzerinde statik dosya sunucusu olarak ayarlanmistir (Document Root: ui/).
  • ai.724test.com: IIS uzerinde Reverse Proxy olarak Gateway portuna (127.0.0.1:8080) yonlendirilmistir.

CORS (Cross-Origin Resource Sharing)

  • Güvenlik ve fonksiyonellik gereği, Gateway (ai.724test.com) sadece yetkili originlerden gelen isteklere yanit verir.
  • Mevcut izinli originler (CORS Allow Origins):
  • https://asistan.724test.com
  • http://localhost:* (Gelistirme)
  • Preflight (OPTIONS) istekleri Gateway tarafindan yakalanir ve basariyla donulur.

SSL/TLS

  • HTTPS zorunludur. IIS/Plesk uzerinden Let's Encrypt ile her iki domain guvence altindadir.

Reverse Proxy Beklentileri

  • SSE (Server-Sent Events) icin HTTP buffer/timeout degerleri uzun tutulmalidir (/chat/stream uzun sure acik kalir).
  • Buyuk audio payload'lari icin request body limiti genisletilmistir.

Operasyonel Kontroller

  • API: GET https://ai.724test.com/health
  • UI: GET https://asistan.724test.com
04-config-sozlugu.md

04 - Config Sozlugu

Genel Cevre (Environment) Ayarlari (.env)

KeyOrnekAciklama
APP_ENVdevelopmentCalisma ortami
APP_HOST0.0.0.0Gateway/Orchestrator Bind host
LOG_LEVELinfoUygulama log seviyesi
PUBLIC_BASE_URLhttps://ai.724test.comGateway API dis erisim adresi

system-config.json (IIS, UI ve Domain)

KeyOrnekAciklama
domains.development.aiai.724test.comGateway API subdomain
domains.development.asistanasistan.724test.comChat UI subdomain
paths.vps_project_aiD:\DynamicDatas\...VPS AI root klasoru
iis.document_roots.aiD:\DynamicDatas\...IIS Gateway proxy mapping adresi
iis.document_roots.asistanD:\DynamicDatas\...\uiIIS Chat UI statik index.html klasoru
ai.services.gateway.port8080Gateway ic portu
ai.services.orchestrator.port8081Orchestrator ic portu

Orchestrator ve Akis (Workflow) Ayarlari

KeyOrnekAciklama
REQUEST_TIMEOUT_MS30000Toplam islem timeout suresi
SESSION_TTL_MIN30Ayni kullaniciyla gecmis muhabbeti (context) animsama suresi
HANDOFF_ENABLEDtrueDevir (insana aktarim) mekanizmasinin acik/kapali durumu

Motor (Engine) Secimleri (Faz 1 / Faz 2)

KeyOrnekSecenekler
ACTIVE_STT_ENGINEdeepgramdeepgram, whisper_local
ACTIVE_LLM_ENGINEopenaiopenai, local_lmstudio, anthropic
ACTIVE_TTS_ENGINEopenai_ttsopenai_tts, chatterbox_local
ACTIVE_RAG_ENGINEchromadbchromadb, pinecone

RAG Ayarlari (Faz 1.5)

KeyOrnekAciklama
RAG_ENABLEDfalseRAG katmanini ac/kapat (guvenli gecis icin varsayilan kapali)
RAG_COLLECTION_NAMErag_724ChromaDB collection adi
RAG_CHROMA_PERSIST_DIR./data/chromadbChromaDB kalici veri klasoru
RAG_TOP_K5Retrieve edilecek maksimum baglam parcasi
OPENAI_EMBEDDING_MODELtext-embedding-3-smallEmbedding modeli (RAG index/retrieve)

UI Tarafina Giden Sabitler (index.html ici)

KeyDegerAciklama
TYPEWRITER_SPEED71ms cinsinden karakter basilma hizi
BUFFER_TIME2000ms cinsinden sese baslamadan onceki tampon (bekleme) suresi
VAD_MIN_SILENCE1800ms cinsinden susma beklentisi
VAD_THRESHOLD0.025Ses siddet (volume) esigi

API Auth ve Guvenlik

KeyOrnekAciklama
API_AUTH_ENABLEDtrueGateway auth zorunlulugu
RATE_LIMIT_RPM120Dakika basina Gateway request limiti
CORS_ORIGINSasistan.724test.comGateway'e baglanabilecek guvenli domainler

> Not: Deepgram ve OpenAI gibi gercek API Key'ler SADECE .env icinde yasar, asla Git'e commitlenmez veya system-config icine plaintext yazilmaz.

05-operasyon-runbook.md

05 - Operasyon Runbook

Preflight

  • Domain/DNS/SSL dogrula
  • Config keyleri eksiksiz mi kontrol et
  • Servis bagimliliklari hazir mi bak
  • development/YapayZeka/docs/16-ai-script-standardi.md uyumu kontrol et

Baslatma Sirasi

  1. scripts/Install-AI-Prereqs.ps1
  1. scripts/Start-AI-Services.ps1
  1. scripts/Test-AI-Endpoints.ps1

Durdurma Sirasi

  1. Gateway
  1. Orchestrator
  1. Adapterler
  1. RAG
  1. Session store

Dogrulama

  • /health ve /ready yesil
  • Text E2E test basarili
  • Audio E2E test basarili
  • Handoff senaryosu basarili

Bu Oturumda Dogrulananlar

  • https://ai.724test.com/health -> {"status":"ok"}
  • https://ai.724test.com/chat (text) -> status: ok, provider: openai, Turkce cevap
  • https://ai.724test.com/chat (audio) -> status: ok, Deepgram STT basarili, LLM cevap dondu
  • https://ai.724test.com/chat (return_audio:true) -> status: ok, mp3 audio donuyor
  • Orchestrator ve gateway portlari acik (8081, 8080)

Faz 1 Operasyonel Minimum - Final Dogrulama (RAG Haric)

  • API auth aktif: API_AUTH_ENABLED=true, token yok 401, token var 200, token temizle tekrar 401.
  • Rate limit kaniti: 140 istek testinde 120 adet 200, son 20 adet 429 (ilk 429 = 121. istek).
  • CORS kaniti: izinli origin (https://asistan.724test.com) preflight 200 + Access-Control-Allow-Origin var; izinsiz origin 400.
  • PII mask kaniti: provider error cevabinda upstream_body=(masked) goruldu (MASK_PII_LOGS=true).
  • Handoff kaniti: operator talebinde handoff.required=true, reason=user_requested_handoff, queue=callcenter.
  • Rollback smoke kaniti: auth true -> false -> true cevriminde sirasiyla token'siz 200 ve geri donuste token'siz 401/token'li 200 dogrulandi.

Incident Akisi

  1. Belirtiyi dogrula
  1. Etkilenen katmani bul
  1. Mitigation uygula (fallback/text-only)
  1. Kök sebep analizi
  1. Kalici duzeltme

Rollback

  • Son iyi config'e don
  • Servisleri restart et
  • Smoke testleri tekrarla
06-api-sozlesmesi.md

06 - API Sozlesmesi (MVP)

Ana Endpoint'ler

  • POST /chat (Standart tam yanit)
  • POST /chat/stream (SSE tabanli token ve audio akisi)
  • Authorization: Bearer <token>
  • Content-Type: application/json

Request (Ozet)




{


  "api_version": "v1",


  "trace_id": "uuid",


  "session_id": "sess_001",


  "tenant_id": "724transfer",


  "channel": "callcenter",


  "language": "tr",


  "input": {


    "type": "audio",


    "text": null,


    "audio_base64": "BASE64...",


    "audio_format": "webm" // wav, mp3, webm desteklenir


  },


  "response_preferences": {


    "return_text": true,


    "return_audio": true


  }


}


Success Response (/chat)




{


  "request_id": "uuid",


  "api_version": "v1",


  "session_id": "sess_001",


  "provider": "openai",


  "status": "ok",


  "output": {


    "text": "Merhaba, nasil yardimci olabilirim?",


    "audio_base64": "...", // mp3 base64


    "audio_format": "mp3"


  },


  "handoff": {


    "required": false


  }


}


Streaming Response (/chat/stream - SSE)

Mime Type: text/event-stream




data: {"type": "token", "content": "Mer"}


data: {"type": "token", "content": "haba"}


data: {"type": "audio_chunk", "content": "BASE64...", "index": 0}


data: {"type": "done"}


Error Response




{


  "request_id": "uuid",


  "status": "error",


  "error": {


    "code": "ORCHESTRATOR_UNAVAILABLE",


    "message": "Connection error..."


  }


}


Notlar

  • Chat UI (asistan.724test.com) uzerinden POST /chat/stream agirlikli kullanilmaktadir.
  • Typewriter efekti ve audio senkronizasyonu icin SSE ciktilari client tarafinda kuyruga alinir.
  • Handoff response semasi simdilik statik donmektedir, Faz 1.5 sonrasi aktiflesecektir.
07-gecis-plani-cloud-local.md

07 - Gecis Plani (Cloud -> Local)

Hedef

Dis endpoint sabit kalirken STT/TTS/LLM katmanlarini cloud'dan locale tasimak.

Fazlar

  1. Cloud stabilizasyon ve baseline olcumu
  1. Hibrit gecis (LLM -> STT -> TTS sirasiyla)
  1. Full local + cloud fallback

Baseline Metrikleri

  • Toplam latency
  • STT/LLM/TTS latency
  • 5xx hata orani
  • Handoff dogrulugu

Canary Ornegi

  • %5 -> %20 -> %50 -> %100 trafik
  • Her asamada KPI kontrolu

Rollback Kurali

  • KPI bozulursa aninda onceki cloud engine'e don
  • Restart + smoke test + incident kaydi
08-troubleshooting-katalogu.md

08 - Troubleshooting Katalogu (Gercek Vakalara Dayali)

Hata Siniflari

  • GW-*: Gateway ve CORS
  • NET-*: DNS/SSL/Network
  • API-*: Dis Servisler (OpenAI, Deepgram)
  • UI-*: Asistan Arayuzu (Typewriter, VAD, Ses)
  • RAG-*: Bilgi Getirme (Faz 1.5 sonrasi)

Gerceklesen Olay Kartlari (Faz 1)

API-001 OpenAI 403 Forbidden (Tier Limiti)

  • Belirti: POST /chat istekleri sirasinda LLM kisminda "provider_error" aliniyor. Console'da status code: 403.
  • Sebep: OpenAI Tier 1 projelerinde bazi modellere (gpt-4o-mini) erisim kapali veya yetersiz kredi var.
  • Cozum: OpenAI platformundan hesaba min. $10 yukleme yapildi, "Individual Verification" tamamlaniyor ve model gpt-4.1-mini olarak degistirildi.
  • Gelecek Onlem: Token/kredi tuketimi ve error rate alarm esikleri eklendi.

GW-001 CORS Policy Bloklanmasi

  • Belirti: Browser uzerinden UI acildiginda "Blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present" hatasi.
  • Sebep: Gateway FastAPI tarafinda allow_origins listesinde asistan.724test.com'un bulunmamasi.
  • Cozum: main.py icindeki CORS middleware'ine origin eklendi ve IIS uzerinde OPTIONS preflight gonderimine izin verildi.

GW-002 API Auth Sonrasi 401 (UI Token Yok)

  • Belirti: asistan.724test.com uzerinden mesaj gonderiminde 401 hatasi.
  • Sebep: API_AUTH_ENABLED=true iken UI tarafinda ai_api_token girilmemis veya gecersiz.
  • Cozum: UI'daki kilit ikonundan token girilir (Bearer <token> veya raw token). Dogru token ile istekler 200 doner.

GW-003 Rate Limit 429 (Beklenen Koruma)

  • Belirti: Kisa surede coklu isteklerde 429 Too many requests.
  • Sebep: Gateway RATE_LIMIT_RPM=120 limiti doldugunda /chat ve /chat/stream istekleri kisitlanir.
  • Cozum: Istek hizini dusur, retry politikasina geri don. Operasyonel kanit: 140 istekte 120x200 + 20x429.

GW-004 PII Mask Dogrulamasi

  • Belirti: Upstream provider hatalarinda detay gormeme.
  • Sebep: MASK_PII_LOGS=true oldugunda upstream body gizlenir.
  • Cozum: Beklenen davranis budur; hata mesajinda upstream_body=(masked) gorunur.

OPS-001 Rollback Smoke (Auth Toggle)

  • Belirti: Guvenli geri donus prosedurunun canlida test edilmesi ihtiyaci.
  • Sebep: Operasyonel minimum kabul kriterinde rollback smoke zorunlu.
  • Cozum: API_AUTH_ENABLED true->false->true cevrimi + task restart + smoke dogrulama:
  • auth off: token'siz 200
  • auth on: token'siz 401, token'li 200

UI-001 VAD (Sesli Mod) Susmama / Erken Kesme

  • Belirti: Kullanici konusurken sistem aniden sesi kesip cevap veriyor veya konusma bitse de asistan dinlemeye devam ediyor.
  • Sebep: VAD algoritmasindaki min_silence_duration (sessizlik bekleme suresi) ve volume_threshold (ses siddeti esigi) degerlerinin ortam gurultusune uymamasi.
  • Cozum: UI uzerindeki ayarlardan minSilence 1800ms'ye ve volumeThreshold 0.025'e cekildi. Gelecekte ortama gore otomatik kalibrasyon (AGC) dusunulebilir.

UI-002 Audio Chunking (Ses Senkron Kaymasi)

  • Belirti: Ses hizli caliyor ama yazilar (typewriter) geriden geliyor veya seste "takilma/kekeleme" oluyor.
  • Sebep: Orchestrator tarafinda cumlelerin (.!?) parcalara bolunme hizi ile UI'daki typewriter hizinin (71ms) uyusmamasi.
  • Cozum: UI icinde "Audio Queue" ve 2 saniyelik "Tampon" surekli baslatma (buffered start) mantigi entegre edildi.

STT-001 Deepgram Timeout veya Yanlis Dilde Anlama

  • Belirti: Ses metne donmuyor veya kisa "evet/hayir" gibi kelimeler baska bir dile (orn: Romence) cevriliyor.
  • Sebep: Deepgram'in detect_language ozelliginin kisa kelimelerde yanilmasi.
  • Cozum: Deepgram isteklerine language=tr sabit parametresi eklendi.

Genel Severity Tanimi

  • P1 (Kritik): Gateway down, UI acilmiyor, CORS kapali, OpenAI kotalari bitmis (Surekli 5xx). (Mudahale: Aninda)
  • P2 (Orta): STT yavas, VAD sapitiyor, LLM cevaplari gec geliyor. (Mudahale: Ayni gun icinde)
  • P3 (Dusuk): Loglama eksikligi, nadir kekeleme hatalari. (Mudahale: Sprint backlog)
09-makine-tasima-checklist.md

09 - Makine Tasima Checklist

On Kosullar

  • [ ] Yeni makine donanim/OS hazir
  • [ ] Runtime surumleri hazir
  • [ ] Domain ve DNS erisimi hazir
  • [ ] Secret yukleme yontemi hazir

Tasinacaklar

  • [ ] YapayZeka kodu
  • [ ] docs klasoru
  • [ ] Model dosyalari
  • [ ] RAG kaynaklari
  • [ ] Config sablonlari

Yeni Makine Kurulum

  • [ ] Dizin yapisi olustur
  • [ ] Bagimliliklari kur
  • [ ] Config doldur
  • [ ] Servisleri baslat
  • [ ] Health + E2E test yap

Cutover

  • [ ] DNS/proxy yeni makineye al
  • [ ] Ilk 60 dk yakin izle
  • [ ] KPI uygunsa kalici gecis

Rollback

  • [ ] Eski hedef bilgisi hazir
  • [ ] Geri donus adimlari testli
  • [ ] Son iyi config snapshot var
10-degisim-gecmisi-template.md

10 - Degisim Gecmisi Template

Kayit Formati

  • Degisiklik ID: AI-CHG-YYYYMMDD-XXX
  • Tarih/Saat:
  • Yapan:
  • Ortam:
  • Kategori:
  • Ozet:
  • Gerekce:
  • Etkilenen Bilesenler:
  • Config Degisiklikleri:
  • Risk Seviyesi: Dusuk/Orta/Yuksek
  • Breaking Change: Evet/Hayir
  • Test Sonucu:
  • Rollback Adimi:
  • Onay:

Ornek

  • Degisiklik ID: AI-CHG-20260220-001
  • Ozet: Handoff response alanlarina reason eklendi.
  • Risk: Orta
  • Rollback: HANDOFF_REASON_ENABLED=false + restart
11-kabul-kriterleri.md

11 - Kabul Kriterleri

Faz 1: Cloud MVP (Tamamlandi ✅)

  • [x] Tek subdomain erisimi calisiyor (ai.724test.com)
  • [x] Kullanici arayuzu erisimi calisiyor (asistan.724test.com)
  • [x] /chat/stream SSE akisi calisiyor
  • [x] Text E2E basarili (UI -> Gateway -> Orchestrator -> LLM)
  • [x] Audio E2E basarili (Deepgram STT + OpenAI LLM + OpenAI TTS)
  • [x] UI ses senkronizasyonu ve VAD (mikrofon dinleme) aktif

Faz 1: Operasyonel Minimum (Tamamlandi ✅)

  • [x] API auth aktif (Bearer token zorunlu)
  • [x] UI auth akisi tamamlandi (asistan.724test.com token giris/temizleme, 401 uyarisi, yeniden deneme UX)
  • Done Kriteri:

1) Token yok -> POST /chat / POST /chat/stream = 401

2) Gecerli token var -> ayni endpointler = 200

3) Token temizle -> tekrar 401

  • [x] Rate limit aktif (anti-abuse)
  • [x] CORS policy aktif (sadece izinli origin'ler)
  • [x] PII maskeleme aktif (loglarda)
  • [x] Runbook guncel (baslat/durdur, incident akisi)
  • [x] Troubleshooting guncel (gercek hata kartlari + cozum)
  • [x] Rollback proseduru yazildi ve gercek hayatta test edildi (service rollback smoke)
  • [x] Handoff (Operatore aktarim) senaryosu test edildi (bilinmeyen/riski durumlarda devir)

Faz 1.5: RAG ve Emniyet (Aktif ⏳)

  • [x] Vektor DB (ChromaDB vb.) secilip kuruldu
  • [ ] 724 Transfer sirket politikalari ve fiyat tablolari sisteme eklendi
  • [ ] Orchestrator'a RAG (bilgi bulma) sorgu katmani entegre edildi
  • [ ] UI'dan 724 Transfer ile ilgili gelen sorulara dogru yanit verildi (RAG smoke test)

Faz 1.5 Sonrasi: Operasyonel Kabul (RAG Sonrasi)

  • [ ] Runbook tekrar guncellendi (RAG akisi eklendi)
  • [ ] Troubleshooting tekrar guncellendi (RAG hata kartlari eklendi)
  • [ ] Rollback proseduru tekrar test edildi (RAG dahil)
  • [ ] Handoff senaryosu tekrar test edildi (RAG baglaminda)

Faz 2: Hybrid/Local (Gelecek)

  • [ ] Cloud API'den local modellere gecis (LM Studio/Ollama)
  • [ ] p95 latency hedefte
  • [ ] 5xx orani esik altinda
  • [ ] STT/TTS kalite kabulde
  • [ ] 24-72 saat stabil calisma dogrulandi

Go/No-Go Karari

  • [ ] Go (Final)
  • [ ] No-Go
  • [x] Faz 1 MVP Go (asistan.724test.com canlida deneme kullanimina acik)
12-terimler-sozlugu.md

12 - Terimler Sozlugu

  • Gateway: Dis sistemlerin ve UI'in (asistan.724test.com) tek endpoint (ai.724test.com) ile baglandigi giris katmani (FastAPI).
  • Orchestrator: STT -> RAG -> LLM -> TTS akisini, paralel thread'leri ve audio chunk'lamayi yoneten arka plan yoneticisi.
  • STT (Speech-to-Text): Sesi metne donusturme (Su an: Deepgram nova-3).
  • TTS (Text-to-Speech): Metni sese donusturme (Su an: OpenAI tts-1).
  • RAG (Retrieval Augmented Generation): LLM'e cevap uretmeden once sirketin (724 Transfer) vektor veritabanindaki bilgilerini bulup yedirme islemi.
  • SSE (Server-Sent Events): LLM'den gelen kelimelerin (token) ve uretilen ses parcalarinin (audio_chunk) tek bir HTTP baglantisi uzerinden canli/akim halinde UI'a gonderilmesi. (/chat/stream)
  • VAD (Voice Activity Detection): Mikrofonu surekli dinleyerek insanin ne zaman konustugunu ve ne zaman sustugunu algilayan tarayici ici (browser-based) sesli mod teknolojisi.
  • Typewriter: Gelen metinlerin ekranda tipki daktiloda yazar gibi harf harf gozukmesi efekti. (Faz 1'de ses akisi ile hiz senkronizasyonu yapildi: 71ms).
  • Audio Queue: Orchestrator'dan gelen farkli mp3/webm ses parcalarinin UI'da kuyruga girip sirayla, araliksiz calinmasini saglayan mekanizma.
  • Handoff: Konusmanin asistanin yetkisini asmasi durumunda (orn: iptal onayi) canli temsilciye (operatore) devredilmesi.
  • Trace ID: Istegin uctan uca loglarda izlenmesi icin kullanilan essiz kimlik (UUID).
  • Session ID: Ayni musterinin gecmis konustuklarini hatirlamasini saglayan konusma baglam kimligi.
  • Fallback: Ana servis hatasinda (OpenAI cokerse) yedek servise (Local modele) gecis yapilmasi.
  • Rollback: Yeni bir guncelleme sonrasi sistem bozulursa en son "iyi calisan" surume saniyeler icinde geri donus yapilmasi.
13-guvenlik-backlogu.md

13 - Guvenlik Backlogu

P0 (Canli Oncesi)

  • [ ] Secret'lari plaintext config'den cikar (secret store).
  • [ ] WinRM/DB/Plesk credential rotation.
  • [x] API auth zorunlu.
  • [ ] HTTPS/TLS zorunlu.

P1 (Yuksek)

  • [x] Rate limit + anti-abuse.
  • [ ] IP allowlist.
  • [x] CORS sertlestirme.
  • [x] PII log maskeleme.

P2 (Orta)

  • [ ] Audit log standardi.
  • [ ] Dependency/security scan pipeline.
  • [ ] Least-privilege servis hesaplari.

P3 (Ileri)

  • [ ] mTLS veya gelismis servis auth.
  • [ ] WAF/bot koruma.
  • [ ] Security incident runbook tatbikati.
14-ilk-kurulum-checklist.md

14 - Ilk Kurulum Checklist (Day-1)

Not: Bu checklist "ilk kurulum + ilk smoke test" icindir. Faz 1 kapsamindaki

"Operasyonel Minimum" maddelerinin kanonik listesi icin:

development/YapayZeka/docs/11-kabul-kriterleri.md dosyasina bak.

Hazirlik

  • [x] development/YapayZeka/docs yapisi hazir
  • [x] Domain stratejisi net (tek subdomain: ai.724test.com)
  • [x] Runtime bagimliliklari kurulu (Python 3.11 + venv + pip deps)

Dizin ve Config

  • [x] Servis klasorleri olusturuldu (gateway + orchestrator)
  • [x] .env dolduruldu (OpenAI + Deepgram keyleri aktif)
  • [x] Engine secimleri yapildi (LLM: openai, STT: deepgram, TTS: openai_tts)

Baslatma

  • [x] Servisler dogru sirayla ayaga kalkti (scheduled task ile)
  • [x] health ve ready yesil

Smoke Test

  • [x] Text -> text (2026-02-21 dogrulandi)
  • [x] Audio -> STT -> LLM -> TTS (2026-02-21 dogrulandi, Deepgram nova-3 basarili)
  • [x] Handoff senaryosu (Faz 1 Operasyonel Minimum icinde; test edildi)

Day-1 Kabul

  • [x] Faz 1 Operasyonel Minimum checklist tamamlandi (bkz. 11-kabul-kriterleri.md)
  • [x] Dokumanlar guncel (runbook + troubleshooting) ve en az 1 rollback smoke yapildi
15-go-live-checklist.md

15 - Go-Live Checklist

Not: Bu dosya "canliya cikis sureci" icin checklist'tir. Faz kapsamindaki kabul kriterleri ve

"Faz 1: Operasyonel Minimum" maddelerinin kanonik listesi icin:

development/YapayZeka/docs/11-kabul-kriterleri.md dosyasina bak.

Go/No-Go

  • [ ] Go
  • [ ] No-Go
  • [ ] Conditional Go

Canli Oncesi

  • [x] Domain + SSL dogru
  • [x] Health/Ready endpoint'leri yesil
  • [x] API sozlesmesi uyumlu
  • [ ] KPI esikleri kabulde

Guvenlik Minimum (Faz 1 Operasyonel Minimum)

  • [x] 11-kabul-kriterleri.md -> "Faz 1: Operasyonel Minimum" bolumu tamamlandi
  • [x] UI auth akisi dogrulandi (token giris/temizleme + 401 davranisi)
  • Dogrulama adimlari:

1) Token yok -> 401

2) Gecerli token -> 200

3) Token temizle -> 401

Operasyon Hazirligi (Faz 1 Operasyonel Minimum)

  • [x] 11-kabul-kriterleri.md -> "Faz 1: Operasyonel Minimum" bolumu tamamlandi

Ilk 60 Dakika Izleme

  • [ ] Hata orani normal
  • [ ] Latency stabil
  • [ ] Kritik incident yok
16-ai-script-standardi.md

16 - AI Script Standardi (Config-Driven Zorunlulugu)

Bu dokuman, development/infra-klon724/scripts/ai altinda yazilan tum scriptler icin zorunlu standartlari tanimlar.

1) Temel Ilke

  • Tum scriptler config-driven calisir.
  • Hardcoded path, domain, port, token, endpoint, username, password kullanimi yasaktir.
  • Scriptler sadece su kaynaklardan deger okur:
  • config/system-config.json
  • development/YapayZeka/.env (servis runtime degerleri)

2) Zorunlu Config Kaynaklari

  • Ana config dosyasi: config/system-config.json
  • AI ile ilgili beklenen anahtarlar:
  • domains.development.ai
  • paths.project_ai
  • paths.vps_project_ai
  • iis.document_roots.ai
  • vps.* (winrm baglantisi gereken scriptlerde)

3) Script Konum Kurali

  • AI icin yazilan tum scriptler sadece su klasorde olur:
  • development/infra-klon724/scripts/ai
  • Ana scripts/ klasorune AI-ozel script eklenmez.

4) Naming Standardi

  • Dosya adi formati: Verb-AISubject.ps1
  • Ornekler:
  • Install-AI-Prereqs.ps1
  • Start-AI-Services.ps1
  • Test-AI-Endpoints.ps1

5) Path Cozme Kurali

  • Scriptler kendi konumunu $PSScriptRoot ile bulur.
  • Proje koku ve config yolu script icinde goreli turetilir.
  • Remote oturumlarda null path riskine karsi fail-fast kontrolu zorunludur.

6) Fail-Fast ve Validation

  • Script basinda zorunlu anahtarlar dogrulanir; eksikse durur.
  • Hata durumunda acik mesaj verilir:
  • Hangi key eksik?
  • Hangi dosya okunamadi?
  • Hangi path bulunamadi?
  • Sessiz fallback yasak (beklenmeyen default deger vermek yasak).

7) Idempotency (Tekrar Calistirilabilirlik)

  • Script ayni ortamda tekrar calistiginda kirilmamali.
  • Var olan task/klasor/dosya icin guvenli kontrol uygulanmali.
  • Guncelleme islemleri -Force ile kontrollu ama hedefli yapilmali.

8) Guvenlik Kurallari

  • Kimlik bilgileri script icinde tutulmaz.
  • Secret degerler config/env disinda yazilmaz.
  • Loglarda hassas veri maskelenir (MASK_PII_LOGS ilkesine uyum).

9) Cikis ve Raporlama Formati

  • Her script sonunda asgari durum ozeti verir:
  • Hangi adimlar basarili?
  • Hangi servis/port aktif?
  • Bir sonraki adim nedir?

10) Uygulama Kapisi (Definition of Done)

Bir AI scripti asagidakiler saglanmadan "tamam" sayilmaz:

  • Config disi hardcoded deger yok
  • Zorunlu key validasyonlari var
  • Remote oturumda calisiyor
  • Tekrar calistirmada kirilmiyor
  • Cikti raporu acik ve okunur
18-bilgi-tabani-envanteri.md

18 - Bilgi Tabani Envanteri (RAG Faz 1.5)

Bu dokuman, 724transfer RAG (Retrieval Augmented Generation) altyapisi icin EMDS_PORTAL SQL veritabanindan cekilecek veri kaynaklarini (tablolari) tanimlar.

1. Mimari Prensipler

  • Multi-Tenant Guvenligi: Veritabanindaki tum SQL RAG sorgularinda, baska firmalarin verilerini cekmemek icin WHERE PORTALID = 64 (veya TENANTID=64) filtresi kesinlikle KULLANILACAKTIR. RAG'in en kritik emniyet kurali budur.
  • RAG modulu (Orchestrator altinda), bu SQL veritabanina read-only (ai_reader) ile baglanip onbellegini guncelleyecek veya Vektor veritabanini (ChromaDB vb.) dolduracaktir.

2. Ana Veri Kaynaklari (Hedef Tablolar)

SQL server analizinde "Transfer" domainine ait tespit edilen ve AI'in okumasi gereken ana tablolar sunlardir:

A) Arac Tipleri ve Kapasiteleri (Vehicle)

AI'in hangi aracin kac kisi aldigini ve ozelliklerini ogrenecegi tablolar:

  • TRANSFER_VEHICLE_TYPE: Arac tipleri (Vito, Sprinter vb.), min/max yolcu ve bagaj kapasitesi.
  • TRANSFER_VEHICLE_TYPE_PRICING: Arac bazli km/kisi basina baz fiyat formulleri.
  • HOTEL_TRANSFER_VEHICLE: Ozel veya otele tahsis edilmis arac listeleri (Sofor detaylari icerebilir).

B) Lokasyonlar ve Bolgeler (Locations)

"Nereden Nereye" sorusunu anlamak icin ogretilecek bolge listesi:

  • TRANSFER_AREA: Transfer bolgeleri (havalimanlari, sehir merkezleri).
  • TRANSFER_AREA_LOCATION: Bolgelerin icindeki alt lokasyonlar (ornek: Antalya bolgesi altinda Lara, Belek vs.).
  • HOTEL_TRANSFER_LOCATION: Otel ve transfer merkezlerinin koordinat/isim haritasi.

C) Fiyatlar ve Promosyonlar (Pricing)

Rezervasyon maliyetlerini hesaplamak icin incelenecek fiyat kosullari:

  • PORTAL_OFFER_TRANSFER: Onceden hesaplanmis paket transfer teklifleri (Fiyat, km, seyahat suresi, ucretsiz bagaj vs.).
  • TRANSFER_PRICEGROUP / TRANSFER_PRICEGROUP_DATES: Sezona (tarihe) gore degisen ozel fiyat gruplari.
  • TRANSFER_PROMOTION: AI'in indirimleri anlayabilecegi aktif promosyonlar tablosu.

D) Gecmis ve Guncel Transferler (Reservations)

Kullanici "Benim rezervasyonum ne oldu?" veya "Aracim nerede?" diye sordugunda bakilacak tablolar:

  • TRANSFER_RESERVATION: Musteri adi, ucus numarasi, alis/varis noktasi ve saatleri.
  • HOTEL_TRANSFER: Gerceklesen transfer operasyonlari (Sofor adi, plaka, operasyon saati).

3. RAG Entegrasyon Plani

  1. Statik RAG (Vektor DB): TRANSFER_VEHICLE_TYPE, SSS (Politikalar) gibi degismeyen bilgiler Vektor DB'ye gocecek.
  1. Dinamik RAG (SQL Tools/Function Calling): Asistan fiyat veya rezervasyon durumu sordugunda, dogrudan bu tablolara (ai_reader ile) SQL SELECT atacagiz. Asla Vektor DB'de fiyat tutulmayacak (Anlik dogruluk icin).
99-session-handover-2026-02-22-v2.md

Session Handover - 2026-02-22 v2

1) Nerede Kaldik (Ozet)

  • Faz 1 (Cloud) TAMAMLANDI. STT + LLM Streaming + TTS + Chat UI ucu uca calisiyor.
  • Faz 1.5 (RAG & Emniyet) planlamasi ve on-analizi YAPILDI. Kodlama baslamadi.
  • Docs klasoru (9 dosya) guncellendi: Faz 1.5 kavrami eklendi, Streaming/VAD/UI dokumante edildi.
  • Eski 724transfer.com sisteminin altyapisi (Linux + SQL) analiz edildi.
  • Klonlama karari alindi: Canli sisteme dokunmadan, yeni bir VPS uzerine birebir kopyalayip orada calisacagiz.
  • Klonlama oncesi rontgen (feasibility) TAMAMLANDI. Sonuc: KLONLANABILIR.

2) Bu Oturumda (Oturum #33) Tamamlananlar

A) Docs Guncellemeleri (9 Dosya)

Asagidaki docs dosyalari, Faz 1 tamamlanmis gercekligine ve Faz 1.5 (RAG) hedefine uygun olarak guncellendi:

  • 01-mimari-ozeti.md — Chat UI katmani ve Faz 1.5 eklendi.
  • 02-servis-envanteri.md — UI envantere eklendi, RAG "Faz 1.5 Bekliyor" olarak isaretlendi.
  • 03-domain-network.mdasistan.724test.com ve CORS politikasi dokumante edildi.
  • 04-config-sozlugu.md — UI parametreleri (Typewriter, VAD, Buffer) ve RAG engine taslagi eklendi.
  • 06-api-sozlesmesi.md/chat/stream (SSE), audio chunking ve webm destegi eklendi.
  • 08-troubleshooting-katalogu.md — Gercek hatalar (OpenAI 403, CORS, VAD, Audio senkron) eklendi.
  • 11-kabul-kriterleri.md — Faz 1 (Tamamlandi), Faz 1.5 (RAG), Faz 1.5 Sonrasi (Handoff/Rollback) olarak 3 bloga bolundu.
  • 12-terimler-sozlugu.md — SSE, VAD, Typewriter, Audio Queue kavramlari eklendi.
  • 00-dokuman-haritasi.md ve README.md — Surum v1.5-beta, tarih 2026-02-22.

B) Yeni Olusturulan Dosyalar

  • config/legacy-servers.json — Eski sistemin Linux SSH ve Windows SQL erisim bilgileri. Git'e gitmemesi icin .gitignore guncellendi.
  • config/linux-users-audit.md — Linux sunucusundaki kullanici ve yetki analiz raporu.
  • development/YapayZeka/docs/18-bilgi-tabani-envanteri.md — RAG icin SQL veritabani tablo haritasi (Transfer, Vehicle, Location, Pricing tablolari).

C) Linux Sunucu Analizi (91.230.149.105)

  • oku adinda read-only SSH kullanicisi VMware konsolundan olusturuldu (sifre: READ724TRANSFER).
  • SSH ile basarili baglanti dogrulandi (oku kullanicisiyla).
  • Kullanici audit tamamlandi: Sistemde root, ubuntu ve oku disinda kullanici YOK.
  • Root SSH girisi acildi (PermitRootLogin yes) ve root sifresi degistirildi (READ724TRANSFER).
  • Root SSH ile basarili baglanti dogrulandi.

D) MicroK8s (Kubernetes) Rontgeni — KRiTiK BULGULAR

Root yetkisiyle yapilan derin analiz sonuclari:

Namespace: elektraweb

Toplam Pod: 14 adet (tumu Running durumunda)

Calisan Servisler:

  • nodejs-http — Ana web API sunucusu
  • portalv4 — Portal frontend/backend
  • angus — Muhtemelen ERP/muhasebe modulu
  • nodejs-worker-elektraweb (x3 replika) — Arka plan islemleri
  • file-uploader — Dosya yukleme servisi
  • rabbitmq — Mesaj kuyrugu (AMQP)
  • redis — Onbellek ve oturum yonetimi
  • reportingcore — Raporlama motoru
  • einvoice-integrator — E-fatura entegrasyonu
  • cert-manager — SSL sertifika yonetimi
  • nginx-ingress-controller — Dis trafik yonlendirici

Imaj Kaynaklari (Docker Images):

Tum imajlar ghcr.io/travelaps/ (GitHub Container Registry, OZEL/GIZLI DEPO) adresinden geliyor:

  • ghcr.io/travelaps/nodejs-http:v28-beta
  • ghcr.io/travelaps/portal:v1-724
  • ghcr.io/travelaps/angus:v1131
  • ghcr.io/travelaps/nodejs-worker:v571
  • ghcr.io/travelaps/file-uploader:v13
  • ghcr.io/travelaps/reportingfull:v5644
  • ghcr.io/travelaps/erp-efatura-services:v82
  • rabbitmq:3-management (Public)
  • redis (Public)

Gizli Depo Anahtari: regcred (kubernetes.io/dockerconfigjson) — Bu anahtar mevcut ve kopyalanabilir. Yeni sunucuda da ayni gizli depodan imajlari cekebiliriz.

Secrets (Sifreler):

  • worker-portal-config — Icinde EMDS_PORTAL veritabani baglanti bilgileri var:
  • Server: 10.20.2.238 (ic IP)
  • User: prod
  • Password: cZkNK0EwUYhdYsKGIKIpHJu
  • Database: EMDS_PORTAL
  • Framework DB: ANGUS_WEBPORTAL
  • Tenant Kolonu: PORTALID
  • Tenant Tablosu: VW_PORTAL
  • einvoice-integrator-secret — E-fatura entegrasyonu sifreleri
  • regcred — GitHub Container Registry erisim anahtari
  • SSL sertifika secret'lari (elektraweb-cert1/2/3, nodejs4001-cert, elektrawebreport-cert)

Diger Onemli Config Bilgileri (worker-portal-config icinden):

  • Mail: SendGrid SMTP (apikey ile)
  • Redis: redis hostname'i ile K8s icinden erisim
  • RabbitMQ: amqp://guest:guest@rabbitmq:5672/portal
  • CosmosDB: Azure uzerinde loglama
  • Tenant kolonu: PORTALID
  • Tenant tablosu: VW_PORTAL
  • Password hash: SHA-512 + UCS-2 encoding

Persistent Volumes (PVC): Tespit edilmedi. Kalici disk kullanimi yok gibi gorunuyor. Cache dosyalari /datadisk1/caches/portal yolunda tutuluyor. Bu yol buyuk ihtimalle hostPath mount.

E) SQL Server Analizi (EMDS_PORTAL - 91.230.149.106)

  • SQL kullanicisi oku (db_datareader) ile basarili baglanti dogrulandi.
  • Transfer domainindeki ana tablolar tespit edildi (detaylar: 18-bilgi-tabani-envanteri.md)
  • Multi-tenant filtresi: PORTALID kolonu (724transfer icin deger: 64)

Tespit Edilen Ana Tablolar:

  • TRANSFER_VEHICLE_TYPE — Arac tipleri (Vito, Sprinter vb.)
  • TRANSFER_VEHICLE_TYPE_PRICING — Arac bazli fiyatlandirma kurallari
  • TRANSFER_AREA — Transfer bolgeleri
  • TRANSFER_AREA_LOCATION — Bolge icindeki alt lokasyonlar
  • TRANSFER_RESERVATION — Musteri rezervasyonlari (150+ kolon)
  • TRANSFER_ROUTE — Guzergahlar
  • PORTAL_OFFER_TRANSFER — Hazir transfer teklifleri
  • TRANSFER_PRICEGROUP / TRANSFER_PRICEGROUP_DATES — Sezonluk fiyat gruplari
  • TRANSFER_PROMOTION — Promosyon/Indirim kurallari
  • HOTEL_TRANSFER — Otel transferleri
  • HOTEL_TRANSFER_LOCATION — Otel lokasyonlari

3) Guvenlik Durumu (ACIL)

⚠️ Linux Sunucusu (91.230.149.105)

  • PermitRootLogin yes ACIK! Root ile SSH uzerinden disaridan erisim mumkun.
  • Root sifresi READ724TRANSFER olarak degistirildi (VMware konsolundan).
  • Eski sifre: Pyp7yX9ftxs0 (artik gecersiz).
  • ONERI: Klonlama islemleri tamamlandiginda PermitRootLogin tekrar prohibit-password veya no yapilmali ve root sifresi guclendirilmeli.

Windows SQL Server (91.230.149.106)

  • oku kullanicisi sadece db_datareader yetkisiyle olusturuldu. Guvenli.
  • Sistemin kendi prod kullanicisi: prod (sifre yukarida, worker-portal-config icinden okundu).

Oluşturulan Kullanıcılar (Bu Oturumda)

SunucuKullaniciSifreYetkiAmac
Linux (91.230.149.105)okuREAD724TRANSFERNormal kullanici (sudo YOK)AI okuma islemleri
Linux (91.230.149.105)rootREAD724TRANSFER (degistirildi)Tam yetkiKlonlama/rontgen
SQL Server (91.230.149.106)okuREAD724TRANSFERdb_datareader (SELECT only)RAG veri okuma

4) Karar: Klonlama (Staging Ortami Olusturma)

Kullanici, canli sisteme dokunmadan calismak istiyor. Karar:

  • Fiziksel sunucuda (VMware/ESXi) yeni bir Ubuntu 24.04 VPS olusturulacak.
  • Canli Linux sunucusundaki MicroK8s yapisi (Pod'lar, Secret'lar, Imajlar) birebir yeni sunucuya kopyalanacak.
  • SQL Server'da EMDS_PORTAL veritabaninin bir test kopyasi (backup+restore EMDS_PORTAL_TEST) olusturulacak.
  • Klon sistemdeki baglanti ayarlari (IP'ler) test veritabanina cevirilecek.
  • Bu klon ortamda kodlar derinlemesine incelenecek, API endpoint'leri cozulecek ve RAG altyapisi kurulacak.

Klonlama Fizibilitesi: GO (Klonlanabilir). regcred anahtari mevcut, PVC yok, tum manifest'ler export edilebilir.

5) Faz Haritasi (Guncel)

  1. Faz 1 (Cloud MVP): TAMAMLANDI. AI asistan canli.
  1. Faz 1.5 (RAG & Emniyet):
  • Adim 1: Yeni VPS olustur ve canli sistemi klonla (SIRADAKI IS).
  • Adim 2: Klon ortamda kodlari ve API'leri coz (endpoint haritasi).
  • Adim 3: RAG mimarisini kur (Statik: Vektor DB + Dinamik: SQL Function Calling).
  • Adim 4: Handoff, Rollback ve Troubleshooting testleri (RAG bittikten sonra).
  1. Faz 2 (Local): Cloud API'lerden local modellere gecis.
  1. Faz 3 (Function Calling): Asistanin rezervasyon olusturabilmesi.

6) Sonraki Oturumda Yapilacaklar (Net Adimlar)

  1. Kullanici yeni bir Ubuntu 24.04 VPS olusturacak (min 4 CPU, 8GB RAM, 50GB disk).
  1. Yeni VPS'in IP ve root sifresi config/legacy-servers.json dosyasina eklenecek (ornek: staging_server blogu).
  1. Canli Linux sunucusundan (91.230.149.105) Kubernetes manifest'leri, secret'lar ve config'ler export edilecek.
  1. Yeni VPS'e MicroK8s kurulacak ve export edilen yapilar import edilecek.
  1. SQL Server'da test veritabani (EMDS_PORTAL_TEST) olusturulacak (backup+restore).
  1. Klon sistem test veritabanina baglayacak sekilde configure edilecek.
  1. Klon sistem ayaga kalktiginda, kodlara tam erisim saglanacak ve RAG baslayacak.

7) Onemli Dosya Konumlari

  • Sunucu erisim bilgileri: config/legacy-servers.json (gitignore'da)
  • Linux kullanici audit: config/linux-users-audit.md
  • RAG tablo haritasi: development/YapayZeka/docs/18-bilgi-tabani-envanteri.md
  • Onceki handover: development/YapayZeka/docs/99-session-handover-2026-02-22.md
  • AI asistan docs: development/YapayZeka/docs/ (toplam 21 dosya)
  • AI servisleri: development/YapayZeka/services/ (gateway + orchestrator)
  • AI arayuzu: development/YapayZeka/ui/index.html

8) Eski Sistem Teknik Detaylar (724transfer.com)

  • Yazilim Firmasi: TravelAps (ghcr.io/travelaps/) — Firmadan destek ALINAMIYOR.
  • Platform: Ubuntu 24.04 LTS + MicroK8s (Kubernetes) + Helm
  • Uygulama: Node.js (TypeScript, dist/main.js)
  • Veritabani: MS SQL Server 2022 (Windows Server uzerinde, EMDS_PORTAL)
  • Veritabani Tipi: Multi-Tenant (PORTALID kolonu ile ayrim, 724transfer = 64)
  • Altyapi: RabbitMQ (mesaj kuyrugu), Redis (cache), CosmosDB (Azure loglama), SendGrid (mail)
  • Domain: 724transfer.com -> 91.230.149.105 (Linux, MicroK8s uzerinden Nginx Ingress)
  • Fiziksel Sunucu: VMware ESXi/vSphere uzerinde sanal makineler
  • IC AG: Linux: 10.20.2.237, SQL Server: 10.20.2.238

9) Yeni Sohbette Baslat Promptu




Bu dosyayi oku ve buradan devam et:


development/YapayZeka/docs/99-session-handover-2026-02-22-v2.md





Hedef: (1) Yeni Ubuntu VPS olusturulacak, canli sistemin MicroK8s klonu yapilacak. (2) Klon ortamda API ve kod analizi yapilacak. (3) RAG (Faz 1.5) insa edilecek.





ONEMLI KURALLAR:


- Bu oturumda bilet acilmayacak.


- Git islemleri sadece oturum kapatilirken yapilacak.


- Canli sisteme (91.230.149.105) SADECE okuma amacli baglanilacak, hicbir dosya degistirilmeyecek.


- Her islemden once kullanicidan onay alinacak.


99-session-handover-2026-02-23-v4.md

Session Handover - 2026-02-23 (v4) - 724Transfer Klon724

Bu doküman, yeni bir sohbet penceresinde devam edebilmek için bu konuşmada yapılan işleri ve mevcut durumu tek yerde toplar.

0) Kurallar / Kısıtlar (değişmez)

  • İletişim: Türkçe (kod yorumları İngilizce olabilir)
  • Canlı sunucu read-only (değişiklik yok)
  • Git işlemleri: sadece kullanıcı “oturum kapat” dediğinde (bu oturumda yapılmadı)
  • Hedef: Canlı (91.230.149.105) MicroK8s yapısını, klon724 (91.230.149.104) üzerinde .mobi domain setiyle çalışır hale getirmek ve eksik servisleri tamamlamak

1) Sunucular / Domainler

  • Live Linux (referans): 91.230.149.105 (MicroK8s)
  • Clone Linux: 91.230.149.104 (MicroK8s)
  • SQL Server: 10.20.2.238:1433
  • Clone domain seti (TLS):
  • 724transfer.mobi + www.724transfer.mobi
  • api.724transfer.mobi
  • app.724transfer.mobi
  • report.724transfer.mobi

2) Bu oturumda hedef

Klon724’te eksik kalan iki servisi canlıyla uyumlu şekilde kurmak ve doğrulamak:

1) file-uploader (API üzerinden /files)

2) einvoice-integrator (Secret + ConfigMap kopyala, sonra deploy)

Ek olarak:

  • Klon724 performans hissiyatı için sub_filter/cache header düzeltmesi + worker replika uyumu
  • Klon724 reboot testi (açılış sonrası manuel müdahale gerekiyor mu?)
  • Canlıda “Swagger var mı?” kontrolü (oku kullanıcı ile read-only)
  • Canlı vs klon724 eksiksiz K8s envanter karşılaştırması + HTML rapor çıktısı

3) Tamamlanan işler (kanıtlı)

3.1 file-uploader (klon724)

  • Canlıdan (root ile, read-only) K8s YAML okundu:
  • Deployment: file-uploader (hostPath: /elektraweb/file-uploader-data, mount: /app/uploads/files/)
  • Service: file-uploader:80 -> targetPort 8080
  • Ingress: /files (CORS + 300m body + timeout + gzip)
  • Klona taşınanlar:
  • regcred secret canlıdan klona kopyalandı (image pull için)
  • Image transfer: ghcr.io/travelaps/file-uploader:v13 canlıdan export/import ile klona aktarıldı
  • HostPath veri transferi: /elektraweb/file-uploader-data (1.7MB) canlıdan klona kopyalandı
  • busybox initContainer sorunu: multi-arch export/import nedeniyle import hatası vardı; image-transfer.js platform destekli hale getirildi ve klona busybox:latest import edildi
  • Klonda uygulanan manifest: development/infra-klon724/analysis/scripts/file-uploader-mobi.yaml
  • Host: api.724transfer.mobi, Path: /files
  • TLS: mobi-api-cert
  • Dış doğrulama:
  • GET https://api.724transfer.mobi/files/<xslt> -> 200 (content-type application/xslt+xml)
  • GET https://api.724transfer.mobi/files -> 404 (normal görünüyor; root path yok)

3.2 einvoice-integrator (klon724)

  • Canlıdan (root ile, read-only) okunan yapı:
  • Deployment: ghcr.io/travelaps/erp-efatura-services:v82, envFrom: ConfigMap + Secret
  • Service: ports 8000 ve 3640
  • ConfigMap: einvoice-integrator-config (APIURL canlıda https://api.724transfer.net)
  • Secret: einvoice-integrator-secret (Opaque)
  • Klona taşınanlar:
  • Secret kopyalandı: einvoice-integrator-secret (değerler raporda gösterilmedi)
  • Image transfer: ghcr.io/travelaps/erp-efatura-services:v82 canlıdan export/import ile klona aktarıldı
  • Klon ConfigMap: APIURL -> https://api.724transfer.mobi olacak şekilde oluşturuldu
  • Klonda uygulanan manifest: development/infra-klon724/analysis/scripts/einvoice-integrator-mobi.yaml
  • Pod doğrulama:
  • Pod Running/Ready
  • İçeriden:
  • http://127.0.0.1:3640/metrics metrik dönüyor
  • http://127.0.0.1:8000/ -> “Elektra E-Docs Service” HTML

3.3 Performans / cache header iyileştirmesi (klon724)

Amaç: Portal HTML içindeki domain rewrite (sub_filter) sadece HTML’de çalışsın; statik asset’lerde ETag/Last-Modified bozulmasın.

  • nodejs-worker-elektraweb replika sayısı:
  • Canlı: 3/3
  • Klon: 1/1 idi -> klonda 3/3 yapıldı (K8s scale)
  • smoke-web-ingress üzerinde:
  • Önce: sub_filter_types *;
  • Sonra: sub_filter_types text/html;
  • Sonuç: Klonda CSS/JS response header’larında content-length, last-modified, etag tekrar görünür oldu.
  • Uygulanan değişiklik dosyası: development/infra-klon724/analysis/scripts/ingress-fixes.yaml (smoke-web-ingress snippet güncellendi)

3.4 Klon724 reboot testi (manuel müdahale var mı?)

  • Klon724 reboot edildi; açılış sonrası kullanıcı test etti.
  • VM login ekranı gelse bile MicroK8s/pod Ready olana kadar 2–5 dk boyunca gateway/503 türü hatalar görülmesi normal.
  • Reboot sonrası herhangi bir “manuel başlatma” gereksinimi rapor edilmedi (test anında servisler otomatik toparladı).

3.5 Canlıda Swagger var mı? (oku, read-only)

Kontrol edilen tipik yollar:

  • /swagger, /swagger/, /swagger/index.html, /api-docs, /docs, /openapi.json, /swagger.json

Sonuç:

  • Canlı API root (https://api.724transfer.net/) -> 200 “Service is running…” sayfası dönüyor
  • Swagger yolları -> 400 “Bad request :JSON could not be parsed”
  • Bu API’de görünür Swagger UI olmadığı sonucuna varıldı.

4) Üretilen / değişen dosyalar (bu konuşmada)

4.1 Script / Manifest

  • development/infra-klon724/analysis/scripts/image-transfer.js
  • --platform desteği eklendi (export + import platform sabitleme; busybox multi-arch sorununu çözmek için)
  • development/infra-klon724/analysis/scripts/hostpath-transfer.js
  • Yeni: canlıdan hostPath dizinini tar.gz ile alıp klona açan script (live read-only; clone tarafı sudo ile extract)
  • development/infra-klon724/analysis/scripts/file-uploader-mobi.yaml
  • Yeni: file-uploader deployment/service/ingress (mobi)
  • development/infra-klon724/analysis/scripts/einvoice-integrator-mobi.yaml
  • Yeni: einvoice configmap + deployment + service (mobi)
  • development/infra-klon724/analysis/scripts/ingress-fixes.yaml
  • Güncellendi: sub_filter_types text/html; (smoke-web-ingress)

4.2 UI raporu (HTML)

  • development/infra-klon724/ui/klon724.html
  • 12 tablo (canlı vs klon724) karşılaştırma raporu; 🟩/🟥 rozetler + “sadece farklar” filtresi.

4.3 Oturum kaydı

  • oturum.md
  • Oturum #36 başlangıcı eklendi (bu konuşmanın başında).

5) Eksiksiz karşılaştırma (özet)

K8s objeleri seviyesinde eksiksiz karşılaştırma yapıldı; uygulama servisleri çalışıyor ve hedef fonksiyonellik açısından uyumlu.

Ama “cluster birebirliği” açısından farklar var (kritik/operasyonel):

  • Helm release metadata:
  • Canlıda cert-manager ve elektraweb Helm release var; klonda yok
  • cert-manager image sürümü:
  • Canlı v1.16.2, klon v1.8.0
  • Ingress controller image sürümü:
  • Canlı controller:v1.8.0, klon controller:v1.11.5
  • ClusterIssuer letsencrypt-staging:
  • Canlıda var; klonda yok
  • Legacy/service farkları:
  • Canlıda service-elektraweb, worker-config, ayrıca stale/hayalet rabbit ve default/file-uploader var
  • Klonda bunlar yok; ayrıca klonda smoke-web (deployment + svc) var (portal rewrite için)

6) Sonraki adımlar (isteğe bağlı)

Klon724 şu an çalışıyor; bu yüzden farkların çoğu “sorun yaşandıkça” ele alınabilir.

Öncelik önerisi (sadece klon tarafında):

1) cert-manager/issuer hizalaması (özellikle operasyonel birebirlik isteniyorsa)

2) ingress-nginx sürüm hizalaması (birebirlik isteniyorsa)

3) legacy objeler (service-elektraweb, worker-config) gerçekten gerekli mi? (kullanım varsa kopyala)

4) Helm metadata birebirliği gerçekten isteniyor mu? (helm ile yeniden kurulum kesinti riski taşır)

7) Kısa doğrulama komutları (kopyala/çalıştır)

Not: Bu komutlar örnek amaçlıdır; canlıda write yok, klonda ise değişiklik ihtiyacı varsa ayrıca onay alınır.

  • Klon temel durum:
  • microk8s kubectl get deploy -A
  • microk8s kubectl get svc -A
  • microk8s kubectl get ingress -A
  • microk8s kubectl get certificate -A
  • file-uploader:
  • curl -I https://api.724transfer.mobi/files/<dosya>
  • einvoice:
  • microk8s kubectl -n elektraweb exec deploy/einvoice-integrator -- sh -lc 'wget -qO- -T 3 http://127.0.0.1:3640/metrics | head'
99-session-handover-2026-02-24-v1.md

Session Handover - 2026-02-24 (v1) - Faz 1 Operasyonel Minimum Takibi

Bu dokuman, yeni bir sohbet penceresinde dogrudan buradan devam etmek icin bugunku durumun net ozetidir.

1) Bu oturumda yapilanlar (ozet)

A) Klasor/script duzeni

  • AI scriptleri development/YapayZeka/scripts/ altina geri alindi:
  • Install-AI-Prereqs.ps1
  • Load-AI-Config.ps1
  • Start-AI-Services.ps1
  • Test-AI-Endpoints.ps1
  • Test-STT-Endpoint.ps1
  • development/infra-klon724/scripts/ai/ altindaki kopya scriptler silindi (bos klasor kaldi).

B) Faz 1 checklist/kanonik kaynak duzeni

  • development/YapayZeka/docs/11-kabul-kriterleri.md
  • Faz 1 kapsami "Cloud MVP" + "Operasyonel Minimum" olarak netlestirildi.
  • Operasyonel Minimum altina su maddeler eklendi/ayiklandi:
  • API auth, rate limit, CORS, PII mask, runbook/troubleshooting, rollback, handoff.
  • UI auth akisina ozel madde eklendi ve Done kriteri 3 adimla netlesti:

1) token yok => 401

2) gecerli token => 200

3) token temizle => 401

  • development/YapayZeka/docs/15-go-live-checklist.md
  • Faz 1 operasyonel minimum listesine referanslanan sade yapiya cevrildi.
  • UI auth dogrulamasi icin 3 adimli test kriteri eklendi.
  • development/YapayZeka/docs/14-ilk-kurulum-checklist.md
  • Day-1/smoke odakli hale getirildi; operasyonel minimumun kanonik kaynagi 11-kabul-kriterleri.md olarak isaretlendi.

C) Handover dosya temizligi

  • Silinen eski handover dosyalari:
  • 99-session-handover-2026-02-21.md
  • 99-session-handover-2026-02-22.md
  • 99-session-handover-2026-02-23.md
  • 99-session-handover-2026-02-23-v3.md
  • Kalan handover dosyalari:
  • 99-session-handover-2026-02-22-v2.md
  • 99-session-handover-2026-02-23-v4.md
  • 99-session-handover-2026-02-24-v1.md (bu dosya)

D) UI tarafi degisiklik notu (asistan.724test.com)

  • development/YapayZeka/ui/index.html icinde token butonu + Authorization header destegi eklendi:
  • setApiTokenPrompt(), getAuthHeaders(), localStorage key: ai_api_token
  • Typewriter hizi degismedi:
  • 71 ms/karakter
  • 2000 ms tampon

E) Servis/auth olayi (onemli)

  • Bir ara API_AUTH_ENABLED=true acildigi icin UI tarafinda 401 goruldu.
  • Ardindan geri alindi: .env tekrar API_AUTH_ENABLED=false.
  • VPS taskleri restart edildi:
  • 724-AI-Gateway -> Running
  • 724-AI-Orchestrator -> Running
  • VPS tarafinda son gorulen degerler:
  • API_AUTH_ENABLED=false
  • RATE_LIMIT_RPM=120
  • MASK_PII_LOGS=true

2) Faz 1 acik kalanlar (kanonik yorum)

RAG HARIC tutuldu. Faz 1'i kapatmak icin operasyonel minimum maddeler acik:

  • API auth aktif + UI auth akisinin tam dogrulanmasi
  • Rate limit aktifliginin 429 kaniti
  • PII mask davranisinin kaniti
  • Handoff senaryosu testi
  • Rollback smoke testi
  • Runbook + troubleshooting final guncelleme

Referans: development/YapayZeka/docs/11-kabul-kriterleri.md

3) Sonraki oturumda net sira (onerilen)

  1. "Kirisiz gecis" prensibi: once test plani, sonra auth acma.
  1. UI auth 3 adim testi (token yok/var/temizle) scripted veya manuel kanit.
  1. Rate limit 429 testi (kisa burst test).
  1. Handoff testi (operator/temsilci talebi).
  1. Rollback smoke (task restart + eski ayara donus + saglik kontrolu).
  1. Sonunda checklist kutularini kapatma.

4) Notlar / dikkat

  • Kullanici ozellikle "calisan sistemi bozma" konusunda hassas; prod etkisi yaratacak adimlar once onay + kanit formatinda ilerletilmeli.
  • WinRM islemlerinde hedef her zaman config'teki VPS bilgilerinden alinmali.
  • Local terminal path'i (workspace) ile VPS runtime path'i karistirilmamali.

5) Yeni sohbette baslat promptu

Asagidaki notla devam et:

development/YapayZeka/docs/99-session-handover-2026-02-24-v1.md

Hedef:

Faz 1 Operasyonel Minimum maddelerini (RAG haric) canliyi bozmadan, kanitli sekilde tek tek kapatmak.