Role created on the Sase.tr standalone Postgres with SELECT-only privileges on schema public + ALTER DEFAULT PRIVILEGES so future tables inherit the grant. Panel-web DATABASE_URL_SASE_RO switched to this role; panel redeployed; UPDATE/INSERT/DELETE rejected with 'permission denied' as expected; SELECT count(*) FROM users still works. Process: temporarily exposed sase-postgres on port 54320, ran the SQL via psql, then closed the public port. Password generated with openssl rand -hex 24 (lives only in Coolify env). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
7.1 KiB
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_logtablosu yok; sadece Redis dedupe + Telegram - Documentation / runbook (bu commit'te 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_confidenceSase.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_<KEY> (env mapping zaten supportluyor).
Minor / Düşük öncelik
pattern_bundleUI surface —/insights/patternsayrı 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