Spaces:
Build error
Build error
| # src/reporting.py | |
| from typing import Dict | |
| import logging | |
| from src.utils.logger import setup_logger | |
| from src.utils.helpers import save_pdf | |
| logger = setup_logger(__name__) | |
| def generate_report(simulation_results: Dict[str, float], lcc: float) -> str: | |
| """ | |
| Generate a textual report based on simulation results and LCCA. | |
| :param simulation_results: Dictionary containing simulation results. | |
| :param lcc: Lifecycle Cost Analysis result. | |
| :return: Formatted report content as a string. | |
| """ | |
| report = "Mechanistic-Empirical Pavement Design Report\n" | |
| report += "="*50 + "\n\n" | |
| report += "Pavement Performance Predictions:\n" | |
| report += "-"*30 + "\n" | |
| for key, value in simulation_results.items(): | |
| report += f"{key}: {value:.4f}\n" | |
| report += f"\nLifecycle Cost Analysis (LCCA):\n" | |
| report += "-"*30 + "\n" | |
| report += f"Total Lifecycle Cost: ${lcc:,.2f}\n" | |
| report += "\nConclusion:\n" | |
| report += "The pavement design meets the required performance criteria based on the simulation results.\n" | |
| logger.info("Report generated successfully.") | |
| return report | |
| def export_report_to_pdf(report_content: str, file_path: str): | |
| """ | |
| Export the report content to a PDF file. | |
| :param report_content: The content of the report as a string. | |
| :param file_path: The path where the PDF will be saved. | |
| """ | |
| try: | |
| from reportlab.lib.pagesizes import letter | |
| from reportlab.pdfgen import canvas | |
| from reportlab.lib.units import inch | |
| c = canvas.Canvas(file_path, pagesize=letter) | |
| width, height = letter | |
| textobject = c.beginText() | |
| textobject.setTextOrigin(inch, height - inch) | |
| textobject.setFont("Helvetica", 12) | |
| for line in report_content.split('\n'): | |
| textobject.textLine(line) | |
| c.drawText(textobject) | |
| c.showPage() | |
| c.save() | |
| logger.info(f"Report exported to PDF at {file_path}") | |
| except ImportError: | |
| logger.error("ReportLab is not installed. Please install it using 'pip install reportlab'") | |
| raise | |
| except Exception as e: | |
| logger.error(f"Failed to export report to PDF: {e}") | |
| raise | |