This commit is contained in:
2025-11-15 08:42:00 +01:00
parent 47a22ac2a6
commit afe3db934c
48 changed files with 30234 additions and 749 deletions

View File

@@ -50,9 +50,9 @@ def create_app(config: Optional[Dict[str, Any]] = None) -> FastAPI:
pass
try:
from agent_api.router import agent_router
import agent_api
app.include_router(agent_router, prefix="/api")
app.include_router(agent_api.agent_router, prefix="/api")
except Exception:
# Agenten-API ist optional und wird bei fehlender Implementierung ignoriert
pass

View File

@@ -0,0 +1,19 @@
# Agenten-API Modulkonfiguration (Standardwerte)
# Wird vom optionalen Modul geladen; Anpassungen erfolgen projektspezifisch.
metadata:
name: "agent_api"
description: "Konfiguration für die optionale Agenten-API-Erweiterung."
execution:
mode: "async" # Optionen: "async" oder "sync"
response_timeout_seconds: 30 # Maximale Wartezeit für synchrone Antworten (Sekunden)
queue_ttl_seconds: 300 # Lebensdauer eines Tasks in Sekunden
heartbeat_interval_seconds: 10 # Interval für Heartbeats der Hintergrund-Worker (Sekunden)
llm:
provider: "local_stub" # Setze z. B. "openai" wenn externe APIs verwendet werden
model: "local-agent"
api_base_url: null # Externe Basis-URL, z. B. https://api.openai.com/v1
api_key: null # Wird durch die Umgebungsvariable AGENT_API_LLM_KEY überschrieben
request_timeout_seconds: 15 # Request-Timeout für den LLM-Client in Sekunden

View File

@@ -116,7 +116,33 @@ def init_logging(settings: Settings, app_config: Optional[Dict[str, Any]] = None
logging.getLogger(__name__).exception(
"Fehler bei Initialisierung des internen SQLite-Loggings; Handler wird nicht aktiviert."
)
# Optionale Integration: externes DB-Logging (01_Modulerweiterungen)
try:
external_cfg = ((app_config or {}).get("logging_external") or {})
except Exception:
external_cfg = {}
if isinstance(external_cfg, dict) and external_cfg.get("enabled"):
try:
import importlib
ext_mod = importlib.import_module("logging_external")
except Exception:
logging.getLogger(__name__).warning(
"logging_external Modul nicht importierbar; externer DB-Handler wird nicht aktiviert."
)
else:
try:
# ext_mod.init akzeptiert entweder connection_url ODER config-Dict
# Wir übergeben das gesamte Config-Dict und lassen das Modul die URL bauen.
ext_mod.init(config=external_cfg)
ext_handler = ext_mod.get_handler(level)
root.addHandler(ext_handler)
logging.getLogger(__name__).info("Externer DB-Log-Handler aktiviert.")
except Exception:
logging.getLogger(__name__).exception(
"Fehler bei Initialisierung des externen DB-Loggings; Handler wird nicht aktiviert."
)
def _reset_logger_handlers(logger: logging.Logger) -> None:
"""Entfernt alle existierenden Handler vom Logger."""