import { createQuery } from '@tanstack/svelte-query'; import { api } from './client'; // Mirrors internal/api/me_recommendation_metrics.go: raw play sources are // bucketed server-side into stable surface families, grouped by intent, and // anchored by the manual-plays baseline (milestone #127). export type SurfaceMetric = { key: string; label: string; plays: number; skips: number; skip_rate: number; avg_completion: number; low_confidence: boolean; }; export type SurfaceIntent = 'go_to' | 'discovery' | 'direct'; export type SurfaceGroup = { intent: SurfaceIntent; label: string; surfaces: SurfaceMetric[]; }; export type RecommendationMetrics = { window_days: number; baseline: SurfaceMetric | null; groups: SurfaceGroup[]; }; export function getRecommendationMetrics(): Promise { return api.get('/api/me/recommendation-metrics'); } export const REC_METRICS_QUERY_KEY = ['settings', 'recommendation-metrics'] as const; export function createRecommendationMetricsQuery() { return createQuery({ queryKey: REC_METRICS_QUERY_KEY, queryFn: getRecommendationMetrics, staleTime: 60_000 }); }