| import pandas as pd |
| import io |
| import logging |
| from typing import List |
| from .schemas import KeyIssue |
|
|
| logger = logging.getLogger(__name__) |
|
|
| def key_issues_to_dataframe(key_issues: List[KeyIssue]) -> pd.DataFrame: |
| """Converts a list of KeyIssue objects into a Pandas DataFrame.""" |
| if not key_issues: |
| return pd.DataFrame() |
| |
| data = [ki.model_dump() for ki in key_issues] |
| df = pd.DataFrame(data) |
| |
| |
| return df |
|
|
| def dataframe_to_excel_bytes(df: pd.DataFrame) -> bytes: |
| """Converts a Pandas DataFrame to Excel format in memory (bytes).""" |
| logger.info("Generating Excel file from DataFrame...") |
| output = io.BytesIO() |
| try: |
| |
| with pd.ExcelWriter(output, engine='openpyxl') as writer: |
| df.to_excel(writer, index=False, sheet_name='Key Issues') |
| excel_data = output.getvalue() |
| logger.info("Excel file generated successfully.") |
| return excel_data |
| except Exception as e: |
| logger.error(f"Failed to generate Excel file: {e}", exc_info=True) |
| raise RuntimeError("Failed to create Excel output.") from e |
|
|
| |
| |
| |
| |
| |
| |
| |