core: Router bleibt bei Embedding-Ausfall lauffähig (Stufe 0) und erholt sich selbst
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -131,3 +131,25 @@ def test_conflict_with_reranker_trusts_reranker(registry, library, embedder):
|
||||
assert Signal.SKILL_CONFLICT in d.signals
|
||||
assert "Reranking aktiv" in d.reasons
|
||||
assert d.skill == "rechnung-extrahieren" and d.stage == 1
|
||||
|
||||
|
||||
class FlakyEmbedder:
|
||||
def __init__(self, inner):
|
||||
self.inner = inner
|
||||
self.down = True
|
||||
|
||||
def embed(self, texts):
|
||||
if self.down:
|
||||
raise ConnectionError("embed-default weg")
|
||||
return self.inner.embed(texts)
|
||||
|
||||
|
||||
def test_embedding_outage_degrades_to_strong_and_recovers(registry, library, embedder):
|
||||
flaky = FlakyEmbedder(embedder)
|
||||
r = Router(registry, library, flaky) # Start ohne Embedding darf nicht abstürzen
|
||||
assert r.index_error
|
||||
d = r.route(RECHNUNG)
|
||||
assert d.stage == 0 and any("Embedding nicht verfügbar" in x for x in d.reasons)
|
||||
flaky.down = False
|
||||
d = r.route(RECHNUNG)
|
||||
assert d.stage == 1 and r.index_error is None
|
||||
|
||||
Reference in New Issue
Block a user