Le statut de lecture sort de `Livre` vers une table par utilisateur : le
livre reste commun au foyer, sa lecture devient personnelle. La decision
« collection commune » n'est pas remise en cause.
L'auteur passe d'un champ texte libre a une table dediee avec forme
normalisee, prerequis du regroupement par auteur et de la recherche
insensible aux accents. Le regroupement automatique est limite aux
variantes sures ; les rapprochements ambigus doivent etre proposes, pas
appliques silencieusement — une fusion erronee se defait mal.
IDEES.md : la liste d'envies sera personnelle elle aussi, et exportable.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Retours d'usage a traiter plus tard : agrandissement de la couverture au
clic, statut de lecture en lecture seule dans la liste et remonte au
niveau du type, affichage du format limite aux ebooks (physique par
defaut), fiche en lecture seule avec bouton d'edition, regroupement des
livres par auteur.
Documente aussi un cas de donnee sale mesure sur l'ISBN 9782749942636 :
la notice BnF colle le nom de l'auteur en fin de titre sans separateur
ISBD, donc la regle de nettoyage existante ne peut pas s'appliquer. Ce
n'est ni un doublon ni un defaut du parsing.
Garde en fin de fichier l'idee des livres souhaites (bibliographie par
auteur avec ouvrages possedes grises), hors perimetre v1, avec ses
implications sur le modele de donnees.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- Couvertures OpenLibrary : 502 intermittents mesures sur un meme ISBN.
Ne pas valider l'URL par un HEAD ; c'est a l'interface de gerer l'image
cassee.
- OpenLibrary : certaines editions n'ont aucun champ `authors`, le double
appel documente ne suffit donc pas. Le repli via `/works/` est desormais
implemente et documente.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- Architecture serveur : x86_64, publish `linux-x64`.
- Production des binaires : compilation locale + release manuelle, via un
script ecrit pour etre reutilisable en CI plus tard. Compiler sur le
serveur est explicitement exclu.
- Cache hors-ligne : IndexedDB, retenu pour permettre recherche et tri
hors-ligne sur toute la bibliotheque.
- Notices BnF multiples : demander systematiquement, l'exactitude de
l'edition primant sur la vitesse de saisie.
- AOT WASM : desactive par defaut, a reevaluer apres mesure sur telephone.
Ajoute une section sur l'architecture de deploiement : les 3 projets .NET
ne produisent qu'un seul service (le client WASM est servi par l'API), et
le packaging vit dans un depot `mabibli_ynh` separe du code.
Le cadrage est desormais clos.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
API testee : HTTP 200, ~240 ms, sans cle. Le schema `dublincore` evite
completement l'UNIMARC — mapping bien plus simple que prevu, contrairement
a ce que supposait la note precedente.
Piege bloquant identifie : la BnF indexe l'ISBN tel qu'imprime, donc les
livres d'avant 2007 ne sont trouvables que par leur ISBN-10, alors que le
scanner lit toujours un EAN-13. Mesure sur echantillon verifie via
OpenLibrary : 2 titres sur 3 introuvables en ISBN-13 mais trouves en
ISBN-10. Interroger systematiquement les deux formes.
Autres pieges confirmes et documentes :
- aucune couverture cote BnF -> passer par OpenLibrary, avec
`?default=false` sans lequel un placeholder masque les absences
- plusieurs notices possibles pour un meme ISBN (3 pour Germinal)
- ponctuation ISBD a nettoyer sur titre / auteur / editeur, regles validees
- livres etrangers absents, ce qui confirme la necessite de la cascade
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- Hors-ligne : consultation seule via cache des reponses GET. SQLite WASM
cote client ecarte. L'UI devra desactiver explicitement les ecritures
hors-ligne plutot que de les laisser echouer.
- Portee des donnees : collection commune au foyer. `UtilisateurId`
(proprietaire) devient `AjoutePar` (tracabilite) — ne jamais filtrer les
lectures dessus.
- Sources ISBN : BnF (SRU) en principale, OpenLibrary en secours. Motif :
OpenLibrary est lacunaire sur le fonds francais. API BnF pas encore
testee, a valider avant implementation.
- SSO : en-tetes SSOwat `YNH_USER` / `YNH_USER_EMAIL` / `YNH_USER_FULLNAME`.
OIDC ecarte, non documente par YunoHost (verifie ce jour). Corrige au
passage le nom d'en-tete, qui n'est pas `Remote-User`.
- Ebooks : fiches uniquement, pas de stockage de fichiers. Les prets ne
concernent donc que les livres physiques.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Le dépôt ne versionnait qu'une archive `mabibli-init.tar.gz`, ce qui
empêchait git de suivre le contenu des fichiers. Les trois fichiers sont
désormais à plat et l'archive est supprimée.
Scan ISBN : remplacement de `html5-qrcode` par ZXing.Net (C#, Apache 2.0).
Validé concrètement en .NET 10 — round-trip EAN-13 OK, publish Blazor WASM
OK, 0,53 ms/frame dans le pire cas (échec sur frame 640x480 bruitée),
+192 Ko brotli sur le payload. Motif principal : le décodage reste
réutilisable hors navigateur si le projet évolue en scanner de
bibliothèque.
Clarification du besoin hors-ligne : consultation de la bibliothèque
existante uniquement. Signale au passage que SQLite vit côté serveur et
qu'un cache client sera nécessaire — point d'architecture non résolu.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>