from __future__ import annotations from models import Meeting, Segment def segment_heading(segment: Segment) -> str: if segment.recording_mode.value == "room_recorder": covered = ", ".join(segment.covered_participants) or "Not specified" return f"## {segment.label} - Room Recorder\n\nCovers: {covered}" return f"## {segment.label} - Personal Mic" def render_segments_markdown(meeting: Meeting, transcript_attr: str) -> str: title = meeting.title or meeting.meeting_id lines = [ f"# {title}", "", f"Meeting ID: `{meeting.meeting_id}`", f"Meeting type: `{meeting.meeting_type.value}`", "", ] if not meeting.segments: lines.append("No transcript segments submitted yet.") return "\n".join(lines).strip() + "\n" for segment in sorted(meeting.segments, key=lambda item: item.created_at): transcript = getattr(segment, transcript_attr, "") or "No transcript available." lines.extend( [ segment_heading(segment), "", f"Submitted: {segment.created_at}", f"Audio file: {segment.audio_file_name or 'Not stored'}", "", transcript, "", ] ) return "\n".join(lines).strip() + "\n" def render_raw_transcript(meeting: Meeting) -> str: return render_segments_markdown(meeting, "raw_transcript") def render_corrected_transcript(meeting: Meeting) -> str: return render_segments_markdown(meeting, "corrected_transcript")