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; }
}