feat(dal): Добавлен параметр конфигурации MinRelationshipsThresholdPct

This commit is contained in:
Mikhail Kuznetsov
2026-07-14 10:29:01 +10:00
parent 83017c6bee
commit 4c80e247f5
5 changed files with 4153 additions and 2 deletions

View File

@@ -243,7 +243,14 @@ namespace PARR.DAL.Context
},
new { Name = nameof(SettingsFromDb.EsppUnitTag), Description = "Префикс тега в поле ЭК \"Дополнительная информация\"", Value = АРР_" },
new { Name = nameof(SettingsFromDb.JobIdForUnusedTemplates), Description = "Job в который перемещаем ниспользованные шаблоны", Value = "8f85a91c-a223-4686-bb69-1f0ee73624f2" },
new { Name = nameof(SettingsFromDb.DefaultResponseAreaToTimeOffset), Description = "Зона ответственности для получения тайм зоны по умолчанию для расписаний", Value = "17-МСК" }
new { Name = nameof(SettingsFromDb.DefaultResponseAreaToTimeOffset), Description = "Зона ответственности для получения тайм зоны по умолчанию для расписаний", Value = "17-МСК" },
new
{
Name = nameof(SettingsFromDb.MinRelationshipsThresholdPct),
Description = "Минимально допустимый процент связей для продолжения синхронизации. Защищает от удаления данных, " +
"если передающая система АИХ ИТ передала аномально малый объем связей. 0 — Защита ОТКЛЮЧЕНА, 100 — Строгий режим.",
Value = "97"
}
);
});
#endregion

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,28 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace PARR.DAL.Migrations
{
/// <inheritdoc />
public partial class tblSettingsFromDbMinRelationshipsThresholdPct : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.InsertData(
table: "Settings",
columns: new[] { "Name", "Description", "Value" },
values: new object[] { "MinRelationshipsThresholdPct", "Минимально допустимый процент связей для продолжения синхронизации. Защищает от удаления данных, если передающая система АИХ ИТ передала аномально малый объем связей. 0 — Защита ОТКЛЮЧЕНА, 100 — Строгий режим.", "97" });
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DeleteData(
table: "Settings",
keyColumn: "Name",
keyValue: "MinRelationshipsThresholdPct");
}
}
}

View File

@@ -2526,6 +2526,12 @@ namespace PARR.DAL.Migrations
Name = "DefaultResponseAreaToTimeOffset",
Description = "Зона ответственности для получения тайм зоны по умолчанию для расписаний",
Value = "17-МСК"
},
new
{
Name = "MinRelationshipsThresholdPct",
Description = "Минимально допустимый процент связей для продолжения синхронизации. Защищает от удаления данных, если передающая система АИХ ИТ передала аномально малый объем связей. 0 — Защита ОТКЛЮЧЕНА, 100 — Строгий режим.",
Value = "97"
});
});

View File

@@ -71,7 +71,7 @@ namespace PARR.Domain.Settings
}
catch
{
TemplateNameConstantParts = string.Empty;
TemplateNameConstantParts = string.Empty;
}
}
@@ -138,5 +138,19 @@ namespace PARR.Domain.Settings
/// Зона ответственности для получения тайм зоны по умолчанию для расписаний
/// </summary>
public string DefaultResponseAreaToTimeOffset { get; set; } = string.Empty;
/// <summary>
/// Минимально допустимый процент связей для продолжения синхронизации.
/// Защищает от удаления данных, если передающая система АИХ ИТ передала аномально малый объем связей.
/// </summary>
/// <remarks>
/// Диапазон: от 0 до 100
/// <list type="bullet">
/// <item><description>0 — Защита ОТКЛЮЧЕНА. Синхронизация запишет даже 0 связей (риск затереть данные).</description></item>
/// <item><description>100 — Строгий режим. Синхронизация упадет, если пропадет хотя бы одна связь.</description></item>
/// <item><description>97 — (Рекомендуется) Стоп, если объем новых связей ниже 97% от предыдущего.</description></item>
/// </list>
/// </remarks>
public int MinRelationshipsThresholdPct { get; set; } = 0;
}
}