namespace GB5Shared.RecordingIntelligence; /// /// Result of transcribing an audio/video recording to text. /// public class TranscriptDTO { public string TranscriptText { get; set; } = string.Empty; /// Provider-reported language code (e.g. "en-US"), when the provider exposes one. public string? LanguageCode { get; set; } /// Provider-reported confidence score (0.0-1.0), when the provider exposes one. public double? Confidence { get; set; } } /// /// Result of summarizing a transcript. /// public class SummaryDTO { public string SummaryText { get; set; } = string.Empty; } /// /// A single AI-suggested action item extracted from a transcript. Per the plan's open items, /// whether these are auto-created as FBCK ActionItem rows or require human confirmation first is /// a distinct future product decision — this DTO only carries the suggestion itself. /// public class ActionItemSuggestionDTO { public string ActionText { get; set; } = string.Empty; public string? SuggestedOwner { get; set; } public DateTime? SuggestedDueDate { get; set; } } /// /// Provider-agnostic capability-based integration point for AI-backed transcription, /// summarization, and action-item extraction (plan: "New shared capability: /// Recording/Transcript/Summary" — this is the reusable interface PIE's Signal BLL already /// forward-references in comments as "IAICapabilityService"/OI-18; this phase becomes its first /// real consumer, not a competing interface). /// /// Lives in GB5Shared (not owned by Meeting, CRM, or Recruitment) so any future consumer can /// depend on this interface alone. No real LLM/STT provider is wired behind it in this phase — /// see , the default DI registration, which fails /// loudly rather than silently no-op'ing. A real provider-backed implementation (Claude/Azure /// Speech/Whisper/etc., possibly per-tenant) is swapped in later via DI without touching any /// consumer code. /// public interface IAICapabilityService { /// Transcribes an audio/video recording to text. Task TranscribeAsync(byte[] audioBytes, string mimeType, CancellationToken ct); /// Produces a concise summary of a transcript's text. Task SummarizeAsync(string transcriptText, CancellationToken ct); /// Extracts candidate action items from a transcript's text. Task> ExtractActionItemsAsync(string transcriptText, CancellationToken ct); }