Dokumentation

Alles was du wissen musst, um TRM Oracle produktiv zu betreiben.

รœbersicht

TRM Oracle ist ein self-hosted KI-Assistent fรผr SAP Treasury and Risk Management. Das System crawlt dein eigenes SAP-System (DDIC-Schema, BAPIs, Customizing-Werte, System-Doku) und beantwortet Fragen mit konkreten Quellen-Zitaten โ€” kombiniert aus drei Ebenen:

  • Knowledge-Graph โ€” strukturiertes TRM-Inventar deines Systems
  • Vector-RAG โ€” semantische Suche in der DOKHL-System-Doku
  • Live-Verifikation โ€” jede Antwort wird gegen das laufende SAP-System gegengeprรผft

Architektur

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ Browser / Slack / Cursor / Claude Desktop โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ Frage โ–ผ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ Web-UI (FastAPI, Port 8080) / MCP-Server (stdio) โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ–ผ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ oracle/pipeline.py โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ Intent โ”‚โ†’ โ”‚ Graph โ”‚โ†’ โ”‚ Vector โ”‚โ†’ โ”‚ Live-Verify โ”‚ โ”‚ โ”‚ โ”‚ Parser โ”‚ โ”‚ Lookup โ”‚ โ”‚ RAG โ”‚ โ”‚ (XS1 SQL) โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ–ผ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ Synthesizer โ”‚ โ† Anthropic Claude (opt.) โ”‚ โ”‚ โ”‚ (anti-halluz.) โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ Antwort + Quellen โ–ผ User-Browser Datenseite (alles lokal in ./data/): โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ Graph (trm-knowledge.jsonl) โ”‚ ~165k Entities โ”‚ Vector Store (LanceDB) โ”‚ ~2.8k Chunks โ”‚ Raw Crawls (data/raw/*.jsonl) โ”‚ ~204k Records โ”‚ Q&A-History (qa_history.jsonl) โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Datenfluss

QuelleCrawler / SkriptZiel
SAP DDIC (TADIR, TSTC, TFDIR, DD02L, โ€ฆ)crawlers/crawl_*.pydata/raw/*.jsonl
data/raw/*.jsonlgraph/builder.pydata/graph/trm-knowledge.jsonl
DOKHL-Texte aus dem Crawlingest/embed_dokhl.pydata/vector/lancedb/
SAP Help Portal (TRM-Buch)ingest/embed_help_portal.py (Playwright)data/vector/lancedb/
OSS Notes (S-User-Export)ingest/embed_oss_notes.pydata/vector/lancedb/

Installation

Auto-Installer wรคhlt selbst zwischen Native (Python venv) und Docker โ€” entscheidend ist Python 3.11+:

curl -sSL https://trm-oracle.pages.dev/install.sh | bash
  • Mac/Linux mit Python 3.11+ โ†’ native (schneller, weniger Disk, sieht claude CLI)
  • Windows oder kein Python โ†’ docker (universell, isoliert)

Modus erzwingen:

curl -sSL https://trm-oracle.pages.dev/install.sh | bash -s -- --native
curl -sSL https://trm-oracle.pages.dev/install.sh | bash -s -- --docker

Air-Gapped (keine Auto-Installation von Python/Docker):

curl -sSL https://trm-oracle.pages.dev/install.sh | bash -s -- --skip-prereq

Manuell:

git clone https://github.com/Lomtech/trm_oracle.git ~/trm-oracle
cd ~/trm-oracle
cp .env.example .env  # editieren (oder Browser-Wizard verwenden)
# Native:
python3 -m venv .venv && .venv/bin/pip install -r requirements.txt
.venv/bin/python -m uvicorn web.app:app --host 0.0.0.0 --port 8080
# Oder Docker:
docker compose up -d

Nach dem Install: trm CLI ist global verfรผgbar โ€” siehe Daily Use.

Modes โ€” Docker vs. Native

Beide Modi liefern dasselbe Frontend, dieselbe API, dieselben Antworten. Sie unterscheiden sich nur im wie der Service lรคuft.

AspektNativeDocker
RuntimePython-Prozess auf dem HostContainer (isolierte Linux-VM)
VoraussetzungPython 3.11+Docker Desktop / Engine
Startzeit~2s~5s
Disk~600 MB venv~1.5 GB Image + Layer
RAM (idle)~400 MB~800 MB
claude CLI nutzbarโœ“ ja (Host-PATH)โœ— nein (Binary nicht im Image)
Updatepip install --upgradedocker compose build
Resetrm -rf .venv data/docker compose down -v
Multi-Instanz1 pro Porteinfach (Container)
PlattformMac / LinuxMac / Linux / Windows

Wahl-Hilfe:

  • Single-User auf Mac/Linux mit Anthropic Pro/Max/Team/Enterprise โ†’ Native (kostenlos via OAuth)
  • Windows โ†’ Docker (Python-Setup unter Windows ist Aufwand)
  • Zentraler Team-Server / Enterprise-Deployment โ†’ Docker (Isolation, Reproduzierbarkeit)
  • Multi-Instance auf einem Host (z.B. Test + Prod) โ†’ Docker

Wechsel jederzeit per CLI:

trm switch-to-native    # Docker โ†’ Python venv
trm switch-to-docker    # Native โ†’ Docker
trm mode                # aktuellen Modus anzeigen

Daten (.env, data/) bleiben beim Wechsel erhalten โ€” nur das Runtime-Drumherum รคndert sich.

Konfiguration (.env)

Komplette Liste der Umgebungsvariablen siehe Abschnitt .env-Reference. Minimale Konfiguration:

# SAP-Verbindung
SAP_HOST=https://your-sap.intern:44383
SAP_CLIENT=100
SAP_USER=TRM_READ
SAP_PASSWORD='deinPasswort'
SAP_VERIFY_TLS=false

# Lizenz (aus Trial-Mail)
TRM_ORACLE_LICENSE_KEY=trmo-XXXX-XXXX-XXXX-XXXX

# LLM-Synthese (optional)
ANTHROPIC_API_KEY=sk-ant-api03-...

# Vector-Embeddings (lokal = kein API-Key nรถtig)
TRM_EMBED_PROVIDER=local

Erstes Crawling

รœber Web-UI:

  1. Browser: localhost:8080/setup
  2. SAP-Verbindung sollte grรผnes Hรคkchen zeigen
  3. Klick "Crawl starten (Quick: ~3 Min)"

Per CLI:

cd ~/trm-oracle
docker compose exec trm-oracle python3 scripts/crawl_all.py --quick
# oder Full-Crawl (alle 14 Crawler)
docker compose exec trm-oracle python3 scripts/crawl_all.py --full
# oder einzelne
docker compose exec trm-oracle python3 scripts/crawl_all.py --only tcodes,bapi_params

Was beim Quick-Crawl gezogen wird (~3-5 Min):

  • TRM-Transaktionen (~4.000)
  • BAPI-Familie + Parameter (~27.000)
  • Customizing-Werte (~1.500)
  • Help-URL-Index
  • System-Doku DOKHL (~2.600)

trm CLI โ€” Daily Use

Der Installer richtet ein globales trm Command ein, das mode-aware ist (Docker oder Native). Du musst nie wieder docker compose โ€ฆ oder .venv/bin/python โ€ฆ tippen.

Steuerung

BefehlWas er tut
trm upService starten + auf Health warten
trm downService stoppen
trm restartNeu starten (ohne Rebuild)
trm statusMode + Container/Prozess-Status + Health-Check
trm logsLive-Logs (Ctrl+C raus)
trm logs 100Letzte 100 Zeilen statt Live

Browser

trm openHauptseite รถffnen (Fragen stellen)
trm wizardSetup-Wizard รถffnen (SAP / Provider / Lizenz)

Nutzung

trm ask "Frage"Frage via CLI (ohne Browser, JSON-Output verfรผgbar)

Wartung

trm updategit pull + Update + Restart (mode-aware)
trm crawlVerfรผgbare Crawler auflisten
trm crawl bapi_paramsEinzelnen Crawler ausfรผhren
trm shellContainer-bash oder venv-Shell รถffnen
trm resetKomplett-Reset (mit Bestรคtigung โ€” lรถscht data/ + .env)

Mode-Wechsel

trm modeAktuellen Mode anzeigen (docker oder native)
trm switch-to-nativeDocker stoppen โ†’ Python venv aufsetzen โ†’ Native starten
trm switch-to-dockerNative stoppen โ†’ Docker-Container starten

Einrichten

trm install-cliSymlink anlegen damit trm global verfรผgbar ist (vom Installer aufgerufen)
trm helpKomplette Befehlsliste

Backups + manueller Zugriff

# .env-Backups (automatisch bei jedem Wizard-Save, 5 Versionen)
ls ~/trm-oracle/data/.env-backups/

# Knowledge-Graph + Vector-Store backuppen
tar czf trm-backup-$(date +%F).tgz ~/trm-oracle/data/

# Pfad-Overrides
TRM_INSTALL_DIR=/anderer/pfad trm up
TRM_URL=http://server:8080 trm status

Crawler (14)

Jeder Crawler ist eigenstรคndig in crawlers/crawl_*.py:

CrawlerSAP-QuelleZweck
packagesTDEVC, TDEVCTTRM-Pakete + Hierarchie
tcodesTSTC, TSTCT, TADIR, TSTCATransaktionen + Programm + Auth-Objekt
function_modulesTFDIR, TFTIT, ENLFDIRFMs + BAPIs
bapi_paramsFUPARAREFBAPI/FM-Parameter-Schemas
ddic_tablesDD02L, DD02T, DD03LTabellen + Felder
domainsDD01L, DD01T, DD07L, DD07TDomรคnen + Festwerte
data_elementsDD04L, DD04TDatenelemente
viewsDD25L, DD25T, VCLDIRViews + View-Cluster
auth_objectsTOBJ, TOBJTBerechtigungsobjekte
messagesT100TRM-Nachrichten-Klassen
img_nodesTCUS_XREF / CUS_ACTHIMG-Customizing-Pfade (Schema-abhรคngig)
customizing_valuesT-Tabellen + T-Text-PartnerEchte Pflege-Werte (AT10/SANLF, TZKN2 etc.)
securitiesVWP*/VVS*/VWB*/VFP*Wertpapier-Stammdaten
dokhlDOKHL, DOKTLSystem-Doku zu BAPIs, Domรคnen, IMG

Knowledge-Graph

JSONL-basiert (kompatibel mit MCP-Memory-Format). Liegt unter data/graph/trm-knowledge.jsonl.

Entity-Types (17)

TRM_PACKAGE          TRM_PROGRAM         TRM_CLASS
TRM_FUNCTION_MODULE  TRM_BAPI            TRM_BAPI_PARAM
TRM_TCODE            TRM_DDIC_TABLE      TRM_DDIC_FIELD
TRM_DOMAIN           TRM_DATA_ELEMENT    TRM_FIXED_VALUE
TRM_VIEW             TRM_VIEW_CLUSTER    TRM_IMG_NODE
TRM_CUSTOMIZING_TABLE TRM_AUTH_OBJECT    TRM_MESSAGE
TRM_DOC_CHUNK

Relation-Types

BELONGS_TO_PACKAGE   IMPLEMENTS         CALLS
READS                WRITES             USES_DOMAIN
HAS_FIELD            HAS_PARAM          HAS_FIXED_VALUE
HAS_DATA_ELEMENT     CUSTOMIZES         MAPS_TO_TABLE
MAPS_TO_TCODE        MAPS_TO_VIEW       DOCUMENTED_BY
AUTHORIZES           PART_OF_VIEW_CLUSTER

Vector-RAG

LanceDB-basiert. Default-Embedding-Modell: intfloat/multilingual-e5-base (768-dim, lokal, kein API-Key).

Provider-Auswahl

TRM_EMBED_PROVIDERBeschreibungVoraussetzung
local (default)sentence-transformers, lรคuft offline250 MB Modell-Download einmalig
openaitext-embedding-3-largeOPENAI_API_KEY
anthropic / voyageVoyage AI (Anthropic-Empfehlung)VOYAGE_API_KEY

LLM-Synthese

In oracle/synthesizer.py. Komponiert aus Graph-Treffern + RAG-Snippets + Live-Verifikation einen Customizing-Leitfaden mit Quellen-Zitaten inline. Anti-Halluzinations-System-Prompt: LLM darf nichts ausgeben das nicht in den รผbergebenen Daten vorkommt.

Fallback-Modus

Ohne ANTHROPIC_API_KEY rendert das System deterministisches Markdown statt LLM-Synthese. Funktioniert weiter, ist aber weniger fachlich formuliert.

MCP โ€” Claude Desktop / Cursor / Continue / Zed

Das Orakel exponiert seine 5 Tools als Model Context Protocol Server (stdio). Damit kannst du es direkt in deiner IDE / AI-Assistent nutzen โ€” Cursor ruft im Hintergrund trm_bapi_explain wenn du ABAP schreibst und einen BAPI-Aufruf brauchst.

Setup-Snippet (fรผr Claude Desktop):

{
  "mcpServers": {
    "trm-oracle": {
      "command": "/Users/<you>/.pyenv/versions/3.12.3/bin/python3",
      "args": [
        "/Users/<you>/trm-oracle/scripts/run_mcp.py"
      ],
      "env": {
        "TRM_EMBED_PROVIDER": "local"
      }
    }
  }
}

Pro IDE-Setup-Guide siehe Repo: integrations/mcp/setup-*.md

Slack-Bot (Pro-Tier)

FastAPI-basierter Slack-Bot reagiert auf @trm-orakel-Mentions in Channels.

# 1. Slack-App via Manifest erstellen (integrations/slack/manifest.yml)
# 2. SLACK_BOT_TOKEN + SLACK_SIGNING_SECRET in .env
# 3. Bot starten:
docker compose -f docker-compose.yml -f docker-compose.slack.yml up -d
# 4. In Slack: /invite @trm-orakel

Komplette Anleitung: integrations/slack/README.md

Direkter Script-Zugriff

Fรผr Automation oder wenn das trm CLI nicht reicht โ€” direkter Aufruf der Python-Scripts:

# Native:
cd ~/trm-oracle
.venv/bin/python scripts/ask.py "Welche Felder hat VTBFHA?"
.venv/bin/python scripts/ask.py --json "BAPI_FTR_CREATEFROMDATA"
.venv/bin/python scripts/bootstrap.py        # Konfig-Check
.venv/bin/python scripts/crawl_all.py --quick
.venv/bin/python scripts/status.py
.venv/bin/python eval/run_eval.py             # 12 Test-Szenarien

# Docker:
docker compose exec trm-oracle python3 scripts/ask.py "Welche Felder hat VTBFHA?"
docker compose exec trm-oracle python3 scripts/ask.py --json "BAPI_FTR_CREATEFROMDATA"
docker compose exec trm-oracle python3 scripts/crawl_all.py --quick
docker compose exec trm-oracle python3 eval/run_eval.py

# Mode-agnostisch via trm CLI (empfohlen fรผr 90% der Fรคlle):
trm ask "Welche Felder hat VTBFHA?"
trm ask --json "BAPI_FTR_CREATEFROMDATA"
trm crawl                  # zeigt Liste der Crawler
trm crawl bapi_params      # einzelner Crawler

Web-API

EndpointMethodeBeschreibung
/GETWeb-UI
/askPOSTFrage stellen (form-encoded: question=...)
/setupGETSetup-Dashboard (SAP-Status, Lizenz, Crawl-Trigger)
/healthGETLiveness + Entity-Count + License-Status
/api/statsGETJSON-Stats รผber Graph + History
/api/crawlPOSTCrawl-Job triggern (Body: {"mode":"quick"})
/licenseGETLizenz-Status (Trial / Commercial)

5 MCP-Tools (Referenz)

trm_explain(scenario: str)

Vollstรคndiges Szenario-Routing. Default-Entry-Point fรผr freie Fragen.

trm_bapi_explain(name: str)

BAPI-Tiefenanalyse: Parameter, Doku, Live-Existenz-Check.

trm_field_lookup(table: str, field?: str)

DDIC-Tabelle bzw. einzelnes Feld erklรคren (Domain, Datenelement, Festwerte).

trm_customizing_path(topic: str)

IMG-Knoten + Customizing-Tabellen zu einem fachlichen Thema.

trm_doc_search(query: str, limit?: int)

Vektor-Suche im DOKHL-Korpus + Help + Notes.

.env-Reference

VariableDefaultBeschreibung
SAP_HOSTโ€”SAP-Backend-URL (mit Port)
SAP_CLIENT100Mandant
SAP_USERโ€”SAP-User
SAP_PASSWORDโ€”Passwort (in Single-Quotes wenn $-Zeichen drin)
SAP_VERIFY_TLStruefalse bei selbst-signierten Zerts
ANTHROPIC_API_KEYโ€”Optional, fรผr LLM-Synthese
TRM_EMBED_PROVIDERlocallocal / openai / anthropic / voyage
TRM_LOCAL_EMBED_MODELintfloat/multilingual-e5-baseHF-Modell-ID
TRM_ORACLE_LICENSE_KEYโ€”Aus Trial-Mail (trmo-XXXX-โ€ฆ)
TRM_LICENSE_APIlicense-Worker-URLLicense-Server-Endpoint
TRM_LICENSE_OFFLINE01 = Air-Gapped-Modus, kein Online-Verify
TRM_TRIAL_DAYS30Trial-Dauer wenn kein License-Key
TRM_DATA_DIR./dataPersistente Daten
TRM_LOG_LEVELINFODEBUG / INFO / WARNING / ERROR
SAP_HELP_FETCH_BACKENDplaywrightplaywright / http / pdf-local
SAP_HELP_USER_AGENTClaudeBot/1.0 โ€ฆUA fรผr SAP-Help-Crawl
SLACK_BOT_TOKENโ€”Nur fรผr Slack-Bot (Pro-Tier)
SLACK_SIGNING_SECRETโ€”Slack-Webhook-Verifikation

Lizenz-Tiers

TierSAP-SystemeBeraterSlack-BotCustom CrawlerPreis
Trial11โ€”โ€”0 โ‚ฌ / 30 Tage
Starter11โ€”โ€”299 โ‚ฌ/Mon
Pro3bis 5โœ“โ€”799 โ‚ฌ/Mon
Enterpriseunlimitedunlimitedโœ“โœ“ab 2.500 โ‚ฌ/Mon

Troubleshooting

ProblemLรถsung
Service startet nichtdocker compose logs trm-oracle ansehen
SAP-Verbindung schlรคgt fehlVPN/Cloud-Connector aktiv? Test: docker compose exec trm-oracle curl -sk <SAP_HOST>/sap/bc/adt/discovery
"401 Unauthorized" am ADTUser hat S_DEVELOP nicht. User-Rechte-Checkliste
Crawl liefert 0 RowsTRM-Paket-Patterns stimmen evtl. nicht. Live-Probe: SELECT TABNAME FROM DD02L WHERE TABNAME LIKE 'FTR%'
"LIKE is not allowed here"ADT-Datapreview-SQL-Limits. Siehe sap_client._normalize_open_sql + Memory-Eintrag ADT_DATAPREVIEW_SQL_LIMITS
Embedding-Modell lรคdt jedes Mal neuModell wird in Docker-Image gebakt (Dockerfile RUN python -c ...). Bei native-Install: ~/.cache/huggingface/
LLM-Synthese antwortet seltsamANTHROPIC_API_KEY-Format prรผfen (sk-ant-api03-โ€ฆ). Wenn leer: Fallback-Markdown ist erwartet
License-Trial abgelaufenAntworten funktionieren weiter. Neue Lizenz unter /pricing

FAQ

Verlassen meine SAP-Daten je den Container?

Nein fรผr Customizing-Daten / DDIC-Schema / DOKHL-Texte โ€” die bleiben lokal in ./data/. Nur bei aktivierter LLM-Synthese gehen pro Frage 3-8 relevante Snippets (~3 KB) an Anthropic. Air-Gapped-Modus deaktiviert auch das.

Kostet die Anthropic-API extra?

Ja, du brauchst einen eigenen Anthropic-Account + API-Key. ~0.03 โ‚ฌ pro Frage, bei 50 Fragen/Tag = ~45 โ‚ฌ/Monat. Bei einem Berater-Tagessatz von 1.500 โ‚ฌ: ROI > 100ร—.

Funktioniert das auch mit ECC statt S/4HANA?

Ja โ€” die DDIC-Tabellen heiรŸen gleich. Die Crawler-Patterns sind defensiv gegen Schema-Unterschiede getestet (z.B. CUS_ACTH vs. CUS_IMGACH fรผr IMG).

Wie oft sollte ich re-crawlen?

Nach jedem Customizing-Transport. Bei stabilem System: 1ร— pro Woche. Quick-Modus dauert 3-5 Min, daher unproblematisch.

Kann ich Z-Tabellen ergรคnzen?

Ja. config.py editieren โ†’ TRM_PACKAGE_PATTERNS erweitern. Bei Enterprise-Tier: wir bauen den Custom Crawler fรผr dich.

DSGVO-konform fรผr Banken?

Self-hosted = du behรคltst volle Daten-Hoheit. Air-Gapped-Modus = null externe API-Calls. Siehe Datenschutzerklรคrung fรผr alle Sub-Prozessoren.

Changelog

Vollstรคndig: GitHub-Commits

v0.1.0 โ€” 2026-05-15
  • Initial Public Release
  • 14 Crawler, 165k Entities Graph
  • LLM-Synthesizer + Fallback-Markdown
  • License-Server (Cloudflare Worker)
  • Landing-Page + Trial-Form
  • MCP-Integration fรผr Claude Desktop / Cursor / Continue.dev
  • Slack-Bot (Pro-Tier)