Aethero_github / Aethero_App /src /report_generator.py
xvadur's picture
Add complete Aethero_App and aethero_protocol directories
46f737d
from datetime import datetime, UTC
from pathlib import Path
import re
from typing import Dict, Optional
class MinisterialReportGenerator:
"""Generator for AetheroOS Ministerial Reports"""
def __init__(self, template_path: str = "templates/ministerial_report.md"):
"""
Initialize the report generator
Args:
template_path: Path to the ministerial report template
"""
self.template_path = Path(template_path)
self._load_template()
def _load_template(self):
"""Load the report template from file"""
if not self.template_path.exists():
raise FileNotFoundError(f"Template not found: {self.template_path}")
with open(self.template_path) as f:
self.template = f.read()
def _validate_fields(self, fields: Dict[str, str]):
"""
Validate required fields are present
Args:
fields: Dictionary of field values
Raises:
ValueError: If required fields are missing
"""
required_fields = {"office", "ref_code", "purpose",
"findings", "recommendations", "author"}
missing = required_fields - set(fields.keys())
if missing:
raise ValueError(f"Missing required fields: {missing}")
def generate(self, fields: Dict[str, str]) -> str:
"""
Generate a ministerial report
Args:
fields: Dictionary containing report field values
Returns:
Formatted report string
"""
# Validate fields
self._validate_fields(fields)
# Add date if not provided
if "date" not in fields:
fields["date"] = datetime.now(UTC).strftime("%Y-%m-%d")
# Replace template variables
report = self.template
for key, value in fields.items():
pattern = r'\{\{\s*' + re.escape(key) + r'\s*\}\}'
report = re.sub(pattern, value, report)
return report
def save_report(self, fields: Dict[str, str], output_path: str):
"""
Generate and save a report to file
Args:
fields: Dictionary containing report field values
output_path: Path to save the report
"""
report = self.generate(fields)
with open(output_path, 'w') as f:
f.write(report)