"""Garde-fou de non-régression pour l'équilibrage du corpus (voir
`training_data.py`'s propre commentaire de tête) : chaque technique doit
avoir exactement le même nombre d'`utterances` que chaque autre, par
locale — un déséquilibre entre classes est une source réelle de
classifications confiantes mais fausses sur une phrase jamais vue (constaté
en pratique — voir l'historique Git de ce fichier, trois tentatives
d'équilibrer vers un nombre plus élevé ont toutes dégradé le F1 agrégé de
`test/recipe-matching/tech-step-eval.test.ts` avant que la stratégie
actuelle — équilibrer vers le maximum déjà présent dans le corpus, pas un
nombre choisi dans l'absolu — ne passe cette même gate)."""

from intent_service.training_data import TECH_STEP_TRAINING_DATA


def test_every_technique_has_the_same_utterance_count_per_locale():
    for locale in ("fr", "en"):
        counts = {entry.uid: len(getattr(entry, locale).utterances) for entry in TECH_STEP_TRAINING_DATA}
        distinct = set(counts.values())
        assert len(distinct) == 1, (
            f"utterance counts for locale {locale!r} aren't uniform across techniques "
            f"(run augment_utterances.py to re-equalize): {counts}"
        )
