class HeatCoefficientC2Calculator:
    """热度系数C2计算器"""

    def __init__(self):
        """初始化计算器"""
        pass

    def calculate_heat_coefficient_c2(self,
                                      daily_browse_volume: float,
                                      collection_count: int) -> float:
        """
        计算热度系数C2
        
        
        热度系数C2 = 1 + 浏览热度分
        
        args:
            daily_browse_volume: 近7日日均浏览量 (API获取)
            collection_count: 收藏数 (API获取)
            
        return:
            float: 热度系数C2
        """
        # 计算浏览热度分
        browse_heat_score = self.calculate_browse_heat_score(daily_browse_volume, collection_count)
        print("浏览热度分: ")

        heat_coefficient = 1 + browse_heat_score

        return heat_coefficient

    def calculate_browse_heat_score(self, daily_browse_volume: float, collection_count: int) -> float:
        """
        计算浏览热度分

        根据所查询到的浏览量匹配热度分：
        高热度 近7日日均浏览量 > 1000，或收藏数 > 100 1.0
        中热度 近7日日均浏览量 ∈ [100, 1000]，或收藏数 ∈ [20, 100] 0.6
        低热度 近7日日均浏览量 < 100，且收藏数 < 20 0.2
        无数据 无任何浏览与互动数据 0.0（默认值）

        
        args:
            daily_browse_volume: 近7日日均浏览量 (API获取)
            collection_count: 收藏数 (API获取)
            
        return:
            float: 浏览热度分
        """
        # 高热度条件
        if daily_browse_volume > 1000 or collection_count > 100:
            return 1.0

        # 中热度条件
        elif (daily_browse_volume >= 100 and daily_browse_volume <= 1000) or \
                (collection_count >= 20 and collection_count <= 100):
            return 0.6

        # 低热度条件
        elif daily_browse_volume < 100 and collection_count < 20:
            return 0.2

        # 无数据
        else:
            return 0.0



# 示例使用
if __name__ == "__main__":
    # 创建计算器实例
    calculator = HeatCoefficientC2Calculator()


    # 示例数据
    daily_browse_volume = 500.0  # 近7日日均浏览量 (API获取)
    collection_count = 50  # 收藏数 (API获取)

    # 计算热度系数C2
    heat_coefficient_c2 = calculator.calculate_heat_coefficient_c2(
        daily_browse_volume, collection_count
    )

    print(f"近7日日均浏览量: {daily_browse_volume}")
    print(f"收藏数: {collection_count}")
    print(f"浏览热度分: {calculator.calculate_browse_heat_score(daily_browse_volume, collection_count):.1f}")
    print(f"热度系数C2: {heat_coefficient_c2:.4f}")
