717e4ae3690b3570a8339bb657169944efebb87e
Three additions to the VIN Decode Observability dashboard, all read-only. Faz 2a — Error fingerprint drill-down - New route /projects/sase/vin-decode/errors/[key] where [key] is one of the eight bucket keys (BUDGET_EXCEEDED, UNKNOWN_VIN, TIMEOUT, …). - getErrorBucketDetail(key, range) returns: total + unique-user count, hourly time series, top 10 affected brands (joined to brands.name/ slug), top providers (winning + chain attempts from timings keys), top 20 affected users with link to their detail page, six distinct sample error messages, last 30 raw failures (sanitized VIN, source, RT, message). - Error breakdown cards on the main dashboard now link to this page with the current time range preserved. - ERROR_BUCKET_KEYS + ErrorBucketKey exported so the [key] route validates against the same list. Faz 2b — Deploy regression analysis - listSaseDeploys(limit) fetches the Sase.tr Coolify app's recent finished deployments via the Coolify API (COOLIFY_API_TOKEN). - analyzeDeployRegressions(deploys) slices a 30-minute window before deploy.startedAt and after deploy.finishedAt, computes the success-rate delta, and flags rows where the drop ≥ 10pp (and both windows have ≥ 5 samples). - Dashboard card lists last ~10 deploys with before/after rates and Δ pp, color-coded; "regression" badge on flagged rows. Faz 2c — BIP integration - getVinRelatedInsights() reads from the panel-pg `insights` table: type='provider_quality' (always VIN-related by prompt-tag routing) + bug_triage insights whose body mentions VIN/decode/provider keywords. Deduped, severity-then-recency sorted. - New dashboard card surfaces insight titles with severity + type badges, occurrence/user counts, confidence, and a link to the Gitea issue if one was opened. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Süper Panel
Internal admin panel — sp.semih.ai — Tailscale-only access.
Phase 0 skeleton: Next.js 16 + Better Auth (email/password + TOTP) + Prisma + Postgres + Redis. Deployed on Coolify, fronted by Traefik with Let's Encrypt (Cloudflare DNS-01).
See super-panel-prd.md for the full PRD.
Local dev
pnpm install
cp .env.example .env
# fill DATABASE_URL_PANEL, BETTER_AUTH_SECRET (32+ chars)
pnpm --filter @panel/web prisma:generate
pnpm dev
Production deploy
Pushes to main trigger Coolify deploy via webhook.
Deploy status
First production deploy: 2026-05-13. Live at https://sp.semih.ai (Tailscale only).
Description
Languages
TypeScript
99.2%
CSS
0.4%
Shell
0.2%
Dockerfile
0.2%