using System;
using Rugrid.Sdaid.Notation.Documents;
namespace Rugrid.Sdaid.Epas.Ntr.Domain.Reference
{
/// <summary>
/// Доменная сущность. Перенесено дословно из ntr-01/domain/reference/climate-region.md.
/// </summary>
public class DOC_ClimateRegion : IDomainEntityDocument, IFolder<NtrDomainFolder>
{
public static string _refName = "Климатический район (сущность)";
public string Name => "Климатический район (сущность)";
public string Description => "Алиасы: Климатический район (сущность), Климатический район. parents: [building-diaram, org-object-model].";
public string Version => "1.0";
public string Status => "changed";
public string[] Comments => new[]
{
"2026-08-31, фаза 5 миграции (сверка спеки с реализацией): в таблицу свойств добавлены атрибуты, которые есть в БД, но не были описаны в спеке.",
};
public Type Entity => typeof(ClimateRegion);
}
/// <summary>
/// Доменная сущность «Климатический район (сущность)».
/// Класс — источник структуры: таблица свойств и диаграмма связей на странице документа
/// строятся генератором по нему. Прозу и разбор ведёт документ DOC_ClimateRegion.
/// </summary>
[DomainEntity]
public class ClimateRegion
{
/// <summary>Идентификатор записи</summary>
[DomainField(Alias = "id", RequiredOnCreate = true, Immutable = true)]
public Guid Id { get; set; }
/// <summary>ИД объекта в АИС</summary>
[DomainField(Alias = "ais_id", RequiredOnCreate = true, Description = "ИД объекта в АИС ОИА ПЭО", Immutable = true)]
public Guid AisId { get; set; }
/// <summary>Дата и время изменения в АИС ОИА ПЭО</summary>
[DomainField(
Alias = "ais_modified",
RequiredOnCreate = true,
Description = "Служебное поле. Момент последнего изменения записи в АИС ОИА ПЭО"
)]
public DateTime AisModified { get; set; }
/// <summary>Наименование</summary>
[DomainField(Alias = "name", RequiredOnCreate = true)]
public string? Name { get; set; }
/// <summary>Код</summary>
[DomainField(Alias = "code", RequiredOnCreate = true, Description = "Уникальный строковый код записи справочника")]
public string? Code { get; set; }
/// <summary>Долгота, °</summary>
[DomainField(Alias = "longitude", Unit = "`°`", Range = "Целое {-180..180}", Description = "Долгота в градусах")]
public int Longitude { get; set; }
/// <summary>Широта, °</summary>
[DomainField(Alias = "latitude", Unit = "`°`", Range = "Целое {-90..90}", Description = "Широта в градусах")]
public int Latitude { get; set; }
/// <summary>Продолжительность отопительного периода, сут.</summary>
[DomainField(
Alias = "days_avg_temp_le8",
Unit = "`сут.`",
Range = "Целое {0..366}",
Description = "По нормативу - Продолжительность, сут. (периода со средней суточной температурой воздуха ≤ 8 °С)"
)]
public int DaysAvgTempLe8 { get; set; }
/// <summary>Средняя температура наружного воздуха за отопительный период, °С</summary>
[DomainField(
Alias = "avg_temp_le8",
Unit = "`°С`",
Range = "Вещественное {-70..70}",
Description = "По нормативу - Средняя температура воздуха, °С (периода со средней суточной температурой воздуха ≤ 8 °С)"
)]
public decimal AvgTempLe8 { get; set; }
/// <summary>Средняя скорость ветра за отопительный период, м/с</summary>
[DomainField(
Alias = "max_avg_wind_speed_le8",
Unit = "`м/с`",
Description = "По нормативу - Средняя скорость ветра, м/с, за период со средней суточной температурой воздуха ≤ 8 °С"
)]
public decimal MaxAvgWindSpeedLe8 { get; set; }
/// <summary>Источник мастер-данных</summary>
[DomainField(Alias = "source_system_alias", RequiredOnCreate = true, Range = "\"service_ntr\"")]
public string? SourceSystemAlias { get; set; }
}
}