Add mini_reporting_block/src/mini_reporting_block/cli.py

This commit is contained in:
Mika 2026-03-01 17:26:34 +00:00
parent 71495d1b72
commit 1198dc404d

View file

@ -0,0 +1,60 @@
import argparse
import json
from pathlib import Path
from typing import Optional
from mini_reporting_block.core import generate_reporting_block
def _load_analysis_results(input_path: Path) -> list[dict]:
if not input_path.exists() or not input_path.is_file():
raise FileNotFoundError(f"Eingabedatei nicht gefunden: {input_path}")
try:
with input_path.open('r', encoding='utf-8') as f:
data = json.load(f)
if not isinstance(data, list):
raise ValueError("Analyseergebnisse müssen eine Liste von Objekten sein.")
if not all(isinstance(item, dict) for item in data):
raise ValueError("Jedes Analyseergebnis muss ein Dictionary sein.")
return data
except json.JSONDecodeError as e:
raise ValueError(f"Ungültiges JSON-Format in {input_path}: {e}") from e
def _save_output(output_path: Path, content: dict) -> None:
output_path.parent.mkdir(parents=True, exist_ok=True)
with output_path.open('w', encoding='utf-8') as f:
json.dump(content, f, indent=2, ensure_ascii=False)
def main() -> None:
parser = argparse.ArgumentParser(description="Mini Reporting Block Generator für Δt<0 Analysen")
parser.add_argument('--input', required=True, help='Pfad zur Eingabedatei mit Analyseergebnissen als JSON')
parser.add_argument('--output', required=False, help='Optionaler Pfad zur Ausgabedatei für das Reporting')
args = parser.parse_args()
input_path = Path(args.input)
output_path: Optional[Path] = Path(args.output) if args.output else None
analysis_results = _load_analysis_results(input_path)
report_text = generate_reporting_block(analysis_results)
print(report_text)
# Wenn Output-Datei angegeben, schreibe JSON-Ausgabe
if output_path:
try:
# Falls core.generate_reporting_block auch JSON zurückgeben könnte, hier simulieren wir einen Umwandlungsschritt
# Der Text kann z. B. aus ReportingBlock.to_json stammen, wenn dort generiert
report_json = {
"summary": report_text,
"details": analysis_results
}
_save_output(output_path, report_json)
except Exception as e:
raise RuntimeError(f"Fehler beim Schreiben der Ausgabe: {e}") from e
if __name__ == '__main__':
main()