docs: teknikborc — insight pipeline next-steps backlog
8-item insight category covering pilot success closure, push-notification gap, Sase.tr Faz 0+1 prerequisites that unblock 9 dormant tag rules, eval golden set requirement, and deferred volume-dependent work (bundle mode, embedding similarity, multi-project routing). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
122
teknikborc.md
Normal file
122
teknikborc.md
Normal file
@@ -0,0 +1,122 @@
|
|||||||
|
# Teknik Borç
|
||||||
|
|
||||||
|
## insight
|
||||||
|
|
||||||
|
Behavioral Insight Pipeline (BIP-001) için pilot başarı kriterine ve genişleme yoluna dair açık işler.
|
||||||
|
|
||||||
|
### 1. Pilot'un bulduğu P1 bug'ı fix et (highest ROI)
|
||||||
|
|
||||||
|
**Insight ID:** `cmp4oipcr000amsdsu2t8qnyi` · `/insights/i/cmp4oipcr000amsdsu2t8qnyi`
|
||||||
|
|
||||||
|
LLM analizinden özet:
|
||||||
|
- **Friction point:** Başarılı VIN decode sonrası frontend `/api/vehicles/undefined` ve `/api/categories/tree/undefined` çağırıyor → 500
|
||||||
|
- **Affected component (hipotez):** VIN decode flow'da state management; vehicle ID null/undefined iken detail route'una navigate ediliyor
|
||||||
|
- **Quick fix:** Navigation öncesi vehicle ID null/undefined guard'ı + inline error + retry butonu
|
||||||
|
- **Long-term fix:** State management düzeltmesi, error boundaries, undefined ID istekleri için monitoring
|
||||||
|
- **AI confidence:** 0.95 · **Cost:** $0.0001
|
||||||
|
|
||||||
|
**Neden öncelikli:** PRD §3 pilot başarı kriteri — "en az 1 bug AI insight'tan tetiklenip shipped ve regression-free". Şu an 0/5 insight kapanmış. Bu fix edilirse cost-per-validated-insight metriği nihayet anlamlı (PRD hedef <$0.50; pilotumuz $0.0001).
|
||||||
|
|
||||||
|
**Effort:** 30-60 dk Sase.tr kodunda.
|
||||||
|
|
||||||
|
**Loop kapanışı:** Fix → Gitea issue kapat → `github-sync` 10dk içinde `shipped` → `validation` cron 14d sonra `validated` (regression yoksa).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 2. Telegram alerts (push notification katmanı)
|
||||||
|
|
||||||
|
Panel "pull" mode'da çalışıyor — founder'ın panele bakması gerekiyor. Push kanalı eksik.
|
||||||
|
|
||||||
|
Eklenecek tetikleyiciler:
|
||||||
|
- **P0 insight created** — anında bildir (örn. `payment_ui_silent_failure`)
|
||||||
|
- **Sanitization anomaly** — `compress-sessions`'da token>500 ama PII match=0 → olası leak şüphesi
|
||||||
|
- **Daily cap reached** — bütçe halt'lar olduğunda
|
||||||
|
- **Regression detected** — `validation` cron `regressed` flip ettiğinde
|
||||||
|
- **Daily Brief** (08:00) — Telegram'a `/insights/brief` özeti
|
||||||
|
|
||||||
|
**Effort:** 1-2 saat. Bot token + chat ID env, basit fetch wrapper, mevcut log noktalarına çağrı.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 3. Sase.tr Faz 0 + Faz 1 events (pipeline'ın gerçek kapasitesi)
|
||||||
|
|
||||||
|
`sase-posthog-events-prd.md` referansı. PostHog'da hala 24 v1.0 event var. Panel'in 15 tag rule'unun yaklaşık 9'u henüz hiç fire etmedi çünkü event'ler emit edilmiyor:
|
||||||
|
|
||||||
|
| 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` (v1: `vin_decode_error` — alias var, çalışır) |
|
||||||
|
| `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` |
|
||||||
|
|
||||||
|
Faz 0 (2 gün, blocker):
|
||||||
|
- `posthog.identify()` schema (plan_tier, signup_date, company_id, vb. — Bölüm 4.1)
|
||||||
|
- `posthog.group('company', ...)` çağrısı
|
||||||
|
- `posthog.alias()` signup flow'a
|
||||||
|
- `data-private` audit (VIN/email/customer/API key alanları)
|
||||||
|
- 5 parts/compatibility event'i
|
||||||
|
|
||||||
|
Faz 1 (5-7 gün, paralel):
|
||||||
|
- VIN decode expansion + provider events (4) + search behavior (5) + feature discovery (5) + API key/webhook (4) + subscription funnel granularity + payment dual-capture rename
|
||||||
|
|
||||||
|
**Etki:** Pipeline %30-40 kapasiteden tam kapasiteye geçer. LLM analizleri çok daha specific (provider adı, payment failure mode, vb.) olur.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 4. Eval golden set (prompt iyileştirmek için zorunlu)
|
||||||
|
|
||||||
|
Şu an `bug_triage` için 2-case smoke set var. Geri kalan 6 prompt için 0 case.
|
||||||
|
|
||||||
|
Her aktif prompt için 15-20 gerçek (compressed) session'dan elle ground truth (expected severity + key string fields). MinIO timeline'ları indir, kopyala, eval-set'e JSON cases olarak yapıştır.
|
||||||
|
|
||||||
|
Olmadan: prompt değişikliği = belirsizlik (PRD §8.5: "Eval olmadan prompt geliştirme yapılmaz").
|
||||||
|
|
||||||
|
**Effort:** Yarım gün (per prompt ~30dk).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 5. Pattern bundle gerçek veri ile validate (volume bekliyor)
|
||||||
|
|
||||||
|
`pattern_bundle` prompt + analyze'daki bundle mode kodu deploy ama henüz hiç ≥3 same-fingerprint senaryo görmedi (volume düşük). Beklenmesi mantıklı.
|
||||||
|
|
||||||
|
Sase.tr Faz 0+1 deploy edilince fingerprint çeşitliliği değişir — özellikle `provider_fallback_triggered` aynı provider/route'ta tekrar ederse bundle tetiklenir.
|
||||||
|
|
||||||
|
**Ne zaman:** Aylık session ≥1000 olduğunda veya Faz 0+1 deploy sonrası 1 hafta.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 6. Embedding-based cross-fingerprint similarity (deferred)
|
||||||
|
|
||||||
|
PRD Phase 6e içinde defer edilmiş. Pattern aggregation şu an tag+route bazlı string match.
|
||||||
|
|
||||||
|
Embedding ile structurally similar bug'lar (farklı error string ama aynı tipte UX failure) gruplanabilir. Volume küçükken (5 insight) erken — gerçek pattern'lere ihtiyacımız var.
|
||||||
|
|
||||||
|
**Ne zaman:** 50+ insight birikince. Sentence-transformers/MiniLM yeterli; pgvector ile Panel-postgres yeter.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 7. Multi-project routing (spoke'lar canlanınca)
|
||||||
|
|
||||||
|
`INSIGHT_PROJECT_KEY=sase` env hardcoded. PRD spokes (`catvicer`, `kokpit`, `otoyedekparca`, `eryaman`, `doner312`) infra'da yok — `status='planned'`.
|
||||||
|
|
||||||
|
Spoke'lar canlandıkça:
|
||||||
|
- PostHog project key per-spoke (multi-project polling)
|
||||||
|
- Per-spoke budget alloc (`Per-Project Budget` PRD §9.2)
|
||||||
|
- `GITEA_REPO_<KEY>` per-spoke (mevcut env mapping zaten supportluyor)
|
||||||
|
|
||||||
|
**Ne zaman:** İlk yeni spoke canlanınca.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 8. Minor / Düşük öncelik
|
||||||
|
|
||||||
|
- **`pattern_bundle` UI surface** — bundle mode tetiklendiğinde `/insights/patterns` ayrı bir başlık altında göstermek
|
||||||
|
- **Cost dashboard chartlar** — şu an tablo; recharts ile daily trend + by-tier stacked bar
|
||||||
|
- **`POST /api/webhooks/gitea`** — Gitea webhook receiver yazıldı (eski github route silindi). Polling primary kalsın ama webhook eklenince real-time olur. Cloudflare/Tailscale çözümü gerekli.
|
||||||
|
- **github-sync job rename** — BullMQ scheduler state'ini bozmamak için kaldı, çalışıyor; ileride manual cleanup ile `issue-sync` yapılabilir
|
||||||
|
- **Sase.tr typecheck düzelt** — `apps/web` pre-existing errors var (`FULL_PLAN_BRAND_LIMIT` eksik, `@radix-ui/react-accordion` types eksik). Faz 2 patch'imiz etkilemedi ama temizlik borç
|
||||||
Reference in New Issue
Block a user