Rassemble au catalogue les tomes qui racontent la même histoire
Les livres d'une même série se suivaient au hasard de l'alphabet, et rien ne disait qu'ils allaient ensemble. Ils tiennent maintenant sous le nom de leur série, à la place qu'occupait le premier d'entre eux — l'ordre général ne bouge donc pas — et ce nom mène à la série, seul écran qui montre aussi les tomes qui manquent. Le regroupement ne cache ni ne duplique rien : une bascule le défait, et un livre rattaché à deux séries ne paraît qu'une fois, toujours sous la même. La règle est une fonction pure, avec ses tests. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -3270,6 +3270,63 @@ corrigeant « Christophe » en « Christophé », livre enregistré et relu par
|
||||
rôles (`Scénario`, `Dessin`) et ses deux thèmes, fiche rouverte en édition avec ses listes
|
||||
garnies, aucun débordement horizontal.
|
||||
|
||||
## Le catalogue rassemble les tomes d'une série (2026-08-22)
|
||||
|
||||
Demandé en usage : « grouper les livres/BD d'une même série ensemble avec le nom de la série ;
|
||||
si on clique dessus, ça envoie à la série ».
|
||||
|
||||
### Deux décisions prises avec l'utilisateur
|
||||
|
||||
| Question | Décision | Pourquoi |
|
||||
|---|---|---|
|
||||
| Où se place le bloc ? | **À la place de son premier tome** dans l'ordre du catalogue | L'ordre général ne bouge pas : on retrouve « La Légende de Drizzt » entre « Dracula » et « Dune ». Grouper en tête ou en fin aurait défait l'alphabet là où l'on cherche un livre à sa lettre |
|
||||
| Peut-on s'en passer ? | **Bascule « Grouper les livres d'une même série »**, active par défaut | Décochée, on retrouve exactement le catalogue d'avant. Elle **défait le regroupement**, elle ne masque aucun livre — c'est la lecture retenue sur les deux possibles |
|
||||
|
||||
⚠️ **La bascule n'entre pas dans le compteur du bouton « Filtrer ».** Ce compteur existe parce
|
||||
qu'un filtre replié rendrait des livres invisibles sans qu'on sache pourquoi ; grouper ne cache
|
||||
rien, et se voit dans la liste elle-même. Compter un réglage inoffensif diluerait l'avertissement
|
||||
que le compteur porte.
|
||||
|
||||
### Ce que le regroupement ne fait pas
|
||||
|
||||
- **Il ne masque ni ne déplace hors de la liste.** Un livre écarté par un filtre reste écarté, un
|
||||
livre visible reste visible, et le compteur en tête continue de dire des **livres** (« 6
|
||||
livres »), pas des blocs. Un bloc ne montre donc que les tomes que la liste contient — sur une
|
||||
recherche, « 1 tome ».
|
||||
- **Il ne va pas chercher les tomes manquants** : le catalogue ne connaît que ce qu'on possède.
|
||||
C'est précisément pourquoi le nom du bloc **mène à la série**, seul écran qui montre les trous.
|
||||
- ⚠️ **Il ne duplique jamais un livre.** Le modèle autorise un livre dans plusieurs séries (pas
|
||||
d'unicité sur `LivreId` seul) ; deux cartes du même exemplaire feraient mentir le compteur. La
|
||||
série retenue est la **première par ordre alphabétique** — critère explicable et surtout
|
||||
**stable**, là où « celle que l'API a rendue en premier » changerait le nom du bloc d'un
|
||||
chargement à l'autre. La fiche livre, elle, montre toutes ses séries.
|
||||
- **Un seul tome possédé forme quand même un bloc** : c'est ce qui dit à quoi ce livre appartient.
|
||||
|
||||
### Les séries ne sont lues qu'une fois par visite
|
||||
|
||||
⚠️ Le catalogue se recharge **à chaque frappe** dans la recherche. Y joindre une lecture des
|
||||
séries ferait une requête par caractère pour une liste qui ne bouge pas pendant qu'on tape. Elles
|
||||
sont donc lues à l'arrivée sur l'écran et à chaque bascule du réseau. Prix assumé : un tome
|
||||
rattaché depuis un autre écran n'apparaît groupé qu'au prochain passage au catalogue.
|
||||
|
||||
**Une lecture ratée ne coûte rien** : sans série, la liste s'affiche à plat — l'écran d'avant.
|
||||
Hors-ligne, elle retombe d'elle-même sur l'instantané `series`, déjà tenu à jour.
|
||||
|
||||
### Le regroupement est une fonction pure, donc éprouvable
|
||||
|
||||
`Services/GroupementCatalogue.cs` ne dépend d'aucun composant : six tests portent sur ce qui a
|
||||
été **décidé** — la place du bloc, l'ordre de lecture à l'intérieur, le livre à deux séries qui
|
||||
n'apparaît qu'une fois et toujours sous la même, la liste plate sans séries, le bloc à un seul
|
||||
tome, et le filtre qui ne se laisse pas défaire. C'est le même parti que `FiltreLivresLocal` :
|
||||
ce qui tient une règle sort du balisage.
|
||||
|
||||
**Vérifié en exécution** (320 px puis 1280 px, base de développement garnie de trois tomes et
|
||||
d'un livre hors série) : blocs « L'Elfe noir » (2 tomes, dans l'ordre de **lecture** — l'inverse
|
||||
de l'alphabet) et « La Trilogie des Elfes noirs » (1 tome) posés à la place de leur premier tome,
|
||||
compteur toujours « 6 livres », bascule qui défait et refait le groupement sans qu'aucune carte
|
||||
n'apparaisse ni ne disparaisse (6 dans les deux cas), recherche « terre natale » → « 1 livre » et
|
||||
un bloc à un tome, clic sur le nom → `/series/8`. Aucun débordement horizontal. 623 tests au vert.
|
||||
|
||||
## La 7ᵉ série vérifiée en navigateur — trois défauts, tous invisibles aux tests (2026-08-21)
|
||||
|
||||
La série Q à Y s'était close sur un aveu : « **aucun** écran n'a été regardé s'afficher ». Le
|
||||
|
||||
Reference in New Issue
Block a user