# Teknik Borç Süper Panel'in shipped'i takip etmediği açık iş listesi. Her item'ın **ne zaman/neden** yapılması gerekiyor not'lu. --- ## Süper Panel Phase 7 (User Management) — DONE Phase 7a–7c (foundation + tüm A–F mutation faz'ları) **shipped** (2026-05-18): - Adım 1: User listesi sayfası - Adım 2: User detay 360° (header + 5 sekme) - Adım 3: Read-only impersonation (Sase.tr + panel, signed cookie + readonly guard) - Phase A: Founder notes (panel-only) - Phase B: Suspend / Reactivate / Ban (users.status + session kill) - Phase C: Trial extend + manual activate - Phase D: Plan change + cancel/resume - Phase E: Refund (Stripe) + bonus süre extension - Phase F: Brand reassignment (per-plan brandCount validate) **Henüz yok (PRD §6.5, §9.2-5):** - Support actions: password reset link, email verify (resend + manuel), 2FA reset - KVKK export + erase (right-to-erasure) - Active session yönetimi (revoke individual / revoke all) - API key + webhook yönetimi (Sase.tr'de tablo yok, defer) - Bulk operations (segment + bulk email/quota/plan) - Automation rules (auto-suspend, churn alert, trial-end handling) --- ## Süper Panel Phase 8 (VIN Decode Observability) — DONE Faz 1–4 + regression alert **shipped** (2026-05-18): - Faz 1: Operational health + provider performans dashboard - Faz 2a: Error fingerprint drill-down - Faz 2b: Deploy regression analizi (Coolify deploys + ±30dk window) - Faz 2c: BIP insight integration (provider_quality + keyword filter) - Faz 3: Business impact dashboard (8 metric, quota'sız model) - Faz 4: Trends (90g volume, peak heatmap, cache, efficiency) + provider drill-down - Regression Telegram alert (per-deploy 24h dedupe) - VIN anomaly detection + Telegram (success drop, latency spike, volume drop/spike, timeout dominance) **Henüz yok (Phase 8 defer):** - Alert threshold config UI — eşikleri panel'den ayarla (şimdi hardcoded) - Anomali kayıt persistance — `vin_anomaly_log` tablosu yok; sadece Redis dedupe + Telegram - Documentation / runbook (bu commit'te [RUNBOOK.md](./RUNBOOK.md) eklendi) --- ## PRD ↔ Sase.tr gerçeği gap'leri `super-panel-user-management-prd-v1.md` ve `super-panel-vin-decode-observability-prd-v1.md` Sase.tr için bazı yapıları varsayıyor; gerçek Drizzle şeması daha sade: - **EFT akışı kaldırıldı** — Stripe Migration sonrası (May 2026) EFT alınmıyor; `payments.method='eft'` historical. PRD §7.1 işlevsiz. - **B2B / company / multi-seat yok** — PRD §8 (Grup 4) ve company görünümleri uygulanamaz. - **API key + webhook yönetimi yok** — Sase.tr'de tablolar yok, defer. - **Quota tablosu yok** — `queryLogs` + `plans.brandCount` üzerinden türetiliyor; observability Faz 3 quota-bağımsız tasarlandı. - **WhatsApp chatbot conversation entegrasyonu** — sistem bilinmiyor, defer. - **ML decoder events emit edilmiyor** — `vin_decode_succeeded.ml_decoder_used/ml_confidence` Sase.tr backend'inde set edilmiyor (Sase.tr VAG ML pipeline kod akışında değil). --- ## Defansif teknik borç ### ~~super_panel_reader DB rolü~~ — DONE (2026-05-18) Panel `DATABASE_URL_SASE_RO` env'i artık `super_panel_reader` rolüyle bağlanıyor. Smoke test doğrulandı: SELECT çalışıyor, UPDATE/INSERT/DELETE → `permission denied for table`. Rol Coolify standalone postgres'te `GRANT SELECT ON ALL TABLES IN SCHEMA public` + `ALTER DEFAULT PRIVILEGES` ile kuruldu (geçici public port üzerinden psql ile, sonra port kapatıldı). ### `prisma db push` multi-replica güvensizliği `apps/web/package.json` `start` scripti: `prisma db push --skip-generate && next start`. Tek replica'da OK; multi-replica olursa race condition. İlerideki bir Coolify pre-deployment hook'una taşı veya proper migrations'a geç. ### Sase.tr `apps/web` pre-existing typecheck error'ları `FULL_PLAN_BRAND_LIMIT` eksik, `@radix-ui/react-accordion` types eksik. Phase 7/8 patch'lerimiz etkilemedi ama temizlik borç. --- ## Sase.tr-side (Süper Panel için) ### Faz 0 + Faz 1 PostHog event taxonomy `sase-posthog-events-prd.md` referansı. BIP'in 15 tag rule'unun yaklaşık 9'u henüz fire etmiyor: | Tag | Beklediği event | |---|---| | `payment_ui_silent_failure` (P0) | `payment_succeeded` + `payment_success_ui` (dual-capture rename) | | `payment_friction` (P1) | `payment_initiated` | | `vin_decode_fail_pattern` (P1) | `vin_decode_failed` (mevcut alias çalışıyor) | | `provider_reliability_issue` (P2) | `provider_fallback_triggered` | | `provider_mismatch` (P2) | `provider_fallback_triggered` + `vin_decode_succeeded` | | `compatibility_quality_gap` (P2) | `compatibility_check_completed` | | `parts_export_abandoned` (P3) | `parts_export_initiated` | | `search_validation_friction` (P3) | `search_input_validation_failed` | | `at_risk_active_session` (P2) | identify() ile `subscription_status` + `total_vin_queries_last_30d` | **Etki:** Pipeline %30-40 → tam kapasite. LLM analizleri çok daha specific olur. Faz 0 (2 gün): identify schema + group + alias + data-private audit + 5 parts/compat event. Faz 1 (5-7 gün): VIN decode + provider + search + feature discovery + API key/webhook + subscription funnel + payment dual-capture. **Not:** VIN decode backend telemetry'sini PR #32'de eklemiştik, **PR #33 ile revert ettik** (`query_logs` zaten her şeyi tutuyor, PostHog hop gereksiz). Frontend UX event'leri için bu Faz 0+1 hala değerli. --- ## BIP (Behavioral Insight Pipeline) açık işler ### 1. Pilot'un bulduğu P1 bug'ı fix et (highest ROI) **Insight ID:** `cmp4oipcr000amsdsu2t8qnyi` · `/insights/i/cmp4oipcr000amsdsu2t8qnyi` Başarılı VIN decode sonrası frontend `/api/vehicles/undefined` ve `/api/categories/tree/undefined` çağırıyor → 500. ~30-60 dk Sase.tr fix. Loop kapanışı: Fix → Gitea issue kapat → `github-sync` 10dk içinde `shipped` → `validation` cron 14d sonra `validated`. ### 2. Eval golden set Şu an sadece `bug_triage` 2-case. 6 prompt için 0 case. Her aktif prompt için 15-20 gerçek session'dan elle ground truth. ~yarım gün (per prompt ~30dk). ### 3. Pattern bundle gerçek veri ile validate `pattern_bundle` prompt deploy ama ≥3 same-fingerprint senaryo gelmedi (volume düşük). Sase.tr Faz 0+1 sonrası 1 hafta bekle veya aylık session ≥1000 olunca. ### 4. Embedding-based cross-fingerprint similarity PRD Phase 6e içinde defer edilmiş. Pattern aggregation şu an string match. 50+ insight birikince pgvector + sentence-transformers/MiniLM. ### 5. Multi-project routing `INSIGHT_PROJECT_KEY=sase` hardcoded. Spokes (`catvicer`, `kokpit`, `otoyedekparca`, `eryaman`, `doner312`) `status='planned'`. İlk spoke canlandığında: per-project PostHog polling + per-spoke budget alloc + `GITEA_REPO_` (env mapping zaten supportluyor). --- ## Minor / Düşük öncelik - **`pattern_bundle` UI surface** — `/insights/patterns` ayrı başlık - **Cost dashboard chartlar** — şu an tablo; recharts ile daily trend - **POST /api/webhooks/gitea** — receiver yazıldı, polling primary; webhook real-time gerekirse Cloudflare/Tailscale çözümü gerekli - **github-sync job rename** — `issue-sync`'e taşı (BullMQ state cleanup gerekir) - **Audit log retention** — şu an pruning yok, aylık partition + 90gün retention eklenebilir