class BaseConfig(object):
    # 产品标识
    APP_TYPE = {
        'VLOG': 0,  # vlog
        'LOVE_LIVE': 4,  # 票圈视频
        'LONG_VIDEO': 5,  # 内容精选
        'SHORT_VIDEO': 6
    }
    # 数据存放路径
    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.'


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

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

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

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

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

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

    # 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()