Première relation entre livres du projet. Une série contient des séries (un cycle EST une série de séries) et des PLACES dans l'ordre de lecture — pas des livres : une place sans livre est le trou qu'on vient voir. L'ordre est stocké, jamais déduit d'une année : une préquelle se lit avant le livre paru dix ans plus tôt. Les tomes non possédés se saisissent à la main, aucune source ne donnant l'ordre de lecture d'une saga. Le titre de la place survit à la suppression du livre (SetNull, pas de cascade), sans quoi perdre un exemplaire effacerait le tome 3 de la série. Les séries sont communes au foyer. Seule exception : la mise en envies d'un tome manquant, qui écrit dans une liste personnelle — c'est le seul point où les deux portées se rencontrent. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
136 lines
7.3 KiB
Markdown
136 lines
7.3 KiB
Markdown
# IDEES.md — améliorations envisagées
|
|
|
|
Ce fichier recueille les idées et corrections identifiées en cours de route, **pas encore implémentées**. Il n'a pas valeur de décision : rien ici n'est acté tant que ce n'est pas repris dans `CLAUDE.md` ou traité dans une phase.
|
|
|
|
Le travail visuel de fond (couleurs, typographie, mise en page) est repoussé volontairement : il sera fait quand les fonctionnalités seront en place.
|
|
|
|
---
|
|
|
|
## Qualité des données
|
|
|
|
### Recherche insensible aux accents
|
|
|
|
« 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.
|
|
|
|
---
|
|
|
|
## Recherche : la ligature « œ » n'est pas réduite à « oe »
|
|
|
|
Repéré le 2026-08-18 en implémentant la liste d'envies. `NormalisationTexte.Normaliser`
|
|
décompose en **NFD**, qui sépare les accents mais laisse les ligatures intactes — seul NFKD les
|
|
défait. Conséquence : `L'Œuvre` et `L'oeuvre` ne se rencontrent jamais.
|
|
|
|
Ce n'est pas propre à la liste d'envies : la même fonction alimente la **recherche du catalogue**
|
|
et la **clé unique des auteurs**. Zola a écrit *L'Œuvre*, que la BnF orthographie avec la
|
|
ligature ; un utilisateur qui tape « oeuvre » ne le trouvera pas, et ne verra pas non plus le
|
|
livre grisé dans la bibliographie.
|
|
|
|
Correction envisagée : passer en NFKD, ou traiter explicitement `œ`/`Œ` et `æ`/`Æ`. **Non fait
|
|
volontairement** — changer cette fonction déplace deux invariants en base (les colonnes
|
|
normalisées et l'index unique `CleRegroupement`). `ServiceRenormalisation` sait recalculer les
|
|
colonnes au démarrage, mais la fusion d'auteurs que la nouvelle règle provoquerait mérite d'être
|
|
regardée avant. Documenté par un test (`CleOeuvreTests.Ne_reduit_pas_la_ligature_oe`) pour que
|
|
la limite reste visible.
|
|
|
|
---
|
|
|
|
## Bibliographie : ce qui reste à creuser
|
|
|
|
La bibliographie par auteur est implémentée (voir `CLAUDE.md`). Deux pistes non traitées :
|
|
|
|
- **Plafond de 200 notices.** Suffisant pour un auteur contemporain (Werber : 203, Nothomb : 277),
|
|
très insuffisant pour un classique (Zola : 2692). L'écran le dit, mais on pourrait charger les
|
|
pages suivantes à la demande plutôt que d'annoncer un extrait.
|
|
- **OpenLibrary en second rideau.** La BnF ne connaît pas les auteurs étrangers non traduits ;
|
|
l'écran affiche alors une liste vide et l'explique. OpenLibrary expose les œuvres d'un auteur
|
|
(`/authors/{id}/works.json`) et pourrait prendre le relais — à ne faire que si le cas se
|
|
présente réellement en usage.
|
|
|
|
---
|
|
|
|
# Retours d'usage du 2026-08-18 (2ᵉ série)
|
|
|
|
Demandes et anomalies remontées après quelques jours d'usage réel. **Rien n'est acté** :
|
|
ce qui suit est la matière brute, classée par sujet, avec ce que le diagnostic a déjà établi.
|
|
|
|
## Scan et saisie d'ISBN
|
|
|
|
### Le scan caméra rate souvent sur ordinateur
|
|
|
|
**Deux remèdes appliqués**, tous deux dans `CLAUDE.md` : la **douchette USB** (champ focalisé,
|
|
validation sur `Entrée`) et surtout la **bascule de ZXing.Net vers zbar** — c'était bien le
|
|
décodeur, contrairement à ce qu'on avait conclu de mesures de vitesse.
|
|
|
|
Reste à confirmer en usage réel. Si cela ne suffisait toujours pas : choisir la caméra quand il
|
|
y en a plusieurs, exposer un curseur de zoom/torche là où l'API le permet, et laisser **déposer
|
|
une photo** du code-barres à décoder.
|
|
|
|
### ISBN `9782846391009` : résolu — c'était le décodeur
|
|
|
|
Le livre existe bien à la BnF : l'échec était **au décodage de l'image**. Confirmé le
|
|
2026-08-19 — zbar lit ce code-barres, ZXing.Net ne le lisait pas, sur le même appareil et le
|
|
même livre. La bascule est faite (voir `CLAUDE.md`).
|
|
|
|
⚠️ **À confirmer avec le livre en main** : la vérification faite jusqu'ici porte sur un EAN-13
|
|
rendu en canvas, pas sur une image de caméra.
|
|
|
|
---
|
|
|
|
# Retours d'usage du 2026-08-19 (3ᵉ série)
|
|
|
|
## Les magazines : une fiche par revue, les numéros à l'intérieur
|
|
|
|
⚠️ La demande jumelle, **les BD**, est traitée : `TypeDocument` existe (voir `CLAUDE.md`).
|
|
Restent les champs propres à la BD — série, tome, scénariste/dessinateur — à ne faire que si le
|
|
besoin se confirme, le modèle mettant aujourd'hui tous les auteurs dans `LivreAuteur` sans
|
|
distinguer les rôles. La question des **séries** est traitée (voir « Sagas et cycles » dans `CLAUDE.md`) : une BD
|
|
d'une série s'y range comme un roman.
|
|
|
|
⚠️ Rouvre la décision du lot 1, qui écartait le catalogage des périodiques faute de modèle.
|
|
Le modèle est maintenant choisi.
|
|
|
|
**Décidé le 2026-08-19 : une fiche par REVUE**, et dans sa page, la sélection d'un numéro
|
|
précis. C'est exactement ce qui évite le défaut redouté — douze numéros d'un même magazine ne
|
|
font plus douze fiches identiques, puisqu'ils partagent la fiche de leur revue.
|
|
|
|
Ce que cela demande :
|
|
|
|
- un **ISSN** sur la fiche de revue, distinct de l'ISBN. ⚠️ Ranger un code `977` dans
|
|
`Livre.Isbn` casserait tout lookup ultérieur sur cette fiche ;
|
|
- une table de **numéros** rattachés à la revue, portant au minimum un numéro et une date de
|
|
parution ;
|
|
- reprendre le flux `977` : il nomme aujourd'hui la revue et bascule sur la saisie manuelle, il
|
|
devra créer ou compléter la fiche puis proposer d'ajouter le numéro scanné. ⚠️ Les deux
|
|
chiffres de parution du code-barres **ne sont pas un numéro fiable** ; l'add-on **EAN-2**, que
|
|
zbar sait maintenant décoder, est le bon candidat — à vérifier sur des magazines réels ;
|
|
- décider ce qu'un **prêt** signifie pour une revue : on prête un numéro, pas un abonnement.
|
|
|
|
## Auteurs et bibliographie
|
|
|
|
### Homonymes : « Between two worlds », un autre Robert Harper
|
|
|
|
Constaté le 2026-08-19 en vérifiant la bibliographie de Robert A. Harper : parmi les 7 œuvres
|
|
retenues figure *Between two worlds : a new introduction to geography* (1973, Houghton Mifflin),
|
|
qui est d'un **géographe homonyme**, pas du psychothérapeute.
|
|
|
|
Le post-filtre d'auteur ne peut rien : `RapprochementAuteurs` compare des **noms**, et ces
|
|
deux-là portent le même. Départager demanderait les dates de vie (`dc:creator` les porte souvent :
|
|
« Harper, Robert A. (1915-2004) »), ce que le parser jette aujourd'hui au nettoyage ISBD.
|
|
|
|
⚠️ Ne pas en faire une urgence : une œuvre en trop se voit et s'ignore, contrairement à une œuvre
|
|
manquante. Piste si le cas se répète : conserver les dates extraites de `dc:creator` et écarter
|
|
une notice dont les dates contredisent celles majoritairement observées pour l'auteur.
|
|
|
|
### OpenLibrary en second rideau — la justification est retombée
|
|
|
|
Le cas « Robert A. Harper » semblait l'imposer : il s'est révélé être un **délai dépassé**, pas un
|
|
trou de couverture (voir `CLAUDE.md`). La BnF connaît bien cet auteur.
|
|
|
|
La piste reste valable pour les auteurs étrangers **non traduits**, avec ses deux difficultés
|
|
inchangées : résoudre un nom vers un identifiant OpenLibrary (`/search/authors.json`), étape sans
|
|
équivalent BnF et sensible aux homonymes ; et des œuvres remontées **en langue originale**, donc
|
|
non rapprochables du catalogue par `CleOeuvre` — l'écran afficherait une liste où presque rien ne
|
|
serait marqué « possédé ». À ne faire que si le cas se présente réellement.
|