from Utils.ObjUtil import SpecObject from Utils.ValidateUtil import ValidateAttr, Validate class ScoreModelObj(SpecObject): """打分模型""" class LevelSetting(SpecObject): """级别设置""" level = ValidateAttr(field='level', type=str) score = ValidateAttr(field='score', type=[int, float]) position = ValidateAttr(field='position', type=[int, float]) fields_map = { "level": "级别", "score": "得分", "position": "分位" } class Dimension(SpecObject): """维度""" class FirstIndex(SpecObject): """一级指标""" class SecondaryIndex(SpecObject): """二级指标""" class ScoreSetting(SpecObject): """打分设置""" pattern = ValidateAttr(field="pattern", type=str) interval = ValidateAttr(field="interval", type=list) score_position = ValidateAttr(field="score_position", type=list) fields_map = { "pattern": "模式", "interval": "区间", "score_position": "打分位" } class BindIndex(SpecObject): """打分指标""" class BindSet(SpecObject): """绑定设置""" class Params(SpecObject): """传入参数""" class DataBind(SpecObject): """数据绑定""" class FilterRange(SpecObject): """筛选范围""" data_base = ValidateAttr(field="data_base", type=str) data_sheet = ValidateAttr(field="data_sheet", type=str) data_field = ValidateAttr(field="data_field", type=str) data_sub_field = ValidateAttr(field="data_sub_field", type=str) fields_map = { "data_base": "数据库", "data_sheet": "数据表", "data_field": "字段", "data_sub_field": "子字段" } class SearchCase(SpecObject): """筛选条件""" class ByCid(SpecObject): """企业ID筛选""" cid = ValidateAttr(field='cid', type=str) fields_map = { "cid": "企业ID" } class ByReportDate(SpecObject): """报告期筛选""" report_date = ValidateAttr(field='report_date', func=Validate.date_format) fields_map = { "cid": "报告期" } by_cid = ValidateAttr(field="by_cid", str=ByCid) by_report_date = ValidateAttr(field="by_report_date", str=ByReportDate) by_diy_case = ValidateAttr(field="by_diy_case", str=dict) fields_map = { "by_cid": "企业ID筛选", "by_report_date": "报告期筛选", "by_diy_case": "自定义筛选", } class SetValue(SpecObject): """筛选范围""" class DisposeExcept(SpecObject): """处理异常值""" class NumericType(SpecObject): """数值型""" value = ValidateAttr(field='value', type=[float, int]) bit = ValidateAttr(field='bit', type=int) fields_map = { "value": "值", "bit": "保留位数" } null_type = ValidateAttr(field='null_type', type=None) numeric_type = ValidateAttr(field='numeric_type', type=NumericType) text_type = ValidateAttr(field='text_type', type=str) fields_map = { "null_type": "空值", "numeric_type": "数值型", "text_type": "文本型" } case_none_str = ValidateAttr(field="case_none_str", type=DisposeExcept) case_none = ValidateAttr(field="case_none", type=DisposeExcept) case_no_key = ValidateAttr(field="case_no_key", type=DisposeExcept) fields_map = { "case_none_str": "处理空字符串", "case_none": "处理空值", "case_no_key": "处理不存在" } filter_range = ValidateAttr(field='filter_range', type=FilterRange) search_case = ValidateAttr(field='search_case', type=SearchCase) set_value = ValidateAttr(field='set_value', type=SetValue) fields_map = { "filter_range": "筛选范围", "search_case": "筛选条件", "set_value": "取值设置" } param = ValidateAttr(field="param", type=str) describe = ValidateAttr(field="describe", type=str) data_bind = ValidateAttr(field="data_bind", type=DataBind) fields_map = { "param": "参数", "describe": "说明", "data_bind": "数据绑定" } type = ValidateAttr(field='type', type=str) name = ValidateAttr(field='name', type=str) params = ValidateAttr(field='params', instance_list=Params) fields_map = { "type": "类型", "name": "名称", "params": "传入参数" } index_name = ValidateAttr(field="index_name", type=str) bind_set = ValidateAttr(field="bind_set", type=BindSet) fields_map = { "index_name": "指标名称", "bind_set": "绑定设置" } name = ValidateAttr(field="name", type=str) bind_index = ValidateAttr(field="bind_index", type=BindIndex) standard_score = ValidateAttr(field="standard_score", type=[int, float]) score_setting = ValidateAttr(field="score_setting", type=ScoreSetting) fields_map = { "name": "指标名称", "bind_index": "构建指标", "standard_score": "标准分", "score_setting": "打分设置" } name = ValidateAttr(field="name", type=str) secondary_index = ValidateAttr(field="secondary_index", instance_list=SecondaryIndex) fields_map = { "name": "指标名称", "secondary_index": "二级指标" } name = ValidateAttr(field="name", type=str) first_index = ValidateAttr(field="first_index", instance_list=FirstIndex) fields_map = { "name": "维度名称", "first_index": "一级指标" } class Tags(SpecObject): """标签""" tag_name = ValidateAttr(field='tag_name', type=str) tag_id = ValidateAttr(field='tag_id', type=str) fields_map = { "tag_name": "标签名称", "tag_id": "标签ID" } model_id = ValidateAttr(field="model_id", type=str) model_name = ValidateAttr(field="model_name", type=str) level_setting = ValidateAttr(field="level_setting", instance_list=LevelSetting) dimension = ValidateAttr(field="dimension", instance_list=Dimension) author = ValidateAttr(field="author", type=str) edit_date = ValidateAttr(field="edit_date", func=Validate.date_format) tags = ValidateAttr(field="tags", instance_list=Tags) status = ValidateAttr(field="status", type=str, in_list=['design', 'published']) fields_map = { "model_id": "模型ID", "model_name": "模型名称", "level_setting": "级别设置", "dimension": "维度", "author": "作者", "date": "日期", "tags": "标签", "status": "状态" } test = { "企业名称": "远东资信评估有限公司", "维度得分": [ { "维度名称": "经营环境", "一级指标": [ { "指标名称": "区域经济环境", "二级指标": [ { "指标名称": "营业利润率", "合计": 3 }, { "指标名称": "营业利润率", "合计": 3 } ], "合计": 6 }, { "指标名称": "区域经济环境", "二级指标": [ { "指标名称": "营业利润率", "合计": 3 }, { "指标名称": "营业利润率", "合计": 3 } ], "合计": 6 } ], "合计": 10 } ], "合计": 100, "级别": "AAA" }