import json import yaml from pathlib import Path from typing import List, Dict, Any _FILE_PATH = Path(__file__).parents[2] DATA_DIR = Path(__file__).parents[2] / "data" MEETINGS_FILE = DATA_DIR / "fed_processed_meetings.json" def load_meetings_data() -> List[Dict[str, Any]]: """Load processed meetings data from JSON file""" try: if MEETINGS_FILE.exists(): with open(MEETINGS_FILE, 'r', encoding='utf-8') as f: data = json.load(f) return sorted(data, key=lambda x: x.get('date', ''), reverse=True) else: return [] except Exception as e: print(f"Error loading meetings data: {e}") return [] def create_meeting_list(meeting_data: list) -> list[dict]: return [ { "date": meeting.get("date", ""), "title": meeting.get("title", ""), "rate_decision": meeting.get("rate", ""), "summary": meeting.get("forward_guidance", ""), # Show full text "action": meeting.get("action", ""), "magnitude": meeting.get("magnitude", ""), "key_economic_factors": meeting.get("key_economic_factors", []), "economic_outlook": meeting.get("economic_outlook", ""), "market_impact": meeting.get("market_impact", ""), "full_text": meeting.get("full_text", "")[:500] + "..." if meeting.get("full_text") else "", "url": meeting.get("url", "") } for meeting in meeting_data ] def load_processed_meetings(): """Load processed FOMC meetings from JSON file""" try: data = load_meetings_data() return create_meeting_list(meeting_data=data) except FileNotFoundError: print("Fed processed meetings file not found. Using fallback data.") return [ { "date": "2025-06-18", "title": "FOMC Meeting 2025-06-18", "rate_decision": "4.25%-4.50%", "summary": "No processed data available. Please run the data pipeline first.", "action": "Unknown", "magnitude": "Unknown", "key_economic_factors": [], "economic_outlook": "Data not available", "market_impact": "Data not available", "full_text": "No data available", "url": "" } ] except Exception as e: print(f"Error loading processed meetings: {e}") return [] def load_prompt_library(): """Load prompts from the YAML library""" try: prompt_file = _FILE_PATH / "configs" / "prompt_library.yaml" with open(prompt_file, 'r', encoding='utf-8') as f: return yaml.safe_load(f) except Exception as e: print(f"Error loading prompt library: {e}") return {}