mirror of
https://github.com/Jeuners/Logpy-AgentOne.git
synced 2026-09-09 15:02:33 +02:00
Gegenstueck zum "agent-one test"-Kommando in Alice (dillenberg.net,
dilles-agent.php). Kein Live-Aufruf zwischen den Systemen noetig - beide
teilen sich TESTZUGANG_SECRET, das Token ist ein HMAC-signierter
Ablauf-Zeitstempel ("ablauf.signatur"), stateless geprueft.
pipe/testzugang.py: gueltig(token) prueft Signatur (hmac.compare_digest)
und Ablauf. _angemeldet() in server.py akzeptiert das Token zusaetzlich zum
Passwort - per ?zugang=... in der URL oder per zugang-Cookie fuer
Folgeanfragen (fetch()-Aufrufe der Seite tragen die URL nicht mit). Ein
frisches URL-Token setzt das Cookie (HttpOnly, Secure, SameSite=Lax) fuer
den Rest der Stunde.
End-to-End getestet: PHP-generiertes Token wird von Python akzeptiert
(Cross-Language-HMAC-Kompatibilitaet bestaetigt), ungueltige Signatur und
abgelaufenes Token werden korrekt abgelehnt (401), Cookie-Folgeanfrage ohne
erneutes Token/Passwort funktioniert.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015vtvcyNkapuDh583643hNs
102 lines
4.1 KiB
Text
102 lines
4.1 KiB
Text
# --- Spracherkennung (lokal) ---
|
|
# whispercpp = Apple-GPU, nutzt ein vorhandenes ggml-Modell (Standard)
|
|
# faster = faster-whisper, lädt das Modell bei Bedarf selbst
|
|
STT_BACKEND=whispercpp
|
|
# Feste Sprache erzwingen (de) oder leer lassen für Auto-Erkennung:
|
|
WHISPER_SPRACHE=de
|
|
# Nur für STT_BACKEND=whispercpp:
|
|
WHISPERCPP_BIN=whisper-cli
|
|
#WHISPERCPP_MODELL=/Users/DEIN_NAME/whisper-models/ggml-large-v3-turbo.bin
|
|
WHISPER_THREADS=8
|
|
# Nur für STT_BACKEND=faster:
|
|
WHISPER_MODELL=medium
|
|
WHISPER_COMPUTE=int8
|
|
|
|
# --- Kategorisierung ---
|
|
# Backend: "ollama" (Default, lokal) oder "openrouter" (Cloud, nur zum Testen
|
|
# ob ein staerkeres Modell besser extrahiert - Transkript verlaesst dabei den
|
|
# Rechner, nicht im Praxisbetrieb einsetzen).
|
|
KATEGORISIERUNG_BACKEND=ollama
|
|
OLLAMA_URL=http://127.0.0.1:11434
|
|
OLLAMA_MODELL=qwen3:8b
|
|
# Nur fuer KATEGORISIERUNG_BACKEND=openrouter:
|
|
OPENROUTER_KEY=
|
|
OPENROUTER_MODELL=
|
|
|
|
# --- Nextcloud (leer lassen = nur lokale Ablage) ---
|
|
NEXTCLOUD_URL=
|
|
NEXTCLOUD_USER=
|
|
NEXTCLOUD_PASS=
|
|
NEXTCLOUD_ORDNER=Anrufe
|
|
# Interne User-ID für den WebDAV-Pfad. Nur nötig, wenn der Login eine E-Mail ist
|
|
# und daher von der User-ID abweicht.
|
|
NEXTCLOUD_USERID=
|
|
# Schaltet nur den Datei-Upload ab (Aufnahmen/Transkripte) - für reinen
|
|
# Kontakt-Abgleich ohne dass Anrufdaten die Maschine verlassen auf 0 setzen.
|
|
NEXTCLOUD_UPLOAD=1
|
|
# Adressbuch (CardDAV) für den Kontakt-Abgleich bei eingehenden Anrufen.
|
|
# Nextclouds Standard-Adressbuch heißt "contacts".
|
|
NEXTCLOUD_ADRESSBUCH=contacts
|
|
|
|
# --- Aufbewahrungsfrist (pipe.loeschen, täglich per Cron) ---
|
|
# Nach so vielen Tagen wird ein erledigter Anruf (Aufnahme + Transkript)
|
|
# gelöscht - lokal und bei Nextcloud. 0 = aus, nichts wird gelöscht. Greift
|
|
# nur im letzten Stapel (DECK_STAPEL[-1], Default "Erledigt") - unbearbeitete
|
|
# Anrufe bleiben unangetastet, egal wie alt.
|
|
LOESCHFRIST_TAGE=0
|
|
|
|
# --- Telefonie (SIP-Zugang der Praxis, leer lassen = keine Telefonannahme) ---
|
|
SIP_USER=
|
|
SIP_DOMAIN=sip.plusnet.de
|
|
SIP_PASS=
|
|
SIP_PROXY=voice01.sip.plusnet.de
|
|
|
|
# --- Ansage ---
|
|
# piper = lokal, natuerlich, Modelle unter ~/piper-voices
|
|
# say = lokal, macOS-Bordmittel (Rueckfall wenn Piper fehlt)
|
|
# mistral = Voxtral-API (Cloud) - nur fuer die einmalige Erzeugung der
|
|
# ansage.wav, die danach lokal fuer jeden Anruf wiederverwendet
|
|
# wird. Keine Live-Anrufdaten gehen dabei nach aussen.
|
|
ANSAGE_TTS=piper
|
|
ANSAGE_STIMME=de_DE-thorsten_emotional-medium
|
|
ANSAGE_EMOTION=0
|
|
# Nur fuer ANSAGE_TTS=mistral (Stimmen: telefon/ansage_bauen.sh --list-voices
|
|
# gibt es nicht direkt her - siehe MISTRAL_TTS_MODEL/Skill-Doku fuer die Liste)
|
|
MISTRAL_KEY=
|
|
MISTRAL_TTS_MODEL=voxtral-mini-tts-latest
|
|
|
|
# --- Deck-Triage-Board (Nextcloud) ---
|
|
# Hauptschalter: ohne 1 entsteht kein Board, egal was unten steht.
|
|
NEXTCLOUD_DECK=0
|
|
DECK_BOARD=Anrufe
|
|
# Nutzer, die das Deck-Board sehen sollen (kommagetrennt)
|
|
DECK_TEILEN=
|
|
# Stapel des Deck-Boards (Arbeitsablauf, kommagetrennt)
|
|
DECK_STAPEL="Eingang,In Bearbeitung,Rückfragen,Erledigt"
|
|
|
|
# --- Leitstand (Weboberfläche) ---
|
|
# 127.0.0.1 = nur dieser Rechner. 0.0.0.0 = im Netz erreichbar, dann ist
|
|
# LEITSTAND_PASS Pflicht (die Seiten zeigen Patiententranskripte).
|
|
# Achtung: 0.0.0.0 bindet auf ALLE Interfaces, nicht nur ein VPN/Tailscale -
|
|
# läuft nebenher ein normales WLAN/LAN, ist der Leitstand auch dort
|
|
# erreichbar. Gezielt nur im VPN erreichbar: die konkrete VPN-IP eintragen
|
|
# statt 0.0.0.0 (z. B. die Tailscale-IP 100.x.x.x).
|
|
LEITSTAND_HOST=127.0.0.1
|
|
LEITSTAND_PORT=8088
|
|
LEITSTAND_USER=praxis
|
|
LEITSTAND_PASS=
|
|
|
|
# Optional: geteiltes Geheimnis fuer signierte, 1h gueltige Testzugangslinks
|
|
# (z.B. per Chatbot-Kommando ausgegeben). Leer = Feature aus.
|
|
TESTZUGANG_SECRET=
|
|
|
|
# --- Telefonanlage (nur Stufe 2) ---
|
|
# Event-Socket-Port von FreeSWITCH. Muss zu listen-port in
|
|
# autoload_configs/event_socket.conf.xml passen, sonst antwortet fs_cli nicht
|
|
# und telefon/starten.sh sieht den Trunk nie als registriert.
|
|
FS_PORT=8099
|
|
# Konfigurationsverzeichnis von FreeSWITCH (Apple Silicon: /opt/homebrew/...)
|
|
FS_ETC=/opt/homebrew/etc/freeswitch
|
|
# Log von FreeSWITCH; der Leitstand liest daraus die Anruf-Ereignisse.
|
|
# Apple Silicon: /opt/homebrew/... , Intel-Mac: /usr/local/...
|
|
#FREESWITCH_LOG=/opt/homebrew/var/log/freeswitch/freeswitch.log
|