# core/ — Shared Business Logic

Dieses Package enthält die gesamte Backend-Geschäftslogik der PBI Documentation by Oliver Gropp, unabhängig von der GUI-Schicht.

## Module

| Modul | Beschreibung |
|-------|-------------|
| `models.py` | Alle Dataclasses: Metadaten, Template-Parsing, Fehlerklassen |
| `connectors/` | Abstraktionen für Datenquellen (Fabric, Local, PBIP) |
| `template_parser.py` | Markdown-Template-Parsing und Platzhalter-Erkennung |
| `template_renderer.py` | Platzhalter-Ersetzung und Dokumentgenerierung |
| `metadata_mapper.py` | Zuordnung von Metadaten zu Platzhaltern |
| `form_generator.py` | Formular-Logik mit i18n-Support (locale-Parameter) |
| `placeholder_categorizer.py` | Kategorisierung (auto/manuell/teilweise) |
| `mapping_config.py` | Konfiguration: Zuordnungsregeln, Verfügbarkeitsmatrix |
| `version_manager.py` | Versionierung und Changelog-Erkennung |
| `table_expander.py` | Tabellen-Expansion für Listen-Daten |
| `architecture_generator.py` | Datenarchitektur-Diagramm-Generator |
| `lineage_generator.py` | Datenlineage-Diagramm-Generator |
| `visuals_generator.py` | Visuals-Übersicht-Generator |
| `endorsement_analyzer.py` | Endorsement-Analyse und -Bewertung |

## Architektur

```
core/                    ← Dieses Package (Shared Logic)
├── connectors/
│   ├── base.py          ← IConnector Interface
│   ├── fabric_connector.py
│   ├── local_connector.py
│   └── pbip_connector.py
├── models.py
├── template_parser.py
├── ...
│
personal_edition/        ← Gemeinsame Edition (pywebview + React), locale-abhängig (DE/EN)
├── src/
│   ├── bridge_api.py       ← pywebview JS-API Bridge (i18n über self._locale)
│   ├── i18n.py             ← Sprachtexte (de/en) für die Bridge
│   ├── main_webview.py     ← Einstiegspunkt (Locale aus DOKU_LOCALE)
│   └── *.py                ← Re-Export-Wrapper (importieren aus core/)
├── frontend/            ← React/TypeScript UI (pro Locale gebaut)
├── PowerBI_Dokumentationsvorlage.md      ← DE-Vorlage
└── PowerBI_Dokumentationsvorlage.en.md   ← EN-Vorlage
```

Die DE- und EN-Edition werden aus **derselben Quelle** gebaut
(`build_exe.py --locale de|en|all`); die Sprache steuert `DOKU_LOCALE`.

## Verwendung

Beide Editionen importieren aus `core/`:

```python
from core.models import ReportMetadata, ColumnInfo
from core.connectors import FabricConnector
from core.template_parser import TemplateParser
```

Oder über die Rückwärtskompatibilitäts-Wrapper:

```python
from src.models import ReportMetadata  # Leitet an core.models weiter
```

## i18n

Sprachspezifisches Verhalten wird über Parameter gesteuert:
- `FormGenerator(locale="en")` → Englische Labels
- `main_webview._detect_locale()` → Erkennt aktives Locale
- Frontend: `VITE_LOCALE` Environment-Variable beim Build
