'use client';
import { useQuery } from '@tanstack/react-query';
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';
import { useFeatureFlag } from '@/hooks/use-feature-flag';
import { apiFetch } from '@/lib/api/client';
import type { InterestScore } from '@/lib/services/interest-scoring.service';
// ─── Score tier helpers ───────────────────────────────────────────────────────
function getScoreTier(score: number): { label: string; className: string } {
if (score >= 80)
return { label: 'Hot', className: 'bg-green-100 text-green-800 border-green-200' };
if (score >= 60)
return { label: 'Warm', className: 'bg-yellow-100 text-yellow-800 border-yellow-200' };
if (score >= 40)
return { label: 'Cool', className: 'bg-orange-100 text-orange-800 border-orange-200' };
return { label: 'Cold', className: 'bg-gray-100 text-gray-700 border-gray-200' };
}
// ─── Component ────────────────────────────────────────────────────────────────
interface InterestScoreBadgeProps {
interestId: string;
}
export function InterestScoreBadge({ interestId }: InterestScoreBadgeProps) {
const featureEnabled = useFeatureFlag('ai_interest_scoring');
const { data, isLoading } = useQuery<{ data: InterestScore }>({
queryKey: ['interest-score', interestId],
queryFn: () => apiFetch(`/api/v1/ai/interest-score?interestId=${interestId}`),
enabled: featureEnabled,
staleTime: 60 * 60 * 1000, // 1 hour - mirrors server-side cache TTL
});
if (!featureEnabled) return null;
if (isLoading || !data) return null;
const score = data.data;
const { label, className } = getScoreTier(score.totalScore);
const { breakdown } = score;
return (
Interest Score Breakdown
Total: {score.totalScore}/100