| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317 |
- # -*- coding: utf-8 -*-
- """生成响应文件附件类单据:三份资格承诺书、软著一览表、项目团队岗位职责表。
- 项目:2026年河南产互联制造业数据智能运营平台研发项目(0635-202611FW0036)
- 采购人:河南产业互联网联合发展有限公司
- """
- import os
- import shutil
- from docx import Document
- from docx.enum.table import WD_TABLE_ALIGNMENT
- from docx.enum.text import WD_ALIGN_PARAGRAPH
- from docx.oxml import OxmlElement
- from docx.oxml.ns import qn
- from docx.shared import Cm, Pt, RGBColor
- HERE = os.path.dirname(os.path.abspath(__file__))
- SYNC_DIR = r"C:\Users\skygu\OneDrive\Projects\AIDOP\项目\项目招投标"
- PROJECT = "2026年河南产互联制造业数据智能运营平台研发项目"
- PROJECT_NO = "0635-202611FW0036"
- BUYER = "河南产业互联网联合发展有限公司"
- COMPANY = "北京智造易科技有限公司"
- TAX_NO = "91110000MA00AFPA3H"
- SW_COPYRIGHTS = [
- ("数字化项目管理系统 V1.0", "软著登字第 3664568 号", "2019SR0243811"),
- ("透明工厂管理平台 V1.0", "软著登字第 3664577 号", "2019SR0243820"),
- ("智造资源检查系统 V1.0", "软著登字第 3664585 号", "2019SR0243828"),
- ("智能在线选型系统 V1.0", "软著登字第 3664596 号", "2019SR0243839"),
- ("工业部件云物流系统 V1.0", "软著登字第 3664336 号", "2019SR0243579"),
- ("供应商绩效云管理系统 V1.0", "软著登字第 3664349 号", "2019SR0243592"),
- ("智能订单系统 V1.0", "软著登字第 3664361 号", "2019SR0243604"),
- ("数字化仓库系统 V1.0", "软著登字第 3664368 号", "2019SR0243611"),
- ("智能化生产排单系统 V1.0", "软著登字第 3664376 号", "2019SR0243619"),
- ("订单导航智能系统 V1.0", "软著登字第 3664386 号", "2019SR0243629"),
- ]
- # 软著与本项目业务模块的对应关系,用于说明「制造业相关领域」
- SW_RELEVANCE = {
- "数字化项目管理系统 V1.0": "项目与任务管理、进度跟踪,对应实施管理与改善闭环",
- "透明工厂管理平台 V1.0": "车间可视化与生产透明化,对应 S2 制造协同、S6 生产执行",
- "智造资源检查系统 V1.0": "设备、模具与产能资源核查,对应 S0 制造建模、S6 设备台账",
- "智能在线选型系统 V1.0": "产品与物料选型配置,对应 S0 物料建模、S1 产品设计",
- "工业部件云物流系统 V1.0": "工业物料流转与仓储物流,对应 S5 物料仓储、S7 成品仓储",
- "供应商绩效云管理系统 V1.0": "供应商评价与交付绩效,对应 S3 供应协同、S4 采购执行",
- "智能订单系统 V1.0": "订单接收、评审与执行跟踪,对应 S1 产销协同",
- "数字化仓库系统 V1.0": "库存、库位与出入库管理,对应 S5、S7 仓储模块",
- "智能化生产排单系统 V1.0": "生产排程与日计划编制,对应 S2 生产排程",
- "订单导航智能系统 V1.0": "订单全链路导航与进度追踪,对应 S8 订单链路全景",
- }
- TEAM_ROLES = [
- ("项目经理(项目负责人)", 1,
- "对进度、质量、成本与交付负总责;对接采购人项目负责人;组织周例会与阶段评审;"
- "风险识别与升级"),
- ("技术架构师", 1,
- "总体技术方案与集成方案设计;技术风险评估;关键技术决策;架构层面的代码与配置评审"),
- ("前端开发工程师", 1,
- "看板与页面适配;图表与大屏配置;移动端适配;前端缺陷修复"),
- ("后端开发工程师", 1,
- "集成通道适配;数据加工与指标计算任务;接口开发;后端缺陷修复"),
- ("实施顾问", 1,
- "业务调研;主数据梳理与落地;业务蓝图与指标口径确认;业务参数配置;用户操作辅导"),
- ("测试工程师", 1,
- "测试方案与用例设计;集成测试执行;UAT 支持;缺陷跟踪与回归验证"),
- ("UI 设计交互工程师", 1,
- "看板与大屏视觉设计;页面交互优化;移动端界面适配"),
- ("运维工程师", 1,
- "环境搭建与部署;监控告警配置;备份策略实施;上线支持与运行巡检"),
- ]
- # ----------------------------------------------------------------- 排版基础
- def new_doc(body_pt=14):
- doc = Document()
- sec = doc.sections[0]
- sec.top_margin = sec.bottom_margin = Cm(2.54)
- sec.left_margin = sec.right_margin = Cm(3.17)
- st = doc.styles["Normal"]
- st.font.name = "宋体"
- st.font.size = Pt(body_pt)
- st.element.rPr.rFonts.set(qn("w:eastAsia"), "宋体")
- st.element.rPr.rFonts.set(qn("w:ascii"), "Times New Roman")
- st.element.rPr.rFonts.set(qn("w:hAnsi"), "Times New Roman")
- st.paragraph_format.line_spacing = 1.5
- return doc
- def title(doc, text, pt=22):
- p = doc.add_paragraph()
- p.alignment = WD_ALIGN_PARAGRAPH.CENTER
- r = p.add_run(text)
- r.font.name = "黑体"
- r.font.size = Pt(pt)
- r.font.bold = True
- r.element.rPr.rFonts.set(qn("w:eastAsia"), "黑体")
- p.paragraph_format.space_after = Pt(18)
- return p
- def para(doc, text, align=WD_ALIGN_PARAGRAPH.JUSTIFY, indent=True, after=6):
- p = doc.add_paragraph(text)
- p.alignment = align
- if indent:
- p.paragraph_format.first_line_indent = Pt(doc.styles["Normal"].font.size.pt * 2)
- p.paragraph_format.space_after = Pt(after)
- return p
- def signature(doc, extra=()):
- for line in (f"承诺人(供应商名称,加盖单位公章):{COMPANY}",
- "法定代表人或其授权代表(签字或盖章):__________",
- "日 期:2026 年 __ 月 __ 日", *extra):
- para(doc, line, align=WD_ALIGN_PARAGRAPH.RIGHT, indent=False, after=14)
- def _cell(cell, text, pt=10.5, bold=False, align="l", fill=None):
- cell.text = ""
- p = cell.paragraphs[0]
- p.alignment = {"l": WD_ALIGN_PARAGRAPH.LEFT, "c": WD_ALIGN_PARAGRAPH.CENTER}[align]
- p.paragraph_format.space_before = Pt(2)
- p.paragraph_format.space_after = Pt(2)
- p.paragraph_format.line_spacing = 1.15
- r = p.add_run(str(text))
- r.font.name = "宋体"
- r.font.size = Pt(pt)
- r.font.bold = bold
- r.element.rPr.rFonts.set(qn("w:eastAsia"), "宋体")
- if fill:
- sh = OxmlElement("w:shd")
- sh.set(qn("w:fill"), fill)
- cell._tc.get_or_add_tcPr().append(sh)
- def add_table(doc, headers, rows, widths, aligns=None):
- t = doc.add_table(rows=1, cols=len(headers))
- t.style = "Table Grid"
- t.alignment = WD_TABLE_ALIGNMENT.CENTER
- t.autofit = False
- aligns = aligns or ["l"] * len(headers)
- for i, h in enumerate(headers):
- _cell(t.rows[0].cells[i], h, bold=True, align="c", fill="DDEBF7")
- for data in rows:
- cells = t.add_row().cells
- for i, v in enumerate(data):
- _cell(cells[i], v, align=aligns[i])
- for row in t.rows:
- for i, w in enumerate(widths):
- row.cells[i].width = Cm(w)
- return t
- def save(doc, name):
- out = os.path.join(HERE, name + ".docx")
- doc.save(out)
- if os.path.isdir(SYNC_DIR):
- shutil.copy2(out, os.path.join(SYNC_DIR, os.path.basename(out)))
- print(f"[完成] {name}.docx")
- return out
- def header_lines(doc, ref):
- para(doc, f"项目名称:{PROJECT}", indent=False, after=0)
- para(doc, f"项目编号:{PROJECT_NO}", indent=False, after=18)
- para(doc, f"{BUYER}:", indent=False)
- para(doc, f"我方已认真阅读上述项目询比采购文件,现就采购文件{ref}的要求,"
- f"郑重承诺如下:")
- def closing(doc):
- para(doc, "本承诺书作为我方询比响应文件的组成部分,"
- "我方中选后作为合同附件,与合同具有同等法律效力。")
- para(doc, "如有违反上述承诺,我方自愿接受作废标处理,"
- "并承担由此产生的全部法律责任。")
- para(doc, "特此承诺。", after=48)
- signature(doc)
- # ----------------------------------------------------------------- 承诺书一
- def gen_invoice_commitment():
- doc = new_doc()
- title(doc, "关于能够提供增值税专用发票的承诺书")
- header_lines(doc, "“供应商资格条件”第 3.2 条")
- para(doc, f"一、我方({COMPANY},纳税人识别号 {TAX_NO})为增值税一般纳税人,"
- "依法具备开具增值税专用发票的资格与能力。")
- para(doc, "二、我方若在本项目中选,将按照合同约定,"
- "向采购人开具合法、合规、真实有效的增值税专用发票,"
- "发票内容与合同约定及实际履约情况一致,发票税率按国家现行规定执行。")
- para(doc, "三、我方保证不存在虚开、代开发票等违法行为。"
- "如因我方原因导致发票不符合规定、无法认证抵扣或无法税前扣除,"
- "由我方负责及时重新开具并承担由此产生的全部责任。")
- closing(doc)
- return save(doc, "承诺书-能够提供增值税专用发票")
- # ----------------------------------------------------------------- 承诺书二
- def gen_no_consortium_commitment():
- doc = new_doc()
- title(doc, "关于不组成联合体及中选后不转包的承诺书")
- header_lines(doc, "“供应商资格条件”第 3.4 条")
- para(doc, "一、我方以独立法人身份参加本项目应答,"
- "不与任何其他单位组成联合体,"
- "响应文件中不存在联合体应答的情形。")
- para(doc, "二、我方若在本项目中选,将由我方独立履行合同全部义务,"
- "不将本项目整体或主体、关键性工作转包给其他单位或个人,"
- "也不以任何变相方式规避本项承诺。")
- para(doc, "三、我方承诺本项目的需求调研、方案设计、系统开发与配置、"
- "集成对接、测试、部署上线、培训及售后服务等各项工作,"
- "均由我方自有人员实施;"
- "项目团队人员均与我方签订劳动合同,不存在借用他人资质或人员的情形。")
- para(doc, "四、我方承诺不将本单位的身份证明、资质资格证明及相关人员的"
- "资质证明材料转借其他单位和个人使用。")
- closing(doc)
- return save(doc, "承诺书-不组成联合体及中选后不转包")
- # ----------------------------------------------------------------- 承诺书三
- def gen_credit_commitment():
- doc = new_doc()
- title(doc, "关于资格条件及信用状况的承诺书")
- header_lines(doc, "“供应商资格条件”第 3.5 条、第 3.6 条")
- para(doc, "一、我方为依法设立并有效存续的法人,"
- "具有独立承担民事责任的能力,"
- "所提供的营业执照及各项资格证明材料均真实、合法、有效。")
- para(doc, "二、截至本响应文件递交截止之日,我方在“国家企业信用信息公示系统”"
- "中未被列入“经营异常名录”,未被列入“严重违法失信名单”。")
- para(doc, "三、截至本响应文件递交截止之日,我方在“信用中国”网站"
- "(www.creditchina.gov.cn)中未被列入“失信被执行人”、"
- "“重大税收违法失信主体”、"
- "“政府采购严重违法失信行为记录名单”。")
- para(doc, "四、我方不存在下列任一情形:")
- for line in ("(一)被责令停业或处于破产状态;",
- "(二)被暂停或取消投标资格;",
- "(三)财产被接管、查封、扣押或冻结;",
- "(四)近三年(2023 年 1 月 1 日至本项目评审之日),"
- "在河南产互联组织的采购活动中,被认定存在串标、围标、骗标等行为;",
- "(五)为采购人不具有独立法人资格的附属机构(单位);",
- "(六)为本项目提供招标代理服务。"):
- para(doc, line, after=4)
- para(doc, "五、我方提交的全部响应文件及证明材料均真实有效,"
- "不存在伪造、虚假成份,材料所述内容均为我方真实拥有。")
- para(doc, "六、我方同意采购人或采购代理机构通过“国家企业信用信息公示系统”、"
- "“信用中国”网站及其他合法途径核查我方的信用状况;"
- "核查结果与本承诺不一致的,我方接受作废标处理。")
- closing(doc)
- return save(doc, "承诺书-资格条件及信用状况")
- # ----------------------------------------------------------------- 软著一览表
- def gen_sw_copyright_table():
- doc = new_doc(body_pt=12)
- title(doc, "计算机软件著作权登记证书一览表", pt=18)
- para(doc, f"项目名称:{PROJECT}", indent=False, after=0)
- para(doc, f"项目编号:{PROJECT_NO}", indent=False, after=0)
- para(doc, f"供应商名称:{COMPANY}", indent=False, after=12)
- para(doc, f"我方共持有计算机软件著作权登记证书 {len(SW_COPYRIGHTS)} 项,"
- "全部为制造业相关领域软件,著作权人均为我方,权利范围均为全部权利,"
- "登记机关为中国版权保护中心。证书扫描件附后。", after=12)
- add_table(doc,
- ["序号", "软件名称及版本", "证书号", "登记号", "与本项目的相关性"],
- [[str(i + 1), n, c, r, SW_RELEVANCE[n]]
- for i, (n, c, r) in enumerate(SW_COPYRIGHTS)],
- [1.0, 3.6, 3.0, 2.6, 5.4],
- ["c", "l", "l", "l", "l"])
- para(doc, "", indent=False, after=6)
- para(doc, "说明:上表所列软件著作权均围绕制造业运营管理场景形成,"
- "涵盖订单管理、生产排程、车间透明化、仓储物流、供应商绩效与资源核查等环节,"
- "与本项目采购需求中的产销协同、制造协同、供应协同、采购执行、"
- "物料仓储、生产执行、成品仓储等业务场景直接相关。", after=24)
- for line in (f"供应商名称(加盖单位公章):{COMPANY}",
- "日 期:2026 年 __ 月 __ 日"):
- para(doc, line, align=WD_ALIGN_PARAGRAPH.RIGHT, indent=False, after=12)
- return save(doc, "软件著作权登记证书一览表")
- # ----------------------------------------------------------------- 团队岗位表
- def gen_team_table():
- doc = new_doc(body_pt=12)
- title(doc, "项目团队岗位职责与人员配备表", pt=18)
- para(doc, f"项目名称:{PROJECT}", indent=False, after=0)
- para(doc, f"项目编号:{PROJECT_NO}", indent=False, after=0)
- para(doc, f"供应商名称:{COMPANY}", indent=False, after=12)
- para(doc, "我方按采购文件对项目团队的要求配备全部岗位人员,"
- "岗位设置、人数与职责分工如下表。"
- "全部人员均与我方签订劳动合同,"
- "劳动合同扫描件与人员资历证明材料附后。", after=12)
- add_table(doc,
- ["序号", "岗位名称", "人数", "姓名", "主要职责"],
- [[str(i + 1), role, str(n), "", duty]
- for i, (role, n, duty) in enumerate(TEAM_ROLES)],
- [1.0, 3.6, 1.2, 2.4, 7.4],
- ["c", "l", "c", "c", "l"])
- para(doc, "", indent=False, after=6)
- para(doc, "说明:一、上表岗位覆盖采购文件要求的项目负责人、架构师、"
- "前后端开发工程师、测试工程师、UI 设计交互工程师全部核心岗位,"
- "并按采购需求增配实施顾问与运维工程师。", after=4)
- para(doc, "二、项目经理、技术架构师、实施顾问三个关键岗位另设备份人员,"
- "备份人员参与项目周例会并掌握项目状态,"
- "主责人员因故不能履职时可即时接手。", after=4)
- para(doc, "三、项目实施期间人员不得随意更换;"
- "确需更换时,提前书面报采购人同意,"
- "更换人员的资历不低于原人员。", after=24)
- for line in (f"供应商名称(加盖单位公章):{COMPANY}",
- "法定代表人或其授权代表(签字或盖章):__________",
- "日 期:2026 年 __ 月 __ 日"):
- para(doc, line, align=WD_ALIGN_PARAGRAPH.RIGHT, indent=False, after=12)
- return save(doc, "项目团队岗位职责与人员配备表")
- if __name__ == "__main__":
- gen_invoice_commitment()
- gen_no_consortium_commitment()
- gen_credit_commitment()
- gen_sw_copyright_table()
- gen_team_table()
- print("\n附件类单据生成完毕")
|