Public Access
Add meeting inactivity safeguards
PR and Push Build/Test / build-and-test (push) Failing after 14m53s
PR and Push Build/Test / build-and-test (push) Failing after 14m53s
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
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));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user