zbparse/flask_app/general/post_processing.py

633 lines
52 KiB
Python
Raw Normal View History

2024-10-17 20:57:13 +08:00
# -*- encoding:utf-8 -*-
import json
2024-10-17 15:33:58 +08:00
import re
2024-10-25 14:00:31 +08:00
from flask_app.general.format_date import format_chinese_date
2024-10-27 12:08:54 +08:00
from flask_app.general.format_amout import format_amount
from flask_app.general.纯技术参数要求提取 import extract_matching_keys
2024-10-22 21:02:54 +08:00
# 定义一个辅助函数用于获取嵌套字典中的值
def get_nested(dic, keys, default=None):
for key in keys:
if isinstance(dic, dict):
dic = dic.get(key, default)
else:
return default
return dic
2024-10-17 15:33:58 +08:00
def inner_post_processing(base_info):
2024-10-22 10:21:14 +08:00
# print(json.dumps(base_info,ensure_ascii=False,indent=4))
2024-10-17 15:33:58 +08:00
"""
处理 '基础信息' 部分提取所需字段
参数:
base_info (dict): 包含 '基础信息' 的字典
返回:
dict: 提取的信息字典 extracted_info
"""
# 初始化提取的信息字典
extracted_info = {}
# 定义一个辅助函数用于递归查找包含特定子字符串的键
def find_keys_containing(dic, substring):
found_values = []
if isinstance(dic, dict):
for key, value in dic.items():
if substring in key:
found_values.append(value)
if isinstance(value, dict):
found_values.extend(find_keys_containing(value, substring))
elif isinstance(value, list):
for item in value:
if isinstance(item, dict):
found_values.extend(find_keys_containing(item, substring))
return found_values
# 定义一个辅助函数用于根据候选键列表提取值(部分匹配)
def extract_field(contact_info, candidate_keys):
for candidate in candidate_keys:
for key, value in contact_info.items():
if candidate in key and value not in ["未知", ""]:
return value
return ""
# 定义一个辅助函数用于提取 '投标保证金'
def extract_bid_bond(guarantee_info):
# 定义投标保证金的候选键
bid_bond_candidates = ["投标保证金", "磋商保证金"]
# 第一步:查找包含 "投标保证金" 或 "磋商保证金" 的键
for candidate in bid_bond_candidates:
for key, value in guarantee_info.items():
if candidate in key:
if isinstance(value, dict):
# 在嵌套字典中查找包含 "金额" 的键
for sub_key, sub_value in value.items():
if "金额" in sub_key and sub_value not in ["未知", ""]:
return sub_value
elif isinstance(value, str):
if "金额" in key and value not in ["未知", ""]:
return value
else:
# 如果 value 既不是 dict 也不是 str忽略
continue
# 第二步:如果没有找到包含 "金额" 的键,尝试在所有键值中查找符合模式的值
amount_pattern = re.compile(r'(?:\d{1,3}(?:[,]\d{3})*(?:\.\d+)?|\d+(?:\.\d+)?|[\u4e00-\u9fff]+(?:\.\d+)?)\s*(?:元|万元)')
for key, value in guarantee_info.items():
if isinstance(value, str):
match = amount_pattern.search(value)
if match:
return match.group()
elif isinstance(value, dict):
# 递归查找嵌套字典中的金额
found_amount = extract_bid_bond(value)
if found_amount:
return found_amount
# 如果都没有找到,则返回空字符串
return ""
2024-10-25 15:13:09 +08:00
def ensure_string(value):
"""
将提取的值转换为字符串类型
如果值是列表或字典按照指定格式拼接为字符串
参数:
value: 需要转换的值
返回:
str: 转换后的字符串
"""
if isinstance(value, list):
2024-10-25 17:50:20 +08:00
if all(isinstance(item, str) for item in value):
# 如果列表中的所有元素都是字符串,则用两个空格连接
return " ".join(item for item in value if item not in ["未知", ""])
else:
concatenated = []
for item in value:
if isinstance(item, dict):
pairs = []
for k, v in item.items():
if v not in ["未知", ""]:
pairs.append(f"{k}:{v}")
concatenated.append(" ".join(pairs))
else:
# 如果列表中有非字典且非字符串的项,直接转换为字符串
concatenated.append(str(item))
return " ".join(concatenated)
2024-10-25 15:13:09 +08:00
elif isinstance(value, dict):
pairs = []
for k, v in value.items():
if v not in ["未知", ""]:
pairs.append(f"{k}:{v}")
return " ".join(pairs)
else:
return str(value) if value not in ["未知", ""] else ""
2024-10-17 15:33:58 +08:00
# 定义所需字段的映射关系,暂时不包含'联系人'和'联系电话'以及'招标项目地点'
mapping = {
"代理机构名称": [["招标人/代理信息", "招标代理机构"]],
"招标项目名称": [["项目信息", "项目名称"], ["项目信息", "工程名称"]],
"招标项目编号": [["项目信息", "项目编号"], ["项目信息", "招标编号"]],
"开标时间": [["关键时间/内容", "开标时间"]],
"报名截止日期": [["关键时间/内容", "投标文件递交截止日期"]],
"招标项目预算": [["项目信息", "招标控制价"]],
"招标单位名称": [["招标人/代理信息", "招标人"]],
2024-10-17 20:57:13 +08:00
"招标公告地址": [["关键时间/内容", "信息公示媒介"], ["关键时间/内容", "评标结果公示媒介"]],
2024-10-17 15:33:58 +08:00
}
2024-10-25 14:00:31 +08:00
# 定义需要格式化的日期字段
date_fields = ["开标时间", "报名截止日期"]
2024-10-17 15:33:58 +08:00
# 提取并映射字段
for new_key, paths in mapping.items():
value = None
for path in paths:
value = get_nested(base_info, path)
if value:
break
2024-10-25 14:00:31 +08:00
if new_key in date_fields and value:
# 调用 format_chinese_date 函数格式化日期
formatted_value = format_chinese_date(value) # 或者使用 format_chinese_date(value) 如果你定义了该函数
2024-10-25 15:13:09 +08:00
extracted_info[new_key] = ensure_string(formatted_value) if formatted_value else ""
2024-10-25 14:00:31 +08:00
else:
2024-10-27 12:08:54 +08:00
# 对 '招标项目预算' 应用 format_amount
if new_key == "招标项目预算" and value:
formatted_amount = format_amount(ensure_string(value))
extracted_info[new_key] = formatted_amount
else:
extracted_info[new_key] = ensure_string(value) if value else ""
2024-10-17 15:33:58 +08:00
# 特殊处理 '招标项目地点'
# 在 '项目信息' 下查找包含 "地点" 的键
project_info = base_info.get("项目信息", {})
location_candidates = find_keys_containing(project_info, "地点")
if location_candidates:
# 选择第一个找到的地点
2024-10-25 15:13:09 +08:00
extracted_info["招标项目地点"] = ensure_string(location_candidates[0])
2024-10-17 15:33:58 +08:00
else:
extracted_info["招标项目地点"] = ""
# 特殊处理 '联系人' 和 '联系电话'
# 提取 '项目联系方式'
project_contact = get_nested(base_info, ["招标人/代理信息", "项目联系方式"], {})
2024-10-21 20:35:52 +08:00
if not isinstance(project_contact, dict):
project_contact = {}
2024-10-17 15:33:58 +08:00
# 提取 '招标人联系方式'
bidder_contact = get_nested(base_info, ["招标人/代理信息", "招标人联系方式"], {})
2024-10-21 20:35:52 +08:00
if not isinstance(bidder_contact, dict):
bidder_contact = {}
2024-10-17 15:33:58 +08:00
# 定义候选键列表,按优先级排序
2024-10-18 13:37:54 +08:00
name_candidates = ["联系人","名称", "招标"]
2024-10-17 15:33:58 +08:00
phone_candidates = ["电话", "手机", "联系方式"]
# 提取 '联系人'
contact_names = [project_contact, bidder_contact]
contact_name = ""
for contact in contact_names:
extracted_name = extract_field(contact, name_candidates)
if extracted_name:
contact_name = extracted_name
break
2024-10-25 15:13:09 +08:00
extracted_info["联系人"] = ensure_string(contact_name) if contact_name else ""
2024-10-17 15:33:58 +08:00
# 提取 '联系电话'
contact_phones = [project_contact, bidder_contact]
contact_phone = ""
for contact in contact_phones:
extracted_phone = extract_field(contact, phone_candidates)
if extracted_phone:
contact_phone = extracted_phone
break
2024-10-25 15:13:09 +08:00
extracted_info["联系电话"] = ensure_string(contact_phone) if contact_phone else ""
2024-10-17 15:33:58 +08:00
# 特殊处理 '投标保证金'
# 提取 '保证金相关'
guarantee_info = get_nested(base_info, ["保证金相关"], {})
2024-10-22 21:02:54 +08:00
if not isinstance(guarantee_info, dict):
guarantee_info = {}
2024-10-25 15:13:09 +08:00
bid_bond = extract_bid_bond(guarantee_info)
2024-10-27 12:08:54 +08:00
# 对 '投标保证金' 应用 format_amount
if bid_bond:
formatted_bid_bond = format_amount(ensure_string(bid_bond))
extracted_info["投标保证金"] = formatted_bid_bond
else:
extracted_info["投标保证金"] = ""
2024-10-17 15:33:58 +08:00
return extracted_info
2024-10-25 17:50:20 +08:00
def outer_post_processing(combined_data, includes,good_list):
2024-10-27 12:08:54 +08:00
# print(good_list)
2024-10-17 15:33:58 +08:00
"""
外层处理函数调用内层 post_processing 处理 '基础信息'并构建 processed_data
2024-10-17 20:57:13 +08:00
额外提取 '采购要求' 下的 '技术要求' 内容
2024-10-17 15:33:58 +08:00
参数:
combined_data (dict): 原始合并数据
includes (list): 需要包含的键列表
返回:
2024-10-17 20:57:13 +08:00
tuple: (processed_data, extracted_info, procurement_reqs)
2024-10-17 15:33:58 +08:00
"""
# 初始化结果字典,预设'其他'分类为空字典
processed_data = {"其他": {}}
# 初始化提取的信息字典
extracted_info = {}
2024-10-17 20:57:13 +08:00
# 初始化采购要求的技术要求
procurement_reqs = ""
2024-10-17 15:33:58 +08:00
# 检查 '基础信息' 是否在 includes 中
if "基础信息" in includes:
base_info = combined_data.get("基础信息", {})
# 调用内层 post_processing 处理 '基础信息'
extracted_info = inner_post_processing(base_info)
# 将 '基础信息' 保留在处理后的数据中
processed_data["基础信息"] = base_info
2024-10-17 20:57:13 +08:00
# 提取 '采购要求' 下的 '技术要求'
2024-10-27 12:08:54 +08:00
tech_requirements = get_nested(base_info, ["采购要求", "技术要求"], {})
if tech_requirements:
procurement_reqs = extract_matching_keys(tech_requirements,good_list)
else:
2024-10-17 20:57:13 +08:00
# 如果 '技术要求' 不存在或为空,可以根据需要设置默认值
2024-10-27 12:08:54 +08:00
procurement_reqs = "未提供"
2024-10-17 20:57:13 +08:00
2024-10-17 15:33:58 +08:00
# 遍历原始字典的每一个键值对
for key, value in combined_data.items():
if key in includes:
if key == "基础信息":
# 已经处理 '基础信息',无需再次添加
continue
else:
# 直接保留包含在 includes 列表中的键值对
processed_data[key] = value
else:
# 将不在 includes 列表中的键值对加入到 '其他' 分类中
processed_data["其他"][key] = value
# 如果 '其他' 分类没有任何内容,可以选择删除这个键
if not processed_data["其他"]:
del processed_data["其他"]
2024-10-17 20:57:13 +08:00
return processed_data, extracted_info, procurement_reqs
if __name__ == "__main__":
combined_data={
2024-10-25 15:13:09 +08:00
"基础信息": {
"招标人/代理信息": {
2024-10-25 17:50:20 +08:00
"招标人": ["广水市公路管理局","sss"],
2024-10-25 15:13:09 +08:00
"招标人联系方式": {
"名称": "广水市公路管理局",
"联系电话": "17362698785",
"地址": "随州市广水市四贤路 7号应山办事处南门"
},
"招标代理机构": "湖北众恒永业工程项目管理有限公司广水分公司",
"招标代理机构联系方式": {
"名称": "湖北众恒永业工程项目管理有限公司广水分公司",
"联系电话": "13997896775",
"地址": "广水市名都花园 22栋"
},
"项目联系方式": {
"名称": "闵杨、喻亚",
"联系电话": "13997896775、15337331616"
2024-10-24 15:52:35 +08:00
}
2024-10-17 20:57:13 +08:00
},
2024-10-25 15:13:09 +08:00
"项目信息": {
"项目名称": "107国道交通信号灯及安全防护设施采购项目",
"项目编号": "HBZHYY-2021-001",
"项目概况": "107国道交通信号灯及安全防护设施采购项目",
"项目基本情况": {
"政府采购计划编号": "2020-09-000560",
"项目编号": "HBZHYY-2021-001",
"项目名称": "107国道交通信号灯及安全防护设施采购项目",
"采购方式": "公开招标",
"预算金额": "RMB10071358.07元",
"最高限价": "RMB10070194.68元(一包:RMB6230708.59元、二包:RMB2175838.09元、三包:RMB1663648元",
"采购需求": {
"7.1": "项目概况及内容一包107国道交通信号灯及安全防护设施的监控抓拍系统、电子警察、信号灯、专用配套设备等。二包107国道广水段标示标牌及标线等。三包107国道霞家河超限检测站抓拍、超重系统等。以上具体要求见招标文件第三章项目技术、服务及商务要求。",
"7.2": "项目地点107国道路段。",
"7.3": "投标人只能对此项目三个包中的一个包进行报名,若同时对两个包或两个包以上进行报名,则所有报名无效。"
},
"合同履行期限": "合同签订后 6个月内。",
"本项目不接受联合体投标": "",
"是否可采购进口产品": ""
2024-10-24 15:52:35 +08:00
},
2024-10-25 15:13:09 +08:00
"招标控制价": "RMB10070194.68元",
"投标竞争下浮率": "未知",
"分包": "不允许",
"是否接受联合体投标": ""
},
"采购要求": {
2024-10-27 12:08:54 +08:00
"技术要求": {
"门禁管理系统": {
"门禁控制器": {
"系统架构": "1.系统采用 CS架构支持 Web端登录支持远程软硬件重启升级、维护、管理。",
"联网方式": "2.★支持 TCP/IP、4G、RS485联网方式、有线与无线WIFI可自动切换 ,控制器支持百台到上千台设备组网,需满足大楼多门点的管理数量要求。",
"安装方式": "3.★安装方式支持壁挂安装。",
"开门方式": "4.★支持卡、密码、首卡、双卡、主卡/副卡、胁迫码、多卡分组、指纹识别+中心确认等开门方式。全面支持读卡器、指纹、人脸、指静脉、RS485识读设备的混合接入。"
},
"出门按钮": {
"安装方式": "标准 86底盒安装方式支持常开常闭方式",
"结构": "塑料面板",
"性能": "最大耐电流 1.25A电压 250V",
"服务要求": "产品 需全 国联 保,享 受三 包服 务,保 修期: 3年。"
},
"单门电磁锁": {
"1通电上锁断电开锁开门时间可调节。": "1通电上锁断电开锁开门时间可调节。",
"2稳定性强连续工作锁体无故障使用更安全。": "2稳定性强连续工作锁体无故障使用更安全。"
2024-10-24 15:52:35 +08:00
},
2024-10-27 12:08:54 +08:00
"指纹仪": {
"传感器类型": "1.先进半导体传感器,全面领先于普通光学识别技术,更好的判别假指纹、湿指、污损破皮手指。",
"显示及提示": "2.直观的 LCD液晶显示及语音验证提示配针孔摄像机实现视频联动抓拍手动布撤防实现与监控中心门禁系统实现对讲外置语音盒",
"验证方式": "3.支持 IC卡、指纹、卡加密码、编号多种组合验证方式。"
},
"门禁服务器": {
"CPU": "1颗 intel至强系列处理器核数≥12核主频≥2.2GHz",
"内存": "32G*2 DDR416根内存插槽最大支持扩展至 2TB内存",
"硬盘": "4块 600G 10K 2.5寸 SAS硬盘",
}
},
"摄像系统": {
"佳能摄像机": {
"清晰度": "1k"
},
"尼康录影机": {
"画质": "2k"
}
}
},
2024-10-25 15:13:09 +08:00
"商务要求": "",
"服务要求": "",
"其他要求": ""
},
"关键时间/内容": {
2024-10-25 17:50:20 +08:00
"投标文件递交截止日期": "2021年12月1日点分",
2024-10-25 15:13:09 +08:00
"投标文件递交地点": "广水市公共资源交易中心五楼号开标室",
2024-10-25 17:50:20 +08:00
"开标时间": "www",
2024-10-25 15:13:09 +08:00
"开标地点": "广水市公共资源交易中心五楼号开标室",
"澄清招标文件的截止时间": "未知",
"投标有效期": "提交投标文件截止之日起 60日历日",
"信息公示媒介": [
{
"名称": "中国湖北政府采购网",
"网址": "http://www.ccgp-hubei.gov.cn/"
},
{
"名称": "中国广水网",
"网址": "http://www.zggsw.gov.cn/"
}
2024-10-17 20:57:13 +08:00
]
2024-10-25 15:13:09 +08:00
},
"保证金相关": {
"是否提交履约保证金": "未知",
"质量保证金": "未知"
},
"其他信息": {
"投标费用承担": "投标人应承担所有与准备和参加投标有关的费用。不论投标的结果如何,分散采购机构和采购人均无义务和责任承担这些费用。",
"招标代理服务费": {
"收费标准": "服务费按国家规定收费标准按国家发展改革委关于印发《招标代理服务收费管理暂行办法》的通知(计价格[2002]1980 号)执行。",
"支付方": "中标方",
"支付时间": "政府采购代理缴纳中标服务费"
},
"是否退还投标文件": "",
"踏勘现场": "不组织",
"投标预备会": "不召开",
"偏离": {
"商务要求响应、偏离说明表": "第七章投标文件格式(参考)附件十二",
"商务要求“★”号条款响应、偏离说明表": "第七章投标文件格式(参考)附件十三",
"技术、服务要求响应、偏离说明表": "第七章投标文件格式(参考)附件十五",
"技术、服务要求“★”号条款响应、偏离说明表": "第七章投标文件格式(参考)附件十六",
"偏离项处理": "投标文件中应详细说明偏离项的具体内容及原因,未按要求提供偏离说明的,可能导致投标无效"
}
2024-10-17 20:57:13 +08:00
}
},
2024-10-24 15:52:35 +08:00
"投标文件要求": {
"投标文件": {
"投标的语言": {
2024-10-25 15:13:09 +08:00
"投标的语言": "投标人提交的投标文件以及投标人与分散采购机构或采购人就有关投标的所有来往函电均应使用中文。投标人提交的相关证明文件、资料或文献可以用另一种语言,但相应内容应附有中文翻译本,在解释投标文件的相关内容时以中文翻译本为准。"
2024-10-24 15:52:35 +08:00
},
"投标文件的构成": {
2024-10-25 15:13:09 +08:00
"投标文件的构成": "投标人编制的投标文件应包括但不限于下列内容:第一部分资格证明文件(详见第七章“投标文件格式”中资格证明文件组成)第二部分商务文件(详见第七章“投标文件格式”中商务文件组成)第三部分技术、服务文件(详见第七章“投标文件格式”中技术、服务文件组成).投标文件编制"
2024-10-24 15:52:35 +08:00
},
2024-10-25 15:13:09 +08:00
"11": [
"如招标文件有分包要求,投标人对招标文件中多个包进行投标的,其投标文件的编制应按每包要求分别装订和封装,并注明对应包号。",
"投标人应当对投标文件进行装订,供应商应仔细阅读招标文件的所有内容,按招标文件的要求提供响应招标文件内容的投标文件且装订成册(投标文件正本须用不能擦去的墨水书写或打印,投标文件副本可以复印,其正、副本都应装订成册,并在封面上正确标明“正本”、“副本”字样。每页页码要按先后顺序打印或用不能擦去的墨水书写,不得采用活页夹等可随时拆换的方式装订,不允许出现活页、漏页、错页和夹页,不允许将多包合编或合订在一起,否则作为不合格投标文件处理),并保证所提供的全部资料的真实性、合法性,从而使其投标文件对招标文件做出实质性的响应,否则,其投标文件将被拒绝。由此产生的后果及责任由投标人自行承担。",
2024-10-24 15:52:35 +08:00
"投标人应按照招标文件第七章“投标文件格式”提供的《投标书》、《开标一览表》、《投标报价明细表》、《法定代表人授权书》等格式、要求、规定来编制投标文件。",
2024-10-25 15:13:09 +08:00
"投标人应对投标文件中所提供资料的真实性负责,如有虚假,将依法承担相应责任。投标人应自觉接受分散采购机构对其中任何资料进一步核实的要求。",
2024-10-24 15:52:35 +08:00
"因投标人投标文件填报的内容不详,或没有提供招标文件中所要求的全部资料及数据等,由此产生的后果及责任由投标人自行承担。",
"投标文件用纸应统一为A4规格图纸除外",
"投标人应将投标文件第一部分资格证明文件、第二部分商务文件、第三部分技术、服务文件分册编制装订,分别逐页连续标注页码,建立目录索引。各部分文件及内容详见第七章“投标文件格式”要求。"
],
"投标报价": {
"投标人所提供的货物(工程或服务)均以人民币计价。": [],
"投标人应按照“第三章项目技术、服务及商务要求”规定的货物(工程或服务)内容、责任范围以及合同条款进行报价。并按照《开标一览表》和《投标报价明细表》的格式报出分项价格和投标总价。报价上的优惠应体现在各分项报价中,投标总价应为优惠后的最终报价。投标总价中不得包含招标文件要求以外的内容,否则,在评标时不予核减。": [],
"《投标报价明细表》填写时应响应下列要求:": [
"应包括所有根据合同或其他原因由投标人支付的款项、费用;",
"应包含货物运至最终目的地的运输、保险和伴随货物(工程或服务)的有关费用;",
"应详细提供《投标报价明细表》和《投标货物、服务清单》等内容,否则按照无效投标处理。"
],
"每一种规格的货物(工程或服务)只允许有一个报价,否则按照无效投标处理。": [],
"投标人的投标总报价在合同执行过程中是固定不变的,不得以任何理由予以变更。故投标人的投标总报价应包含本招标内容全部工作所需的一切费用,即投标总报价为“交钥匙”价。对在合同实施过程中可能发生的其它费用(如:增加耗材、材料涨价、人工、运输成本增加等因素),采购人不予支付。": [],
"对于招标文件未列明,而投标人认为必需的费用也需列入其投标总价。在合同实施时,采购人将不予支付投标人没有列入的项目费用,并认为此项目的费用已包括在其投标总价中。": [],
"投标人应对项目招标范围内的全部内容进行报价,不得缺、漏项或只投其中的部分内容的,否则按照无效投标处理。": []
},
"备选方案": {
"备选方案": "只允许投标人提供一个投标方案(招标文件中要求提供备选方案的除外),否则按照无效投标处理。"
},
"中标后分包": {
"中标后分包": "招标文件规定项目非主体、非关键性工作中标后可以分包的,投标人拟在中标后将项目的非主体、非关键性工作分包,应当在投标文件中载明具备相应资质条件的分包承担主体,分包承担主体不得再次分包。"
},
"联合体投标": [
"两个及以上供应商可以组成一个联合体,以一个投标人的身份共同参与投标。",
"采取联合体形式投标的,联合体各方均应当符合政府采购法第二十二条第一款规定的条件。联合体的主体应完全满足项目投标人资格要求。",
"联合体各方之间应签订联合投标协议,明确约定联合体主体及各方承担的工作和相应的责任,其投标文件中应提供联合投标协议。",
"以联合体形式参加政府采购活动的,联合体各方不得再单独参加或者与其他供应商另外组成联合体参加同一合同项下的政府采购活动。",
"采取联合体形式投标的,其投标文件应由联合体所有成员或其各自正式书面授权的代表签署(盖章),以便对所有成员作为整体及作为个体均具有法律约束力。",
"采取联合体形式投标的,项目评审时只对联合体主体进行评议。",
"联合体中标的,联合体各方应当共同与采购人签订采购合同,就采购合同约定的事项对采购人承担连带责任,联合体主体单位负主要责任。",
"联合体中有同类资质的供应商按照联合体分工承担相同工作的,应当按照资质等级较低的供应商确定资质等级。",
"招标文件第一章“投标人资格要求”中未载明是否接受联合体投标的,视同接受。",
"以联合体形式参与投标的,其价格扣除相关规定详见第五章“评标方法、程序及标准”。"
2024-10-17 20:57:13 +08:00
],
2024-10-24 15:52:35 +08:00
"资格证明文件": [
"投标人应按本节及第四章“资格审查方法及标准”的要求,提供足以证明其符合项目“投标人资格要求”且中标后有能力履行合同的文件,并作为其投标文件的组成部分。",
"资格证明文件应真实、合法,并就此承担相应法律责任。",
2024-10-25 15:13:09 +08:00
"资格证明文件正本应为清晰彩色影印件且加盖单位公章,否则按照无效投标处理。副本可为正本的复印件,但应在副本封面加盖单位公章。"
2024-10-17 20:57:13 +08:00
],
2024-10-24 15:52:35 +08:00
"投标有效期": [
"投标有效期详见本章“投标须知前附表”中规定。投标文件中承诺的投标有效期应当不少于招标文件中载明的投标有效期。投标有效期不足的,按照无效投标处理。",
2024-10-25 15:13:09 +08:00
"特殊情况下,在原投标有效期截止之前,分散采购机构或采购人可要求投标人延长投标有效期。这种要求与答复均应以书面形式提交。投标人可拒绝分散采购机构或采购人的这种要求,但其投标在原投标有效期期满后将不再有效。同意延长投标有效期的投标人不会被要求和允许修正其投标内容,而只会被要求相应地延长其投标保证金的有效期。"
2024-10-17 20:57:13 +08:00
],
2024-10-24 15:52:35 +08:00
"投标文件的数量和签署": [
"投标人应按本章“投标须知前附表”中规定的份数要求编制投标文件,投标文件的副本可为正本的复印件,但应在副本封面加盖单位公章。每套投标文件应清楚地标明“正本”、“副本”。副本与正本不一致的,以正本为准。",
2024-10-25 15:13:09 +08:00
"投标文件的正本应打印或用不褪色墨水书写,应由法定代表人或经其正式授权的代表签字或盖章。由被授权代表签字或盖章的,应以书面形式出具授权证明,其《法定代表人授权书》应附在投标文件中。",
2024-10-24 15:52:35 +08:00
"投标文件中任何涂改和增删,应由法定代表人或经其正式授权的代表在旁边签字后方为有效。",
"招标文件中要求加盖公章及签字(签章)之处,投标文件正本中应按要求提供加盖公章及签字(签章)的原件,否则按照无效投标处理。"
2024-10-17 20:57:13 +08:00
],
2024-10-25 15:13:09 +08:00
"投标文件的密封和标记": [
"投标人应将投标文件第一部分资格证明文件、第二部分商务文件、第三部分技术、服务文件分册装订。",
"投标人应将投标文件各部分正本和各部分副本分开或合装在密封袋内。副本与正本不一致的,以正本为准。",
"如果未按要求加写密封、标记或存在错误,分散采购机构对其误投或提前启封概不负责。",
"为方便开标时唱标,投标人应将《开标一览表》原件一份装入信封,单独密封提交,并在信封上标明“开标一览表”字样。未单独提交或单独提交的上述资料未按照招标文件规定的格式填写完整并签字、盖章的分散采购机构拒绝其投标。",
"“开标一览表”信封和投标文件的封包上应注明采购项目编号、项目名称、投标内容和有“在(招标文件中规定的开标日期和时间)之前不得启封”的字样,封口处加盖投标人公章。"
],
2024-10-24 15:52:35 +08:00
"投标文件递交": [
2024-10-25 15:13:09 +08:00
"投标人应在不迟于投标邀请书中规定的投标截止日期和时间将投标文件密封递交至分散采购机构规定的投标地点。",
"分散采购机构拒收逾期送达或者未按招标文件要求密封的投标文件。",
"分散采购机构收到投标文件后,应当如实记载投标文件的送达时间和密封情况,签收保存。"
2024-10-24 15:52:35 +08:00
],
"投标文件的修改和撤回": [
2024-10-25 15:13:09 +08:00
"投标人在投标截止时间前,可以对所递交的投标文件进行补充、修改或者撤回,并书面通知分散采购机构。补充、修改的内容应当按照招标文件要求签署、盖章、密封后,作为投标文件的组成部分。",
2024-10-24 15:52:35 +08:00
"投标有效期内投标人不得撤销其投标文件。",
"投标人所递交的投标文件无论中标与否不予退还。投标人所递交的投标文件无论中标与否不予退还。"
]
2024-10-17 20:57:13 +08:00
}
},
2024-10-25 15:13:09 +08:00
"开评定标流程": {
"开标与评标": {
"开标": [
"分散采购机构在第一章“投标邀请书”中约定的日期、时间和地点组织公开开标。开标时采购人和投标人代表(投标人法定代表人或其授权代表)参加,参加开标的代表应签到以证明其出席。",
"投标人法定代表人或其授权代表应携带有效身份证明参加项目开标会投标人未参加开标的视同认可开标结果。截止投标文件递交时间投标人不足3家的不进行开标。",
"开标时,由投标人相互检查投标文件的密封情况,经确认无误后由分散采购机构工作人员当众拆封,宣布投标人名称、投标价格和招标文件规定的需要宣布的其他内容。",
"投标人代表对开标过程和开标记录有疑义,以及认为采购人、分散采购机构相关工作人员有需要回避的情形的,应当场提出询问或者回避申请。采购人、分散采购机构将及时处理投标人代表提出的询问或者回避申请。"
],
"资格审查": [
"公开招标采购项目开标结束后采购人与分散采购机构依据法律、法规及招标文件的规定对投标人的资格进行审查以确定投标人资格是否合格。合格投标人不足3家的不进行评标。",
"资格审查详见第四章“资格审查方法及标准”。"
],
"评标方法": [
"最低评标价法。最低评标价法是指投标文件满足招标文件全部实质性要求,且投标报价最低的投标人为中标候选人的评标方法。",
"综合评分法。综合评分法是指投标文件满足招标文件全部实质性要求,且按照评审因素的量化指标评审得分最高的投标人为中标候选人的评标方法。",
"评标方法详见第五章“评标方法、程序及标准”。"
],
"评标委员会的组成": [
"评标委员会由采购人代表和评审专家组成成员人数应当为5人及以上单数其中评审专家不得少于成员总数的三分之二采购预算金额在1000万元及以上、技术复杂或社会影响较大的项目评标委员会成员人数应当为7人及以上单数。",
"评标委员会成员依法从政府采购专家库中随机抽取。对技术复杂、专业性强的采购项目,通过随机方式难以确定合适评审专家的,经主管预算单位同意,采购人可以自行选定相应专业领域的评审专家。"
],
"评标程序": {
"评标委员会负责具体评标事务,并独立履行下列职责:": [
"审查、评价投标文件是否符合招标文件的商务、技术等实质性要求;",
"要求投标人对投标文件有关事项作出澄清或者说明;",
"对投标文件进行综合比较和评价;",
"确定中标候选人名单或中标人;",
"向采购人、分散采购机构或者有关部门报告评标中发现的违法行为。"
],
"评标程序详见第五章“评标方法、程序及标准”。评标程序详见第五章“评标方法、程序及标准”。": []
}
},
"中标与合同": {
"确定中标人": {
"采购人收到评标报告5个工作日内按评标报告推荐的中标候选人顺序确定中标人。": [],
"中标候选人并列的:": [
"采用最低评标价法的,评标结果按投标报价由低到高顺序排列。投标报价相同的并列,由采购人确定或者采购人委托评标委员会以投票方式确定中标人。",
"采用综合评分法的评标结果按评审后得分由高到低顺序排列。得分相同的按投标报价由低到高顺序排列。得分且投标报价相同的并列由采购人确定或者采购人委托评标委员会以投票方式确定中标人。28.2中标人的数量有其他规定的,按招标文件相关规定执行。"
],
"中标人确定后分散采购机构在政府采购监管部门指定的媒体上发布中标公告中标人在中标结果公示后2个工作日内到分散采购机构领取《中标通知书》。《中标通知书》是政府采购合同的组成部分,对中标人和采购人具有同等法律效力。": [],
"中标通知书发出后,采购人不得违法改变中标结果,中标人无正当理由不得放弃中标。": [],
"中标人拒绝与采购人签订合同的,采购人可以按照评标报告推荐的中标候选人名单排序,确定下一候选人为中标人,也可以重新开展政府采购活动。": []
},
"合同授予": {
"合同授予": "除本章“确定中标人”规定及其他法律规定的情形外,采购人把合同授予被确定为实质上响应招标文件要求且排名第一的中标人。"
},
"合同签订": [
"采购人应当自中标通知书发出之日起30日内按照招标文件规定和中标人投标文件的承诺与中标人签订书面合同。所签订的合同不得对招标文件确定的事项和中标人投标文件作实质性修改。",
"采购人不得向中标人提出任何不合理的要求作为签订合同的条件。",
"政府采购合同应当包括采购人与中标人的名称和住所、标的、数量、质量、价款或者报酬、履行期限及地点和方式、验收要求、违约责任、解决争议的方法等内容。",
"采购人与中标人应当根据合同的约定依法履行合同义务。政府采购合同的履行、违约责任和解决争议的方法等适用《中华人民共和国合同法》。",
"采购人应当自政府采购合同签订之日起2个工作日内将政府采购合同在省级以上人民政府财政部门指定的媒体上公告但政府采购合同中涉及国家秘密、商业秘密的内容除外。",
"采购人应当加强对中标人的履约管理,并按照采购合同约定,及时向中标人支付采购资金。对于中标人违反采购合同约定的行为,采购人应当及时处理,依法追究其违约责任。采购人应当加强对中标人的履约管理,并按照采购合同约定,及时向中标人支付采购资金。对于中标人违反采购合同约定的行为,采购人应当及时处理,依法追究其违约责任。"
]
}
},
2024-10-17 20:57:13 +08:00
"无效标与废标项": {
"否决和无效投标情形": [
2024-10-24 15:52:35 +08:00
"应详细提供《投标报价明细表》和《投标货物、服务清单》等内容,否则按照无效投标处理。",
2024-10-25 15:13:09 +08:00
"只允许投标人提供一个投标方案(招标文件中要求提供备选方案的除外),否则按照无效投标处理。",
"分,“★”指标不符合招标文件技术参数的视为无效投标,针对“★”指标,投标人须对应招标文件第三章商务技术要求产品参数要求逐条提供包括但不限于第三方产品检测报告、产品技术白皮书、产品官网或公开的技术资料等佐证资料,并加盖产品制造商公章;“▲”指标不满足招标文件第三章商务技术要求产品参数要求的每项扣",
"本表应按要求由投标人法人授权代表签字,并加盖投标单位公章,否则将被视为非响应性投标,将按照无效投标处理。",
"审查不合格作无效投标处理。",
"的要求提供响应招标文件内容的投标文件且装订成册(投标文件正本须用不能擦去的墨水书写或打印,投标文件副本可以复印,其正、副本都应装订成册,并在封面上正确标明“正本”、“副本”字样。每页页码要按先后顺序打印或用不能擦去的墨水书写,不得采用活页夹等可随时拆换的方式装订,不允许出现活页、漏页、错页和夹页,不允许将多包合编或合订在一起,否则作为不合格投标文件处理),并保证所提供的全部资料的真实性、合法性,从而使其投标文件对招标文件做出实质性的响应,否则,其投标文件将被拒绝。",
2024-10-24 15:52:35 +08:00
"所递交的资格证明文件出现不符合下列情形之一或不足以证明其符合下列情形之一的,应视为资格审查不合格,并按照无效投标处理:",
2024-10-25 15:13:09 +08:00
"资格证明文件正本应为清晰彩色影印件且加盖单位公章,否则按照无效投标处理。",
"容的,否则按照无效投标处理。",
"投标有效期详见本章“投标须知前附表”中规定。投标文件中承诺的投标有效期应当不少于招标文件中载明的投标有效期。投标有效期不足的,按照无效投标处理。",
2024-10-24 15:52:35 +08:00
"修正后的报价按照本节第4条规定经投标人确认后产生约束力投标人不确认的按照无效投标处理。",
2024-10-25 15:13:09 +08:00
"法律、法规和招标文件规定的其他无效投标情形。",
"的报价,有可能影响产品质量或者不能诚信履约的,应当要求其在评标现场合理的时间内提供书面说明,必要时提交相关证明材料;投标人不能证明其报价合理性的,评标委员应当将其作为无效投标处理。",
2024-10-24 15:52:35 +08:00
"每一种规格的货物(工程或服务)只允许有一个报价,否则按照无效投标处理。",
2024-10-25 15:13:09 +08:00
"招标文件中要求加盖公章及签字(签章)之处,投标文件正本中应按要求提供加盖公章及签字(签章)的原件,否则按照无效投标处理。",
"评标委员会应当对符合资格的投标人的投标文件进行符合性审查,以确定其是否满足招标文件的实质性要求。符合性审查出现下列情形之一的投标按照无效投标处理:"
2024-10-17 20:57:13 +08:00
],
"废标项": "",
2024-10-24 15:52:35 +08:00
"不得存在的情形": [
2024-10-25 15:13:09 +08:00
"投标人应按照“第三章项目技术、服务及商务要求”规定的货物(工程或服务)内容、责任范围以及合同条款进行报价。并按照《开标一览表》和《投标报价明细表》的格式报出分项价格和投标总价。报价上的优惠应体现在各分项报价中,投标总价应为优惠后的最终报价。投标总价中不得包含招标文件要求以外的内容,否则,在评标时不",
"投标人应对项目招标范围内的全部内容进行报价,不得缺、漏项或只投其中的部分内",
"说明1、组成联合体的大中型企业和其他自然人、法人或者其他组织与残疾人福利性单位之间不得存在投资关系。",
"“开标一览表”信封和投标文件的封包上应注明采购项目编号、项目名称、投标内容和有“在(招标文件中规定的开标日期和时间)之前不得启封”的字样,封口处加盖投标人公章。",
"除单一来源采购项目外,为采购项目提供整体设计、规范编制或者项目管理、监理、检测等服务的供应商,不得再参加该采购项目的其他采购活动。",
"的要求提供响应招标文件内容的投标文件且装订成册(投标文件正本须用不能擦去的墨水书写或打印,投标文件副本可以复印,其正、副本都应装订成册,并在封面上正确标明“正本”、“副本”字样。每页页码要按先后顺序打印或用不能擦去的墨水书写,不得采用活页夹等可随时拆换的方式装订,不允许出现活页、漏页、错页和夹页,不允许将多包合编或合订在一起,否则作为不合格投标文件处理),并保证所提供的全部资料的真实性、合法性,从而使其投标文件对招标文件做出实质性的响应,否则,其投标文件将被拒绝。",
"为本采购项目提供整体设计、规范编制或者项目管理、监理、检测等服务的,不得再参加本项目的其他招标采购活动。",
2024-10-24 15:52:35 +08:00
"投标人的投标总报价在合同执行过程中是固定不变的,不得以任何理由予以变更。",
2024-10-25 15:13:09 +08:00
"以联合体形式参加政府采购活动的,联合体各方不得再单独参加或者与其他供应商另外组成联合体参加同一合同项下的政府采购活动。",
"单位负责人为同一人或者存在直接控股、管理关系的不同供应商,不得参加同一合同项下的政府采购活动。",
2024-10-24 15:52:35 +08:00
"投标有效期内投标人不得撤销其投标文件。",
"投标人应按照评标委员会要求的澄清内容在规定时间内做出澄清。投标文件报价出现前后不一致的按照本节第3条规定进行修正投标人的澄清、说明或者补正不得超出投标文件的范围或者改变投标文件的实质性内容。",
2024-10-25 15:13:09 +08:00
"说明1、组成联合体的大中型企业和其他自然人、法人或者其他组织与小型、微型企业之间不得存在投资关系。",
2024-10-24 15:52:35 +08:00
"经采购人允许,潜在投标人可进入项目现场进行考察,但潜在投标人不得因此使采购人承担有关责任和蒙受损失。",
"招标文件规定项目非主体、非关键性工作中标后可以分包的,投标人拟在中标后将项目的非主体、非关键性工作分包,应当在投标文件中载明具备相应资质条件的分包承担主体,分包承担主体不得再次分包。",
2024-10-25 15:13:09 +08:00
"单位负责人为同一人或者存在直接控股、管理关系的不同投标人,不得参加本项目同一合同项下的政府采购活动。"
2024-10-17 20:57:13 +08:00
]
},
2024-10-24 15:52:35 +08:00
"资格审查": {
"资格性审查": [
2024-10-25 15:13:09 +08:00
"应具备《政府采购法》第二十二条第一款规定的条件,提供下列材料:",
"法人或者其他组织的营业执照等证明文件,自然人的身份证明(投标人根据自身情况提供对应的证明材料): <br>(一)法人 <br>1企业法人包括合伙企业提供工商部门注册的有效“企业法人营业执照”或 “营业执照”;<br>2事业单位法人提供有效的“事业单位法人证书”。<br>(二)其他组织 <br>1非企业专业服务机构提供执业许可证等证明文件<br>2个体工商户提供有效的“个体工商户营业执照”。<br>(三)自然人:提供有效的自然人身份证明。(仅限中国公民)",
"财务状况报告,依法缴纳税收和社会保障资金的相关材料(投标人根据自身情况提供对应的证明材料):<br>(一)财务状况报告<br>1法人提供经第三方审计的财务报告完整的财务报告包括“四表一注”即资产负债表、利润表、现金流量表、所有者权益变动表及其附注或其基本开户银行出具的资信证明<br>2部分其他组织和自然人没有经第三方审计的财务报告的可以提供银行出具的资信证明<br>3投标人没有经第三方审计的财务报告和资信证明时也可以提供财政部门认可的政府采购专业担保机构出具的投标担保函。",
"具备履行合同所必需的设备和专业技术能力的证明材料:<br>(一)提供具备足够数量的设施设备的证明材料;<br>(二)提供具备足够数量的技术人员的证明材料。",
"参加政府采购活动前 3年内在经营活动中没有重大违法记录的书面声明<br>(一)应严格按照附件格式提交“参加政府采购活动前三年内在经营活动中没有重大违法记录的书面声明函”;<br>(二)政府采购法第二十二条第一款第五项所称重大违法记录,是指供应商因违法经营受到刑事处罚或者责令停产停业、吊销许可证或者执照、较大数额罚款等行政处罚;<br>(三)按照财政部《关于规范政府采购行政处罚有关问题的通知》的规定,各级人民政府财政部门依法对参加政府采购活动的供应商作出的禁止参加政府采购活动等行政处罚决定在全国范围内生效。",
"具备法律、行政法规规定的其他条件的证明材料:<br>(一)国家对生产和销售相关产品或提供相关服务有专门法律、行政法规规定的,则必须提供取得国家有关主管部门行政许可的证明材料。",
"未被列入失信被执行人、重大税收违法案件当事人名单,未被列入政府采购严重违法失信行为记录名单。",
"本项目的特定资格要求:<br>1.3.1未被列入“信用中国”网站(www.creditchina.gov.cn)信用服务栏失信被执行人、重大税收违法案件当事人名单和“中国政府采购”网站www.ccgp.gov.cn政府采购严重违法失信行为记录名单并提供网页截图以证明<br>1.3.2、一包:在中国境内注册,营业执照具有电子与智能化工程专业承包相关经营范围;;<br>二包:投标人应是合法的具有相关施工能力的企业(必须提供热熔型道路标线涂料、交通标志牌生产制造商针对本项目的正式授权书),投标人所投标线涂料、交通标志牌应具备经国家相关质量监督检验机构检测后出具的合法有效的检测报告;",
"法定代表人身份证明或法定代表人授权委托书原件(委托代理人需提供劳动合同和社保证明);",
"湖北省政府采购供应商信用承诺书。",
2024-10-24 15:52:35 +08:00
"不符合联合体投标相关规定和要求的;",
2024-10-25 15:13:09 +08:00
"招标文件第一章“投标人资格要求”中有特殊要求的,投标人应提供其符合特殊要求的证明材料或者情况说明;",
2024-10-24 15:52:35 +08:00
"投标人认为需提供的其它相关资格证明材料;",
"资格证明文件正本应为清晰彩色影印件且加盖单位公章。"
],
"符合性审查": {
"1.投标总报价超过项目(分包)预算金额或最高限价的": "投标按照无效投标处理",
2024-10-25 15:13:09 +08:00
"2.《投标书》、《开标一览表》、《投标报价明细表》未提供或不符合招标文件要求的": "投标按照无效投标处理",
2024-10-24 15:52:35 +08:00
"3.工期(服务期限)、质保期不符合招标文件要求的": "投标按照无效投标处理",
"4.出现两个或两个以上不同报价的": "投标按照无效投标处理",
"5.出现两个或两个以上投标方案的(招标文件中要求提供备选方案的除外)": "投标按照无效投标处理",
"6.投标报价存在缺项、漏项的": "投标按照无效投标处理",
"7.投标有效期不足的": "投标按照无效投标处理",
2024-10-25 15:13:09 +08:00
"8.正本未按要求提供加盖公章及签字(签章)的": "投标按照无效投标处理",
"9.符合招标文件第二章“投标人须知”中39条中规定情形以分公司形式参与投标的法定代表人授权书未由总公司法定代表人签字盖章并加盖公章的": "投标按照无效投标处理",
"10.未按要求提供招标文件第二章“十其他注意事项”中规定的书面声明的": "投标按照无效投标处理",
"11.未提供所投货物(工程或服务)的具体参数值或功能表述,或原文复制招标文件的技术规格相关部分内容作为其投标文件的一部分的": "投标按照无效投标处理",
"12.含有采购人不能接受的附加条件的": "投标按照无效投标处理",
"13.未按要求提供《符合性审查对照表》、《商务要求响应、偏离说明表》、《商务要求“★”号条款响应、偏离说明表》、《商务评议对照表》和《技术、服务要求响应、偏离说明表》、《技术、服务要求“★”号条款响应、偏离说明表》、《技术、服务评议对照表》的": "投标按照无效投标处理",
"14.法律、法规和招标文件规定的其他无效投标情形": "投标按照无效投标处理"
2024-10-17 20:57:13 +08:00
}
2024-10-21 20:35:52 +08:00
},
2024-10-25 15:13:09 +08:00
"技术评分": {},
"商务评分": {}
2024-10-17 20:57:13 +08:00
}
includes = ["基础信息", "资格审查", "商务评分", "技术评分", "无效标与废标项", "投标文件要求", "开评定标流程"]
2024-10-27 12:08:54 +08:00
good_list=[
"门禁控制器",
"出门按钮",
"单门电磁锁",
"指纹仪",
"门禁服务器",
"佳能摄像机",
"尼康录影机"
]
res1,res2,res3=outer_post_processing(combined_data,includes,good_list)
2024-10-22 21:02:54 +08:00
# print(json.dumps(res2,ensure_ascii=False,indent=4))
2024-10-25 17:50:20 +08:00
print(json.dumps(res3,ensure_ascii=False,indent=4))
2024-10-17 20:57:13 +08:00