| name | apex-live-tests |
| description | k3s_dc üzerinde çalışan APEX botunu mock test suite ile uçtan uca test eder. Kimlik çözümleme, orchestrator routing, KB, dosya oluşturma ve web search yeteneklerini doğrular. |
APEX Live Tests Skill
Bu skill, DC (Datacenter) k3s ortamındaki APEX botunu mock_tests/mock_arq_enqueue.py
script'i aracılığıyla test eder. Gerçek Slack hesabı gerekmez.
Ne Zaman Kullan
- Agent/worker/orchestrator değişikliğinden sonra uçtan uca doğrulama
- Kimlik çözümleme (identity resolution) kontrolü
- KB RAG, dosya oluşturma veya web search yeteneği testi
- Deployment sonrası smoke test (
post-change-smoke-test.md'ye ek olarak)
Kısıtlamalar
- Salt-okunur test — DB'ye yazma yok (sadece ARQ job + Slack mesajı)
- DC'ye SSH erişimi gerekli (
k3s_dc alias ~/.ssh/config'de tanımlı)
- Test kanalı: Slack
C0BAADDNCN9 — sonuçlar oraya yazılır
- DC botu
socket_mode kullanıyor; HTTP events API çalışmaz
Bağlantı (k3s_dc) — ÖNCE BUNU OKU
Bağlantı detayları tek doğruluk kaynağı: proje kökü DEPLOY.md § "QA Ortamına Bağlantı".
| Alan | Değer |
|---|
| SSH alias | k3s_dc → svmaisgentst001.getirfinans.local (10.185.63.33) |
| Direkt komut | ssh -i ~/.ssh/id_getirfinans -o IdentitiesOnly=yes murat@svmaisgentst001.getirfinans.local |
| Bastion | CyberArk PSMP (10.185.30.67) — kurumsal ağda |
| Kopyalama | scp -O zorunlu (rsync DC ağında tamamen bloklu) |
| API (DC iç ağından) | curl http://10.185.63.33/health |
| kubectl | sudo /usr/local/bin/kubectl (DC node'da) |
Bağlantı belirti teşhisi (DNS/VPN sanma)
Could not resolve hostname svmaisgentst001... veya connect ... Operation not permitted
hatası gördüğünde: bu çoğu zaman DNS/VPN sorunu değildir — komutun çalıştığı ortamın
outbound ağ izni yoktur (Claude Code Bash sandbox'ı outbound SSH'ı engeller). Doğrulama:
operatör kendi terminalinde ! ssh k3s_dc 'echo ok' çalıştırınca bağlanıyorsa ağ/VPN/DNS
sağlıklıdır, sorun yalnızca agent'ın koştuğu kısıtlı ortamdır. Bu durumda komutu outbound
ağa izinli bir şekilde çalıştır (örn. operatörden !-prefix ile çalıştırmasını iste, ya da
ortamın sandbox kısıtını kaldırması gerekir). VPN/DNS'i suçlamadan önce bunu ele.
(2026-06-14: tam olarak bir live-test'i bloklamıştı — "VPN kapalı" sanılan şey ortam ağ kısıtıydı.)
Ortam Referansı (DC)
| Alan | Değer |
|---|
| SSH alias | k3s_dc |
| Namespace | apex-ai |
| Bot DB ID | de729ab2-1283-4f2e-8e01-176a1f61a0f7 |
| Bot Slack UID | U0AQQH5TSMQ |
| Test kanalı | C0BAADDNCN9 |
| Backend ClusterIP | 10.43.52.135:8000 |
| kubectl | sudo /usr/local/bin/kubectl (DC node'da) |
Akış (Her Test İçin)
1. Backend pod adını bul
2. Test script'lerini pod'a kopyala
3. mock_arq_enqueue.py'yi pod içinde çalıştır
4. Çıktıyı oku ve yorumla
5. Gerekirse worker log'larını kontrol et
6. Sonuçları raporla
Adım Adım Çalıştırma
1. Backend Pod Adını Bul
BACKEND_POD=$(ssh k3s_dc 'sudo /usr/local/bin/kubectl get pod -n apex-ai \
-l app=backend --no-headers -o custom-columns=":metadata.name" | head -1')
echo "Pod: $BACKEND_POD"
Çıktı boşsa: kubectl get pods -n apex-ai | grep backend ile durumu kontrol et.
2. Script'leri Pod'a Kopyala
scp -O mock_tests/mock_arq_enqueue.py k3s_dc:/tmp/mock_arq_enqueue.py
scp -O mock_tests/get_bot_secrets.py k3s_dc:/tmp/get_bot_secrets.py
ssh k3s_dc "sudo /usr/local/bin/kubectl cp \
/tmp/mock_arq_enqueue.py apex-ai/${BACKEND_POD}:/tmp/mock_arq_enqueue.py"
ssh k3s_dc "sudo /usr/local/bin/kubectl cp \
/tmp/get_bot_secrets.py apex-ai/${BACKEND_POD}:/tmp/get_bot_secrets.py"
3. Testi Çalıştır
ssh k3s_dc "sudo /usr/local/bin/kubectl exec -n apex-ai ${BACKEND_POD} -- \
env PYTHONPATH=/app python3 /tmp/mock_arq_enqueue.py"
Varsayılan bekleme süresi 55 saniye. Karmaşık sorgular için WAIT_SECONDS=120.
4. Sonuçları Yorumla
Başarılı: ✅ kullanıcı → "bot cevabı..."
Bekleme: ⏳ cevap yok → worker log'una bak (aşağıda)
Enqueue hatası: ❌ → Redis pod çalışıyor mu? kubectl get pod -n apex-ai | grep redis
5. Gerekirse Worker Log'larını Oku
for pod in $(ssh k3s_dc 'sudo /usr/local/bin/kubectl get pod -n apex-ai \
-l app=worker --no-headers -o custom-columns=":metadata.name"'); do
echo "=== $pod ==="
ssh k3s_dc "sudo /usr/local/bin/kubectl logs -n apex-ai $pod --since=5m 2>/dev/null \
| grep -E '←.*MOCK|status.*ok|auth_required|identity_unresolved|error' | tail -5"
done
Özel Test Senaryoları
Tek Soru (tüm kullanıcılara)
ssh k3s_dc "sudo /usr/local/bin/kubectl exec -n apex-ai ${BACKEND_POD} -- \
env PYTHONPATH=/app TEST_QUESTION='Jira'\''da benim adıma açık ticket var mı?' \
python3 /tmp/mock_arq_enqueue.py"
Web Search Testi
ssh k3s_dc "sudo /usr/local/bin/kubectl exec -n apex-ai ${BACKEND_POD} -- \
env PYTHONPATH=/app TEST_QUESTION='Bugünkü USD/TRY döviz kurunu internetten öğren' \
python3 /tmp/mock_arq_enqueue.py"
Dosya Oluşturma Testi
ssh k3s_dc "sudo /usr/local/bin/kubectl exec -n apex-ai ${BACKEND_POD} -- \
env PYTHONPATH=/app TEST_QUESTION='Merhaba diye başlayan bir Excel dosyası oluştur ve paylaş' \
python3 /tmp/mock_arq_enqueue.py"
KB Testi
ssh k3s_dc "sudo /usr/local/bin/kubectl exec -n apex-ai ${BACKEND_POD} -- \
env PYTHONPATH=/app TEST_QUESTION='GetirFinans güvenlik politikası nedir?' \
python3 /tmp/mock_arq_enqueue.py"
Orchestrator Routing + Multi-turn Testi
mock_tests/mock_arq_enqueue.py içindeki TEST_USERS listesini düzenle,
birden fazla farklı yeteneği test eden sorular koy (KB + dosya + web search).
Sonuç Değerlendirme Kriterleri
| Durum | Açıklama | Değerlendirme |
|---|
✅ cevap geldi | Bot normal cevap yazdı | PASS |
⏳ worker log'unda auth_required | Kullanıcı MCP bağlantısı yok, bot 🔒 Connect... mesajı yazdı | PASS (doğru davranış) |
⏳ worker log'unda ok_orchestrator | Job tamamlandı ama Slack'e yazamadı | FAIL — Slack API token'ını kontrol et |
⏳ worker log'unda identity_unresolved | Kullanıcı slack_users tablosunda yok | FAIL — directory sync çalıştı mı? |
❌ enqueue edilemedi | Redis bağlantı hatası | FAIL — Redis pod durumunu kontrol et |
⏳ 55s sonra cevap yok, log'da iş yok | Worker job'ı almadı | FAIL — USER_QUEUE boş mu? ARQ çalışıyor mu? |
Yaygın Sorunlar ve Çözümler
listener_type_not_events_api [410]
DC botu socket_mode kullanıyor; mock_slack_test.py çalışmaz.
mock_arq_enqueue.py kullan (pod içinden ARQ'ya direkt yazar).
Backend Pod Adı Değişti
Her restart'ta pod adı değişir. Step 1 + 2'yi tekrarla.
embedding_request_failed (log'da)
Embedding server çalışmıyor. KB sorguları başarısız olur ama bot yine de cevap vermeli.
Embedding server pod'unu kontrol et: kubectl get pod -n apex-ai | grep embedding.
SQLAlchemy Log Gürültüsü
mock_arq_enqueue.py pod içinde çalışır; SQLAlchemy logları normal.
Sonuçlar ===== blokları arasında görünür — kaybolmaz.
DC Master Key ≠ Dev Key
DC ortamındaki APEX_MASTER_KEY dev ortamından farklı. Bot token'ları DC pod içinden
decrypt edilir; local makineden get_bot_secrets.py çalıştırılamaz.
Detaylı Dokümantasyon
mock_tests/README.md — test suite mimari, kurulum, tüm senaryolar.
Agent Olarak Bu Skill'i Kullanan Akış
- Kullanıcı
/apex-live-tests der veya "DC'yi test et" der
- Bu skill yüklenir
- Agent bu skill'deki adımları sırayla uygular:
- Backend pod adını bul
- Script'leri kopyala (son versiyonu
mock_tests/ klasöründen al)
mock_arq_enqueue.py'yi çalıştır
- Çıktıyı oku
- Worker log'larına bak (gerekirse)
- Sonuçları
✅/⏳/❌ tablosuyla raporla
- FAIL varsa kök nedeni logdan bul, raporla