⟨/⟩ 30_Requirements/FR_007_AbisExport.cs

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

using Ban.Sdaid.Notation.Documents;
using Ban.Sdaid.Icd.Ui.Pages;
using Ban.Sdaid.Icd.Domain.Export;

namespace Ban.Sdaid.Icd.Requirements
{
    /// <summary>Формирование файла для загрузки в АБИС — задача 7 ТЗ.</summary>
    public class FR_007_AbisExport : IFunctionalRequirementDocument
    {
        public static string _refName = "FR-007 «Выгрузка в АБИС»";

        public string Name => "FR-007. Выгрузка информационных карт в АБИС";

        public string Description =>
            @"Сервис должен формировать файл текстового формата, пригодный для загрузки в АБИС заказчика, при создании информационной карты.";

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

        public string[] Comments => new[]
        {
            "2026-08-28. По CR «Выгрузка в АБИС без отбора выборки»: файл формируется при создании карты, отбор выборки вручную отменён.",
        };

        public static string S1_Requirement = $"""
            ## Требование

            Сервис формирует файл для загрузки в АБИС **при создании информационной карты**.
            Отдельного действия пользователь не выполняет: отбор выборки и работа с файлом обмена
            не относятся к работе библиотечного специалиста.

            Каждое формирование файла фиксируется — момент, состав карт, формат и место файла
            в хранилище ({SdaidAnchors.RefTo<CardExportSpec>()}). Записи видны
            в {SdaidAnchors.RefTo<ExportLogPage>()}: по ним понятно, что и когда выгружено,
            и повторная передача по недосмотру исключена.

            **Граница ответственности — файл.** Сервис файл кладёт, а не отправляет: загрузка его
            в АБИС выполняется вне Сервиса и им не наблюдается. Поэтому отметка о выгрузке означает
            «файл сформирован», и другого состояния у карты нет.

            **Идентификатора документа АБИС в файле нет.** Сервис экземпляр фонда не опознаёт —
            это возможная доработка, — поэтому карта не знает, какой записи АБИС она соответствует.
            Сопоставление выполняет принимающая сторона — по шифру и инвентарному номеру, которые
            обязательны и потому есть в каждой карте.

            Решение и отвергнутые варианты —
            {SdaidAnchors.RefTo<Ban.Sdaid.Icd.Arch.Adr.ADR_013_ExportFileOnCardCreation>()}.
            """;

        public static string S2_Manual = $"""
            ## Формирование файла вручную

            Файл может понадобиться заново: прежний утрачен или испорчен, либо не сформировался
            из-за сбоя. Тогда его формирует администратор из реестра карт
            ({SdaidAnchors.RefTo<InformationCardsPage>()}), отобрав нужные карты фильтрами.

            Это **административное действие**, а не обычный ход работы. Карты, для которых файл
            не сформирован, видны в реестре фильтром состояния выгрузки — отсутствие записи
            о выгрузке и есть признак того, что с картой нужно что-то сделать.

            Создание карты при сбое формирования файла не отменяется: работа оператора не должна
            пропадать из-за того, что файл не записался.
            """;

        public static string S3_OpenQuestion = """
            ## Открытый вопрос

            Конкретный формат выгрузки не задан: в ТЗ сказано лишь «текстовый формат, пригодный
            для загрузки в АБИС». До уточнения у заказчика формат считается открытым вопросом
            видения (OQ-V-4).

            От ответа зависит устройство решения. Если формат допускает файл на одну карту, всё
            описанное работает как есть. Если требуется пачка, добавляется сборка накопленных карт
            в общий файл по расписанию — и только тогда у Сервиса появляется работа, которую никто
            не инициировал.
            """;
    }
}