testscript für WP06 korrigiert
All checks were successful
Deploy mindnet to llm-node / deploy (push) Successful in 4s

This commit is contained in:
Lars 2025-12-09 17:45:08 +01:00
parent 86faf5b8f0
commit d2270fafdd

View File

@ -1,6 +1,8 @@
""" """
tests/test_wp06_decision.py Flexibler Integrationstest für WP-06 tests/test_wp06_decision.py Flexibler Integrationstest für WP-06
Update: Timeout auf 300s erhöht für CPU-Inference Cold-Starts. Update:
- Timeout auf 300s erhöht.
- Robusteres Auslesen der Metadaten (Payload/Source Fix).
""" """
import requests import requests
import json import json
@ -31,7 +33,9 @@ def test_decision_engine(query: str, port: int, expected_intent: str):
# 1. Intent Check # 1. Intent Check
intent = data.get("intent", "UNKNOWN") intent = data.get("intent", "UNKNOWN")
match = intent == expected_intent # Wir normalisieren auf Großbuchstaben für den Vergleich
match = intent.upper() == expected_intent.upper()
print(f"\n1. INTENT DETECTION: [{'' if match else ''}]") print(f"\n1. INTENT DETECTION: [{'' if match else ''}]")
print(f" Erkannt: {intent} (Erwartet: {expected_intent})") print(f" Erkannt: {intent} (Erwartet: {expected_intent})")
@ -45,17 +49,21 @@ def test_decision_engine(query: str, port: int, expected_intent: str):
print(" (Keine Quellen gefunden)") print(" (Keine Quellen gefunden)")
for i, source in enumerate(sources): for i, source in enumerate(sources):
# Safe access auf Source-Dict # --- FIX: Robusterer Zugriff auf Metadaten ---
src_meta = source.get("source", {}) # Qdrant liefert Daten oft in 'payload', Mindnet DTOs manchmal in 'source'
# Wir prüfen beides, um "Typ: unknown" zu vermeiden.
src_meta = source.get("payload") or source.get("source") or {}
node_type = src_meta.get("type", "unknown") node_type = src_meta.get("type", "unknown")
title = source.get("note_id", "Unknown") title = source.get("note_id", "Unknown")
score = source.get("total_score", 0.0) score = source.get("total_score", 0.0)
# Marker für Ausgabe # Marker für Ausgabe
marker = " " marker = " "
if node_type in ["value", "principle", "goal", "experience", "belief", "profile"]: # Liste aller strategischen Typen, die wir besonders hervorheben wollen
if node_type in ["value", "principle", "goal", "experience", "belief", "profile", "decision"]:
marker = "🎯" # Strategischer Treffer marker = "🎯" # Strategischer Treffer
strategic_hits.append(title) strategic_hits.append(f"{title} ({node_type})")
else: else:
marker = "📄" marker = "📄"
fact_hits.append(title) fact_hits.append(title)
@ -77,7 +85,7 @@ def test_decision_engine(query: str, port: int, expected_intent: str):
except requests.exceptions.ReadTimeout: except requests.exceptions.ReadTimeout:
print(f"\n❌ TIMEOUT: Der Server hat nicht innerhalb von 300s geantwortet.") print(f"\n❌ TIMEOUT: Der Server hat nicht innerhalb von 300s geantwortet.")
print(" Tipp: Prüfe die Server-Logs. Lädt er noch das Modell?") print(" Tipp: Prüfe die Server-Logs (Terminal 1). Lädt er noch das Modell?")
sys.exit(1) sys.exit(1)
except requests.exceptions.ConnectionError: except requests.exceptions.ConnectionError:
print(f"\n❌ FEHLER: Keine Verbindung zu {api_url}. Läuft der Server?") print(f"\n❌ FEHLER: Keine Verbindung zu {api_url}. Läuft der Server?")
@ -96,7 +104,7 @@ if __name__ == "__main__":
help="Der Port der API (Default: 8002 für Dev).") help="Der Port der API (Default: 8002 für Dev).")
parser.add_argument("--expect", "-e", type=str, parser.add_argument("--expect", "-e", type=str,
default="DECISION", default="DECISION",
help="Der erwartete Intent (z.B. DECISION, EMPATHY).") help="Der erwartete Intent (z.B. DECISION, EMPATHY, FACT).")
args = parser.parse_args() args = parser.parse_args()