⟨/⟩ 50_Domain/Cards/Template/RequiredAttributes.cs

83 строк · в начало

using Ban.Sdaid.Notation.Documents;
using Ban.Sdaid.Icd.ChangeRequests;

namespace Ban.Sdaid.Icd.Domain.Cards.Template
{
    /// <summary>
    /// Перечень обязательных атрибутов по видам информационной карты — единственное место,
    /// где он живёт. Наполняет признак обязательности у вхождения атрибута в состав вида.
    /// </summary>
    public class RequiredAttributes : ISdaidDocument, IHasStructuralLinks
    {
        public static string _refName = "обязательные атрибуты по видам ИК";

        public string Name => "Обязательные атрибуты по видам ИК";

        public string Description =>
            @"Какие атрибуты обязательны для каждого вида документа. Перечень задаёт заказчик; в системе он хранится признаком обязательности у вхождения атрибута в состав вида.";

        public string Version => "0.1";
        public string Status => "draft";

        public string[] Comments => new[]
        {
            "2026-08-26. Заведён по запросу на изменение «Обязательные поля ИК»; заполнен перечень для книги.",
        };

        public SdaidLink[] Links => new[]
        {
            Rel.Uses<DOC_CR_2026_08_25_MandatoryCardFields>(),
            Rel.Uses<DocumentKindSpec>(),
        };

        public static string S1_Purpose = $"""
            ## Назначение

            Перечень обязательных атрибутов описан здесь и больше нигде: требования, страницы
            и сценарии ссылаются на этот документ, а не пересказывают список.

            Перечень — **данные, а не код**. В системе он живёт признаком обязательности
            у вхождения атрибута в состав вида
            ({nameof(Ban.Sdaid.Icd.Domain.Cards.Template.DocumentKindAttributeSpec)}); этот документ
            говорит, каким должно быть наполнение справочника, и почему именно таким.

            Обязательность задаётся **по виду документа**. Перечни разных видов совпадают частично
            и независимы: атрибут, обязательный для книги, не обязан быть обязательным для рукописи.
            """;

        public static string S2_Book = """
            ## Издание — книга

            Перечень передан заказчиком 2026-08-26. Девять полей бумажного бланка и место хранения,
            которого на бланке нет.

            | Атрибут | Где на карте | Если значения нет |
            |---|---|---|
            | Место хранения | реквизит карты, на бланке отсутствует; выбирается из справочника | значение по умолчанию из профиля |
            | Шифр | лист 1, описание документального памятника | — |
            | Инвентарный номер | лист 1, описание документального памятника | — |
            | Дата | лист 1, описание документального памятника | — |
            | Заглавие | лист 1, описание документального памятника | — |
            | Место издания | лист 1, описание документального памятника | на бланке пишут «Б.м.» |
            | Издательство | лист 1, описание документального памятника | на бланке пишут «Б.и.» |
            | Год издания | лист 1, описание документального памятника | — |
            | Количество страниц | лист 1, описание документального памятника | — |
            | Формат | лист 1, описание документального памятника | — |

            «Б.м.» и «Б.и.» вписывает пользователь, следуя правилу заполнения бланка. Сервис заглушку
            не подставляет и не разбирает — принимает как обычное значение. Пустое поле означает
            «значение не указано»: обязательное поле считается незаполненным.
            """;

        public static string S3_Pending = """
            ## Рукопись, графика и остальные виды

            Перечни не переданы. Заказчик сообщил, что для рукописей и рисунков метки свои, но
            большей частью совпадут с книжными, и пришлёт их отдельно.

            До этого момента обязательных атрибутов у этих видов нет: считать за них книжный
            перечень нельзя — у рукописи нет ни издательства, ни года издания, ни места издания.
            """;
    }
}