import api from './client';
import type { CoachingInsight, CoachingInsightsResponse, CoachingScore } from '../types';

/**
 * Smart Coaching API client.
 * Backend: app/routes/coaching.py — rules engine with a 5-minute server-side cache.
 */
export const coachingApi = {
  /** Fetch all coaching insights plus the overall health score. */
  getInsights: async (): Promise<CoachingInsightsResponse> => {
    const { data } = await api.get<CoachingInsightsResponse>('/api/coaching/insights');
    return data;
  },

  /** Fetch just the overall health score (lighter call for widgets). */
  getScore: async (): Promise<CoachingScore> => {
    const { data } = await api.get<CoachingScore>('/api/coaching/score');
    return data;
  },

  /** Dismiss an insight (hidden for 24 hours). */
  dismissInsight: async (insightId: string): Promise<void> => {
    await api.post(`/api/coaching/insights/${encodeURIComponent(insightId)}/dismiss`);
  },
};

// Convenience named exports (legacy call-sites)
export const getInsights = coachingApi.getInsights;
export const getScore = coachingApi.getScore;
export const dismissInsight = coachingApi.dismissInsight;

export type { CoachingInsight, CoachingInsightsResponse, CoachingScore };
export type CoachingResponse = CoachingInsightsResponse;