// src/lib/backlink/overview-logic.ts — logique pure du dashboard netlinking.

export type DrBucket = { label: string; count: number };

const DR_BUCKET_LABELS = [
  "0–20",
  "21–40",
  "41–60",
  "61–80",
  "81–100",
  "N/A",
] as const;

export function drBucketLabel(value: number | null): string {
  if (value == null) return "N/A";
  if (value <= 20) return "0–20";
  if (value <= 40) return "21–40";
  if (value <= 60) return "41–60";
  if (value <= 80) return "61–80";
  return "81–100";
}

/** Toujours les 6 buckets dans l'ordre, counts à 0 inclus. */
export function buildDrBuckets(values: (number | null)[]): DrBucket[] {
  const counts = new Map<string, number>(DR_BUCKET_LABELS.map((l) => [l, 0]));
  for (const v of values) {
    const label = drBucketLabel(v);
    counts.set(label, (counts.get(label) ?? 0) + 1);
  }
  return DR_BUCKET_LABELS.map((label) => ({
    label,
    count: counts.get(label) ?? 0,
  }));
}

export type SuggestedAction = { label: string; href: string };

/** F6 — dérivation déterministe des actions suggérées, par ordre de priorité. */
export function suggestedActions(input: {
  lostSite: number;
  toxicSite: number;
  prospects: number;
  opportunities: number;
}): SuggestedAction[] {
  const actions: SuggestedAction[] = [];
  if (input.lostSite > 0)
    actions.push({
      label: `${input.lostSite} lien(s) perdu(s) à reconquérir`,
      href: "/backlink/planning",
    });
  if (input.toxicSite > 0)
    actions.push({
      label: `${input.toxicSite} toxique(s) à examiner (disavow)`,
      href: "/backlink/planning",
    });
  if (input.prospects > 0)
    actions.push({
      label: `${input.prospects} prospect(s) à planifier`,
      href: "/backlink/planning",
    });
  if (input.opportunities > 0)
    actions.push({
      label: `${input.opportunities} opportunité(s) à prospecter`,
      href: "/backlink/recherche",
    });
  return actions;
}
