diff --git a/CLAUDE.md b/CLAUDE.md index 8ee757c..95d3d17 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -465,6 +465,67 @@ livre sorti depuis six mois qu'on avait oublié, pas celui prêté hier. (`ServiceLivresApi.EnUtc`). Sans cela le prêt se décalerait d'un jour pour la moitié du globe. Vérifié en exécution : saisie du 12/08 → `2026-08-11 22:00` en base (CEST). +## Interface — décisions actées le 2026-08-18 + +Retours d'usage d'`IDEES.md`, appliqués et donc retirés de ce fichier-là. + +### La fiche d'un livre a deux modes, et le mode est dans l'URL + +`/livres/{id}` consulte, `/livres/{id}/edition` modifie. Ouvrir une fiche depuis le catalogue ne +doit rien pouvoir casser — sur mobile on ouvre une fiche pour *regarder*, et l'ancienne page +plaçait un formulaire vivant sous le pouce. + +Le mode n'est **pas** un booléen interne : le mettre dans l'adresse rend l'écran d'édition +partageable et fait du bouton « retour » du navigateur une sortie d'édition naturelle. Vérifié. + +⚠️ **Piège Blazor à connaître.** Les deux `@page` visent le même composant avec le même `Id` : +passer de l'un à l'autre ne change **aucun paramètre**, et le routeur ne déclenche alors **aucun +nouveau rendu**. Constaté en exécution : l'URL passait à `/edition`, l'écran restait en +consultation (alors qu'un chargement direct de l'URL fonctionnait, ce qui masque le défaut). +Le composant s'abonne donc à `NavigationManager.LocationChanged` pour se redessiner lui-même. + +### Ce qui reste manipulable sans entrer en édition + +Deux exceptions assumées, parce que ce ne sont pas des modifications de la *fiche* : + +| Action | Où | Pourquoi hors « Éditer » | +|---|---|---| +| Statut de lecture | bloc dédié sur la fiche en consultation | Action la plus fréquente de l'application, et elle ne touche qu'à **ma** lecture, pas à la fiche commune. L'enfouir derrière « Éditer » serait un recul | +| Prêter / marquer rendu | bloc « Prêt » sur la fiche en consultation | Gestes du quotidien, et le prêt est une donnée **du foyer** : n'importe qui doit pouvoir noter un retour sans ouvrir un formulaire d'édition | + +Corollaire : le statut modifié depuis la consultation doit **rafraîchir la saisie du formulaire +d'édition**, sinon un passage ultérieur en édition réécrirait l'ancienne valeur. + +La **suppression**, elle, n'est offerte que dans le mode édition : c'est le seul écran où l'on +vient pour changer quelque chose. + +### La liste ne se manipule pas + +Dans le catalogue, le statut de lecture est une **pastille en lecture seule**, sur la même ligne +que les autres étiquettes. Les trois boutons *À lire / En cours / Lu* directement actionnables +depuis chaque carte ont été retirés : trop faciles à déclencher par erreur en faisant défiler. + +Pas de pastille = « non commencé », cohérent avec l'absence de ligne en base. + +### Le format ne s'affiche que pour les ebooks + +Un livre est **physique par défaut** : c'est le cas majoritaire, et l'étiquette sur chaque ligne +n'apprenait rien. Seul « Numérique » apparaît, dans la liste comme sur la fiche. + +⚠️ Conséquence à ne pas casser : le formulaire d'ajout **doit** présélectionner *Physique*, +sinon on créerait des fiches sans format en croyant que « rien d'affiché = physique ». C'est +acquis sans code particulier (`Format.Physique` vaut 0, valeur par défaut de l'énumération) — +mais si l'énumération change d'ordre un jour, ce comportement tombe. + +### Couverture agrandissable au clic + +Vignette et fiche : cliquer l'image l'affiche en grand sur fond sombre, fermeture au clic +extérieur ou par Échap. Le calque est focalisé à l'ouverture (`FocusAsync`) — sans focus, aucun +`keydown` ne lui parviendrait et Échap resterait sans effet. + +**Le substitut à initiale n'est jamais cliquable** : le bouton déclencheur n'est rendu que +lorsqu'une URL de couverture existe. Sans couverture, il n'y a rien à agrandir. + ## Historique du projet (pourquoi ces choix) L'utilisateur a testé deux solutions existantes avant de se lancer dans un projet custom : diff --git a/IDEES.md b/IDEES.md index b8b83ef..800f4ea 100644 --- a/IDEES.md +++ b/IDEES.md @@ -6,40 +6,6 @@ Le travail visuel de fond (couleurs, typographie, mise en page) est repoussé vo --- -## Interface — retours d'usage - -### Agrandir la couverture au clic - -Cliquer sur l'image d'un livre doit l'afficher en grand. Aujourd'hui elle est figée à la taille de la vignette. - -À prévoir : gérer le cas où il n'y a pas de couverture (le substitut à initiale ne doit pas être cliquable), et la fermeture au clic extérieur ou via Échap. - -### Statut de lecture en lecture seule dans la liste - -Actuellement les trois boutons *À lire* / *En cours* / *Lu* sont modifiables directement depuis chaque fiche du catalogue. Ils devraient être **en lecture seule** à cet endroit, et remontés **au niveau de la ligne du type de livre**. - -La modification du statut se fera alors depuis l'écran d'édition. - -### N'afficher que « Numérique » - -Le format ne doit apparaître **que pour les ebooks**. Un livre est **physique par défaut** — c'est le cas majoritaire, l'afficher partout n'apporte rien et alourdit la liste. - -Conséquence à vérifier au moment de l'implémenter : le formulaire d'ajout doit alors proposer *Physique* comme valeur par défaut sélectionnée, et non un choix vide. - -### Fiche livre en lecture seule, avec bouton « Éditer » - -Cliquer sur un livre ouvre aujourd'hui directement l'édition. Il faudrait afficher **la même page en lecture seule**, avec un bouton pour basculer en modification. - -Évite les modifications accidentelles, notamment sur mobile où l'on ouvre une fiche simplement pour la consulter. - -### Regrouper les livres par auteur - -Cliquer sur le nom d'un auteur doit afficher **tous les livres de cet auteur présents dans la bibliothèque**. - -Point d'attention : l'auteur est aujourd'hui un simple champ texte sur `Livre`, sans table dédiée. Un regroupement par égalité de chaîne fonctionnera pour l'essentiel, mais échouera sur les variantes d'orthographe (« Émile Zola » vs « Emile Zola »). À rapprocher du point sur les accents ci-dessous. - ---- - ## Qualité des données ### Titres BnF contenant le nom de l'auteur @@ -59,7 +25,9 @@ Correction envisagée : une fois `dc:creator` nettoyé, si le titre **se termine ### Recherche insensible aux accents -« Emile » ne trouve pas « Émile ». Gênant sur un fonds francophone, et lié au regroupement par auteur ci-dessus. +« Emile » ne trouve pas « Émile ». Gênant sur un fonds francophone. + +**Semble réglé par la refonte du schéma** (colonnes normalisées, voir `CLAUDE.md`) : vérifié le 2026-08-18 sur l'API, `recherche=Emile` remonte bien les livres d'« Émile Zola ». Laissé ici faute d'avoir été traité comme un point à part entière — à confirmer sur un fonds réel avant de le retirer. ---