diff --git a/FUNKTIONSWEISE.md b/FUNKTIONSWEISE.md
index 123e319..c65b0b8 100644
--- a/FUNKTIONSWEISE.md
+++ b/FUNKTIONSWEISE.md
@@ -29,19 +29,28 @@ mdgrep hat **keinen Suchindex**. Alle Texte liegen als *Blöcke* im Speicher; je
und ist bei einigen Megabyte Text schnell genug.
```mermaid
-flowchart LR
+flowchart TB
subgraph Anfrage
- Q["Suchtext
(rust OR go) -crypto"] --> T[Tokenizer] --> P[Parser] --> AST["Syntaxbaum
And/Or/Not/Term"]
+ direction TB
+ Q["Suchtext
(rust OR go) -crypto"] --> T[Tokenizer]
+ T --> P[Parser]
+ P --> AST["Syntaxbaum
And / Or / Not / Term"]
end
subgraph Daten
- D["Markdown-Dateien
oder eigene Daten"] --> L["load_markdown()
split_markdown()"] --> B["Blöcke
(title, text, meta)"]
+ direction TB
+ D["Markdown-Dateien
oder eigene Daten"] --> L["load_markdown()
split_markdown()"]
+ L --> B["Blöcke
title, text, meta"]
end
AST --> E["SearchEngine.search()"]
B --> E
- E --> F[Filter] --> M["Treffer prüfen
(mit Zeitbudget)"] --> S["sortieren, gruppieren,
Seite ausschneiden"]
- S --> H["Fundstellen (Spans)
→ Ausschnitte (Segmente)"] --> R["SearchResult
.to_dict()"]
- R --> CLI["mdgrep (Terminal)"]
- R --> API["Flask: GET /search (JSON)"] --> W["Widget (Browser)"]
+ E --> F["Filter"]
+ F --> M["Treffer prüfen
(mit Zeitbudget)"]
+ M --> S["sortieren, gruppieren,
Seite ausschneiden"]
+ S --> H["Fundstellen (Spans)
→ Ausschnitte (Segmente)"]
+ H --> R["SearchResult
.to_dict()"]
+ R --> CLI["mdgrep
(Terminal)"]
+ R --> API["Flask
GET /search"]
+ API --> W["Widget
(Browser)"]
```
Drei Begriffe tragen das ganze Design: