Implement template export/import endpoints and enhance grid generation logic
Added new endpoints for exporting and importing grid configurations in TemplateEndpoints, allowing for better management of template data. Enhanced the GenerateGridCommandHandler to support seasonal layers in grid generation, improving scheduling accuracy during holiday periods. Updated related classes and records to accommodate these changes, ensuring a cohesive integration of new features. Improved documentation for clarity and maintainability.
This commit is contained in:
@@ -12,6 +12,7 @@ using TeleWave.Application.Programming.Templates.Generate;
|
||||
using TeleWave.Application.Programming.Templates.GetTemplate;
|
||||
using TeleWave.Application.Programming.Templates.Layers;
|
||||
using TeleWave.Application.Programming.Templates.Restore;
|
||||
using TeleWave.Application.Programming.Templates.Transfer;
|
||||
using TeleWave.Application.Programming.Templates.UpdateSlot;
|
||||
using TeleWave.Application.Programming.Templates.Validate;
|
||||
using TeleWave.Infrastructure.Identity;
|
||||
@@ -80,6 +81,18 @@ public static class TemplateEndpoints
|
||||
.MapPost("/channels/{channelId:guid}/template/generate", GenerateGrid)
|
||||
.Produces<GenerateGridResultDto>();
|
||||
|
||||
// Обмен конфигурацией: выгрузка файлом, загрузка чужого файла и сборка запроса к ИИ.
|
||||
// Запрос никуда не отправляется — админ копирует его в свою модель и приносит ответ назад.
|
||||
admin
|
||||
.MapGet("/channels/{channelId:guid}/template/export", ExportGrid)
|
||||
.Produces<GridConfig>();
|
||||
admin
|
||||
.MapPost("/channels/{channelId:guid}/template/import", ImportGrid)
|
||||
.Produces<GridImportResultDto>();
|
||||
admin
|
||||
.MapPost("/channels/{channelId:guid}/template/ai-prompt", BuildPrompt)
|
||||
.Produces<GridPromptDto>();
|
||||
|
||||
admin
|
||||
.MapPost("/templates/{templateId:guid}/layers", CreateLayer)
|
||||
.Produces<CreatedIdResponse>(StatusCodes.Status201Created);
|
||||
@@ -224,6 +237,44 @@ public static class TemplateEndpoints
|
||||
return result.ToHttpResult();
|
||||
}
|
||||
|
||||
private static async Task<IResult> ExportGrid(
|
||||
Guid channelId,
|
||||
ISender sender,
|
||||
CancellationToken cancellationToken
|
||||
)
|
||||
{
|
||||
var result = await sender.Send(new ExportGridQuery(channelId), cancellationToken);
|
||||
return result.ToHttpResult();
|
||||
}
|
||||
|
||||
private static async Task<IResult> ImportGrid(
|
||||
Guid channelId,
|
||||
ImportGridBody body,
|
||||
ISender sender,
|
||||
CancellationToken cancellationToken
|
||||
)
|
||||
{
|
||||
var result = await sender.Send(
|
||||
new ImportGridCommand(channelId, body.Config, body.Replace),
|
||||
cancellationToken
|
||||
);
|
||||
return result.ToHttpResult();
|
||||
}
|
||||
|
||||
private static async Task<IResult> BuildPrompt(
|
||||
Guid channelId,
|
||||
GridPromptBody body,
|
||||
ISender sender,
|
||||
CancellationToken cancellationToken
|
||||
)
|
||||
{
|
||||
var result = await sender.Send(
|
||||
new BuildGridPromptQuery(channelId, body.References ?? [], body.Notes),
|
||||
cancellationToken
|
||||
);
|
||||
return result.ToHttpResult();
|
||||
}
|
||||
|
||||
private static async Task<IResult> CopyTemplate(
|
||||
Guid channelId,
|
||||
Guid targetChannelId,
|
||||
@@ -354,6 +405,10 @@ public sealed record UpdateTemplateBody(
|
||||
|
||||
public sealed record GenerateGridBody(GridProfileKind Profile, GridGenerationMode Mode);
|
||||
|
||||
public sealed record ImportGridBody(GridConfig Config, bool Replace);
|
||||
|
||||
public sealed record GridPromptBody(IReadOnlyList<string>? References, string? Notes);
|
||||
|
||||
public sealed record CreateLayerBody(string Name, int Priority);
|
||||
|
||||
public sealed record UpdateLayerBody(
|
||||
|
||||
Reference in New Issue
Block a user