namespace MaBibli.Shared.Dtos;

/// <summary>
/// Résultat complet d'un lookup ISBN : la liste des candidats trouvés par la cascade
/// BnF → OpenLibrary, plus de quoi expliquer à l'utilisateur ce qui s'est passé.
/// </summary>
public record ResultatLookupIsbn
{
    /// <summary>ISBN normalisé tel que demandé (tirets et espaces retirés).</summary>
    public required string IsbnDemande { get; init; }

    /// <summary>ISBN-10 dérivé, si la conversion était possible (préfixe <c>978</c> uniquement).</summary>
    public string? Isbn10 { get; init; }

    /// <summary>
    /// Tous les candidats trouvés, dans l'ordre de la cascade. Peut être vide.
    /// La sélection revient à l'utilisateur.
    /// </summary>
    public required IReadOnlyList<CandidatLivre> Candidats { get; init; }

    /// <summary>
    /// Messages non bloquants : source injoignable, réponse illisible…
    /// Une source en panne ne fait pas échouer la cascade, elle laisse une trace ici.
    /// </summary>
    public IReadOnlyList<string> Avertissements { get; init; } = [];
}
