166 lines
8.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import json
data={
"技术评分": {
"工程概况": {
"评分": "1分",
"要求": "工程主要情况、各专业设计简介、工程施工条件描述准确清晰 1分基本准确 0.5-0.9分,不准确得 0分。"
},
"施工部署": {
"评分": "3分",
"要求": "工程施工目标、主要施工内容、施工流水段划分、施工的重点和难点分析、工程管理的组织机构形式、项目经理部的工作岗位设置及其职责划分、新技术、新工艺部署及其技术和管理要求(如有)、主要分包工程施工单位的选择要求及管理方式(如有)等各项安排科学、合理、针对性强 2.8-3分合理、可行 2.1-2.7分;欠合理,基本可行 1-2.0分;不可行,不能满足工程需要得 0分。"
},
"施工进度计划": {
"评分": "3分",
"要求": "网络图或横道图安排的进度计划科学、合理、针对性强 2.8-3分合理、可行 1.6-2.7分;欠合理,基本可行 1-1.5分;不可行,不能满足招标文件要求 0分。"
},
"施工准备与资源配置计划": {
"评分": "2分",
"要求": "技术准备、现场准备和资金准备;资源配置计划包括劳动力配置计划、主要工程材料和设备配置计划、主要周转材料和施工机具配置计划等内容完备,合理、针对性强 1.9-2分内容完备可行 1.3-1.8分;内容欠完备,基本可行 0.8-1.2分;不可行 0分。"
},
"主要施工方案": {
"评分": "5分",
"要求": "主要分部、分项工程施工方案合理、可行;脚手架工程、起重吊装工程、临时用水用电工程、季节性施工等专项工程的施工方案(如有)有必要的验算和说明;对易发生质量通病、易出现安全问题、施工难度大、技术含量高的分项工程(工序)等有重点说明。科学、合理、针对性强 4.6-5分合理、可行 3.1-4.5;欠合理,基本可行 2.0-3.0;不可行,不能满足工程需要 0分。"
},
"施工现场平面布置": {
"评分": "2分",
"要求": "拟建建(构)筑物的位置轮廓、尺寸、层数;加工设施、存储设施、办公和生活用房的位置和面积;布置垂直运输设施、供电设施、供水、供热设施、排水排污设施和临时施工道路;必备的安全、消防、保卫和环境保护设施;相邻的地上地下既有建(构)筑物及相关环境等要素齐全,现场布置合理 1.9-2分现场布置可行 1.3-1.8分;现场布置基本可行 0.8-1.2分;现场布置不可行 0分。"
},
"主要施工管理计划": {
"评分": "4分",
"要求": "进度管理计划、质量管理计划、安全管理计划、环境管理计划、成本管理计划、治安保卫管理计划、合同管理计划,组织协调管理计划、成品保护管理计划、质量保修管理计划、人力资源、施工机具、材料设备等管理计划内容完备,合理、针对性强 3.5-4分内容基本完备可行 2.7-3.4分;内容欠完备,基本可行 2.0-2.6分;不可行 0分。"
}
},
"商务评分": {
"项目经理资格": {
"学历": {
"评分": "1分",
"要求": "大学专科及以上 1分中专 0.5分;其他 0分。"
}
},
"技术负责人资格": {
"职称": {
"评分": "1分",
"要求": "相关专业中级职称(工程师) 1分其他 0分。"
},
"学历": {
"评分": "1分",
"要求": "大学专科及以上 1分中专 0.5分;其他 0分。"
}
},
"其他主要人员": {
"评分": "2分",
"要求": "人员配备合理,满足需要 1.6-2分人员配备基本合理,基本满足需要 0.1-1.5分;人员配备不合理 0分。"
},
"认证体系": {
"评分": "3分",
"要求": "投标人具有有效的 IS09001(GB/T19001)质量管理体系认证证书、IS014001(GB/T24001)环境管理体系认证证书、OHSAD18001(GB/T28001)职业健康安全管理体系认证证书的,一项得 1分三个得 3分(须提供认证证书的扫描件或复印件及在“全国认证认可信息公共服务平台”查询结果截图,未提供或不符合要求不得分。)"
},
"工程奖项": {
"评分": "3分",
"要求": "投标人企业近三年2018-2020连续获得过县级及以上行政主管部门表彰的得 3分其他不得分。"
},
"信用": {
"评分": "1分",
"要求": "在信用中国查询未受到行政监督部门行政处罚的得 1分被行政监督部门作出行政处罚的得 0分。提供网上查询截图以开标当天“信用中国”网站查询为准否则不得分。(行政处罚是指通过在“信用中国”查询投标人有行政处罚记录信息且在公示期内)"
}
},
"投标报价评审标准": {
"有效投标报价确定": {
"评分": "未知",
"要求": "低于招标控制价。"
},
"有效投标报价的排序": {
"评分": "未知",
"要求": "有效投标报价由低到高排序。"
},
"投标文件基础数据分析和整理": {
"评分": "未知",
"要求": "清标报告。"
},
"投标报价成本分析": {
"评分": "未知",
"要求": "清标报告。"
},
"投标竞争下浮率": {
"评分": "未知",
"要求": "取值1%(投标竞争下浮率的值为整数,具体由招标人结合项目特点和需要在招标文件中明确)。"
},
"投标报价最终排序": {
"评分": "未知",
"要求": "有效投标报价由低到高排序。"
},
"投标报价不合格的情形": {
"评分": "未知",
"要求": "投标报价不合格的情形仅限于投标报价高于最高投标限价或低于成本的情形。投标报价文件评定为“合格”的,评标委员会应列出报价组成不合理、不平衡报价、签订合同前应注意和澄清的事项。评标委员会在不改变投标人投标文件实质性内容的前提下,对投标文件已标价工程量清单进行符合性检查、算术错误修正,对其报价进行合理性分析,投标报价一致或呈规律性差异,评标委员会应当进行比较分析,判定应当否决投标,并形成清标报告。"
}
}
}
def remove_unknown_scores(data):
if isinstance(data, dict):
return {
k: remove_unknown_scores(v)
for k, v in data.items()
if not (k == "评分" and v in ["未知", "/", ""])
}
elif isinstance(data, list):
return [remove_unknown_scores(item) for item in data]
else:
return data
def combine_technical_and_business(data, target_values):
data = remove_unknown_scores(data)
extracted_data = {} # 根级别存储所有数据
technical_found = False
business_found = False
def extract_nested(data, parent_key='', is_technical=False, is_business=False):
nonlocal technical_found, business_found
if isinstance(data, dict):
for key, value in data.items():
current_key = f"{parent_key}.{key}" if parent_key else key
# 检查是否为技术标的内容
if any(target in key for target in target_values):
if not is_technical:
extracted_data[key] = value
technical_found = True
continue
# 默认其他所有内容都归为商务标
else:
if not is_business:
if '商务评分' not in extracted_data:
extracted_data['商务评分'] = {}
extracted_data['商务评分'][key] = value
business_found = True
continue
if isinstance(value, dict) or isinstance(value, list):
extract_nested(value, current_key, is_technical, is_business)
elif isinstance(data, list):
for index, item in enumerate(data):
extract_nested(item, f"{parent_key}[{index}]", is_technical, is_business)
extract_nested(data)
if not technical_found:
extracted_data['技术评分'] = ''
if not business_found:
extracted_data['商务评分'] = ''
return extracted_data
target_values1 = ['技术标','技术部分','设计', '实施',"技术评分"]
evaluation_standards_res=combine_technical_and_business(data,target_values1)
# 从结果中提取"商务标"和"技术标"
technical_standards = {"技术评分": evaluation_standards_res.get("技术评分", {})}
commercial_standards = {"商务评分": evaluation_standards_res.get("商务评分", {})}
# 返回技术标和商务标
print(json.dumps(technical_standards,ensure_ascii=False,indent=4))
print(json.dumps(commercial_standards, ensure_ascii=False, indent=4))