"""
Daily Activity Tracker
Generated by Eden via recursive self-improvement
2025-10-28 02:57:50.209814
"""

from datetime import datetime

class DailyActivityTracker:
    """
    A class to track daily activities and provide productivity insights.

    Methods:
        log_activity(activity_name: str, start_time: datetime)
            Logs the start of an activity with its name and time.
        
        finish_activity(activity_name: str, end_time: datetime)
            Logs the end of an activity with its name and time, calculates duration.
        
        get_daily_summary() -> dict:
            Returns a summary of activities for the day in hours.

        provide_insights() -> dict:
            Provides productivity insights based on tracked activities.
    """
    
    def __init__(self):
        self.activities = []
        self.start_times = {}
        self.end_times = {}
        self.durations = {}

    def log_activity(self, activity_name: str, start_time: datetime) -> None:
        """
        Logs the start of an activity.

        Args:
            activity_name: Name of the activity.
            start_time: Datetime when the activity started.
        """
        self.activities.append(activity_name)
        self.start_times[activity_name] = start_time
        if activity_name not in self.durations:
            self.durations[activity_name] = []

    def finish_activity(self, activity_name: str, end_time: datetime) -> None:
        """
        Logs the end of an activity and calculates duration.

        Args:
            activity_name: Name of the activity.
            end_time: Datetime when the activity ended.
        """
        if activity_name not in self.start_times:
            raise ValueError(f"Activity '{activity_name}' was never started.")
        
        start = self.start_times[activity_name]
        duration = (end_time - start).total_seconds() / 60
        duration = round(duration, 2)
        
        if activity_name not in self.durations:
            self.durations[activity_name] = []
            
        self.durations[activity_name].append(duration)
        del self.start_times[activity_name]

    def get_daily_summary(self) -> dict:
        """
        Returns a summary of activities and their total time spent (hours).
        Returns an empty dict if no activities are tracked.
        """
        summary = {}
        for activity in self.durations:
            total_time = sum(self.durations[activity])
            summary[activity] = round(total_time / 60, 2)
        
        return summary

    def provide_insights(self) -> dict:
        """
        Provides productivity insights based on tracked activities.
        Insights include most time-consuming activity and total hours spent.
        Returns a dictionary with the analysis.
        """
        if not self.durations:
            return {"message": "No activities tracked yet."}
        
        summary = self.get_daily_summary()
        total_time = sum(summary.values())
        
        # Find most time-consuming activity
        max_activity = max(summary, key=lambda k: summary[k])
        most_time = f"{max_activity} took {summary[max_activity]} hours"
        
        return {
            "total_hours": round(total_time, 2),
            "most_time-consuming_activity": max_activity,
            "message": most_time
        }
from datetime import datetime, timedelta

tracker = DailyActivityTracker()

# Log work activity from 9 AM to 1 PM (4 hours)
start_work = datetime.now()
tracker.log_activity("Work", start_work)

end_work = start_work + timedelta(hours=4)
tracker.finish_activity("Work", end_work)

# Log exercise session
start_exercise = datetime.now() + timedelta(hours=1)
tracker.log_activity("Exercise", start_exercise)

end_exercise = start_exercise + timedelta(hours=0.5)
tracker.finish_activity("Exercise", end_exercise)

summary = tracker.get_daily_summary()
insights = tracker.provide_insights()

print(summary)  # Output: {"Work": 4.0, "Exercise": 0.5}
print(insights)  # Output: {
    #     "total_hours": 4.5,
    #     "most_time-consuming_activity": "Work",
    #     "message": "Work took 4 hours"
    # }