/**
 * departments.js — Détection du département probable par MOTS-CLÉS (instantané, côté client).
 *
 * Sert au composer de ticket (et au SMS/courriel) : en tapant le sujet en langage naturel,
 * on fait ressortir le(s) département(s) le(s) plus probable(s) → chips cliquables, sans choisir dans une liste.
 * `category` = la catégorie du ticket (préfixe [Cat]) ; `queue` = l'équipe notifiée (files de l'Inbox).
 *
 * Éditer ici pour ajuster les mots-clés — une seule source.
 */
export const DEPARTMENTS = [
  { category: 'Support', queue: 'Supports', icon: 'wifi', color: 'primary',
    re: /\b(wi-?fi|internet|lent[e]?|ralenti|panne|coup[ée]+|connexion|connecter?|signal|modem|routeur|red[ée]marr|d[ée]connect|d[ée]branch|intermittent|latence|ping|ne marche|ne fonctionne|pas d['e]internet|hors service|bug)\b/i },
  { category: 'Facturation', queue: 'Facturations', icon: 'receipt_long', color: 'green-7',
    re: /\b(factur|paiement|payer|pay[ée]|solde|rembours|pr[ée]l[èe]v|carte de cr[ée]dit|montant|frais|cr[ée]dit|impay[ée]|retard de paiement|re[çc]u|virement|interac|trop per[çc]u)\b/i },
  { category: 'Installation', queue: 'Technicien', icon: 'construction', color: 'orange-7',
    re: /\b(installation|installer|rendez-?vous|rdv|branchement|brancher|raccord|technicien|d[ée]placement|visite)\b/i },
  { category: 'Télévision', queue: 'Technicien', icon: 'live_tv', color: 'purple-6',
    re: /\b(t[ée]l[ée]vision|t[ée]l[ée]\b|\btv\b|iptv|cha[îi]ne|d[ée]codeur|illico|ministra|enregistreur|t[ée]l[ée]command)\b/i },
  { category: 'Téléphonie', queue: 'Technicien', icon: 'call', color: 'teal-7',
    re: /\b(t[ée]l[ée]phon|voip|tonalit[ée]|ligne t[ée]l|appel sortant|messagerie vocale|combin[ée]|sip)\b/i },
  { category: 'Commercial', queue: 'Service à la clientèle', icon: 'sell', color: 'blue-7',
    re: /\b(forfait|abonnement|prix|soumission|nouveau client|d[ée]m[ée]nage|upgrade|am[ée]liorer|vitesse|offre|promotion|r[ée]siliation|r[ée]silier|annulation|annuler|fermer le compte)\b/i },
]

/**
 * suggestDepartments(text) → départements probables, classés par nombre de mots-clés trouvés.
 * Renvoie [{ category, queue, icon, color, keyword, score }]. Le 1er = le plus probable.
 */
export function suggestDepartments (text) {
  const t = String(text || '')
  if (t.trim().length < 3) return []
  const hits = []
  for (const d of DEPARTMENTS) {
    const g = new RegExp(d.re.source, 'gi')
    const matches = t.match(g)
    if (matches && matches.length) hits.push({ category: d.category, queue: d.queue, icon: d.icon, color: d.color, keyword: matches[0].toLowerCase(), score: matches.length })
  }
  return hits.sort((a, b) => b.score - a.score)
}
