📐 Systemarchitektur
1. Übersicht & Zielsetzung
Das Payer Sanskritkurs Übersetzungs- und Publikationssystem basiert auf einer verteilten 3-Node-Topologie, die für lokale KI-Inferenz, kontinuierliche Qualitätssicherung, automatisierte Web-Generierung und semantische Vektorsuche optimiert ist.
Durch die physische Entkopplung von interaktiver Entwicklung, rechenintensiver LLM-Inferenz und Hintergrund-Builds/Staging werden Ressourcen optimal ausgelastet und Deadlocks vermieden.
[!IMPORTANT] Für alle automatisierten Übersetzungsaufgaben gilt die strikte Single-Process Constraint: Es darf zu jedem Zeitpunkt maximal ein Übersetzungsprozess (
lan_translate.py) aufnyx.localzugreifen, um 100 % VRAM-Effizienz und einen kontinuierlichen Durchsatz von ~20 Tokens/s zu garantieren.
2. Verteilte Topologie (Mermaid-Diagramm)
flowchart TB
subgraph Workstation["💻 Workstation (nike.local - Mac M2, 24GB VRAM)"]
IDE["Antigravity IDE / Pair Programmer"]
SSD["Lokaler NVMe-Speicher\n(/Volumes/SanDisk1TB/proj/Payer)"]
GIT["Git Workspace & Steuerungs-Skripte"]
end
subgraph Nyx["🚀 Nyx (Dedicated LLM Server - nyx.local - MacBook Air M4, 32GB VRAM)"]
MLX["mlx_lm.server (Port 8000)"]
MODEL["Qwen3.6-35B-A3B-4bit-DWQ\n(24GB VRAM allokiert)"]
end
subgraph Nataraja["☸️ Nataraja (Pop!_OS Intel Mac - nataraja.local, 32GB RAM)"]
GHR["GitHub Self-Hosted Runner (nataraja)"]
DOCKER["Docker Staging Webserver\n• Public: Port 8080\n• Author: Port 8081"]
OLLAMA["Ollama Server (Port 11434)\n• nomic-embed-text\n• qwen2.5:7b"]
AUDIT["Mobile Link Auditor & Quality Scorer"]
EXPORT["PDF & EPUB Exporter"]
VAULT["TM Cache & Session Vault"]
end
subgraph GitHub["☁️ GitHub Remote"]
GH_REPO["birchville-org/sanskritkurs-payer (main)"]
GHCR["GitHub Container Registry (ghcr.io)"]
GH_PAGES["GitHub Pages (Documentation)"]
GH_REL["GitHub Release Assets (.epub / .pdf)"]
end
IDE -->|Lokale Entwicklung| SSD
GIT -->|Push / Commit| GH_REPO
GIT -->|HTTP Chunks / Weg B| MLX
MLX -->|Inferenz| MODEL
GH_REPO -->|Long-Polling WebSocket| GHR
GHR -->|VitePress Build (38 Locales)| DOCKER
GHR -->|Vektor-Indexierung| OLLAMA
GHR -->|Qualitäts-Audit| AUDIT
GHR -->|Export-Generierung| EXPORT
GHR -->|Backup & Archivierung| VAULT
GHR -->|Multi-Arch Images pushen| GHCR
EXPORT -->|Releases hochladen| GH_REL
style Workstation fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
style Nyx fill:#fff3e0,stroke:#f57c00,stroke-width:2px
style Nataraja fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px
style GitHub fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
3. Die drei Hardware-Nodes
Node 1: Workstation (nike.local)
- Hardware: Apple M2, 24 GB Unified Memory.
- Rolle: Primäre Entwicklungsumgebung, Git-Repository-Verwaltung, Steuerungsskripte (
scripts/lan_translate.py,scripts/translation_qa.py). - Aufgabe: Dateisystem-Operationen, Vorbereitung der Chunks, Translation-Memory-Persistierung und manuelle QA.
Node 2: Dedicated LLM Engine (nyx.local)
- Hardware: MacBook Air M4, 32 GB Unified Memory.
- Rolle: Lokaler Inferenz-Daemon via
mlx_lm.server(Port 8000). - Modell:
Qwen3.6-35B-A3B-4bit-DWQ(dedizierte 24 GB VRAM-Allokation). - Leistung: Erreicht bei Chunk-Größen unter 1.500 Zeichen konstante ~20–22 Tokens/s ohne thermisches Drosseln.
Node 3: Linux Server & Runner (nataraja.local)
- Hardware: Apple Intel Mac (Quad-Core i7, 32 GB RAM) unter Pop!_OS Linux.
- Rolle: CI/CD-Backbone, Docker-Staging-Host und Self-Hosted GitHub Runner.
- Aufgaben:
- VitePress Full-Build (38 Sprachen parallel unter 32 GB Swap).
- Staging-Server auf Port 8080 (Public) und Port 8081 (Author/Review).
- Lokale Embeddings via Ollama (
nomic-embed-text). - Nächtliche TM-Backups und Snapshot-Vaults.
4. Software-Architektur & Datenfluss
[Master-Markdown (docs/lektionen/*.md)]
│
▼
[scripts/translation_qa.py] ── (Status-Prüfung & Queue-Bildung)
│
▼
[scripts/lan_translate.py] ── (Chunking < 1500 Zeichen, YAML-Frontmatter)
│
├──► [TM-Cache: .payer/tm/<lang>.json] (MD5-Hash-Hit? ──► Fertig)
│
▼ (Cache-Miss)
[HTTP Inferenz Request] ──► http://nyx.local:8000/v1/chat/completions
│
▼
[Sanitization & Devanāgarī-Filter] (scripts/file_processor.py)
│
├──► [TM-Speicherung]
▼
[Zieldokument: docs/<lang>/lektionen/*.md]
5. Qualitäts-Gates & Verifikationsregeln
- Gate A: Syntax- und Tag-Integrität:
Jeder übersetzte Chunk muss Devanāgarī-Tags (
⟪...⟫) und Signalrot-Syntax (:sig[...]) 1:1 unverändert beibehalten. - Gate B: Residuen-Filter:
Automatische Erkennung unübersetzter deutscher Rest-Fragmente (
scan_german_residues). Dateien mit Rückständen werden sofort abgelehnt. - Gate C: Single Source of Truth (
translation_qa.py): Nur die offizielle QA-Queue bestimmt den Status. Eigene heuristische Prüfungen sind in Skripten untersagt.