MaBibli 1.0.0
Gestion de bibliothèque personnelle auto-hébergée : catalogue, prêts, scan de code-barres, consultation hors-ligne. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
using MaBibli.Shared.Textes;
|
||||
|
||||
namespace MaBibli.Shared.Entites;
|
||||
|
||||
/// <summary>
|
||||
/// Un article annoncé <b>à la une</b> d'un numéro de revue.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// <b>Sur le NUMÉRO, jamais sur la revue</b> (tranché avec l'utilisateur le 2026-08-20) : les
|
||||
/// articles à la une changent à chaque parution. Posés sur <see cref="Revue"/>, ils décriraient
|
||||
/// une ligne éditoriale et non un sommaire.
|
||||
/// <para>
|
||||
/// <b>Pourquoi une table à part et non <see cref="Theme"/> ?</b> Un thème est un vocabulaire
|
||||
/// qu'on <i>réutilise</i> — « dark fantasy » revient sur dix livres —, alors qu'un titre
|
||||
/// d'article est unique à sa parution et ne se réutilisera jamais. Rangés dans
|
||||
/// <c>Themes</c>, « Ukraine : le front d'hiver » et ses semblables rempliraient de bruit un
|
||||
/// vocabulaire qui sert le catalogue.
|
||||
/// </para>
|
||||
/// <para>
|
||||
/// ⚠️ Conséquence directe : <b>pas de n-n</b>. Une simple clé étrangère vers le numéro suffit,
|
||||
/// puisque rien ne se partage. C'est ce qui distingue cette table de <c>LivreTheme</c>.
|
||||
/// </para>
|
||||
/// <para>
|
||||
/// ⚠️ La saisie se fait au <b>point-virgule</b>, et surtout pas à la virgule : un titre
|
||||
/// d'article en contient souvent (« Ukraine, deux ans après »), et elle le couperait en deux.
|
||||
/// Voir <see cref="ListeSaisie"/>.
|
||||
/// </para>
|
||||
/// </remarks>
|
||||
public class ArticleUne
|
||||
{
|
||||
public int Id { get; set; }
|
||||
|
||||
public int NumeroRevueId { get; set; }
|
||||
|
||||
public NumeroRevue? NumeroRevue { get; set; }
|
||||
|
||||
/// <summary>Le titre tel qu'il est imprimé en couverture.</summary>
|
||||
public string Titre { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>Forme mise à plat, porteuse de l'unicité au sein du numéro.</summary>
|
||||
public string TitreNormalise { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>Rang d'affichage : l'ordre de saisie est celui de la couverture.</summary>
|
||||
public int Position { get; set; }
|
||||
|
||||
public void RecalculerFormes()
|
||||
{
|
||||
Titre = Titre.Trim();
|
||||
TitreNormalise = NormalisationTexte.Normaliser(Titre);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user