"""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}" )