Wenn der User auf "Generate" klickt, läuft folgende Sequenz:
DB render-engine JSDOM + mermaid SSR llm_cache table Mapper LLM (gpt-5-mini) auto-detect or docs pipeline API Editor DB render-engine JSDOM + mermaid SSR llm_cache table Mapper LLM (gpt-5-mini) auto-detect or docs pipeline API Editor alt [cache hit] [cache miss] alt [layout: docs] [default] POST /generate SELECT mdContent choosePipeline(layout, projectType) runDocsPipeline() extract frontmatter, TOC build sidebar groups runAutoDetectPipeline() sanitize HTML lookup by mdHash cached mapping sectionize prompt { sections: [...] } INSERT mapping detect types per section extract content (V2 parser) validate against schemas prerenderMermaidBlocks(body, pack) { source → svg map } renderDocsPage / renderPage HTML string UPDATE pages SET generatedJson { html, sections, validation } DB render-engine JSDOM + mermaid SSR llm_cache table Mapper LLM (gpt-5-mini) auto-detect or docs pipeline API Editor DB render-engine JSDOM + mermaid SSR llm_cache table Mapper LLM (gpt-5-mini) auto-detect or docs pipeline API Editor alt [cache hit] [cache miss] alt [layout: docs] [default] POST /generate SELECT mdContent choosePipeline(layout, projectType) runDocsPipeline() extract frontmatter, TOC build sidebar groups runAutoDetectPipeline() sanitize HTML lookup by mdHash cached mapping sectionize prompt { sections: [...] } INSERT mapping detect types per section extract content (V2 parser) validate against schemas prerenderMermaidBlocks(body, pack) { source → svg map } renderDocsPage / renderPage HTML string UPDATE pages SET generatedJson { html, sections, validation }
10.1 Auto-Detect-Branch#
sanitize — HTML stripping, gefährliche Tags raus
sectionize — Markdown wird in logische Sektionen aufgeteilt (----Separator oder LLM)
detectSectionTypes — pro Sektion: ist das ein Hero, FAQ, Pricing, …?
extractContent — strukturiertes Daten-Object pro Sektion (z.B. Hero → { title, subtitle, cta, image })
validate — Schema-Check pro Komponente, messages[] mit Severity-Level
10.2 Docs-Branch#
Frontmatter extrahieren (title, description, group, order)
TOC aus Headings generieren (h2/h3/h4)
Sidebar-Groups aus allen Pages des Projekts (group-Field)
Body bleibt Raw-Markdown (wird im Render durch react-markdown gejagt)
→ DocsPageInput Object → renderDocsPage()
10.3 LLM-Cache#
Jeder Mapping-Call wird mit mdHash = sha256(mdContent) gekeyed. Beim zweiten Generate mit demselben Inhalt → DB-Lookup, kein Call. Spart Tokens und Latenz.