Archive summary refinements and profile switching
PR and Push Build/Test / build-and-test (push) Successful in 6m37s

This commit is contained in:
2026-05-27 23:11:21 +02:00
parent c12febe029
commit 7777b349a5
37 changed files with 3190 additions and 121 deletions
+18 -21
View File
@@ -57,6 +57,7 @@ builder.Services.AddSingleton<IMeetingSummaryArtifactResolver, MeetingSummaryArt
builder.Services.AddSingleton<IMeetingSummaryFailureWriter, MeetingSummaryFailureWriter>();
builder.Services.AddSingleton<IMeetingSummaryInstructionBuilder, MeetingSummaryInstructionBuilder>();
builder.Services.AddSingleton<IMeetingSummaryPipeline, OpenAiMeetingSummaryAgentPipeline>();
builder.Services.AddSingleton<IMeetingSummaryRetryRunner, MeetingSummaryRetryRunner>();
builder.Services.AddSingleton<IMeetingWorkflowRulesProvider, FileMeetingWorkflowRulesProvider>();
builder.Services.AddSingleton<IMeetingWorkflowEngine, MeetingWorkflowEngine>();
builder.Services.AddSingleton<AsrDiagnosticService>();
@@ -298,61 +299,53 @@ static async Task<IResult> RunCurrentSummaryAsync(
app.MapPost("/meetings/summary/retry", async (
SummaryRetryRequest request,
IMeetingSummaryArtifactResolver artifactResolver,
IMeetingSummaryPipeline summaryPipeline,
IMeetingSummaryRetryRunner summaryRetryRunner,
IOptions<MeetingAssistantOptions> options,
CancellationToken cancellationToken) =>
await RetrySummaryAsync(
null,
request.SummaryPath,
artifactResolver,
summaryPipeline,
summaryRetryRunner,
options.Value,
null,
cancellationToken));
app.MapPost("/profiles/{launchProfile}/meetings/summary/retry", async (
string launchProfile,
SummaryRetryRequest request,
IMeetingSummaryArtifactResolver artifactResolver,
IMeetingSummaryPipeline summaryPipeline,
IMeetingSummaryRetryRunner summaryRetryRunner,
IOptions<MeetingAssistantOptions> options,
ILaunchProfileOptionsProvider launchProfiles,
CancellationToken cancellationToken) =>
await RetrySummaryAsync(
launchProfile,
request.SummaryPath,
artifactResolver,
summaryPipeline,
summaryRetryRunner,
options.Value,
launchProfiles,
cancellationToken));
app.MapGet("/meetings/summary/retry", async (
string summaryPath,
IMeetingSummaryArtifactResolver artifactResolver,
IMeetingSummaryPipeline summaryPipeline,
IMeetingSummaryRetryRunner summaryRetryRunner,
IOptions<MeetingAssistantOptions> options,
CancellationToken cancellationToken) =>
await RetrySummaryAsync(
null,
summaryPath,
artifactResolver,
summaryPipeline,
summaryRetryRunner,
options.Value,
null,
cancellationToken));
app.MapGet("/profiles/{launchProfile}/meetings/summary/retry", async (
string launchProfile,
string summaryPath,
IMeetingSummaryArtifactResolver artifactResolver,
IMeetingSummaryPipeline summaryPipeline,
IMeetingSummaryRetryRunner summaryRetryRunner,
IOptions<MeetingAssistantOptions> options,
ILaunchProfileOptionsProvider launchProfiles,
CancellationToken cancellationToken) =>
await RetrySummaryAsync(
launchProfile,
summaryPath,
artifactResolver,
summaryPipeline,
summaryRetryRunner,
options.Value,
launchProfiles,
cancellationToken));
@@ -360,8 +353,7 @@ app.MapGet("/profiles/{launchProfile}/meetings/summary/retry", async (
static async Task<IResult> RetrySummaryAsync(
string? launchProfile,
string? summaryPath,
IMeetingSummaryArtifactResolver artifactResolver,
IMeetingSummaryPipeline summaryPipeline,
IMeetingSummaryRetryRunner summaryRetryRunner,
MeetingAssistantOptions defaultOptions,
ILaunchProfileOptionsProvider? launchProfiles,
CancellationToken cancellationToken)
@@ -372,13 +364,18 @@ static async Task<IResult> RetrySummaryAsync(
}
var profileOptions = ResolveProfileOptions(launchProfile, defaultOptions, launchProfiles);
var artifacts = await artifactResolver.ResolveBySummaryPathAsync(summaryPath, profileOptions, cancellationToken);
if (artifacts is null)
var trigger = await summaryRetryRunner.TriggerAsync(summaryPath, profileOptions, cancellationToken);
if (trigger is null)
{
return Results.NotFound(new { error = $"No meeting note links to summary '{summaryPath}'." });
}
return Results.Ok(await summaryPipeline.RunAsync(artifacts, profileOptions, cancellationToken));
return Results.Accepted(value: new
{
summaryPath = trigger.SummaryPath,
assistantContextPath = trigger.AssistantContextPath,
state = "summarizing"
});
}
app.MapPost("/asr/transcribe-file", async (