"""Create recovery_planner
Generated by Phi-Octopus Eden
2025-11-07 09:47:16.202476
"""

```python
from typing import List, Dict, Any

class RecoveryPlanner:
    """
    A class for creating a limited error recovery planner that handles errors by retried attempts or fallback strategies.
    
    Attributes:
        max_attempts (int): Maximum number of attempts to recover from an error.
        fallback_strategies (List[Dict[str, Any]]): List of dictionaries containing fallback strategy information.
        
    Methods:
        plan_recovery: Plans a recovery action based on the given error and available strategies.
    """
    
    def __init__(self, max_attempts: int = 3, fallback_strategies: List[Dict[str, Any]] = []):
        self.max_attempts = max_attempts
        self.fallback_strategies = fallback_strategies
    
    def plan_recovery(self, error_message: str) -> None:
        """
        Plans a recovery action based on the given error message and available strategies.
        
        Parameters:
            error_message (str): The error message indicating what went wrong.
            
        Returns:
            None
        """
        print(f"Error detected: {error_message}")
        attempt = 1
        
        while attempt <= self.max_attempts:
            for strategy in self.fallback_strategies:
                if strategy['condition'](error_message):
                    action = strategy['action']
                    print(f"\nAttempting recovery using strategy: {strategy['name']}")
                    result = action()
                    if result is True:
                        print("Recovery successful.")
                        return
                    else:
                        print("Recovery attempt failed, trying another strategy...")
            attempt += 1
        
        print("\nAll recovery attempts exhausted. Aborting operation.")

# Example usage:

def on_data_not_found(error_message: str) -> bool:
    """
    Fallback strategy for when data is not found.
    
    Parameters:
        error_message (str): The error message indicating the absence of data.
        
    Returns:
        bool: True if recovery was successful, False otherwise.
    """
    print("Data not found. Attempting to fetch new data...")
    # Simulate fetching data
    return True

def on_timeout(error_message: str) -> bool:
    """
    Fallback strategy for when a timeout error occurs.
    
    Parameters:
        error_message (str): The error message indicating the timeout issue.
        
    Returns:
        bool: True if recovery was successful, False otherwise.
    """
    print("Request timed out. Retrying operation...")
    # Simulate retrying request
    return True

# Create an instance of RecoveryPlanner with custom fallback strategies
recovery_planner = RecoveryPlanner(max_attempts=3,
                                   fallback_strategies=[
                                       {'name': 'Data not found', 'condition': lambda m: "data not" in m, 'action': on_data_not_found},
                                       {'name': 'Timeout error', 'condition': lambda m: "timeout" in m, 'action': on_timeout}
                                   ])

# Example of using the planner
recovery_planner.plan_recovery("Failed to fetch data. Data not found.")
```