feat(distributor): реализована логика распределения всех шаблонов в методе DistributeTemplatesAsync

This commit is contained in:
Mikhail Trubnikov
2025-12-25 12:07:53 +10:00
parent a7a82b902a
commit 6a8f90c860
7 changed files with 860 additions and 243 deletions

View File

@@ -1,18 +1,25 @@
using PARR.DAL.Models;
using PARR.DAL.NextRunServices.Models;
using PARR.DAL.NextRunServices.Models;
namespace PARR.DAL.NextRunServices.Subservices
{
internal interface ITemplateDistributor
//todo: public -> internal!!!
public interface ITemplateDistributor
{
Task<List<TemplateNextRunDto>> GetValidNextRunAsync(TemplateNextRunDto template, DateOnly startDate, DateOnly endDate, TimeSpan executionTime);
/// <summary>
/// Распределяет все шаблоны на указанный период, учитывая план нагрузки.
/// Возвращает список всех шаблонов с обновлёнными датами выполнения.
/// </summary>
/// <param name="startDate">Дата начала распределения</param>
/// <param name="duration">Длительность распределения, дней</param>
/// <param name="referenceDate">ReferenceDate</param>
/// <param name="allTemplates">Спиоск шаблонов для распределения</param>
/// <returns></returns>
Task<List<TemplateNextRunResultDto>> DistributeTemplatesAsync(DateOnly startDate, int duration, DateTimeOffset referenceDate, List<TemplateNextRunDto> allTemplates);
Task<List<TemplateNextRunDto>> GetValidNextRunsAsync(List<TemplateNextRunDto> templates, DateOnly startDate, DateOnly endDate, TimeSpan executionTime);
Task<List<TemplateNextRunDto>> ReassignOutdatedRunsAsync(List<TemplateNextRunDto> templates, DateOnly startDate, DateOnly endDate, TimeSpan executionTime);
Task<List<TemplateNextRunDto>> RebalanceTemplatesAsync(List<TemplateNextRunDto> templates, DateOnly startDate, DateOnly endDate, TimeSpan executionTime);
Task<List<TemplateNextRunDto>> ScheduleTemplatesAsync(List<TemplateNextRunDto> templates, DateOnly startDate, DateOnly endDate, TimeSpan executionTime);
/// <summary>
/// Возвращает актуальную дату выполнения для одного шаблона, учитывая план нагрузки.
/// Возвращает обновлённый шаблон с новой датой выполнения.
/// </summary>
Task<TemplateNextRunResultDto> GetValidNextRunForTemplateAsync(DateOnly startDate, int duration, DateTimeOffset referenceDate, TemplateNextRunDto targetTemplate, List<TemplateNextRunDto> allTemplates);
}
}