Zum Inhalt

build_reports

Berechnet Flow-Metriken aus den von transform_data erzeugten XLSX-Dateien und stellt die Ergebnisse als interaktive Plotly-Diagramme im Browser oder als PDF-Export bereit.

Überblick

Eigenschaft Wert
Status verfügbar
Einstiegspunkt GUI build_reports_gui.pyw
Einstiegspunkt CLI python -m build_reports
Benutzerhandbuch (DE) build_reports_Benutzerhandbuch.pdf
User Manual (EN) build_reports_UserManual.pdf
Manual de Utilizator (RO) build_reports_ManualUtilizator.pdf
Manual do Utilizador (PT) build_reports_ManualUtilizador.pdf
Manuel d'utilisation (FR) build_reports_ManuelUtilisateur.pdf

Metriken

Metrik (SAFe) Metrik (Global) Beschreibung Pflichtdatei
Flow Time Cycle Time Durchlaufzeit von Start bis Abschluss IssueTimes.xlsx
Flow Velocity Throughput Abgeschlossene Issues pro Zeitraum IssueTimes.xlsx
Flow Load WIP Issues aktuell in einer In-Progress-Stage, nach Stage und Alter IssueTimes.xlsx
Cumulative Flow Diagram Cumulative Flow Diagram Kumulierte Stage-Eintritte über die Zeit CFD.xlsx
Flow Distribution Flow Distribution Verteilung nach Typ, Stage-Dominanz und Ø Durchlaufzeit IssueTimes.xlsx
Process Flow: Transitions Process Flow: Transitions Gerichteter Graph aller Statusübergänge (Anzahl) Transitions.xlsx
Process Flow: Time Process Flow: Time Gerichteter Graph mit Knotenbreite und Kantenbreite nach medianer Verweildauer Transitions.xlsx

Eingabedateien

Datei Pflicht Beschreibung
IssueTimes.xlsx Alle Issues mit Zeitangaben je Stage
CFD.xlsx optional Tägliche Stage-Eintritte für das CFD
Workflow.txt optional <First> / <Closed>-Marker für CFD-Trendlinien
pi_config_example.json optional Eigene PI-Intervalle für Flow Velocity
Transitions.xlsx optional Statusübergänge je Issue für Process Flow

Architektur

build_reports/
├── metrics/             # Plugin-Registry + einzelne Metrik-Module
│   ├── base.py          # MetricPlugin / MetricResult Basisklassen
│   ├── flow_time.py
│   ├── flow_velocity.py
│   ├── flow_load.py
│   ├── cfd.py
│   ├── flow_distribution.py
│   └── process_flow.py
├── loader.py            # Laden aller XLSX-Dateien → ReportData
├── filters.py           # FilterConfig + apply_filters()
├── cli.py               # run_reports() + argparse CLI
├── gui.py               # tkinter GUI
├── export.py            # PDF- und Excel-Export
└── terminology.py       # SAFe / Global Terminologie-Umschaltung

Das Plugin-System registriert Metriken automatisch beim Import:

from build_reports.metrics import get_metric, all_metrics
plugin = get_metric("flow_time")
result = plugin.compute(data, terminology="SAFe")
figs = plugin.render(result, "SAFe")

Schnellstart CLI

python -m build_reports IssueTimes.xlsx --pdf report.pdf
python -m build_reports IssueTimes.xlsx --cfd CFD.xlsx --transitions Transitions.xlsx --browser
python -m build_reports IssueTimes.xlsx --metrics flow_time process_flow process_flow_time --from-date 2025-01-01

Templates

Die GUI unterstützt das Speichern und Laden aller Einstellungen als JSON-Template (Menü → Templates). Templates sind versioniert ("version": 4) und abwärtskompatibel.

Datenübergabe aus transform_data

build_reports lässt sich direkt aus transform_data starten: Nach einer Transformation belegt dort der Button In build_reports öffnen die Felder IssueTimes, CFD, Transitions und Workflow hier vor. Intern werden die Daten als Projekt-Template über das Kommandozeilen-Flag --gui-template <pfad> übergeben, das die GUI beim Start lädt. War in transform_data ein Projekt-Template geladen, werden auch dessen build_reports-Einstellungen (PI-Konfiguration, Filter, Metrik-Auswahl) mitübernommen; sonst bleiben PI-Konfiguration und Filter zur Auswahl offen.

Hinweis: Flow Time Methode B und Workflow-Aufbau

Methode B summiert die Stage-Minuten bis ausschließlich der <Closed>-Stage. Stages, die nach der Closed-Stage im Workflow definiert sind (z. B. „Monitoring", „Done"), werden ebenfalls nicht eingerechnet. Die Closed-Stage selbst enthält für abgeschlossene Issues einen Carry-forward-Wert (reference_dt − closed_date), der die gemessene Cycle Time verzerren würde — er wird daher ausgeschlossen.

Methode A (Kalendertage First Date → Closed Date) ist davon nicht betroffen und empfiehlt sich als Vergleich.