namespace MaBibli.Shared.Dtos; /// Source d'où proviennent les métadonnées d'un candidat. public enum SourceMetadonnees { /// Catalogue général de la BnF, via son API SRU (Dublin Core). Bnf = 0, /// OpenLibrary (Internet Archive), second rideau de la cascade. OpenLibrary = 1, } /// /// Une notice candidate pour un ISBN donné. /// /// /// Un même ISBN peut correspondre à plusieurs notices (rééditions successives partageant /// l'ISBN). Décision actée dans CLAUDE.md : on ne choisit pas à la place de l'utilisateur, /// on lui présente tous les candidats. C'est l'interface (phase 3) qui fera choisir. /// public record CandidatLivre { /// Titre nettoyé de la ponctuation ISBD. public required string Titre { get; init; } /// Auteur au format « Prénom Nom », ou null si la source n'en donne pas. public string? Auteur { get; init; } public string? Editeur { get; init; } /// Année de publication telle que fournie par la source (texte : « 1979 », « March 2007 »…). public string? Annee { get; init; } /// Code langue tel que fourni par la source (« fre », « eng »…). public string? Langue { get; init; } /// URL de la couverture chez OpenLibrary, toujours renseignée (voir remarques du service). public string? CoverUrl { get; init; } public required SourceMetadonnees Source { get; init; } /// Forme d'ISBN qui a effectivement produit cette notice (13 ou 10 converti). public string? IsbnInterroge { get; init; } /// Identifiant chez la source : ark BnF (ark:/12148/cb…) ou clé OpenLibrary (/books/OL…M). public string? IdentifiantSource { get; init; } }