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.