using Rugrid.Sdaid.Notation.Documents;
using Rugrid.Sdaid.Notation.Glossary;
using Rugrid.Sdaid.Epas.Ntr.Glossary.Terms;
namespace Rugrid.Sdaid.Epas.Ntr.Domain.ActualConsumptionModel
{
/// <summary>
/// Доменный модуль фактического потребления: данные учёта потребления зданиями электрической и
/// тепловой энергии, загружаемые из АИС ОИА ПЭО.
/// </summary>
public class BC_ActualConsumptionModel : IBoundedContextModuleDocument, IHasStructuralLinks, IFolder<NtrDomainFolder>
{
public SdaidLink[] Links => new[]
{
Rel.Uses<Rugrid.Sdaid.Epas.Ntr.Domain.BuildingModel.DOC_Building>(),
};
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 = $"""
## Назначение
Модуль хранит данные учёта: сколько электрической и тепловой энергии от сторонних источников
потреблено за месяц по данным {GlossaryAnchors.RefTo<AisOiaPeo>(AisOiaPeo.Name)}. Единицы измерения — тыс. кВт·ч
для электрической энергии, Гкал для тепловой.
Единица хранения — месячное потребление
{SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Ntr.Domain.BuildingModel.DOC_Building>()} по виду ТЭР.
Месяц — наименьшая единица, в которой факт существует в источнике; хранить его
агрегированным до года нельзя: годовая сумма не разбирается обратно на месяцы, а
отопительный период приходится на два календарных года.
В источнике учёт ведётся по точкам учёта здания, но точки учёта — уровень
{GlossaryAnchors.RefTo<AisOiaPeo>(AisOiaPeo.Name)}: их значения сводятся к зданию при
загрузке, и в домене Сервиса точка учёта не существует.
Данные учёта существуют независимо от моделей потребления и энергопрофилей: они не
создаются Сервисом, не редактируются пользователем и не зависят от того, заведены ли для
здания расчётные модели.
""";
public static string Boundaries = $"""
## Границы
**Модуль не содержит расчётных величин.** Характеристики потребления, полученные расчётом,
ведутся модулем модели потребления; данные учёта с ними не смешиваются и в расчёт не
подаются.
**Справочник учётных периодов — вне модуля.** Период задаётся ссылкой на
{SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Ntr.Domain.Reference.DOC_Period>()}, который ведётся среди
прочих справочников Сервиса.
**Годовые итоги не хранятся.** Итог за год — сумма месяцев, вычисляется при чтении.
**Сопоставление факта с расчётом — вне модуля.** Сведение учётных величин с расчётными
происходит при формировании отчётов и в домене не хранится.
""";
public static string Composition = $"""
## Состав
Модуль содержит две сущности, по одной на вид ТЭР:
{SdaidAnchors.RefTo<DOC_EeConsumption>()} и {SdaidAnchors.RefTo<DOC_TeConsumption>()}.
Структура у них одинакова — здание, год, учётный период, значение потребления — и различны
единицы измерения. Вид ТЭР задан самой сущностью и отдельным признаком не хранится: в
источнике каждый ресурс ведётся собственным набором таблиц.
""";
}
}