79 lines
2.6 KiB
Python
79 lines
2.6 KiB
Python
import os
|
|
import hashlib
|
|
from dotenv import load_dotenv
|
|
from pathlib import Path
|
|
|
|
load_dotenv()
|
|
|
|
# --- API & PORTS ---
|
|
API_BASE_URL = os.getenv("MINDNET_API_URL", "http://localhost:8002")
|
|
CHAT_ENDPOINT = f"{API_BASE_URL}/chat"
|
|
FEEDBACK_ENDPOINT = f"{API_BASE_URL}/feedback"
|
|
INGEST_ANALYZE_ENDPOINT = f"{API_BASE_URL}/ingest/analyze"
|
|
INGEST_SAVE_ENDPOINT = f"{API_BASE_URL}/ingest/save"
|
|
|
|
# --- QDRANT ---
|
|
QDRANT_URL = os.getenv("QDRANT_URL", "http://localhost:6333")
|
|
QDRANT_KEY = os.getenv("QDRANT_API_KEY", None)
|
|
if QDRANT_KEY == "": QDRANT_KEY = None
|
|
COLLECTION_PREFIX = os.getenv("COLLECTION_PREFIX", "mindnet")
|
|
|
|
# --- FILES & TIMEOUTS ---
|
|
HISTORY_FILE = Path("data/logs/search_history.jsonl")
|
|
timeout_setting = os.getenv("MINDNET_API_TIMEOUT") or os.getenv("MINDNET_LLM_TIMEOUT")
|
|
API_TIMEOUT = float(timeout_setting) if timeout_setting else 300.0
|
|
|
|
# --- STYLING CONSTANTS ---
|
|
|
|
# Basierend auf types.yaml
|
|
GRAPH_COLORS = {
|
|
# Kerntypen
|
|
"experience": "#feca57", # Gelb/Orange
|
|
"project": "#ff9f43", # Dunkleres Orange
|
|
"decision": "#5f27cd", # Lila
|
|
|
|
# Persönlichkeit
|
|
"value": "#00d2d3", # Cyan
|
|
"principle": "#0abde3", # Dunkles Cyan
|
|
"belief": "#48dbfb", # Helles Blau
|
|
"profile": "#1dd1a1", # Grün
|
|
|
|
# Strategie & Risiko
|
|
"goal": "#ff9ff3", # Pink
|
|
"risk": "#ff6b6b", # Rot
|
|
|
|
# Basis
|
|
"concept": "#54a0ff", # Blau
|
|
"task": "#8395a7", # Grau-Blau
|
|
"journal": "#c8d6e5", # Hellgrau
|
|
"source": "#576574", # Dunkelgrau
|
|
"glossary": "#222f3e", # Sehr dunkel
|
|
|
|
"default": "#8395a7" # Fallback
|
|
}
|
|
|
|
# System-Kanten, die wir NICHT im Graphen sehen wollen, um Rauschen zu reduzieren
|
|
SYSTEM_EDGES = ["prev", "next", "belongs_to"]
|
|
|
|
def get_edge_color(kind: str) -> str:
|
|
"""Generiert eine deterministische Farbe basierend auf dem Edge-Typ."""
|
|
if not kind: return "#bdc3c7"
|
|
|
|
# Einige feste Farben für wichtige semantische Typen
|
|
fixed_colors = {
|
|
"depends_on": "#ff6b6b", # Rot (Blocker/Abhängigkeit)
|
|
"blocks": "#ee5253", # Dunkelrot
|
|
"caused_by": "#ff9ff3", # Pink
|
|
"related_to": "#c8d6e5", # Hellgrau (Hintergrund)
|
|
"references": "#bdc3c7", # Grau
|
|
"derived_from": "#1dd1a1" # Grün
|
|
}
|
|
|
|
if kind in fixed_colors:
|
|
return fixed_colors[kind]
|
|
|
|
# Fallback: Hash-basierte Farbe für dynamische Typen
|
|
# Wir nutzen einen Pastell-Generator, damit es nicht zu grell wird
|
|
hash_obj = hashlib.md5(kind.encode())
|
|
hue = int(hash_obj.hexdigest(), 16) % 360
|
|
return f"hsl({hue}, 60%, 50%)" |