This commit is contained in:
team3
2026-07-08 21:14:33 +02:00
parent 9a6ab0937b
commit f9d77a113b
30 changed files with 1064 additions and 654 deletions

View File

@@ -313,3 +313,23 @@ async def test_topic_delete_entfernt_qa_ordner(testdb, tmp_path, monkeypatch):
(qdir / "alt.json").write_text("{}", encoding="utf-8")
await routes.remove_topic("t")
assert not qdir.exists()
def test_luecken_key_stabil_gegen_whitespace():
"""Freispruch-Schlüssel: Datei + normalisierter Vorschau-Hash — Whitespace-Varianten
derselben Fundstelle mappen auf denselben Key, andere Vorschau nicht."""
a = {"datei": "f.txt", "abschnitt": 3, "vorschau": "Der Satz\nvon Foo"}
b = {"datei": "f.txt", "abschnitt": 7, "vorschau": "der satz von foo"}
c = {"datei": "f.txt", "abschnitt": 3, "vorschau": "ganz anderer Text"}
assert qa.luecken_key(a) == qa.luecken_key(b)
assert qa.luecken_key(a) != qa.luecken_key(c)
assert qa.luecken_key(a).startswith("f.txt||")
def test_offene_luecken_filtert_freispruch_und_nein():
rep = {"luecken": [{"datei": "f", "vorschau": "a", "llm": "ja"},
{"datei": "f", "vorschau": "b", "llm": "nein"},
{"datei": "f", "vorschau": "c", "freispruch": True}],
"konzept_luecken": ["Satz von Foo"]}
lk, kl = qa.offene_luecken(rep)
assert [x["vorschau"] for x in lk] == ["a"] and kl == ["Satz von Foo"]