class BaseConfig(object):
    # 产品标识
    APP_TYPE = {
        'VLOG': 0,  # vlog
        'LOVE_LIVE': 4,  # 票圈视频
        'LONG_VIDEO': 5,  # 内容精选
        'SHORT_VIDEO': 6,  # 票圈短视频
        'WAN_NENG_VIDEO': 17,  # 万能影视屋
        'LAO_HAO_KAN_VIDEO': 18,  # 老好看视频
        'ZUI_JING_QI': 19,  # 票圈最惊奇
    }
    # abCode
    AB_CODE = {
        'initial': 10000,  # 初始
        'w_h_rate': 10001,  # 视频宽高比实验(每组的前两个视频调整为横屏视频)
    }

    # pushFrom
    PUSH_FROM = {
        'rov_recall': 'recall_pool',  # rov召回池
        'flow_recall': 'flow_pool',  # 流量池
        'top': 'op_manual',  # 置顶
        'bottom': 'bottom_strategy',  # 一层兜底
        'bottom_last': 'bottom_strategy_last',  # 二层兜底
    }
    # category id mapping
    CATEGORY = {
        'recommend': [55],  # 推荐
        'other': [1, 2, 3]  # 其他类别
    }
    # 前k个从ROV召回池中获取视频
    K = 3
    # 从流量池获取视频的概率设置
    P = 0.15

    # ROV召回池redis key前缀,完整格式:com.weiqu.video.recall.hot.item.score.{date}
    RECALL_KEY_NAME_PREFIX = 'com.weiqu.video.recall.hot.item.score.'

    # appType = 6, ROV召回池redis key前缀,完整格式:com.weiqu.video.recall.hot.apptype.h.item.score.{appType}.{h}
    RECALL_KEY_NAME_PREFIX_APP_TYPE = 'com.weiqu.video.recall.hot.apptype.h.item.score.'

    # 流量池redis key前缀,完整格式 com.weiqu.video.flowpool.hot.item.score.{appType}
    FLOW_POOL_KEY_NAME_PREFIX = 'com.weiqu.video.flowpool.hot.item.score.'

    # 修改ROV的视频 redis key
    UPDATE_ROV_KEY_NAME = 'com.weiqu.video.update.rov.item.score'

    # 首页推荐预曝光列表redis key 前缀,完整key格式:com.weiqu.video.hot.recommend.previewed.{appType}.{mid}
    PREVIEW_KEY_PREFIX = 'com.weiqu.video.hot.recommend.previewed.'

    # 用户上一次在rov召回池对应的位置 redis key前缀,完整key格式:com.weiqu.video.rov.pool.last.{appType}.{mid}.{date}
    LAST_VIDEO_FROM_ROV_POOL_PREFIX = 'com.weiqu.video.rov.pool.last.'

    # 本地记录视频的可分发数,控制分发,完整key格式:com.weiqu.video.flowpool.local.distribute.count.{h}
    # LOCAL_DISTRIBUTE_COUNT_PREFIX = 'com.weiqu.video.flowpool.local.distribute.count.'
    # 本地记录视频的可分发数,控制分发,完整key格式:com.weiqu.video.flowpool.local.distribute.count.{videoId}.{flowPool}
    LOCAL_DISTRIBUTE_COUNT_PREFIX = 'com.weiqu.video.flowpool.local.distribute.count.'

    # 从ROV召回池获取视频的最大频次,限制每次请求的获取次数
    MAX_FREQ_FROM_ROV_POOL = 3

    # 兜底视频redis存储key
    BOTTOM_KEY_NAME = 'com.weiqu.video.bottom'

    # 生效中的置顶视频列表 redis key
    TOP_VIDEO_LIST_KEY_NAME = 'com.weiqu.video.top.item.score.area'

    # rov召回池更新时间
    ROV_UPDATE_H = 6
    ROV_UPDATE_MINUTE = 30

    # 置顶视频区域 为 全部 的code
    ALL_AREA_CODE = '000000'

    # width : height > 1 的视频列表 redis key, zset存储,value为videoId,score为w_h_rate
    W_H_RATE_UP_1_VIDEO_LIST_KEY_NAME = {
        'rov_recall': 'com.weiqu.video.rov.w.h.rate.1.item',  # rov召回池视频
        'bottom_last': 'com.weiqu.video.bottom.last.w.h.rate.1.item'  # 二次兜底视频
    }


class DevelopmentConfig(BaseConfig):
    """测试环境配置"""
    # 测试环境redis地址
    REDIS_INFO = {
        'host': 'r-bp1ps6my7lzg8rdhwx682.redis.rds.aliyuncs.com',
        'port': 6379,
        'password': 'Wqsd@2019',
    }

    # Hologres连接参数,本地使用
    HOLOGRES_INFO = {
        'host': 'hgprecn-cn-7pp28y18c00c-cn-hangzhou.hologres.aliyuncs.com',
        'port': 80,
        'dbname': 'dssm',
        'user': 'LTAI5tMPqPy9yboQAf1mBCCN',
        'password': '4BEcOgxREOPq7t3A7EWkjciVULeQGj'
    }

    # 测试环境mysql地址
    MYSQL_INFO = {
        'host': 'rm-bp1k5853td1r25g3n690.mysql.rds.aliyuncs.com',
        'port': 3306,
        'user': 'wx2016_longvideo',
        'password': 'wx2016_longvideoP@assword1234',
        'db': 'longvideo',
        'charset': 'utf8'
    }

    # Hologres视频状态存储表名
    VIDEO_STATUS = 'longvideo_test.dwd_mdm_item_video_stat'

    # 用户已观看视频过滤 & 视频审核条件过滤 & 是否进入老年人社区过滤 & 话题状态过滤 接口地址
    # 参数types: 1-已观看 2-视频状态 3-是否进入老年人社区过滤 4-话题状态
    VIDEO_FILTER_URL = 'http://videotest-internal.yishihui.com/longvideoapi/openapi/recommend/filterVideos'

    # 获取视频在流量池中的剩余可分发数接口地址
    GET_REMAIN_VIEW_COUNT_URL = 'http://testapi-internal.piaoquantv.com/flowpool/video/remainViewCount'


class TestConfig(BaseConfig):
    """测试环境配置"""
    # 测试环境redis地址
    REDIS_INFO = {
        'host': 'r-bp1ps6my7lzg8rdhwx682.redis.rds.aliyuncs.com',
        'port': 6379,
        'password': 'Wqsd@2019',
    }

    # Hologres连接参数,服务器使用
    HOLOGRES_INFO = {
        'host': 'hgprecn-cn-7pp28y18c00c-cn-hangzhou-vpc.hologres.aliyuncs.com',
        'port': 80,
        'dbname': 'dssm',
        'user': 'LTAI5tMPqPy9yboQAf1mBCCN',
        'password': '4BEcOgxREOPq7t3A7EWkjciVULeQGj'
    }

    # 测试环境mysql地址
    MYSQL_INFO = {
        'host': 'rm-bp1k5853td1r25g3n690.mysql.rds.aliyuncs.com',
        'port': 3306,
        'user': 'wx2016_longvideo',
        'password': 'wx2016_longvideoP@assword1234',
        'db': 'longvideo',
        'charset': 'utf8'
    }

    # Hologres视频状态存储表名
    VIDEO_STATUS = 'longvideo_test.dwd_mdm_item_video_stat'

    # 用户已观看视频过滤 & 视频审核条件过滤 & 是否进入老年人社区过滤 & 话题状态过滤 接口地址
    # 参数types: 1-已观看 2-视频状态 3-是否进入老年人社区过滤 4-话题状态
    VIDEO_FILTER_URL = 'http://videotest-internal.yishihui.com/longvideoapi/openapi/recommend/filterVideos'

    # 获取视频在流量池中的剩余可分发数接口地址
    GET_REMAIN_VIEW_COUNT_URL = 'http://testapi-internal.piaoquantv.com/flowpool/video/remainViewCount'


class PreProductionConfig(BaseConfig):
    """预发布环境配置"""
    # 线上环境redis地址
    REDIS_INFO = {
        'host': 'r-bp1fogs2mflr1ybfot.redis.rds.aliyuncs.com',
        'port': 6379,
        'password': 'Wqsd@2019',
    }

    # Hologres连接参数,服务器使用
    HOLOGRES_INFO = {
        'host': 'hgprecn-cn-7pp28y18c00c-cn-hangzhou-vpc.hologres.aliyuncs.com',
        'port': 80,
        'dbname': 'dssm',
        'user': 'LTAI5tMPqPy9yboQAf1mBCCN',
        'password': '4BEcOgxREOPq7t3A7EWkjciVULeQGj'
    }

    # 生产环境mysql地址
    MYSQL_INFO = {
        'host': 'rr-bp1x9785e8h5452bi157.mysql.rds.aliyuncs.com',
        'port': 3306,
        'user': 'wx2016_longvideo',
        'password': 'wx2016_longvideoP@assword1234',
        'db': 'longvideo',
        'charset': 'utf8'
    }

    # Hologres视频状态存储表名
    VIDEO_STATUS = 'longvideo.dwd_mdm_item_video_stat'

    # 用户已观看视频过滤 & 视频审核条件过滤 & 是否进入老年人社区过滤 & 话题状态过滤 接口地址
    # 参数types: 1-已观看 2-视频状态 3-是否进入老年人社区过滤 4-话题状态
    VIDEO_FILTER_URL = 'http://speedpre.wx.com/longvideoapi/openapi/recommend/filterVideos'

    # 获取视频在流量池中的剩余可分发数接口地址
    GET_REMAIN_VIEW_COUNT_URL = 'http://preapi-internal.piaoquantv.com/flowpool/video/remainViewCount'


class ProductionConfig(BaseConfig):
    """生产环境配置"""
    # 线上环境redis地址
    REDIS_INFO = {
        'host': 'r-bp1fogs2mflr1ybfot.redis.rds.aliyuncs.com',
        'port': 6379,
        'password': 'Wqsd@2019',
    }

    # Hologres连接参数,服务器使用
    HOLOGRES_INFO = {
        'host': 'hgprecn-cn-7pp28y18c00c-cn-hangzhou-vpc.hologres.aliyuncs.com',
        'port': 80,
        'dbname': 'dssm',
        'user': 'LTAI5tMPqPy9yboQAf1mBCCN',
        'password': '4BEcOgxREOPq7t3A7EWkjciVULeQGj'
    }

    # 生产环境mysql地址
    MYSQL_INFO = {
        'host': 'rr-bp1x9785e8h5452bi157.mysql.rds.aliyuncs.com',
        'port': 3306,
        'user': 'wx2016_longvideo',
        'password': 'wx2016_longvideoP@assword1234',
        'db': 'longvideo',
        'charset': 'utf8'
    }

    # Hologres视频状态存储表名
    VIDEO_STATUS = 'longvideo.dwd_mdm_item_video_stat'

    # 用户已观看视频过滤 & 视频审核条件过滤 & 是否进入老年人社区过滤 & 话题状态过滤 接口地址
    # 参数types: 1-已观看 2-视频状态 3-是否进入老年人社区过滤 4-话题状态
    VIDEO_FILTER_URL = 'http://recommend-common-internal.piaoquantv.com/longvideoapi/openapi/recommend/filterVideos'

    # 获取视频在流量池中的剩余可分发数接口地址
    GET_REMAIN_VIEW_COUNT_URL = 'http://api-internal.piaoquantv.com/flowpool/video/remainViewCount'


def set_config():
    # return DevelopmentConfig()
    return TestConfig()
    # return PreProductionConfig()
    # return ProductionConfig()