Cataloguer les revues : une fiche, ses numéros à l'intérieur
Clôt la décision du premier lot, qui écartait les périodiques faute de modèle. Douze numéros d'un magazine ne font plus douze fiches identiques. Table à part, pour la troisième fois et pour le même motif que la liste d'envies et les séries : logée dans Livres, une revue entrerait dans le catalogue, ses compteurs, les doublons et les bibliographies, et il faudrait écrire « et qui n'est pas une revue » à chaque lecture. Un numéro est recensé, rien de plus — ni prêt ni statut, tous deux liés à Livre par clé étrangère. Réversible. « Créer ou retrouver » et non « créer » : scanner le numéro suivant du même magazine retombe forcément sur la même revue. L'unicité de l'ISSN est un index partiel, sans quoi les revues sans ISSN se bloqueraient entre elles. Le flux 977 mène désormais à la fiche de la revue, et ne pré-remplit plus le formulaire d'un livre. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -5,10 +5,15 @@ namespace MaBibli.Shared.Dtos;
|
||||
/// (préfixe <c>977</c>) et non d'un livre.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Le modèle de données ne gère <b>pas</b> les périodiques : ni numéro, ni date de parution.
|
||||
/// Cet objet n'existe donc pas pour cataloguer une revue, mais pour <b>dire à l'utilisateur ce
|
||||
/// qu'il vient de scanner</b> au lieu de lui répondre « aucun résultat » — ce qui l'enverrait
|
||||
/// 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
|
||||
{
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
namespace MaBibli.Shared.Dtos;
|
||||
|
||||
/// <summary>
|
||||
/// Une revue et les numéros qu'on en possède.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Comme pour les séries, <b>une seule lecture rend tout</b> : la liste des revues sert aussi
|
||||
/// le détail de chacune, ce qui donne un unique instantané hors-ligne à tenir à jour.
|
||||
/// </remarks>
|
||||
public record RevueDto
|
||||
{
|
||||
public required int Id { get; init; }
|
||||
|
||||
public required string Titre { get; init; }
|
||||
|
||||
/// <summary>ISSN à tiret, quand il est connu. Identifiant de la <b>revue</b>, jamais un ISBN.</summary>
|
||||
public string? Issn { get; init; }
|
||||
|
||||
public string? Editeur { get; init; }
|
||||
|
||||
public string? AjoutePar { get; init; }
|
||||
|
||||
/// <summary>Numéros possédés, du plus récent au plus ancien.</summary>
|
||||
public IReadOnlyList<NumeroRevueDto> Numeros { get; init; } = [];
|
||||
}
|
||||
|
||||
/// <summary>Un numéro possédé. Recensé seulement : ni prêt, ni statut de lecture.</summary>
|
||||
public record NumeroRevueDto
|
||||
{
|
||||
public required int Id { get; init; }
|
||||
|
||||
public required string Numero { get; init; }
|
||||
|
||||
public DateTime? DateParution { get; init; }
|
||||
|
||||
public string? Note { get; init; }
|
||||
}
|
||||
|
||||
/// <summary>Charge utile de création ou de modification d'une revue.</summary>
|
||||
public record EnregistrementRevue
|
||||
{
|
||||
public string Titre { get; set; } = string.Empty;
|
||||
|
||||
public string? Issn { get; set; }
|
||||
|
||||
public string? Editeur { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>Charge utile d'ajout d'un numéro.</summary>
|
||||
public record AjoutNumeroRevue
|
||||
{
|
||||
/// <summary>Obligatoire : deux numéros sans numéro seraient indiscernables.</summary>
|
||||
public string Numero { get; set; } = string.Empty;
|
||||
|
||||
public DateTime? DateParution { get; set; }
|
||||
|
||||
public string? Note { get; set; }
|
||||
}
|
||||
Reference in New Issue
Block a user