123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289 |
- # -*- coding: utf-8 -*-
- # @Author: privacy
- # @Date: 2024-07-24 14:11:01
- # @Last Modified by: privacy
- # @Last Modified time: 2024-08-13 13:36:17
- from typing import Optional
- from dataclasses import dataclass, asdict
- @dataclass
- class Pages:
- fileName: str
- pageKey: Optional[str]
- pageStart: str
- pageEnd: str
- @dataclass
- class Suppliers:
- name: str
- grade: str
- supplier: Optional[str]
- pages: Optional[list[Pages]]
- @dataclass
- class ScoringCriteria:
- scoringFactors: str
- scoringStandard: str
- percentage: str
- expertAdvice: Optional[str]
- suppliers: list[Suppliers]
- @dataclass
- class DetailResult:
- name: str
- scoringCriteria: list[ScoringCriteria]
- url = 'http://222.92.111.18:8006/bm/alg/result_check_detail'
- projectId = "2024-8-8"
- projectName = "新项目"
- bidderUnit = "派维斯"
- test_data = [{
- "name": "商务部分评分标准(30%)",
- "scoringCriteria": [{
- "scoringFactors": "投标文件的符合性",
- "scoringStandard": "检查投标文件在内容与项目上的完整性,针对投标人提出的非实质性商务偏差,评价其是否合理,是否会损害招标人的利益和未来的合同执行。评分结果分为A~D 四个档次",
- "percentage": "3%",
- "suppliers": [{
- "name": bidderUnit,
- "grade": "B"
- }]
- },
- {
- "scoringFactors": "投标人业绩",
- "scoringStandard": '(1)满足招标文件投标人资格要求的业绩得 30 分,每增加 1 个 2016 年 1 月 1 '
- '日以来(以合同签订时间为\n'
- '准)已完工的 1500 万元及以上的企业自动化智能仓储\n'
- '管理项目(含料箱机器人或四向穿梭车或无 人叉车\n'
- 'AGV)实施业绩,加 10 分,最多加 50 分。\n'
- '(2)2016 年 1 月 1 日以来(以合同签订时间为准),\n'
- '每提供 1 个电力行业自动化智能仓储管理项目实施业\n'
- '绩(含料箱机器人或四向穿梭车或无人叉车 AGV),\n'
- '加 10 分,最多加 20 分。\n'
- '一个业绩同时具备以上两项加分条件的,可分别加分。',
- "percentage": "12%",
- "suppliers": [{
- "name": bidderUnit,
- "grade": "A",
- "supplier": "3个关键的财务指标",
- "pages": [{
- "fileName": "投标文件.pdf",
- "pageKey": "合同111、2021-05-20、450000.50",
- "pageStart": "68",
- "pageEnd": "69"
- },
- {
- "fileName": "投标文件.pdf",
- "pageKey": "合同222、2023-06-30、150000.50",
- "pageStart": "69",
- "pageEnd": "70"
- }]
- }]
- },
- {
- "scoringFactors": "信用评价",
- "scoringStandard": "根据三峡集团公司最新发布的年度工程施工类供应商信用评价结果进行统一评分,A、B、C 三个等级信用得分分别为100、85、70 分。如投标人初次进入三峡集团公司投标或报价,由评标委员会根据其以往业绩及在其他单位的合同履约情况合理确定本次评审信用等级。",
- "percentage": "3%",
- "suppliers": [{
- "name": bidderUnit,
- "grade": "85"
- }]
- },
- {
- "scoringFactors": "财务状况",
- "scoringStandard": "评价投标人财务状况。包括 2020、2021 年财务状况。评分结果分为 A~D 四个档次。",
- "percentage": "2%",
- "suppliers": [{
- "name": bidderUnit,
- "grade": "B",
- }]
- },
- {
- "scoringFactors": "报价的合理性",
- "scoringStandard": "对主要报价进行合理性评审,经费预算与研究内容是否匹配,总体需求是否合理。评分结果分为 A~D 四个档次。",
- "percentage": "10%",
- "suppliers": [{
- "name": bidderUnit,
- "grade": "A"
- }]
- }]
- },
- {
- "name": "报价评分标准(10%)",
- "scoringCriteria": [
- {
- "scoringFactors": "价格得分",
- "scoringStandard": '当 0<Di≤3%时,每高 1%扣 1 分;当 3%<Di≤6%时,每高 1%扣 1.5 分;当 '
- '6%<Di,每高 1%扣 2 分;当-3%<Di≤0 时,不扣分;当-6%<Di≤-3%时,每低 1%扣 '
- '0.5 分;当-9%<Di≤-6%时,每低 1%扣 1 分;当 Di≤-9%时,每低 1%扣 1.5 '
- '分;满分为 100 分,最低得 60 分。上述计分按分段累进计算,当入围投标人评标价与评标价基准值 B '
- '偏差率处于分段计算区间内时,分段计算按内插法等比例计扣分。',
- "percentage": "10%",
- "suppliers": [
- {
- "name": bidderUnit,
- "grade": "80"
- }
- ]
- }
- ]
- },
- {
- "name": "技术部分评分标准(55%)",
- "scoringCriteria": [{
- "scoringFactors": "整体设计方案编制",
- "scoringStandard": "对投标人提供的整体设计方案的完整性、可行性、针对性、先进性进行综合评审,包括但不限于:投标人对本项目的重难点分析及针对性解决方案、功能性解决方案及保障措施、预期成果及创新延伸点。评分结果分为 A~D 四个档次",
- "percentage": "15%",
- "suppliers": [{
- "name": bidderUnit,
- "grade": "B",
- "supplier": "总体服务方案的概括文字(200字以内)我们的设计方案从需求分析阶段开始,全面覆盖了项目实施前的市场调研、用户需求收集和整合。我们通过细致的问题梳理和深入的功能规划,确保方案既能满足当前需求又能适应未来可能的变化。方案包括详细的阶段划分、时间计划表以及资源分配策略,确保每一步都有明确的目标与责任人。"
- }]
- },
- {
- "scoringFactors": "任务分解和进度安排",
- "scoringStandard": "对投标人任务分解和进度安排的合理性、可行性、保障性进行综合评审,包括但不限于:任务分解和研发进度安排、分解目标对项目总目标的支撑程度、项目的技术和实施风险分析及应对措施。评分结果分为 A~D四个档次。",
- "percentage": "10%",
- "suppliers": [{
- "name": bidderUnit,
- "grade": "A",
- "supplier": "对主要内容概括(200字以内)在任务分解的基础上,我们需要评估每项任务的难度和所需资源,合理分配人力资源和时间,制定具有实际操作性的进度计划。例如,在上述案例中,市场调研阶段应包括收集相关法规、分析竞争对手以及了解当地政策等子任务;方案设计则需包含概念图制作、技术可行性研究等子任务。通过合理规划每个阶段的步骤和预期成果,可以确保投标团队能够有条不紊地推进工作。"
- }]
- },
- {
- "scoringFactors": "实施方案(含安装调试)",
- "scoringStandard": "对实施方案的完整性、针对性、可行性等方面进行综合评价,包括但不限于基础承载力(安全性、稳定性)校核、消防安全性校核、现场资源配置、现场施工进度保障措施、安全文明施工、工序划分及搭接、安装调试方案(含信息人员试运行期间驻场服务)等。评分结果分为 A~D四个档次。",
- "percentage": "10%",
- "suppliers": [{
- "name": bidderUnit,
- "grade": "B",
- "supplier": "对主要内容概括(200字以内)在评估一项方案时,我们需要从多个维度进行全面考量,确保该方案能够在实际操作中取得预期效果。首先,从完整性的角度来看,我们需审视方案是否包含了所有必要的组成部分和步骤,比如目标设定、实施策略、资源配置、执行流程以及监控与调整机制等,以保证其结构严密且逻辑自洽。"
- }]
- },
- {
- "scoringFactors": "研发团队及工作基础",
- "scoringStandard": "(1)研发团队整体科研水平及人员构成、任务分工合理性;(2)项目主要管理人员的科研水平、职称业绩及创新能力;(3)项目申报单位的组织管理能力和项目组织实施机制;(4)现有研究工作基础及条件。评分结果分为 A~D四个档次。",
- "percentage": "10%",
- "suppliers": [{
- "name": bidderUnit,
- "grade": "A",
- "supplier": "对主要内容概括(200字以内)我们的研发团队在科研领域具有全面且深厚的专业背景。团队由15名成员组成,其中包括3位高级研究员、7位中级工程师和5名初级研发 助理,他们分别在人工智能、数据科学、软件工程、物理化学等领域有着扎实的学术基础与实践经验。"
- }]
- },
- {
- "scoringFactors": "售后保障措施",
- "scoringStandard": "(1)对硬件设备提出售后保障期限,及缺陷处理响应时限及保障措施;(2)对三峡电厂物资管理平台的售后保障措施,包括但不限于在合同约定的质保期内进行平台程序优化、接口对接调整等其它保障平台正常运行的响应措施。评分结果分为 A~D四个档次。",
- "percentage": "10%",
- "suppliers": [{
- "name": bidderUnit,
- "grade": "C",
- "supplier": "对主要内容概括(200字以内)当购买硬件设备时,通常我们会提供一个售后保障期限,例如标准1年或更长。这个保障期内,如果产品因制造或材料问题出现故障,消 费者可以享受免费维修或更换服务。"
- }]
- }]
- }]
- data = {
- "projectId": projectId,
- "projectName": projectName,
- "bidderUnit": bidderUnit,
- "list": [
- asdict(DetailResult(
- name = "商务部分评分标准(15%)",
- scoringCriteria = [
- asdict(ScoringCriteria(
- scoringFactors=scoring.get('scoringFactors'),
- scoringStandard=scoring.get('scoringStandard'),
- percentage=scoring.get('percentage'),
- expertAdvice=scoring.get('expertAdvice'),
- suppliers=[
- asdict(Suppliers(
- name=supplier.get('name'),
- grade=supplier.get('grade'),
- supplier=supplier.get('supplier'),
- pages=[
- asdict(Pages(
- fileName=page.get('fileName'),
- pageKey=page.get('pageKey'),
- pageStart=page.get('pageStart'),
- pageEnd=page.get('pageEnd')
- )) for page in supplier.get('pages')
- ] if supplier.get('pages') else None
- )) for supplier in scoring.get('suppliers')
- ]
- )) for scoring in test_data[0]['scoringCriteria']
- ]
- )),
- asdict(DetailResult(
- name = "技术部分评分标准(50%)",
- scoringCriteria = [
- asdict(ScoringCriteria(
- scoringFactors=scoring.get('scoringFactors'),
- scoringStandard=scoring.get('scoringStandard'),
- percentage=scoring.get('percentage'),
- expertAdvice=scoring.get('expertAdvice'),
- suppliers=[
- asdict(Suppliers(
- name=supplier.get('name'),
- grade=supplier.get('grade'),
- supplier=supplier.get('supplier'),
- pages=[
- asdict(Pages(
- fileName=page.get('fileName'),
- pageKey=page.get('pageKey'),
- pageStart=page.get('pageStart'),
- pageEnd=page.get('pageEnd')
- )) for page in supplier.get('pages')
- ] if supplier.get('pages') else None
- )) for supplier in scoring.get('suppliers')
- ]
- )) for scoring in test_data[2]['scoringCriteria']
- ]
- )),
- asdict(DetailResult(
- name = "报价评分标准(35%)",
- scoringCriteria = [
- asdict(ScoringCriteria(
- scoringFactors=scoring.get('scoringFactors'),
- scoringStandard=scoring.get('scoringStandard'),
- percentage=scoring.get('percentage'),
- expertAdvice=scoring.get('expertAdvice'),
- suppliers=[
- asdict(Suppliers(
- name=supplier.get('name'),
- grade=supplier.get('grade'),
- supplier=supplier.get('supplier'),
- pages=[
- asdict(Pages(
- fileName=page.get('fileName'),
- pageKey=page.get('pageKey'),
- pageStart=page.get('pageStart'),
- pageEnd=page.get('pageEnd')
- )) for page in supplier.get('pages')
- ] if supplier.get('pages') else None
- )) for supplier in scoring.get('suppliers')
- ]
- )) for scoring in test_data[1]['scoringCriteria']
- ]
- )),
- ]
- }
- if __name__ == '__main__':
- import requests
- from pprint import pprint
- pprint(data)
- response = requests.post(url=url, json=data)
- print(response.text)
|