diff --git a/IDEES.md b/IDEES.md index dc71e1f..dfad248 100644 --- a/IDEES.md +++ b/IDEES.md @@ -280,3 +280,46 @@ Non actés : ce fichier ne fait pas autorité, `CLAUDE.md` reste la référence. la liste : une bibliographie compte des dizaines de lignes. La règle « sans ISBN, pas de couverture, et on n'en invente pas » reste entière — la formule OpenLibrary s'applique à l'ISBN déjà repris du `dc:identifier`, et le substitut à initiale sert de repli. + +## Lot J — Le scan là où il manque + +- **J1. Scanner depuis une série**, sur une place vide. Le flux existe déjà en pièces détachées + (`/ajout` décode, la place sait accueillir un livre créé par ISBN), mais il faut passer par + l'écran d'ajout puis revenir rattacher à la main. ⚠️ Le retour doit ramener **sur la série et + sur la place visée** : sans cela on rattache le mauvais tome. Les revues (`977`) restent hors + de ce flux — `ElementSerie.LivreId` ne pointe que vers `Livre`. +- **J2. Scanner depuis « ajouter une envie »**. `/souhaits/ajout` propose déjà la voie « par + ISBN » en saisie ; c'est le même composant de scan que `/ajout`, sans création de `Livre` au + bout. Cas d'usage direct : le livre est en main, en librairie. + +## Lot K — Couvertures et saisie + +- **K1. Photographier la couverture** quand aucune source n'en fournit. ⚠️ C'est le premier + point du projet qui **stocke un fichier**, ce que « Ebooks : fiches uniquement » écartait + jusqu'ici : espace disque YunoHost, sauvegarde plus lourde, et cache hors-ligne à alimenter + autrement que par le magasin `couvertures` (dont la clé est une URL). À trancher avant de + coder : où vivent les octets (`data_dir` ? base ?), et quelle taille maximale. La caméra, + elle, est déjà ouverte par `scanner-camera.js`. +- **K2. Les tirets de l'ISSN, posés automatiquement**. Un ISSN se coupe toujours au même + endroit (`2466-6718`, quatre chiffres puis quatre), contrairement à l'ISBN dont les tranches + dépendent de l'éditeur — c'est donc bien plus simple que `FormatageIsbn`. ⚠️ Trancher où : + la règle actée est que les champs de **saisie** gardent la valeur nue (découper pendant la + frappe se bat avec l'utilisateur, et la douchette tape des chiffres). Le tiret est donc + d'abord un travail d'**affichage** ; s'il est posé à la saisie, ce doit être à la validation, + jamais à chaque frappe, et la valeur stockée reste nue pour que `bib.issn` reste interrogeable. + +## Lot L — Rendre l'attente visible + +- **L1. Un indicateur pendant les appels lents**, faute de quoi une recherche BnF (≈1 s par + page, jusqu'à dix pages pour les nouveautés) se lit comme une application plantée. ⚠️ Le + besoin n'est pas décoratif : le lot H a montré qu'un écran qui ne dit rien pousse à recliquer, + donc à relancer l'appel. Doit couvrir au minimum le lookup ISBN, les recherches BnF, les + bibliographies et les nouveautés. À faire avec les règles déjà tenues : un bouton en cours + d'appel se désactive avec **son motif**, et une source muette garde ses états + `EtatSourceBibliographie` — un indicateur ne remplace pas le message d'échec. + +## Lot M — Détails d'écran + +- **M1. Séries : « Nom d'une série » et le bouton « Créer » sur la même ligne.** Le champ et son + bouton s'empilent aujourd'hui. ⚠️ À 320 px, la ligne doit rester lisible : le champ prend la + place restante, le bouton garde sa largeur propre — et le libellé ne se tronque pas.