vkr/prog/arch-researcher/reporters/reporter.py

42 lines
1.2 KiB
Python
Raw Normal View History

2026-05-20 02:12:02 +00:00
"""
Reporter фасад для всех форматов отчётности.
"""
import logging
from typing import List
from config import AnalyzerConfig, DEFAULT_CONFIG
from models import AnalysisReport
from .json_reporter import JsonReporter
from .html_reporter import HtmlReporter
logger = logging.getLogger(__name__)
class Reporter:
"""Управляет формированием отчётов в нескольких форматах."""
def __init__(self, config: AnalyzerConfig = DEFAULT_CONFIG):
self.config = config
self._json = JsonReporter()
self._html = HtmlReporter()
def generate(self, report: AnalysisReport) -> List[str]:
"""
Формирует все отчёты согласно конфигурации.
:returns: список путей к созданным файлам
"""
output_dir = self.config.output_dir
created: List[str] = []
if "json" in self.config.output_formats:
path = self._json.write(report, output_dir)
created.append(path)
if "html" in self.config.output_formats:
path = self._html.write(report, output_dir)
created.append(path)
return created