-- Yönetim paneli için site istatistikleri (src/lib/pc/track.ts).
-- IP adresi saklanmaz; ziyaretçi, tarayıcıda üretilen rastgele bir kimlikle sayılır.
-- 180 günden eski satırlar zaman zaman otomatik silinir.

-- Sayfa görüntülemeleri
create table if not exists visits (
  id          bigserial primary key,
  visitor_id  text not null,
  user_id     text,
  path        text not null,
  referrer    text,
  source      text not null,
  device      text not null,
  browser     text not null,
  created_at  timestamptz not null default now()
);

create index if not exists visits_created_idx on visits (created_at);
create index if not exists visits_visitor_idx on visits (visitor_id, created_at);
create index if not exists visits_user_idx on visits (user_id, created_at);

-- Her çözümleme denemesi: sonucu, hata nedeni, süresi
create table if not exists analysis_runs (
  id              bigserial primary key,
  user_id         text,
  visitor_id      text,
  url             text,
  host            text,
  mode            text,
  status          text not null,
  reason          text,
  issues          jsonb not null default '[]'::jsonb,
  detail          text,
  duration_ms     integer not null default 0,
  parts_read      integer,
  prebuilt_price  numeric,
  parts_total     numeric,
  verdict         text,
  cpu             text,
  gpu             text,
  created_at      timestamptz not null default now()
);

create index if not exists analysis_runs_created_idx on analysis_runs (created_at);
create index if not exists analysis_runs_user_idx on analysis_runs (user_id, created_at);

-- Diğer olaylar: mağazaya yönlendirme, kaydet, yazdır, giriş/kayıt sorunu, tarayıcı hatası…
create table if not exists app_events (
  id          bigserial primary key,
  visitor_id  text,
  user_id     text,
  type        text not null,
  path        text,
  label       text,
  data        jsonb,
  created_at  timestamptz not null default now()
);

create index if not exists app_events_created_idx on app_events (created_at);
create index if not exists app_events_type_idx on app_events (type, created_at);
create index if not exists app_events_user_idx on app_events (user_id, created_at);
