⟨/⟩ Ntr/10_Vision/ServiceEnterVision.cs

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

using Rugrid.Sdaid.Notation.Documents;
using Rugrid.Sdaid.Notation.Glossary;
using Rugrid.Sdaid.Epas.Ntr.Glossary.Terms;

namespace Rugrid.Sdaid.Epas.Ntr.Vision
{
    /// <summary>
    /// Видение сервиса ЭНЗС. Перенесено из ntr-01/service-enter.md; раздел «Роли пользователей» —
    /// из ntr-01/user-roles/ (индексный файл user-roles.md был dataview-запросом, роли перенесены
    /// дословно таблицей).
    /// </summary>
    public class DOC_ServiceEnterVision : IVisionDocument, IHasStructuralLinks
    {
        public SdaidLink[] Links => new[]
        {
            Rel.Uses<Rugrid.Sdaid.Epas.Ntr.Domain.BC_Ntr>(),
            Rel.Uses<Rugrid.Sdaid.Epas.Ntr.Domain.EnergyProfileCollectionTaskModel.DOC_EnergyProfileCollectionTask>(),
        };

        public static string _refName = "ЭНЗС — эталоны и нормативы расхода ТЭР зданиями и сооружениями";

        public string Name => "Сервис «Эталоны и нормативы расхода ТЭР зданиями и сооружениями» (ЭНЗС)";

        public string Description =>
            @"Видение сервиса ЭНЗС — точка входа в спецификацию. Собирает разделы: предметная область, сценарии использования Сервиса, пользовательский интерфейс, роли пользователей.

Назначение и цели создания Сервиса — в термине глоссария.";

        public string Version => "1.0";
        public string Status => "accepted";
        public string[] Comments => new string[0];

        public static string Aliases = """
            ## Алиасы

            ЭНЗС, Сервис, Сервис ЭНЗС
            """;

        public static string ServiceDefinition = $"""
            ## Сервис

            {GlossaryAnchors.RefTo<ServiceEnter>(ServiceEnter.Name)}

            {ServiceEnter.Definition}
            """;

        public static string DomainArea = $"""
            ## Предметная область

            Доменная модель Сервиса — {SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Ntr.Domain.BC_Ntr>()}: обзорная
            диаграмма связей сущностей и перечень доменных документов контекста.
            """;

        public static string UseCases = $"""
            ## Сценарии использования Сервиса

            {SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Ntr.Epics.MinimalUseCase.EPIC_MinimalUseCase>()} —
            {SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Ntr.Epics.MinimalUseCase.UseCases.UC_MinimalUseCase>()}.
            """;

        public static string Ui = $"""
            ## Пользовательский интерфейс:

            Экраны Сервиса: {SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Ntr.Ui.Pages.DOC_MainPage>()},
            {SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Ntr.Ui.Pages.DOC_ModelCard>()},
            {SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Ntr.Ui.Pages.DOC_EnergyProfileCard>()}.
            Вкладки и блоки экранов описаны отдельными документами-компонентами; у каждого —
            описание полей и страница прототипа Сервиса.
            """;

        public static string UserRoles = $"""
            ## Роли пользователей:

            | name | aliases | Описание |
            |---|---|---|
            | responsible_for_collecting_eprofiles | Ответственный за сбор энергопрофилей | Создаёт {SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Ntr.Domain.EnergyProfileCollectionTaskModel.DOC_EnergyProfileCollectionTask>()} |
            | responsible_for_creating_eprofiles | Ответственный за формирование энергопрофилей | Создаёт всё, кроме {SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Ntr.Domain.EnergyProfileCollectionTaskModel.DOC_EnergyProfileCollectionTask>()} |
            | user | Пользователь | Всё читает |
            """;
    }
}