import json from typing import List from ..types import ReportRow from .base import Formatter class JSONFormatter(Formatter): """Форматтер для экспорта отчёта в JSON.""" def __init__(self, **_kwargs): super().__init__() def format(self, rows: List[ReportRow]) -> str: data = [] for r in rows: item = { "project": r["project"], "version": r["version"], "issue_id": r["issue_id"], "subject": r["subject"], "status": r["status_ru"], "time": r["time_text"], } activities = r.get("activities") if activities: item["activities"] = activities data.append(item) return json.dumps(data, ensure_ascii=False, indent=2) def save(self, rows: List[ReportRow], output_path: str) -> None: content = self.format(rows) with open(output_path, "w", encoding="utf-8") as f: f.write(content)