Modulare TEM-Reports

mpylab-tem-report liest die vollständige Historie eines TEMCell- Pickles und erkennt selbständig unterstützte Datensätze. Der Generator deckt derzeit TEM-Moden-Verifikation, gemessene e0y-Feldfaktoren, Emission und Störfestigkeit einschließlich EUT-Bewertung ab.

Ereignisfelder, Leistungskriterien und das optionale Austauschformat sind unter Störfestigkeitsergebnisse und EUT-Bewertung beschrieben.

Inhalt, Darstellung und Erweiterung sind bewusst getrennt:

  • --section wählt vorhandene, bereits ausgewertete Messdatensätze aus;

  • TOML-Profile konfigurieren Metadaten, Laborangaben und Farben;

  • eigene Python-Reportmodule ergänzen neue fachliche Reportabschnitte.

Profile verändern keine Messergebnisse und führen keine Auswertung aus. Der Abschnitt Profilreferenz beschreibt alle Konfigurationswerte; Eigene Reportmodule entwickeln führt zur Erweiterungsschnittstelle.

Eingabe und Voraussetzungen

Eingabe ist ein vertrauenswürdiges finales oder After-measure-Pickle einer TEMCell. Pickles können beim Laden Python-Code ausführen; aus nicht vertrauenswürdigen Dateien dürfen keine Reports erzeugt werden. Der Generator nutzt mpylab.env.Measure.load_pickle_compat(), verbindet sich aber nicht mit Messgeräten.

Reportmodule verwenden ausgewertete Daten:

Automatisch erkannte Abschnitte

Kennung

Mapping im Pickle

Wesentliche Inhalte

verification:<description>

processedData_Verification

Homogenität, TEM-Mode, Referenzfeld und -leistung, analytisches e0y und AM-Headroom

e0y:<description>

processedData_e0y

Gemessener Feldfaktor, Quelle, Position und analytischer Vergleich

emission:<description>

processedData_Emission und preflightData_Emission

Korrelierte Feldstärke und Leistung, Limits, Detektoren, Prescan und e0y-Quellen

immunity:<description>

processedData_Immunity und preflightData_Immunity

Expositionen, Störgröße, Leveling, EUT-Ereignisse und Bewertungen

Eine Historie mit ausschließlich Rohdaten besitzt im Allgemeinen keinen ausgabefähigen Abschnitt. Zuerst ist die zugehörige Auswertung auszuführen und ein neues Historien-Pickle zu schreiben. Der Generator rekonstruiert fehlende Auswertungen nicht stillschweigend.

Verfügbare Abschnitte prüfen

Vor der Erzeugung kann angezeigt werden, welche Reportabschnitte im Pickle gefunden wurden:

mpylab-tem-report measurement-history.p --list-sections

Mit --section MODULE:DATASET kann die Ausgabe auf einen oder mehrere dieser Abschnitte begrenzt werden. Die Option darf wiederholt werden.

Empfohlener Ablauf

# Zuerst vorhandene ausgewertete Datensätze anzeigen.
mpylab-tem-report measurement-history.p --list-sections

# In ein messungsspezifisches Verzeichnis schreiben.
mpylab-tem-report measurement-history.p \
    --output reports/EMV-2026-001 \
    --formats pdf html svg \
    --profile labor.toml \
    --profile EMV-2026-001.toml

Enthält die Historie mehrere Läufe, begrenzen wiederholte --section- Optionen den weiterzugebenden Report auf eine kontrollierte Auswahl.

Report erzeugen

mpylab-tem-report measurement-history.p \
    --output tem-report \
    --formats pdf html svg \
    --profile script/conf/tem-report-profile.toml \
    --profile script/conf/tem-report-measurement.toml

Unterstützt werden pdf, html, svg und png. HTML und PDF bilden den Gesamtreport. SVG und PNG erzeugen separate Grafiken der Reportmodule. Wird HTML ohne Grafikformat angefordert, erzeugt der Generator zusätzlich SVG-Dateien.

PDF wird direkt über Matplotlib erzeugt. HTML ist ein statisches lokales Paket und benötigt keinen Server. SVG eignet sich für skalierbare Grafiken und versionierte Archive; PNG ist für Office-Anwendungen hilfreich, die SVG nicht zuverlässig importieren. LaTeX-Quelltext wird derzeit nicht erzeugt.

Ausgabeverzeichnis

Das Ergebnis besitzt eine stabile Struktur:

tem-report/
|-- index.html
|-- tem-history-report.pdf
|-- traceability.tsv
|-- report-metadata.tsv
|-- assets/
`-- sections/
    |-- verification-cal/
    |   |-- index.html
    |   |-- figures/
    |   `-- tables/
    `-- emission-eut/
        |-- index.html
        |-- figures/
        `-- tables/

Die Modultabellen enthalten die Werte hinter den Grafiken und sind für skriptbasierte Prüfungen vorzuziehen. Fehlen notwendige Daten, wird eine Grafik ausgelassen; vorhandene Tabellen und Rückführbarkeitswarnungen bleiben erhalten.

Profile schichten

--profile kann mehrfach angegeben werden. Dateien werden in Kommandozeilenreihenfolge zusammengeführt; spätere Werte überschreiben nur gleichnamige frühere Werte. Damit können beispielsweise eine globale Laborkonfiguration und messungsspezifische Angaben getrennt versioniert werden:

# Globales Laborprofil
[report]
title = "TEM/GTEM Measurement Report"
language = "de"

[laboratory]
name = "EMV-Labor"

[appearance]
primary_color = "#174A7E"
accent_color = "#2E7D32"
# Messungsspezifische Ergänzung
[report]
report_number = "EMV-2026-001"

[measurement]
operator = "Example Operator"
location = "Large GTEM"
date = "2026-07-16"

[environment]
temperature_c = 23.1
relative_humidity_percent = 44.0

Kommentierte Vorlagen befinden sich in script/conf/tem-report-profile.toml und script/conf/tem-report-measurement.toml.

Profilreferenz

Nur die folgenden Tabellen und Schlüssel sind zulässig. Unbekannte oder falsch geschriebene Schlüssel werden als Fehler gemeldet und nicht unbemerkt ignoriert.

TOML-Reportprofil

Tabelle

Schlüssel

Prüfung und Verwendung

[report]

title, report_number, language, confidentiality

language ist de oder en; der Titel hat einen stabilen Vorgabewert

[laboratory]

name, department, address, logo

Logo ist eine vorhandene PNG- oder JPEG-Datei; relative Pfade beziehen sich auf die Profildatei, die den Wert definiert

[measurement]

operator, customer, location, date, free_text

Datum im ISO-Format YYYY-MM-DD; es wird nicht aus der Reporterzeugung abgeleitet

[environment]

temperature_c, relative_humidity_percent, air_pressure_hpa

Luftfeuchte 0 bis 100; Luftdruck ist positiv

[appearance]

primary_color, accent_color

Farben im Format #RRGGBB

Spätere Profile überschreiben nur denselben Schlüssel. Relative Ressourcen bleiben relativ zu der Datei, die den wirksamen Wert geliefert hat.

Rückführbarkeit

Der Generator berechnet die Messung nicht erneut. Er bereitet die bereits im Pickle vorhandenen Ergebnisse modular auf. HTML und PDF enthalten eine abschnittsübergreifende Rückführbarkeitsübersicht. traceability.tsv enthält dieselben Angaben maschinenlesbar, darunter Frequenzabdeckung, referenzierte Quelldatensätze, Vollständigkeit und Warnungen.

report-metadata.tsv dokumentiert die wirksamen Profilwerte und ihre Herkunft. So bleibt unterscheidbar, welche Angaben aus dem globalen Profil, dem Messprofil, Vorgabewerten oder der Generierung stammen.

Für einen ausschließlich auf die Verifikation begrenzten Bericht steht zusätzlich script/tem-verification-report.py zur Verfügung.

Eigene Reportmodule entwickeln

Ein eigenes Reportmodul ist sinnvoll, wenn ein zusätzlicher ausgewerteter Datensatz als eigener Abschnitt erscheinen soll. Für andere Titel, Laborangaben, Freitext oder Farben genügt dagegen ein TOML-Profil.

Ein Reportmodul implementiert mpylab.env.tem.history_report.ReportModule und durchläuft fünf Schritte:

  1. discover findet ausgabefähige Datensätze in der Historie.

  2. collect überführt einen Datensatz in eine darstellungsneutrale Struktur.

  3. write erzeugt HTML, Tabellen und separate Grafiken des Abschnitts.

  4. pdf_figures liefert die Seiten für das gemeinsame PDF.

  5. summary stellt kompakte Angaben für Inhaltsübersicht und Rückführbarkeit bereit.

Die fachliche Auswertung bleibt in der Messklasse. collect darf vorhandene Ergebnisse auswählen und ordnen, aber keine Messung neu bewerten. Eigene Module werden einer Anwendung über den Parameter modules von mpylab.env.tem.history_report.write_history_report() übergeben. Sie werden nicht automatisch vom Kommandozeilenprogramm geladen.

Ein vollständiges minimales Gerüst und die Rückgabestrukturen zeigt die englischsprachige Report-API. Für ein neues Modul sind mindestens Logiktests für Erkennung und Datensammlung sowie ein End-to-End-Test der erzeugten Dateien vorzusehen.

Wiederholung und Fehlerdiagnose

Dateien mit denselben generierten Namen werden überschrieben, das Ausgabeverzeichnis wird jedoch nicht bereinigt. Wenn der exakte Dateibestand archiviert wird, ist ein neues oder zuvor geleertes Verzeichnis zu verwenden.

Typische Fehler haben eine bewusste Bedeutung:

  • no reportable sections: Das Pickle enthält kein unterstütztes ausgewertetes Mapping.

  • section ... is unavailable: Kennung mit --list-sections abgleichen.

  • Profilfehler: unbekannte Schlüssel, Typen, Datum, Farben, Umgebungsbereiche oder Logo-Pfad korrigieren.

  • Fehlende Grafik bei erfolgreichem Lauf: TSV-Tabellen und Rückführbarkeitswarnungen auf fehlende Quelldaten prüfen.

Die englischsprachige Report-API dokumentiert Erkennung, Auswahl, Profilladen und die modulare Erweiterungsschnittstelle.