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>
This commit is contained in:
2026-04-02 12:07:54 +02:00
parent 1cfb9c127b
commit 336628341b
6 changed files with 1072 additions and 27 deletions
+9 -1
View File
@@ -68,13 +68,21 @@ def test_write_solo_docs_creates_three_files(tmp_path):
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" in index
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()