Documentation Index
Fetch the complete documentation index at: https://docs.mmmytics.com/llms.txt
Use this file to discover all available pages before exploring further.
Composer LLM Cache Invalidation
v0.7.64 (Phase 24) ile gelen Composer LLM cache invalidation özelliği, hibrit rapor pipeline’ında üretilen LLM narrative cache’lerini scope bazlı temizlemeye olanak tanır. platform_admin rolündeki kullanıcılar Admin paneli → 9. tab “LLM Önbellek” sekmesinden 4 farklı scope’ta (all / locale / variant / run_id) invalidation tetikleyebilir.
Neden Cache Invalidation?
Hybrid Report composer her rapor için LLM çağrısı yapmamak adına narrative output’ları Redis cache’te tutar. Cache key formatı:- Prompt revizyonu — LLM prompt template güncellendi, eski cache stale
- Locale fix — TR/EN translation hatası düzeltildi, yeni rendering gerekli
- A/B test reset —
LLM_AB_SPLITvariant ratio değişti (örn:v1.1:1.0→v1.2:1.0) - Belirli bir run yeniden hesaplanıyor — run_id bazlı targeted invalidation
- LLM model upgrade — Claude Opus 4.7 → Opus 5.0 geçişi sonrası tüm cache stale
Yetki
| Rol | Yetki |
|---|---|
CEO / CMO | ❌ Erişim yok |
Analytics / Agency | ❌ Erişim yok |
platform_admin | ✅ Tam erişim (tüm org’lar için cache invalidate edebilir) |
4 Scope
all
Tüm composer LLM cache silinir. Org/locale/variant/run filtresi yok. Genelde major prompt revision sonrası kullanılır.
locale
Belirli locale(s)‘lere ait cache silinir. Örn:
locales=["tr"] → sadece Türkçe narrative cache’i temizler.variant
Belirli variant(s)‘lara ait cache silinir. Örn:
variant_ids=["v1.0"] → eski variant cache’i temizler, A/B test reset için.run_id
Tek bir run_id’ye ait cache silinir. Targeted invalidation — diğer run’lar etkilenmez. Örn:
run_id="24774cd8-...".UI Flow
Admin paneli aç
Sol menüden Admin (yalnızca
platform_admin için görünür) → 9. tab “LLM Önbellek” (RefreshCw icon).Primary action — Invalidate All
Sayfa üstünde büyük “Invalidate All” butonu (destructive variant). Tıklandığında ConfirmDialog açılır:
Advanced (collapsible)
“Advanced” chevron tıklandığında 3 scope açılır:
- By Locale: multi-select dropdown (
tr,en) + Invalidate butonu - By Variant: multi-select dropdown (mevcut variant_id listesi) + Invalidate butonu
- By Run ID: text input (UUID v4) + Invalidate butonu
Invalidation tetiklendi
Backend
POST /admin/cache/invalidate-composer-llm çağrısı arka planda Redis SCAN cursor ile non-blocking iteration yapar. UI loading state’i gösterir, sonuçta toast notification: ”✅ 8,243 cache entry invalidated (locale=tr)”.Redis SCAN Cursor Pattern
Backendllm.py.invalidate_cache_keys fonksiyonu SCAN kullanır, KEYS KULLANMAZ:
Neden SCAN, KEYS değil?
KEYS * Redis’i O(N) blocking — production’da 100K+ key varsa Redis 5-10 saniye blok olur, tüm uygulama timeout alır. SCAN cursor-based iteration, non-blocking — production-safe.API Endpoint
Audit Log Entry
Sentry Tag
Sentry event’lerine cache invalidation context’i eklemek için tag set edilir:Sorun Giderme
CACHE_INVALIDATE_SCOPE_INVALID
Sebep: Scope + parametre uyumsuzluğu (örn: scope=locale ama locales boş, scope=run_id ama UUID format geçersiz).
Çözüm:
scope=all→ ek parametre gerekmezscope=locale→locales: ["tr", "en"]dolu listescope=variant→variant_ids: ["v1.0", "v1.1"]dolu listescope=run_id→ geçerli UUID v4
Invalidation sonrası rapor üretimi yavaş
Sebep: Cache miss — sonraki rapor LLM çağrısı yapıyor (~10-30 saniye). Çözüm: Normal davranış. Cache repopulate olduktan sonra (ilk birkaç rapor) latency normale döner.Deleted count = 0
Sebep: Belirtilen scope’ta cache entry yok (henüz hiç rapor üretilmemiş veya zaten temizlenmiş). Çözüm: Pattern doğru mu kontrol et (locale code, variant_id formatı). Redis’te aktif key sayısınıredis-cli DBSIZE ile kontrol et.
Sonraki Adım
Per-Brand Benchmark Override
Marka-spesifik KPI eşik değerleri
L7 Reports
Hibrit rapor üretimi + cache davranışı