namespace MaBibli.Shared.Dtos;

/// <summary>
/// Ce qu'on sait d'un code-barres qui s'est révélé être celui d'un <b>périodique</b>
/// (préfixe <c>977</c>) et non d'un livre.
/// </summary>
/// <remarks>
/// Cet objet <b>décrit un code-barres</b>, il ne catalogue rien : il dit à l'utilisateur ce
/// qu'il vient de scanner au lieu de lui répondre « aucun résultat » — ce qui l'enverrait
/// chercher un défaut là où il n'y en a pas.
/// <para>
/// Depuis le 2026-08-19, les revues ont leur modèle (<see cref="Entites.Revue"/>) : l'écran
/// enchaîne donc sur la fiche de la revue, où s'ajoute le numéro scanné. ⚠️ Le <b>numéro</b> ne
/// figure pas ici : les deux chiffres de parution du code-barres ne sont pas fiables, et
/// l'add-on EAN-2 qui le porterait vraiment n'a pas été vérifié sur un magazine réel.
/// </para>
/// </remarks>
public record PeriodiqueDetecte
{
    /// <summary>ISSN déduit du code-barres, forme canonique à tiret (<c>2466-6718</c>).</summary>
    public required string Issn { get; init; }

    /// <summary>
    /// Titre de la revue d'après la BnF, ou <c>null</c> si elle ne connaît pas cet ISSN
    /// ou n'a pas répondu. Le distinguer d'un titre trouvé est ce qui permet de ne pas
    /// affirmer un nom qu'on n'a pas.
    /// </summary>
    public string? Titre { get; init; }

    /// <summary>Éditeur de la revue, quand la notice en porte un.</summary>
    public string? Editeur { get; init; }

    /// <summary>Année de début de publication de la revue (et non du numéro scanné).</summary>
    public string? Annee { get; init; }
}
