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>()} — способы подбора.
""";
}
}