Files
thomas.kopp 336628341b feat: AI-generated title+tldr, subfolder structure, backlinks in transkript/zusammenfassung
- llm: generate_title_and_tldr() returns concise title and 2-3 sentence summary
- output: index in root, transkript+zusammenfassung in {base}/ subdir with backlinks
- pipeline: call generate_title_and_tldr for both solo and meeting recordings
- router: mirror subdir structure when copying to Obsidian vault

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 12:07:54 +02:00

111 lines
3.9 KiB
Python

import os
import tempfile
from datetime import datetime
def test_save_transcript_creates_file():
with tempfile.TemporaryDirectory() as tmpdir:
from output import save_transcript
path = save_transcript(
title="Test Aufnahme",
content="Dies ist ein Test.",
output_dir=tmpdir,
dt=datetime(2026, 4, 1, 14, 32, 0),
)
assert os.path.exists(path)
def test_save_transcript_filename_format():
with tempfile.TemporaryDirectory() as tmpdir:
from output import save_transcript
path = save_transcript(
title="Mein erstes Diktat",
content="Inhalt.",
output_dir=tmpdir,
dt=datetime(2026, 4, 1, 14, 32, 0),
)
assert os.path.basename(path) == "2026-04-01-1432-mein-erstes-diktat.md"
def test_save_transcript_contains_frontmatter():
with tempfile.TemporaryDirectory() as tmpdir:
from output import save_transcript
path = save_transcript(
title="Test",
content="Inhalt.",
output_dir=tmpdir,
dt=datetime(2026, 4, 1, 14, 32, 0),
)
text = open(path).read()
assert "---" in text
assert "date:" in text
assert "transkript" in text
def test_save_transcript_contains_content():
with tempfile.TemporaryDirectory() as tmpdir:
from output import save_transcript
path = save_transcript(
title="Test",
content="Das ist der Inhalt.",
output_dir=tmpdir,
dt=datetime(2026, 4, 1, 14, 32, 0),
)
assert "Das ist der Inhalt." in open(path).read()
def test_slugify():
from output import slugify
assert slugify("Mein erstes Diktat") == "mein-erstes-diktat"
assert slugify("test -- foo") == "test-foo"
def test_write_solo_docs_creates_three_files(tmp_path):
from output import write_solo_docs
from datetime import datetime
paths = write_solo_docs(
raw_text="Das ist der rohe Text vom Mikrofon.",
refined="# Projektstatus\n\nDas Projekt läuft gut.\n",
output_dir=str(tmp_path),
dt=datetime(2026, 4, 2, 15, 0),
title="Projektstatus Update",
tldr="Das Projekt läuft gut und ist im Zeitplan.",
)
assert set(paths.keys()) == {"index", "transkript", "zusammenfassung"}
assert all(os.path.exists(p) for p in paths.values())
index = open(paths["index"]).read()
assert "Projektstatus Update" in index
assert "transkript" in index
assert "zusammenfassung" in index
# transkript and zusammenfassung are in a subdir
assert os.path.dirname(paths["transkript"]) != str(tmp_path)
assert os.path.dirname(paths["index"]) == str(tmp_path)
# backlinks present
assert "Index" in open(paths["transkript"]).read()
assert "Index" in open(paths["zusammenfassung"]).read()
assert "Das ist der rohe Text" in open(paths["transkript"]).read()
assert "Projekt läuft gut" in open(paths["zusammenfassung"]).read()
def test_write_meeting_docs_creates_three_files(tmp_path):
from output import write_meeting_docs
from datetime import datetime
aligned = [("Thomas", "Gut, dann fangen wir an."), ("Möller", "Ich hab das vorbereitet.")]
paths = write_meeting_docs(
aligned_segments=aligned,
summary="# Meeting\n\n## Wichtigste Punkte\n- Budget besprochen",
speakers=["Thomas", "Möller"],
duration_min=5,
output_dir=str(tmp_path),
dt=datetime(2026, 4, 2, 14, 30),
)
assert len(paths) == 3
index_content = open(paths["index"]).read()
assert "Thomas" in index_content
assert "transkript" in index_content
transcript_content = open(paths["transkript"]).read()
assert "**Thomas:**" in transcript_content
assert "Gut, dann fangen wir an." in transcript_content
summary_content = open(paths["zusammenfassung"]).read()
assert "Budget besprochen" in summary_content