using Ban.Sdaid.Notation.Documents;
namespace Ban.Sdaid.Icd.Requirements
{
/// <summary>Создание электронной информационной карты по пакету — задача 6 ТЗ.</summary>
public class FR_006_CardCreation : IFunctionalRequirementDocument
{
public static string _refName = "FR-006 «Создание карты»";
public string Name => "FR-006. Формирование электронной ИК";
public string Description =>
@"Сервис должен создавать в своей базе данных электронную информационную карту на основании проверенного пакета обработки.";
public string Version => "0.2";
public string Status => "draft";
public string[] Comments => new[]
{
"2026-08-26. По CR «Обязательные поля ИК»: условие создания — заполненность обязательных атрибутов вида.",
};
public static string S1_Requirement = $"""
## Требование
По команде пользователя «Создать ИК» Сервис создаёт **электронную информационную карту**, которая
содержит:
- значения полей по разделам ИК в том виде, в каком их подтвердил оператор;
- связь с **пакетом ввода** и его кадрами изображений — как с первоисточником;
- состав экспертов, сверенный со справочником;
- дату и оператора оцифровки.
Созданная ИК попадает в реестр информационных карт.
**Той же командой формируется файл для загрузки в АБИС.** Отдельного действия выгрузки
пользователь не выполняет: «Создать ИК» — единственная команда, и она даёт и карту,
и файл ({SdaidAnchors.RefTo<Ban.Sdaid.Icd.Arch.Adr.ADR_013_ExportFileOnCardCreation>()}).
Если файл записать не удалось, карта всё равно создаётся: работа оператора не должна
пропадать из-за сбоя записи.
""";
public static string S2_Completeness = $"""
## Условие создания
Карта создаётся, только когда заполнены **все обязательные атрибуты вида** — перечень
задаёт {SdaidAnchors.RefTo<Ban.Sdaid.Icd.Domain.Cards.Template.RequiredAttributes>()}.
Неполной информационной карты не существует: полнота обеспечивается при создании, а не
проверяется потом.
Если сведений не хватает, пользователь откладывает проверку — внесённые значения остаются
в пакете ввода, и он возвращается к ним позже
({nameof(Ban.Sdaid.Icd.Arch.Adr.ADR_012_UnfinishedCardLivesInPacket)}).
Отсутствующее на бланке значение записывается явно там, где так принято: «Б.м.» вместо
места издания, «Б.и.» вместо издательства. Для Сервиса это обычные значения, и поле
считается заполненным.
""";
}
}