using System.Collections.Generic;
using System.Linq;
namespace ManagerService.Services
{
///
/// Liste fixe des thèmes de questions visiteurs.
///
/// ⚠️ **Fixe, et c'est le point de conception.** Des thèmes découverts librement par l'IA
/// colleraient mieux à chaque lieu, mais les agrégats mensuels ne se compareraient plus :
/// « Horaires » en janvier et « Questions d'horaires » en février seraient deux lignes
/// distinctes, et la courbe que le client regarde ne voudrait rien dire. Or la table
/// d'agrégats existe précisément pour survivre à la purge et porter cet historique.
///
/// ⚠️ **Ajouter un thème est possible, en renommer un ne l'est pas** : le libellé est la
/// clé de , donc le renommer coupe l'historique
/// en deux. Un nouveau thème, lui, apparaît simplement à partir du mois où il est ajouté.
///
public static class QuestionThemes
{
public const string Other = "Autre";
public static readonly IReadOnlyList All = new[]
{
"Horaires et tarifs",
"Accès et transport",
"Accessibilité",
"Œuvres et contenu",
"Services sur place",
"Événements et animations",
"Orientation dans le lieu",
Other,
};
///
/// Ramène la réponse du modèle sur un thème connu. Une valeur inattendue tombe dans
/// « Autre » plutôt que de créer une ligne d'agrégat parasite — le modèle peut
/// paraphraser, la table ne doit pas en souffrir.
///
public static string Normalize(string raw)
{
if (string.IsNullOrWhiteSpace(raw)) return Other;
var trimmed = raw.Trim().Trim('"', '.', '-', ' ');
return All.FirstOrDefault(t => string.Equals(t, trimmed, System.StringComparison.OrdinalIgnoreCase))
?? Other;
}
}
}