Enhance code readability and maintainability by refactoring various components. Update formatting commands in CLAUDE.md for csharpier integration. Simplify method signatures in SegmentFiles, UploadLimits, and multiple endpoint classes for improved clarity. Adjust query handlers and command handlers to streamline parameter handling and enhance consistency across the application.
ci / build-backend (push) Successful in 2m8s
ci / build-frontend (push) Failing after 32s
ci / tests (push) Skipped
ci / sonar (push) Skipped

This commit is contained in:
Leonid Pershin
2026-07-27 01:20:55 +03:00
parent 5449c05b5b
commit 9d1c6d2fc3
81 changed files with 716 additions and 461 deletions
@@ -132,7 +132,10 @@ public sealed class GridScheduleGenerator(
foreach (var item in result.Items)
{
var assetId = item.MediaAssetId;
if (item.Kind == PlannedItemKind.Bumper && !TryResolveBumper(item, bumperAssets, out assetId))
if (
item.Kind == PlannedItemKind.Bumper
&& !TryResolveBumper(item, bumperAssets, out assetId)
)
continue; // Без ассета запись стала бы дырой в ленте.
dbContext.ScheduleEntries.Add(
@@ -207,14 +210,21 @@ public sealed class GridScheduleGenerator(
cancellationToken
);
return result with { Warnings = [.. result.Warnings, .. postWarnings] };
return result with
{
Warnings = [.. result.Warnings, .. postWarnings],
};
}
/// <summary>
/// Чистит прошлое сверх окна хранения. Окно должно покрывать самое долгое остывание среди правил —
/// история показов берётся из самой ленты, отдельного журнала нет.
/// </summary>
private Task CleanupAsync(Guid channelId, DateTimeOffset now, CancellationToken cancellationToken)
private Task CleanupAsync(
Guid channelId,
DateTimeOffset now,
CancellationToken cancellationToken
)
{
var cutoff = now.AddDays(-Math.Max(1, _options.RetentionDays));
return dbContext
@@ -326,7 +336,11 @@ public sealed class GridScheduleGenerator(
var strategy = ToPlanningStrategy(SlotStrategy.FromJson(slot.StrategyJson));
var cursor = states.TryGetValue(slot.Id, out var state)
? new PlanningCursor(state.CurrentElementKind, state.CurrentElementId, state.NextUnitIndex)
? new PlanningCursor(
state.CurrentElementKind,
state.CurrentElementId,
state.NextUnitIndex
)
: null;
slots.Add(
@@ -354,7 +368,9 @@ public sealed class GridScheduleGenerator(
),
rules?.AudienceAt(
TimeOnly.FromDateTime(
item.StartUtc.ToOffset(TimeSpan.FromMinutes(channel.UtcOffsetMinutes)).DateTime
item.StartUtc.ToOffset(
TimeSpan.FromMinutes(channel.UtcOffsetMinutes)
).DateTime
)
),
repeatLimit
@@ -489,7 +505,12 @@ public sealed class GridScheduleGenerator(
var offset = TimeSpan.FromMinutes(channel.UtcOffsetMinutes);
var sourceDate = scheduled.BroadcastDate.AddDays(-Math.Max(1, source.DaysAgo));
var from = EffectiveGridBuilder.ToUtc(sourceDate, source.Time, offset, channel.DayStartTime);
var from = EffectiveGridBuilder.ToUtc(
sourceDate,
source.Time,
offset,
channel.DayStartTime
);
var to = from.AddMinutes(Math.Max(1, source.DurationMinutes));
var entries = await dbContext