Public Access
60 lines
2.1 KiB
C#
60 lines
2.1 KiB
C#
using MeetingAssistant.MeetingNotes;
|
|
|
|
namespace MeetingAssistant.Recording;
|
|
|
|
internal static class MeetingArtifactContentDetector
|
|
{
|
|
private static readonly string[] DefaultAssistantContextLines =
|
|
[
|
|
"# Assistant Context",
|
|
"## Live Context"
|
|
];
|
|
|
|
public static async Task<bool> IsDefaultOnlyAsync(
|
|
MeetingSessionArtifacts artifacts,
|
|
CancellationToken cancellationToken)
|
|
{
|
|
if (!File.Exists(artifacts.MeetingNotePath) ||
|
|
!File.Exists(artifacts.TranscriptPath) ||
|
|
!File.Exists(artifacts.AssistantContextPath))
|
|
{
|
|
return false;
|
|
}
|
|
|
|
var meetingNote = await File.ReadAllTextAsync(artifacts.MeetingNotePath, cancellationToken);
|
|
var transcript = await File.ReadAllTextAsync(artifacts.TranscriptPath, cancellationToken);
|
|
var assistantContext = await File.ReadAllTextAsync(artifacts.AssistantContextPath, cancellationToken);
|
|
|
|
return IsDefaultOnlyMeetingNote(meetingNote) &&
|
|
IsDefaultOnlyTranscript(transcript) &&
|
|
IsDefaultOnlyAssistantContext(assistantContext);
|
|
}
|
|
|
|
private static bool IsDefaultOnlyMeetingNote(string content)
|
|
{
|
|
return string.IsNullOrWhiteSpace(MarkdownDocumentParser.SplitOptional(content).Body);
|
|
}
|
|
|
|
private static bool IsDefaultOnlyTranscript(string content)
|
|
{
|
|
var body = MarkdownDocumentParser.SplitOptional(content).Body;
|
|
return GetMeaningfulLines(body)
|
|
.All(line => string.Equals(line, "# Meeting Transcript", StringComparison.OrdinalIgnoreCase));
|
|
}
|
|
|
|
private static bool IsDefaultOnlyAssistantContext(string content)
|
|
{
|
|
var body = MarkdownDocumentParser.SplitOptional(content).Body;
|
|
return GetMeaningfulLines(body)
|
|
.All(line => DefaultAssistantContextLines.Contains(line, StringComparer.OrdinalIgnoreCase));
|
|
}
|
|
|
|
private static IEnumerable<string> GetMeaningfulLines(string body)
|
|
{
|
|
return body
|
|
.Split(["\r\n", "\n"], StringSplitOptions.None)
|
|
.Select(line => line.Trim())
|
|
.Where(line => !string.IsNullOrWhiteSpace(line));
|
|
}
|
|
}
|