feat(dal): ITemplateDistributorV2 - изменена логика получения nextRun если он находится в периоде, но в выходной день
This commit is contained in:
@@ -590,6 +590,10 @@ namespace PARR.DAL.NextRunServices.Subservices
|
||||
// СЦЕНАРИЙ А: В периоде, но нерабочий день
|
||||
logger.LogDebug("Сценарий А: в периоде ({date}), но нерабочий день. Ищем слева...", nextRunDate);
|
||||
|
||||
// Вычисляем максимальную нагрузку по всему периоду
|
||||
var maxLoadInPeriod = expectedDailyLoad.Values.Max();
|
||||
logger.LogDebug("Максимальная нагрузка по периоду: {maxLoad}", maxLoadInPeriod);
|
||||
|
||||
// Берём все рабочие дни СТРОГО ЛЕВЕЕ исходной даты
|
||||
var leftDays = workDays
|
||||
.Where(d => d < nextRunDate)
|
||||
@@ -600,17 +604,28 @@ namespace PARR.DAL.NextRunServices.Subservices
|
||||
{
|
||||
logger.LogDebug("Слева найдено {count} рабочих дней. Ищем первый не перегруженный...", leftDays.Count);
|
||||
|
||||
// Ищем первый не перегруженный
|
||||
// Ищем первый день где текущая_нагрузка < максимальная_нагрузка_периода
|
||||
foreach (var day in leftDays)
|
||||
{
|
||||
if (currentDailyLoad[day] < expectedDailyLoad.GetValueOrDefault(day, 0))
|
||||
if (currentDailyLoad[day] < maxLoadInPeriod) // ← КЛЮЧЕВОЕ ИЗМЕНЕНИЕ
|
||||
{
|
||||
foundDay = day;
|
||||
logger.LogDebug("Нашли слева не перегруженный день: {day}", day);
|
||||
logger.LogDebug("Нашли слева день с допустимой нагрузкой (< {maxLoad}): {day}", maxLoadInPeriod, day);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//// Ищем первый не перегруженный
|
||||
//foreach (var day in leftDays)
|
||||
//{
|
||||
// if (currentDailyLoad[day] < expectedDailyLoad.GetValueOrDefault(day, 0))
|
||||
// {
|
||||
// foundDay = day;
|
||||
// logger.LogDebug("Нашли слева не перегруженный день: {day}", day);
|
||||
// break;
|
||||
// }
|
||||
//}
|
||||
|
||||
// Если не нашли — берём ближайший слева
|
||||
if (!foundDay.HasValue)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user