⟨/⟩ Nts/50_Domain/BC_Nts.cs

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

using Rugrid.Sdaid.Notation.Documents;

namespace Rugrid.Sdaid.Epas.Nts.Domain
{
    /// <summary>
    /// Обзор домена ЭНТС: транспортные средства, расчёт нормативного расхода топлива,
    /// организационная структура и справочники. Точка входа в модель данных модуля.
    /// </summary>
    public class BC_Nts : IBoundedContextModuleDocument, IHasStructuralLinks, IFolder<NtsDomainFolder>
    {
        public SdaidLink[] Links => new[]
        {
            Rel.Uses<DOC_Vehicle>(),
            Rel.Uses<DOC_VehicleCalc>(),
            Rel.Uses<DOC_SelectedModifications>(),
            Rel.Uses<DOC_CalculationStatus>(),
            Rel.Uses<DOC_ProcessingStatus>(),
            Rel.Uses<DOC_NtsAisLoadStatus>(),
            Rel.Uses<DOC_NtsModificationSelectionStatus>(),
            Rel.Uses<DOC_NtsSelectionMethod>(),
            Rel.Uses<DOC_NavEntity>(),
            Rel.Uses<DOC_VehicleMarkAlias>(),
            Rel.Uses<DOC_Subject>(),
            Rel.Uses<DOC_NtsImportRun>(),
            Rel.Uses<DOC_NtsImportRunStatus>(),
        };

        public static string _refName = "Домен ЭНТС";

        public string Name => "Домен ЭНТС";

        public string Description =>
            "Обзор домена ЭНТС: транспортные средства, расчёт нормативного расхода топлива, организационная структура и справочники.";

        public string Version => "0.1";
        public string Status => "draft";
        public string[] Comments => new string[0];

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

            Домен модуля ЭНТС: {SdaidAnchors.RefTo<DOC_Vehicle>()} (данные АИС ОИА ПЭО и
            характеристики, вводимые в модуле), {SdaidAnchors.RefTo<DOC_VehicleCalc>()} — расчёт
            нормативного расхода топлива, организационная структура и справочники.

            Организационная структура — **своя локальная копия** ЭНТС
            ({SdaidAnchors.RefTo<DOC_NavEntity>()} и уровни компания → МЭС → ПМЭС), а не общая
            общая структура ОПЭС. Общий ключ орг. объекта и зимней надбавки — справочник субъектов РФ
            {SdaidAnchors.RefTo<DOC_Subject>()}.
            """;

        public static string Boundaries = $"""
            ## Границы

            **Транспортное средство — данные АИС и данные модуля.** Импорт обновляет у
            {SdaidAnchors.RefTo<DOC_Vehicle>()} только атрибуты, для которых есть карта АИС;
            марка, модель, модификация, условия эксплуатации, параметры методики и статус обработки
            импортом не затрагиваются. ТС, которого нет в выгрузке, не удаляется — у него
            выставляется признак отсутствия в АИС. Результаты, статус расчёта и журнал —
            собственность модуля, поэтому вынесены в отдельную сущность {SdaidAnchors.RefTo<DOC_VehicleCalc>()}.

            **Нормы и методика — в справочнике и бэкенде.** Базовая норма берётся из справочника
            {SdaidAnchors.RefTo<DOC_VehicleModification>()}; порядок расчёта описан в методике
            (разделы `fuel.*`) и в домене не дублируется.
            """;

        public static string Composition = $"""
            ## Состав

            ### Транспортное средство и расчёт
            - {SdaidAnchors.RefTo<DOC_Vehicle>()} — данные АИС и характеристики, вводимые в модуле;
            - {SdaidAnchors.RefTo<DOC_VehicleCalc>()} — расчёт ТС: результаты, статус и журнал;
            - {SdaidAnchors.RefTo<DOC_SelectedModifications>()} — отобранные для расчёта модификации ТС (связь «расчёт → модификация»).

            ### Организационная структура и субъекты
            - {SdaidAnchors.RefTo<DOC_NavEntity>()}, {SdaidAnchors.RefTo<DOC_NavType>()},
              {SdaidAnchors.RefTo<DOC_NavCompany>()}, {SdaidAnchors.RefTo<DOC_NavMes>()},
              {SdaidAnchors.RefTo<DOC_NavPmes>()} — организационная структура (локальная копия ЭНТС);
            - {SdaidAnchors.RefTo<DOC_Subject>()} — субъект РФ;
            - {SdaidAnchors.RefTo<DOC_WinterAllowance>()} — предельные значения зимних надбавок по субъекту.

            ### Импорт данных из АИС
            - {SdaidAnchors.RefTo<DOC_NtsImportRun>()} — история запусков приёма данных: пакетных и по одному ТС;
            - {SdaidAnchors.RefTo<DOC_NtsImportRunStatus>()} — статусы запусков.

            ### Справочники
            - {SdaidAnchors.RefTo<DOC_VehicleMark>()}, {SdaidAnchors.RefTo<DOC_VehicleMarkAlias>()},
              {SdaidAnchors.RefTo<DOC_VehicleModel>()},
              {SdaidAnchors.RefTo<DOC_VehicleModification>()} — марки, алиасы марок, модели и модификации ТС (нормы);
            - {SdaidAnchors.RefTo<DOC_VehicleKind>()}, {SdaidAnchors.RefTo<DOC_FuelKind>()},
              {SdaidAnchors.RefTo<DOC_VehicleFunction>()} — виды ТС, виды топлива и назначения ТС (заимствованы из АИС);
            - {SdaidAnchors.RefTo<DOC_CalculationStatus>()} — статусы расчёта;
            - {SdaidAnchors.RefTo<DOC_ProcessingStatus>()} — итоговые статусы обработки ТС;
            - {SdaidAnchors.RefTo<DOC_NtsAisLoadStatus>()} — достаточность данных из АИС для расчёта;
            - {SdaidAnchors.RefTo<DOC_NtsModificationSelectionStatus>()} — статусы подбора модификации;
            - {SdaidAnchors.RefTo<DOC_NtsSelectionMethod>()} — способы подбора.
            """;
    }
}