import os import re import datetime import json import requests from typing import List, Dict, Tuple from dotenv import load_dotenv import sys # Make dev_session from /app available sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))) from dev_session import find_database_by_title, query_notion_database, get_page_content, get_page_title def parse_time(time_str: str) -> float: """Parses 'HH:MM' into decimal hours.""" try: hours, minutes = map(int, time_str.split(':')) return hours + (minutes / 60.0) except: return 0.0 def format_time(decimal_hours: float) -> str: hours = int(decimal_hours) minutes = int(round((decimal_hours - hours) * 60)) if minutes == 60: hours += 1 minutes = 0 return f"{hours:02d}:{minutes:02d}" def extract_status_updates(content: str, cutoff_date: datetime.datetime) -> List[Dict]: """ Extracts status updates from the markdown content. Looks for: ## 🤖 Status-Update (YYYY-MM-DD HH:MM Berlin Time) """ updates = [] # Pattern to match the heading and the subsequent code block pattern = r"## 🤖 Status-Update \((?P\d{4}-\d{2}-\d{2}) (?P