"""
SmartTaskManager
Generated by Eden via recursive self-improvement
2025-10-28 13:53:58.454066
"""

class SmartTaskManager:
    """
    A smart task manager that organizes tasks by priority and deadline.
    
    Attributes:
        tasks (list): List of tasks, each represented as a dictionary with keys:
            - id: Unique task identifier
            - title: Task title
            - description: Task description
            - deadline: Deadline date (YYYY-MM-DD)
            - priority: Priority level (1-5, 1 is highest)
            - completed: Boolean indicating if task is complete
    """
    
    def __init__(self):
        self.tasks = []
        
    def add_task(self, title, description, deadline, priority=3):
        """Add a new task to the manager.
        
        Args:
            title (str): Task title
            description (str): Description of the task
            deadline (str): Deadline in YYYY-MM-DD format
            priority (int, optional): Priority level 1-5. Defaults to 3.
        """
        task_id = len(self.tasks) + 1
        new_task = {
            'id': task_id,
            'title': title,
            'description': description,
            'deadline': deadline,
            'priority': priority,
            'completed': False
        }
        self.tasks.append(new_task)
        
    def retrieve_tasks(self, filter_priority=None):
        """Retrieve tasks with optional filtering by priority.
        
        Args:
            filter_priority (int, optional): Filter tasks by this priority level. Defaults to None.
            
        Returns:
            list: List of tasks, sorted first by deadline then by priority.
        """
        filtered = self.tasks.copy()
        
        if filter_priority is not None:
            filtered = [task for task in filtered if task['priority'] == filter_priority]
            
        # Sort tasks by deadline (earliest first) and then by priority (highest first)
        filtered.sort(key=lambda x: (x['deadline'], -x['priority']))
        return filtered
        
    def mark_complete(self, task_id):
        """Mark a task as completed based on its id.
        
        Args:
            task_id (int): The id of the task to mark as complete
        """
        for task in self.tasks:
            if task['id'] == task_id:
                task['completed'] = True
                break
                
# Example usage:
if __name__ == "__main__":
    # Initialize the task manager
    manager = SmartTaskManager()
    
    # Add some tasks
    manager.add_task("Complete Project Plan", "Review and finalize project plan document.", "2023-10-15", 1)
    manager.add_task("Team Meeting", "Daily stand-up meeting at 2 PM.", "2023-10-13", 2)
    manager.add_task("Update Documentation", "Add new features to documentation.", "2023-10-14", 3)
    
    # Retrieve all tasks (sorted by deadline and priority)
    all_tasks = manager.retrieve_tasks()
    print("All Tasks:")
    for task in all_tasks:
        print(f"ID: {task['id']}, Title: {task['title']}")
        
    # Retrieve high-priority tasks
    high_priority = manager.retrieve_tasks(1)
    print("\nHigh Priority Tasks:")
    for task in high_priority:
        print(f"ID: {task['id']}, Title: {task['title']}")
        
    # Mark a task as complete
    manager.mark_complete(1)
    
    # Check completed tasks
    completed_tasks = [task for task in manager.retrieve_tasks() if task['completed']]
    print("\nCompleted Tasks:")
    for task in completed_tasks:
        print(f"ID: {task['id']}, Title: {task['title']}")