FOXA-3196 : le repli respecte la langue audio préférée #1013

Merged
foXaCe merged 1 commit from passe-20261018-174500-languerepli into main 2026-10-18 16:50:51 +02:00
Owner

Résumé

FOXA-3196 — le remplacement de source après un rapport respecte la langue audio préférée.

  • dac8ecfc7 FOXA-3196 : le repli respecte la langue audio preferee

Pourquoi

Le bouton rapport remplace la source via basculerSurSignalement, qui passe par le classement du
repli
. Ce classement ne connaissait que vffDevant — un départage entre variantes françaises
(VFF avant VFQ) — et ignorait la langue choisie par l'utilisateur. La liste affichée, elle, la
respecte : orderAddonStreams(..., prefereAudioFrancais).

Conséquence : une source en VF pouvait être servie à la place d'une VO préférée après un
signalement. C'est « il choisit au hasard, sans respecter la langue ».

⚠ Rien n'est réinventé. La préférence se calcule avec OrdreLangueAudio.demandeDuFrancais
(déjà utilisée par les appelants) et l'ordre se fait avec OrdreLangueAudio.reordonner — la même
fonction
que le tri des groupes d'addons. Ce qui manquait était le câblage : la préférence
n'était pas portée par ReglesDuChoixAuto.

Ce qui change

pièce rôle
ReglesDuChoixAuto.prefereAudioFrancais un champ, rempli par reglesDepuis depuis les réglages
ordonnerPourLeRepli(candidats, regles) la décision, nommée — pour que le banc mesure la décision et pas une copie de sa forme
List<Stream>.ordonneParLanguePreferee() la forme plate du tri, une seule mise en œuvre avec celle des groupes

Le tri est stable et ne retire rien : les règles du mode (qualité, motif, premier jouable)
s'appliquent ensuite, à l'intérieur de chaque groupe de langue.

Ce qui a été mesuré

5 tests :

ce qui est mesuré comment
la VFF passe devant une source anglaise liste rendue, premier élément
sans préférence, l'ordre reçu est rendu tel quel assertSame — pas de réordonnancement fantôme
aucune source n'est retirée même population, même taille
l'ordre des groupes France, puis québécois, puis le reste
la préférence se calcule comme ailleurs reglesDepuis avec preferredAudioLanguage = "fr" → vrai, "en" → faux
./gradlew :app:testFullDebugUnitTest -Pnuvio.android.distribution=full --tests '*LeRepliRespecteLaLanguePreferenceTest*'
BUILD SUCCESSFUL — 5 tests, 0 échec

Suite complète rejouée : verte en 8m37s. detekt : vert.

Ce banc mesure le choix, pas la boîte : la preuve « signaler puis vérifier la langue servie »
demande la Freebox. Le ticket la demandait aussi, et elle reste à faire côté opérateur.

Porte jouée par la forge : « Porte / porte* » est le seul contexte qu'exige la protection de main.

Scope boundaries

orderAddonStreams (la liste affichée) n'est pas modifié : son tri existait déjà, et le groupe
d'addons appelle maintenant la même fonction plate que le repli. Aucun autre mode de sélection n'est
touché.

## Résumé FOXA-3196 — le remplacement de source après un rapport respecte la langue audio préférée. - dac8ecfc7 FOXA-3196 : le repli respecte la langue audio preferee ## Pourquoi Le bouton rapport remplace la source via `basculerSurSignalement`, qui passe par le **classement du repli**. Ce classement ne connaissait que `vffDevant` — un départage entre variantes **françaises** (VFF avant VFQ) — et ignorait la langue choisie par l'utilisateur. La liste affichée, elle, la respecte : `orderAddonStreams(..., prefereAudioFrancais)`. Conséquence : une source en **VF** pouvait être servie à la place d'une **VO préférée** après un signalement. C'est « il choisit au hasard, sans respecter la langue ». ⚠ **Rien n'est réinventé.** La préférence se calcule avec `OrdreLangueAudio.demandeDuFrancais` (déjà utilisée par les appelants) et l'ordre se fait avec `OrdreLangueAudio.reordonner` — **la même fonction** que le tri des groupes d'addons. Ce qui manquait était le **câblage** : la préférence n'était pas portée par `ReglesDuChoixAuto`. ## Ce qui change | pièce | rôle | |---|---| | `ReglesDuChoixAuto.prefereAudioFrancais` | un champ, rempli par `reglesDepuis` depuis les réglages | | `ordonnerPourLeRepli(candidats, regles)` | la décision, nommée — pour que le banc mesure la décision et pas une copie de sa forme | | `List<Stream>.ordonneParLanguePreferee()` | la forme **plate** du tri, une seule mise en œuvre avec celle des groupes | Le tri est **stable** et ne retire rien : les règles du mode (qualité, motif, premier jouable) s'appliquent ensuite, à l'intérieur de chaque groupe de langue. ## Ce qui a été mesuré 5 tests : | ce qui est mesuré | comment | |---|---| | la VFF passe devant une source anglaise | liste rendue, premier élément | | sans préférence, l'ordre reçu est rendu **tel quel** | `assertSame` — pas de réordonnancement fantôme | | aucune source n'est retirée | même population, même taille | | l'ordre des groupes | France, puis québécois, puis le reste | | la préférence se calcule comme ailleurs | `reglesDepuis` avec `preferredAudioLanguage = "fr"` → vrai, `"en"` → faux | ``` ./gradlew :app:testFullDebugUnitTest -Pnuvio.android.distribution=full --tests '*LeRepliRespecteLaLanguePreferenceTest*' BUILD SUCCESSFUL — 5 tests, 0 échec ``` Suite complète rejouée : **verte en 8m37s**. detekt : **vert**. Ce banc mesure le **choix**, pas la boîte : la preuve « signaler puis vérifier la langue servie » demande la Freebox. Le ticket la demandait aussi, et elle reste à faire côté opérateur. Porte jouée par la forge : « Porte / porte* » est le seul contexte qu'exige la protection de `main`. ## Scope boundaries `orderAddonStreams` (la liste affichée) n'est pas modifié : son tri existait déjà, et le groupe d'addons appelle maintenant la même fonction plate que le repli. Aucun autre mode de sélection n'est touché.
FOXA-3196 : le repli respecte la langue audio preferee
All checks were successful
PR Template Check / validate_pr_body (pull_request) Successful in 1s
Porte / porte (pull_request) Successful in 13m56s
dac8ecfc70
Le bouton rapport remplace la source via `basculerSurSignalement`, qui passe par le classement du
repli. Ce classement ne connaissait que `vffDevant` — un departage entre variantes FRANCAISES — et
ignorait la langue choisie : une source en VF pouvait etre servie a la place d'une VO preferee.
La liste affichee, elle, la respecte (`orderAddonStreams(..., prefereAudioFrancais)`).

Rien n'est reinvente : la preference se calcule avec `OrdreLangueAudio.demandeDuFrancais` (deja
utilisee par les appelants) et l'ordre se fait avec `OrdreLangueAudio.reordonner` (la meme fonction
que le tri des groupes d'addons). Ce qui manquait etait le CABLAGE : la preference n'etait pas
portee par `ReglesDuChoixAuto`.

  · `ReglesDuChoixAuto.prefereAudioFrancais`, rempli par `reglesDepuis` depuis les reglages ;
  · `ordonnerPourLeRepli` : la decision, nommee et mesurable ;
  · `List<Stream>.ordonneParLanguePreferee()` : la forme plate, une seule mise en oeuvre avec
    celle des groupes.

5 tests, dont l'ordre recu rendu TEL QUEL quand le francais n'est pas prefere (pas de
reordonnancement fantome) et l'absence de retrait (le tri change l'ordre, jamais la population).
Suite complete : verte en 8m37s. detekt : vert.
foXaCe scheduled this pull request to auto merge when all checks succeed 2026-10-18 16:33:19 +02:00
foXaCe merged commit d267e3c414 into main 2026-10-18 16:50:51 +02:00
foXaCe deleted branch passe-20261018-174500-languerepli 2026-10-18 16:50:51 +02:00
Sign in to join this conversation.
No reviewers
No labels
montee-majeure
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
foXaCe/NuvioTV!1013
No description provided.