feat(agent): add test frontend and Docker stack

This commit is contained in:
2026-09-16 21:42:05 +02:00
parent c8b55fbd38
commit 4f5107a46a
16 changed files with 1065 additions and 71 deletions
+27 -2
View File
@@ -43,14 +43,39 @@ python -m agent.cli eval
python -m agent.cli eval --answers --json-out data/eval-report.json
# 4) HTTP-API + Test-Chat
python -m agent.cli serve # http://127.0.0.1:8080 (/v1/ask, /v1/health, /v1/reindex)
python -m agent.cli serve # http://127.0.0.1:8080/ (UI + v1-API)
# Zielhost im Tailscale-Netz (PV_API_KEY muss gesetzt sein)
python -m agent.cli serve --host 100.103.83.12
# UI: http://100.103.83.12:8080/
```
Das dependency-freie Frontend unter `/` zeigt Health, Antwortstatus, Quellen,
Konflikte und Rückfragen. Der Service-Key wird nur im Browser eingegeben und
optional ausschließlich für den aktuellen Tab gespeichert.
Der stabile v1-Vertrag, Bearer-Authentisierung, Fehlersemantik und die
Datenschutzgrenze für die spätere Odoo-Anbindung sind in `docs/API.md`
dokumentiert. v1 ist zustandslos und akzeptiert keine Mandanten-, Mitarbeiter-
oder Abrechnungsobjekte.
## Docker Compose auf `100.103.83.12`
Der Stack in `compose.yaml` verbindet den Agenten mit dem bereits vorhandenen
externen Docker-Netz `ollama-default`; Ollama wird nicht dupliziert. Setup und
Smoke-Tests: `docs/DOCKER.md`.
```bash
cp .env.example .env # API-Key und Ollama-DNS-Alias setzen
docker compose build
docker compose up -d
```
UI: `http://100.103.83.12:8080/`. `data/` wird schreibbar und
`wissensbasis/` read-only eingebunden; weder Index noch lokale Quellkorpora
landen im Image.
## Konfiguration (Umgebungsvariablen)
| Variable | Default | Bedeutung |
@@ -216,7 +241,7 @@ agent/
api.py FastAPI v1 (/v1/ask, /v1/health, /v1/reindex), Auth + Request-IDs
cli.py ingest | ask | eval | serve
eval/ goldset.yaml + evaluate.py
web/index.html Minimaler Test-Chat
web/ Same-origin Test-Frontend (HTML, CSS, JavaScript)
tools/ Intake + Registry (build_registry.py, ingest_sources.py)
tests/ 64 Tests (offline, Fake-Ollama)
data/ index.db (gitignored)