# docu_build Sphinx-basiertes Dokumentationssystem fuer Transport- und Hängeförderanlagen. JSON-gesteuerter Build erzeugt aus modularen Textbausteinen mehrsprachige PDF-Dokumentationen (250+ Seiten). Entwickelt von Mista GmbH fuer Schönenberger. Das Projekt befindet sich in der Planungs- und Aufbauphase. ## Architektur Das Zielsystem besteht aus zwei Repos: - **transport-docs-base** (dieses Repo): Wiederverwendbare Inhalte -- Sphinx-Extensions (`_ext/`), Module (`modules/`), Kapitelgerüste (`chapters/`), Assets, Glossar, LaTeX-Templates. - **projekt-kunde-xyz** (pro Anlage): `anlage.json` (ERP-Export), projektspezifische Bilder, Overrides, `conf.py`, `build.py`. Bindet das Base-Repo per Symlink/Mount ein. ### Technologie-Stack | Komponente | Technologie | |------------------|--------------------------------------------------| | Build-System | Sphinx (Python) | | Textformat | reStructuredText (rST) | | Templating | Jinja2 (Rahmenkapitel, Titelseite) | | PDF-Erzeugung | LaTeX (pdflatex/lualatex) | | Versionierung | Git (Gitea auf Hetzner) | | Konfiguration | JSON (ERP-Export) + YAML (Modul-Metadaten) | | CI/Automatisierung | Gitea Actions oder n8n | | Bildkonvertierung | ezdxf → SVG, Pillow (Optimierung) | ### Build-Pipeline (zu implementieren) ```text anlage.json → build.py → Versionscheck → Abhängigkeiten auflösen (meta.yaml) → Overrides anwenden → Sphinx-Quellen generieren → sphinx-build -b latex → pdflatex → PDF pro Sprache ``` ## Projektstruktur ```text docu_build/ ├── _ext/ # Sphinx-Extensions (zu implementieren) ├── _templates/ # Sphinx/LaTeX-Templates ├── assets/ │ ├── shared/ # Sprachunabhängige Bilder/Symbole │ └── localized/ # Sprachspezifische Bilder ├── bin/ # Skripte zur Umgebungsverwaltung │ ├── setenv.bat/.sh # Umgebungsvariablen setzen │ ├── install_py.bat/.sh # venv erstellen + pip install │ ├── activate_venv.bat/.sh # venv aktivieren │ ├── get_cmd.bat/.sh # Shell mit Umgebung oeffnen │ ├── extract_products.* # Bilder/Text aus Produkt-PDFs extrahieren │ └── convert_fortna.* # Fortna-Konvertierung ├── cfg/ # Konfigurationsdateien ├── chapters/ # Kapitelgerüste (rST) │ ├── 00_inhaltsverzeichnis/ │ ├── 01_zertifikate/ │ ├── 02_sicherheit/ │ ├── 03_anlagenbeschreibung/ │ ├── 04_betrieb/ │ ├── 05_wartung/ │ ├── 06_steuerung/ │ ├── 07_ersatzteile/ │ ├── 08_lieferantendoku/ │ ├── 09_technische_unterlagen/ │ └── 10_anhang/ ├── data/ # Eingabedaten (nicht im Git) ├── doc/ # Projektdokumentation ├── glossary/ # Glossar-Quelldaten (CSV) ├── lib/ # Python-Bibliotheken ├── modules/ # Modulbeschreibungen + meta.yaml ├── scripts/ # Hilfsskripte (dxf2svg, optimize_images, ...) ├── styles/ # LaTeX-Styles ├── tests/ # Tests ├── log/ # Log-Dateien (nicht im Git) └── results/ # Build-Ausgaben (nicht im Git) ``` Ein Kundenprojekt enthält nur noch die Verweise auf die verbauten Teile, overrides und additionals, also das Überschreiben von vorhandenen Texten oder Ergänzungen ``` projekt-kunde-xyz-2026/ ├── conf.py # Importiert conf_base.py vom Base-Repo ├── anlage.json # ERP-Export: Maschinenauswahl + Metadaten ├── build.py # Hauptbuild-Skript ├── Makefile ├── README.md ├── images/ # Projektspezifische Bilder │ ├── aufstellplan_halle3.pdf │ ├── foto_abnahme_01.jpg │ └── kundenlogo.pdf ├── overrides/ # Projektspezifische Überschreibungen │ ├── modules/ │ │ └── weiche_typ_a/ │ │ └── beschreibung.de.rst # Überschreibt Basis wenn vorhanden │ └── chapters/ │ └── 01_einleitung/ │ └── template.de.rst # Kundenspezifische Einleitung ├── additional/ # Kapitel die NUR dieses Projekt hat │ ├── sonderausfuehrung_xyz.de.rst │ └── sonderausfuehrung_xyz.en.rst └── transport-docs-base/ ──────────── # Symlink/Mount zum Base-Repo (Share) ``` Details zur Konfiguration und Aufbau einer Doku siehe `doc/Kernkonzepte.md`. ### Kapitelstruktur | Kapitel | Inhalt | | ------------------------- | --------------------------------------------- | | `00_inhaltsverzeichnis` | Wird generiert | | `01_zertifikate` | CE/UKCA-Konformität, Konfigurationsbeschreibung | | `02_sicherheit` | Sicherheitshinweise, Normen, Risikobewertung | | `03_anlagenbeschreibung` | Module (via meta.yaml eingefügt) | | `04_betrieb` | Betriebsanleitung | | `05_wartung` | Wartungsanleitung, Schmierplan | | `06_steuerung` | Funktionsbeschreibungen pro Steuerungssystem | | `07_ersatzteile` | Ersatzteillisten | | `08_lieferantendoku` | Antriebe, Elektrik, Pneumatik, Stahlbau | | `09_technische_unterlagen` | Layouts, Schaltpläne, Notstopp | | `10_anhang` | Prüfberichte, Abnahmeprotokolle | ## Umgebungsvariablen | Variable | Beschreibung | |----------------|---------------------------| | `PROJECT` | Wurzelverzeichnis | | `PV_BIN` | Skriptverzeichnis | | `PV_LIB` | Python-Quellcode | | `PV_CFG` | Konfigurationsdateien | | `PV_DATA` | Eingabedaten | | `PV_LOG` | Log-Dateien | | `PV_RESULTS` | Ergebnisse | | `PV_EXAMPLES` | Beispieldateien | | `PYTHONPATH` | Erweitert um `PV_LIB` | ## Installation ### Voraussetzungen - Python 3.10 oder hoeher ### Setup (Windows) ```bat bin\install_py.bat ``` ### Setup (Linux / macOS) ```bash bash bin/install_py.sh ``` ## Nutzung ### Umgebung aktivieren ```bat bin\activate_venv.bat # Windows ``` ```bash source bin/activate_venv.sh # Linux / macOS ``` ### Shell mit gesetzten Variablen oeffnen ```bat bin\get_cmd.bat # Windows ``` ```bash source bin/get_cmd.sh # Linux / macOS ``` ### Produkt-PDFs extrahieren Extrahiert Bilder und Text (als rST) aus den PDFs in `data/Produktprogramm/`: ```bat bin\extract_products.bat # Windows ``` ## Lizenz MIT License -- siehe [LICENSE](LICENSE) ## Autor Michael Stangl (GitHub: mistamichael)