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,  # 票圈最惊奇
    }
    # 数据存放路径
    DATA_DIR_PATH = './data'

    # oss 目标Bucket
    BUCKET_NAME = 'ali-recommend'

    # 训练数据截止时间距当前日期间隔天数
    TRAIN_DIFF = 7
    # 训练数据所需数据范围天数
    TRAIN_DELTA_DAYS = 30
    # 训练数据表名
    TRAIN_PROJECT = 'usercdm'
    TRAIN_TABLE = 'rov_feature_add_v1'
    # 训练数据文件存放路径
    TRAIN_DATA_FILENAME = 'train_data.pickle'

    # 预测数据截止时间距当前日期间隔天数
    PREDICT_DIFF = 1
    # 预测数据所需数据范围天数
    PREDICT_DELTA_DAYS = 1
    # 预测数据表名
    PREDICT_PROJECT = 'usercdm'
    PREDICT_TABLE = 'rov_predict_table_add_v1'
    # 预测数据文件存放路径
    PREDICT_DATA_FILENAME = 'predict_data.pickle'

    # 模型存放文件
    MODEL_FILENAME = 'model.pickle'

    # 小程序离线ROV模型结果存放 redis key前缀,完整格式:com.weiqu.video.recall.hot.item.score.{date}
    RECALL_KEY_NAME_PREFIX = 'com.weiqu.video.recall.hot.item.score.'

    # 流量池离线模型结果存放 redis key前缀,完整格式 com.weiqu.video.flowpool.hot.item.score.{appType}
    FLOWPOOL_KEY_NAME_PREFIX = 'com.weiqu.video.flowpool.hot.item.score.'

    # 兜底视频redis存储key
    BOTTOM_KEY_NAME = 'com.weiqu.video.bottom'
    # 兜底视频数量
    BOTTOM_NUM = 1000
    # 首页兜底视频json存储 redis-key
    BOTTOM_JSON_KEY_NAME = 'com.weiqu.video.homepage.bottom.info.json.item'

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

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

    # width : height > 1 的视频列表 redis key, zset存储,value为videoId,score为w_h_rate
    W_H_RATE_UP_1_VIDEO_LIST_KEY_NAME = 'com.weiqu.video.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'

    # 从流量池获取视频接口地址
    GET_VIDEOS_FROM_POOL_URL = 'http://testapi-internal.piaoquantv.com/flowpool/video/getAllVideo'
    # 获取视频在流量池中的剩余可分发数接口地址
    GET_REMAIN_VIEW_COUNT_URL = 'http://testapi-internal.piaoquantv.com/flowpool/video/remainViewCount'
    # 计算完ROV通知后端接口地址
    NOTIFY_BACKEND_UPDATE_ROV_SCORE_URL = 'http://videotest-internal.yishihui.com/longvideoapi/openapi/recommend/updateRovScore'
    # 获取置顶视频列表接口地址
    TOP_VIDEO_LIST_URL = 'http://videotest-internal.yishihui.com/longvideoapi/openapi/recommend/topVideoList'
    # 获取首页兜底视频json接口地址
    BOTTOM_JSON_URL = 'http://videotest-internal.yishihui.com/longvideoapi/openapi/video/distribute/structure/video/list'

    # logs 上传oss 目标Bucket指定目录
    OSS_FOLDER_LOGS = 'rov-offline/dev/logs/'
    # data 上传oss 目标Bucket指定目录
    OSS_FOLDER_DATA = 'rov-offline/dev/data/'


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'

    # 从流量池获取视频接口地址
    GET_VIDEOS_FROM_POOL_URL = 'http://testapi-internal.piaoquantv.com/flowpool/video/getAllVideo'
    # 获取视频在流量池中的剩余可分发数接口地址
    GET_REMAIN_VIEW_COUNT_URL = 'http://testapi-internal.piaoquantv.com/flowpool/video/remainViewCount'
    # 计算完ROV通知后端接口地址
    NOTIFY_BACKEND_UPDATE_ROV_SCORE_URL = 'http://videotest-internal.yishihui.com/longvideoapi/openapi/recommend/updateRovScore'
    # 获取置顶视频列表接口地址
    TOP_VIDEO_LIST_URL = 'http://videotest-internal.yishihui.com/longvideoapi/openapi/recommend/topVideoList'
    # 获取首页兜底视频json接口地址
    BOTTOM_JSON_URL = 'http://videotest-internal.yishihui.com/longvideoapi/openapi/video/distribute/structure/video/list'

    # logs 上传oss 目标Bucket指定目录
    OSS_FOLDER_LOGS = 'rov-offline/test/logs/'
    # data 上传oss 目标Bucket指定目录
    OSS_FOLDER_DATA = 'rov-offline/test/data/'


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'
    }

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

    # 从流量池获取视频接口地址
    GET_VIDEOS_FROM_POOL_URL = 'http://preapi-internal.piaoquantv.com/flowpool/video/getAllVideo'
    # 获取视频在流量池中的剩余可分发数接口地址
    GET_REMAIN_VIEW_COUNT_URL = 'http://preapi-internal.piaoquantv.com/flowpool/video/remainViewCount'
    # 计算完ROV通知后端接口地址
    NOTIFY_BACKEND_UPDATE_ROV_SCORE_URL = 'http://videopre-internal.piaoquantv.com/longvideoapi/openapi/recommend/updateRovScore'
    # 获取置顶视频列表接口地址
    TOP_VIDEO_LIST_URL = 'http://speedpre.wx.com/longvideoapi/openapi/recommend/topVideoList'
    # 获取首页兜底视频json接口地址
    BOTTOM_JSON_URL = 'http://speedpre.wx.com/longvideoapi/openapi/video/distribute/structure/video/list'

    # logs 上传oss 目标Bucket指定目录
    OSS_FOLDER_LOGS = 'rov-offline/pre/logs/'
    # data 上传oss 目标Bucket指定目录
    OSS_FOLDER_DATA = 'rov-offline/pre/data/'


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'
    }

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

    # 从流量池获取视频接口地址
    GET_VIDEOS_FROM_POOL_URL = 'http://api-internal.piaoquantv.com/flowpool/video/getAllVideo'
    # 获取视频在流量池中的剩余可分发数接口地址
    GET_REMAIN_VIEW_COUNT_URL = 'http://api-internal.piaoquantv.com/flowpool/video/remainViewCount'
    # 计算完ROV通知后端接口地址
    NOTIFY_BACKEND_UPDATE_ROV_SCORE_URL = 'http://longvideoapi-internal.piaoquantv.com/longvideoapi/openapi/recommend/updateRovScore'
    # 获取置顶视频列表接口地址
    TOP_VIDEO_LIST_URL = 'http://recommend-common-internal.piaoquantv.com/longvideoapi/openapi/recommend/topVideoList'
    # 获取首页兜底视频json接口地址
    BOTTOM_JSON_URL = 'http://recommend-common-internal.piaoquantv.com/longvideoapi/openapi/video/distribute/structure/video/list'

    # logs 上传oss 目标Bucket指定目录
    OSS_FOLDER_LOGS = 'rov-offline/pro/logs/'
    # data 上传oss 目标Bucket指定目录
    OSS_FOLDER_DATA = 'rov-offline/pro/data/'


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