Make meeting lifecycle stateful

This commit is contained in:
2026-05-27 12:55:17 +02:00
parent d607b957bb
commit e85274829a
91 changed files with 4076 additions and 479 deletions
@@ -73,4 +73,56 @@ public sealed class MeetingSummaryArtifactResolverTests
Assert.Null(artifacts);
}
[Fact]
public async Task ResolverUsesSuppliedProfileOptionsForSummaryLookup()
{
var root = Path.Combine(Path.GetTempPath(), "meeting-assistant-tests", Guid.NewGuid().ToString("N"));
var defaultRoot = Path.Combine(root, "default");
var englishRoot = Path.Combine(root, "english");
var englishNotes = Path.Combine(englishRoot, "Notes");
var englishSummaries = Path.Combine(englishRoot, "Summaries");
Directory.CreateDirectory(englishNotes);
Directory.CreateDirectory(englishSummaries);
var notePath = Path.Combine(englishNotes, "meeting.md");
await File.WriteAllTextAsync(
notePath,
"""
---
title: Meeting
attendees:
projects:
transcript: "[[../Transcripts/transcript|Transcript]]"
assistant_context: "[[../Assistant Context/context|Assistant Context]]"
summary: "[[../Summaries/summary|Summary]]"
---
User notes.
""");
var defaultOptions = Options.Create(new MeetingAssistantOptions
{
Vault = new VaultOptions
{
MeetingNotesFolder = Path.Combine(defaultRoot, "Notes"),
SummariesFolder = Path.Combine(defaultRoot, "Summaries")
}
});
var profileOptions = new MeetingAssistantOptions
{
Vault = new VaultOptions
{
MeetingNotesFolder = englishNotes,
SummariesFolder = englishSummaries
}
};
var resolver = new MeetingSummaryArtifactResolver(
defaultOptions,
new MarkdownMeetingNoteStore(defaultOptions, NullLogger<MarkdownMeetingNoteStore>.Instance));
var artifacts = await resolver.ResolveBySummaryPathAsync("summary.md", profileOptions, CancellationToken.None);
Assert.NotNull(artifacts);
Assert.Equal(notePath, artifacts.MeetingNotePath);
Assert.Equal(Path.Combine(englishSummaries, "summary.md"), artifacts.SummaryPath);
}
}