def get_reward_by_distance(project_type, distance):
    """
    根据项目类型和距离计算奖励金额
    
    Args:
        project_type (str): 项目类型
        distance (float): 距离（公里）
        
    Returns:
        float: 奖励金额（元）
    """
    # 2025.04.21 by v6ole
    # 奖励配置说明：
    # 格式为: '项目类型': [(距离上限1, 奖励金额1), (距离上限2, 奖励金额2), ...]
    # 距离单位: 公里, 金额单位: 元
    # 配置按照距离从小到大排序，系统会自动匹配第一个符合条件的奖励金额
    rewards_config = {
        # 校园安防"4+N"项目奖励标准：
        # - 0-5公里: 20元/台
        # - 5-30公里: 40元/台
        # - 30-50公里: 50元/台
        # - 50公里以上: 60元/台
        '校园安防"4+N"项目': [
            (5, 20),
            (30, 40),
            (50, 50),
            (float('inf'), 60)
        ],
        
        # 综治视联网奖励标准：
        # - 0-10公里: 30元/台
        # - 10-30公里: 40元/台
        # - 30-50公里: 50元/台
        # - 50公里以上: 60元/台
        '综治视联网': [
            (10, 30),
            (30, 40),
            (50, 50),
            (float('inf'), 60)
        ],
        
        # 教育城域网奖励标准：
        # - 0-5公里: 20元/台
        # - 5-30公里: 30元/台
        # - 30-50公里: 40元/台
        # - 50公里以上: 50元/台
        '教育城域网': [
            (5, 20),
            (30, 30),
            (50, 40),
            (float('inf'), 50)
        ],
        
        # 其他项目统一标准：
        # - 任何距离: 30元/台
        '其他': [(float('inf'), 30)]
    }
    
    if project_type not in rewards_config:
        return 0
        
    for max_distance, reward in rewards_config[project_type]:
        if distance <= max_distance:
            return reward
            
    return 0