Spaces:
Sleeping
Sleeping
| import pandas as pd | |
| import io | |
| import logging | |
| from typing import List | |
| from .schemas import KeyIssue # Import the Pydantic model | |
| 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() | |
| # Use Pydantic's .model_dump() for robust serialization | |
| data = [ki.model_dump() for ki in key_issues] | |
| df = pd.DataFrame(data) | |
| # Optional: Reorder or rename columns if needed | |
| # df = df[['id', 'title', 'description', 'challenges', 'potential_impact']] # Example reordering | |
| 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: | |
| # Use BytesIO object as the target file | |
| 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 | |
| # Removed: format_df (HTML specific, less relevant for Excel output) | |
| # Removed: init_app (handled by config.py) | |
| # Removed: get_model (handled by llm_interface.py) | |
| # Removed: clear_memory (handle state/memory management within LangGraph setup if needed) | |
| # Removed: _set_env (handled by config.py and dotenv) | |
| # Kept: format_doc (renamed to format_doc_for_llm in graph_operations.py) | |
| # Removed: update_doc_history (reducer logic should be handled in LangGraph state definition/nodes) |