File size: 1,851 Bytes
ec6d5f9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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)