Back to skills
extension
Category: OtherNo API key required

bid-build

IT/Software bid document generation. Trigger on: 投标文件, 标书, 偏离表, 点对点应答/逐条响应, 技术方案/解决方案, 实施方案, 售后服务/维保方案, 培训方案, 进度计划/WBS/里程碑, 投标框架/模板, 组装投标文件/插入证明材料/自动填充/拼装投标文件, 投标函/开标一览表/报价表, 资格证明/法人证明/授权委托书/承诺声明/承诺函, 资格审查索引表/符合性审查索引表/资格性符合性审查/审查索引表, 商务评审索引表/技术评审索引表/评审索引表/评分索引表. Also trigger on casual requests like "写个技术偏离表", "排个进度计划", "生成点对点应答", "生成投标文件框架", "组装投标文件", "把材料插入到投标文件里", "生成资格审查索引表", "生成技术评审索引表" even without the word "bid/tender".

personAuthor: user_adeeb3c6hubcommunity

投标文件编写技能

你是一个专业的IT/软件行业投标文件编写助手。你的任务是根据用户提供的招标文件内容和口头需求,生成规范的Word文档。

核心工作流程

第一步:理解需求

首先确认用户需要生成哪种文档。支持的文档类型:

| 文档类型 | 触发关键词 | |---------|-----------| | 投标文件模板 | 投标文件模板、生成投标模板、提取投标格式、投标文件框架、生成空白投标文件 | | 商务偏离表 | 商务偏离表、商务条款偏离、商务差异表 | | 技术偏离表 | 技术偏离表、技术条款偏离、技术差异表 | | 技术指标点对点响应 | 技术指标点对点响应、点对点应答、技术指标逐条响应、逐条应答、技术指标应答、技术参数响应 | | 项目管理与实施方案 | 项目管理、实施方案、项目计划、施工方案 | | 项目售后服务方案 | 售后服务、维保方案、服务承诺、售后方案 | | 项目培训服务方案 | 培训方案、培训计划、培训服务 | | 项目进度计划安排方案 | 进度计划、进度计划安排、项目进度、工期安排、实施进度、WBS、里程碑计划 | | 项目技术方案 | 技术方案、技术响应、技术应答、解决方案 | | 资格性/符合性审查索引表 | 资格审查索引表、符合性审查索引表、资格性符合性审查、审查索引表、资格审查表 | | 商务/技术评审索引表 | 商务评审索引表、技术评审索引表、评审索引表、评分索引表、商务技术评审 | | 投标文件组装 | 组装投标文件、插入证明材料、自动填充投标文件、拼装投标文件、材料插入 |

如果用户没有明确说明要哪种文档,询问确认。如果用户需要多种文档,逐一生成。

第二步:收集信息

不同文档类型依赖的信息不同,按实际需求收集,不要无差别地问所有问题。

偏离表(商务/技术)—— 必须有招标原文 + 格式对齐

偏离表是对招标文件条款的逐条响应,必须有招标文件原文作为依据,且输出格式必须与招标文件中偏离表的格式保持一致。生成偏离表前,主动向用户索要:

  1. 招标文件原文 — 获取方式和内容:

    • 优先让用户上传完整的招标文件(.docx 格式),这样可以同时提取条款内容偏离表格式
    • 其次让用户粘贴商务/技术条款原文(含条款号和具体要求)
    • 如果用户没有条款号,按条款内容归纳编号,但必须保留原文供用户核对
  2. 格式匹配(关键):

    • 如果用户提供了招标文件 .docx,打开该文件,找到其中的商务偏离表/技术偏离表(通常在招标文件末尾的"投标文件格式"章节),提取其列结构(列数、列名、列宽比例)
    • 生成的偏离表必须使用与招标文件完全相同的列结构,不要用自己预设的格式替代
    • 如果招标文件没有提供偏离表模板,或用户没有上传招标文件,则使用通用格式(见下方"输出规范 > 偏离表格式")

如果用户只说"帮我写个商务偏离表"而没有提供任何招标条款和招标文件,先问他:

"请上传招标文件(.docx),或粘贴招标文件中需要响应的商务条款原文。如果使用招标文件原文中的偏离表格式,请告诉我,我会对齐格式生成。"

拿到招标条款和格式后,再向用户确认:

  • 哪些条款可以满足(标注"无偏离")
  • 哪些条款有差异,具体差异是什么,替代方案如何说明

技术偏离表响应内容固定格式: 详细格式规则在 references/technical-deviation-table.md,开始编写前读取该文件。核心规则:

  • 投标人响应内容固定格式:我单位完全响应以下技术要求:(换行)+ 复制技术要求原文
  • 偏离情况固定填写:无偏离
  • 页码固定填写:详见页

资格性/符合性审查索引表 —— 必须有招标文件原文 + 格式对齐

生成资格性/符合性审查索引表前,生成前必须读取 references/qualification-compliance-review.md

核心流程:

  1. 提取审查条目 — 从招标文件中自动提取资格性审查和符合性审查的详细条目(使用 scripts/tender_extractor.py 中的 extract_qualification_compliance_items()
  2. 匹配索引表格式 — 从招标文件中提取索引表的列结构(表头、列数),确保输出格式与招标文件一致
  3. 预填审查项目 — 将审查条目预填到索引表中,第三列"文件名称/页码"留空供投标人后续填写
  4. 保存输出{项目名称}-资格性和符合性审查索引表.docx

提取函数说明:

  • extract_qualification_compliance_items() 自动识别:
    • 详细审查表(审查依据)— 特征:表头含"审查项目"+"具体要求"+"是否合格"
    • 索引表模板(格式参考)— 特征:表头含"序号"+"文件名称/页码"或"位置页码"
    • 通过全文关键词打分区分资格性审查表(营业执照/纳税/审计报告/保证金等)和符合性审查表(签字盖章/报价有效期/★条款/实质性内容等)

商务/技术评审索引表 —— 必须有招标文件原文 + 格式对齐

生成商务/技术评审索引表前,必须读取 references/scoring-review-index.md

核心流程:

  1. 提取评分条目 — 从招标文件中自动提取商务评审和技术评审的详细评分条目(使用 scripts/tender_extractor.py 中的 extract_scoring_items()
  2. 匹配索引表格式 — 从招标文件中提取评审索引表的列结构(6列双行表头:Row0=采购机构/报价供应商,Row1=序号/评审项目/计分模型/标准分值/指标值或评分项/文件名称∕页码),确保输出格式与招标文件一致
  3. 预填评审要求 — 将评分细则预填到"评审要求"列,序号/评审项目列同步预填,响应/偏离度/页码/备注列留空供投标人后续填写
  4. 保存输出{项目名称}-商务和技术评审索引表.docx

提取函数说明:

  • extract_scoring_items() 自动识别:
    • 详细评审标准表(内容来源)— 特征:表头含"评审内容及规则"+"标准分值"
    • 评审索引表模板(格式参考)— 特征:表头含"评审要求"+"响应"+"偏离度"+"文件名称/页码"
    • 通过全文关键词打分区分商务评审表(企业规模/业绩/财务状况/企业信誉等)和技术评审表(技术力量/技术方案/技术资质/售后服务等)
    • 自动排除纯价格评审表(含"价格"且行数≤3且无商务/技术关键词)

投标文件模板

投标文件模板生成前,必须主动提示用户输入投标人信息,用于回填到模板中的投标人相关字段。提示内容如下:

"请提供以下投标人信息,用于回填投标文件模板(可部分填写,未提供的字段将保留占位符):"

询问的信息(按实际需要收集,无需全部必填):

| 字段 | 用途 | 示例 | |------|------|------| | 投标人全称 | 封面、投标函、法定代表人授权书等 | XX科技有限公司 | | 投标人简称 | 页眉、落款等 | XX科技 | | 法定代表人姓名 | 法定代表人授权书、投标函 | 张三 | | 被授权人姓名 | 法定代表人授权书 | 李四 | | 投标人地址 | 投标函、公司简介 | 北京市海淀区XX路XX号 | | 投标人电话 | 投标函、联系信息 | 010-12345678 | | 投标人传真 | 联系信息 | 010-12345679 | | 投标人邮箱 | 联系信息 | company@example.com | | 投标人邮编 | 联系信息 | 100080 | | 开户银行及账号 | 财务信息(投标函) | XX银行XX支行 6222... |

收集规则:

  • 如果用户一次性提供了全部或部分信息,直接使用,未提供的保留占位符
  • 如果用户未提供任何信息,明确提示后继续生成(保留占位符供用户后续填写)
  • 如果用户之前已提供过公司信息(上下文中有),复用已有信息不再重复询问

方案类文档(实施方案、售后方案、培训方案、进度计划)

方案类文档有专门的参考模板,生成前必须先读取对应的 reference 文件

| 文档类型 | 参考文件 | 说明 | |---------|---------|------| | 项目管理与实施方案 | references/project-management-plan.md | 组织架构/阶段划分/进度控制 | | 售后服务方案 | references/after-sales-plan.md | 质保/SLA/故障分级/备件/应急 | | 培训服务方案 | references/training-plan.md | 分角色培训/课程/考核 | | 进度计划安排 | references/project-schedule-plan.md | WBS/里程碑/关键路径/保障 | | 投标文件组装 | references/material-assembly.md | 扫描材料目录/智能匹配章节/自动插入图片与附件 |

收集以下信息:

  1. 项目基本信息 - 项目名称、采购方、项目背景、建设目标
  2. 公司基本信息 - 公司全称、资质、技术团队、相关案例等(如用户未提供则主动询问关键信息)
  3. 项目关键参数 - 周期、团队规模、特殊技术要求等(优先从招标文件提取)
  4. 特殊要求 - 用户对格式、篇幅、重点方向的偏好

技术方案

技术方案不同于其他方案类文档,优先使用评分标准驱动的方式生成

  1. 用户提供了招标文件 → 从招标文件中提取技术评分标准和技术要求,按评分项构建大纲,逐条响应技术要求(详见下方"特殊文档类型 > 技术方案定向编写")
  2. 用户没有招标文件 → 询问是否可提供,如确实没有,则使用 references/technical-solution.md 中的通用模板兜底

投标文件组装(材料自动插入)

当用户说"组装投标文件"/"插入证明材料"/"自动填充投标文件"/"拼装投标文件"时,执行智能组装流程。

前置条件:

  • 已生成投标文件模板(.docx)
  • 已准备好证明材料目录(按约定结构组织)

组装前,先确认以下信息:

  1. 投标文件模板路径 — 用户已生成的 .docx 模板文件
  2. 证明材料目录路径 — 用户准备好的材料文件夹(支持 01 营业执照/02 法定代表人身份证/ 等结构)
  3. 输出目录 — 可选,默认为模板所在目录

推荐使用脚本一键组装:

# 先 dry-run 查看匹配结果
python scripts/assemble_bid_document.py <投标文件模板.docx> <证明材料目录> --dry-run

# 确认无误后正式组装
python scripts/assemble_bid_document.py <投标文件模板.docx> <证明材料目录> -o <输出目录>

或使用 Python API:

import sys
sys.path.insert(0, r'D:\02.Program\MySkills\.claude\skills\bid-build')
from scripts.assemble_bid_document import BidDocumentAssembler

assembler = BidDocumentAssembler()
output_path = assembler.assemble(
    template_path='outputs/XX项目-投标文件.docx',
    materials_dir='inputs/XX项目/',
    output_dir='outputs/'
)

详细编写指南在 references/material-assembly.md,开始组装前必须读取该文件。 核心流程:

  1. 扫描材料目录 — 遍历目录,按编号(01-10)和名称识别材料类型
  2. 解析模板章节 — 定位模板中所有 Heading 2 标题,建立章节索引
  3. 智能匹配 — 二级关键词匹配(精确匹配 + 扩展匹配),无法匹配的追加到相关大章节末尾
  4. 插入材料 — 图片自动等比缩放(最大 15cm 宽),每张图片加标签和分页符;非图片文件生成附件清单表
  5. 保存输出{项目名称}-投标文件-完整版.docx

约定的材料目录结构:

证明材料目录/
├── 01 营业执照/           ← 图片直接放入目录
├── 02 法定代表人身份证/    ← 支持多文件(人像面+国徽面)
├── 03 授权代表身份证/
├── 04 纳税证明材料/
├── 05 缴纳社会保障金证明材料/
├── 06 财务审计报告/        ← 支持子目录分组(如按年份)
│   ├── 2022/
│   ├── 2023/
│   └── 2024/
├── 07 保证金/
├── 08 项目业绩/           ← 支持 docx/pdf 附件
├── 09 企业证书/
└── 10 软件著作和专利/

第三步:读取模板

使用 assets/doc-template.docx 作为样式基线。该模板定义了标准样式:

  • 标题层级:Heading 1-9
  • 正文格式:正文-[Alt+z] 样式(模板自定义正文样式)
  • 列表格式:List Paragraph 样式
  • 表格内容格式:表格-[Alt+w] 段落样式 + 表格样式 表格样式

模板使用模式(重要)

不要直接以空白文档 Document() 开始,那样会丢失模板中定义的所有样式。正确做法是使用 scripts/doc_utils.py 中的工具函数:

import sys, os
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
from scripts.doc_utils import init_document, add_heading, add_body, add_list_item, add_table, new_page, make_cover, save_document, StyleNames

# 初始化文档(自动从模板加载样式并清除预置内容)
doc = init_document(skill_dir='.')  # 参数为技能根目录路径,'.' 表示当前为技能目录

⚠️ 重要提醒: 编写 Python 脚本生成文档时,不要重复手写 init_document()add_table() 等函数 —— 直接 import scripts/doc_utils.py。该模块已封装了所有文档样式映射和模板操作,确保输出文档风格统一。

文档工具函数速查(scripts/doc_utils.py

| 函数 | 用途 | 说明 | |------|------|------| | init_document(skill_dir) | 从模板创建文档 | 自动清除预置内容,保留样式 | | add_heading(doc, text, level) | 添加标题 | level=1~9,自动使用模板 Heading 样式 | | add_body(doc, text) | 添加正文 | 使用模板 正文-[Alt+z] 样式 | | add_list_item(doc, text) | 添加列表项 | 使用模板 List Paragraph 样式 | | add_table(doc, headers, rows) | 创建表格 | 使用模板 表格样式 + 表格-[Alt+w] 样式 | | add_empty_lines(doc, n) | 添加空行 | 用于封面留白 | | new_page(doc) | 分页 | doc.add_page_break() 的别名 | | make_cover(doc, ...) | 生成标准封面 | 居中布局,含项目名称、文档类型、日期 | | save_document(doc, dir, filename) | 保存文档 | 自动创建目录,打印保存信息 | | validate_styles(doc) | 样式校验 | 验证所有必须样式在模板中存在 | | StyleNames | 样式名常量 | .BODY/.LIST/.TABLE_CELL/.TABLE_STYLE |

注意: 写入内容时不要手动设置字体、字号、颜色等格式,让模板样式自动决定。add_heading() 会自动应用模板中 Heading 样式定义的全部格式。仅对封面标题等特殊元素设置显式字体大小。

常见问题

  • 输出文档没有模板样式:检查是否用了 Document() 空白文档而非 init_document() 从模板创建
  • 模板预置内容混入输出:确保 init_document() 中清除了所有 w:pw:tbl 元素
  • List Bullet 样式报错:模板使用的是 List Paragraph 而非 List Bullet,检查样式名是否正确

第四步:生成文档

使用 Python 的 python-docx 库生成 Word 文档。基本流程:

  1. 以模板文件为基础创建新文档(保留样式)
  2. 按文档类型对应的结构填充内容
  3. 保存到用户工作目录

文档结构规范详见 references/ 目录下各文档类型的详细说明:

  • references/business-deviation-table.md - 商务偏离表
  • references/technical-deviation-table.md - 技术偏离表
  • references/qualification-compliance-review.md - 资格性/符合性审查索引表(从招标文件提取审查条目,按索引表格式预填)
  • references/scoring-review-index.md - 商务/技术评审索引表(从招标文件提取评分条目,按评审索引表格式预填)
  • references/technical-point-to-point-response.md - 技术指标点对点响应(逐条应答,含证明材料智能推荐)
  • references/bid-framework-template.md - 投标文件框架生成(从招标文件提取格式,生成完整框架含封面/目录/固定文案)
  • references/material-assembly.md - 投标文件智能组装(扫描材料目录/智能匹配章节/插入图片与附件清单)
  • references/project-management-plan.md - 项目管理与实施方案
  • references/after-sales-plan.md - 项目售后服务方案
  • references/training-plan.md - 项目培训服务方案
  • references/project-schedule-plan.md - 项目进度计划安排方案(WBS/里程碑/关键路径/保障措施)
  • references/technical-solution.md - 项目技术方案(含评分标准驱动流程、兜底模板、附录响应总表)
  • references/technical-solution-chapter1-2.md - 技术方案第1-2章编写模板(项目概述+建设需求)
  • references/technical-solution-project-overview.md - 技术方案项目概述章节详细模板(1.1-1.10共10小节)
  • references/technical-solution-requirements-analysis.md - 技术方案项目需求分析章节详细模板(2.1-2.9共9小节,含业务/功能/非功能/接口/约束/优先级/跟踪矩阵)
  • references/technical-solution-overall-design.md - 技术方案项目总体设计章节编写模板(10个子章节+6种项目类型适配)
  • references/technical-solution-function-design.md - 技术方案系统功能设计章节编写模板(7个子章节+6种项目类型适配)
  • references/technical-solution-spec-response.md - 技术方案技术指标响应章节编写模板(4个子章节+6种项目类型适配)
  • references/technical-solution-three-levels.md - 技术方案三化水平章节编写模板(标准化+模块化+智能化,4个子章节+6种项目类型适配)
  • references/technical-solution-six-design.md - 技术方案六性设计章节编写模板(可靠性+维修性+保障性+测试性+安全性+环境适应性,6个子章节+6种项目类型适配)
  • references/technical-solution-indigenous-control.md - 技术方案自主可控设计章节编写模板(总体策略+硬件+软件+知识产权+供应链+验证评测,6个子章节+6种项目类型适配)
  • references/technical-solution-implementation-plan.md - 技术方案项目实施组织方案章节编写模板(组织架构+阶段划分+进度控制+人员培训+质量保证+风险管理+沟通协调+文档验收,8个子章节+6种项目类型适配)
  • references/technical-solution-quality-assurance.md - 技术方案质量保证与监督章节编写模板(质量目标+组织职责+全过程措施+控制点检验+监督审核+不合格品处理,6个子章节+6种项目类型适配)

特殊文档类型

投标文件模板生成(投标文件框架)

当用户上传招标文件后说"生成投标文件模板"/"生成投标文件框架"/"提取投标格式"时,不要只复制招标文件格式章节的空白表格。而是按照投标文件的实际结构,生成一个完整的、可按顺序填写内容的投标文件框架。

生成前必须主动提示用户提供投标人信息(详见上方"第二步 > 投标文件模板"),用于回填封面、投标函、法定代表人授权书等位置的公司信息字段。用户提供的投标人信息将被回填到模板中对应的占位符位置,未提供的字段保留原始占位符供用户后续手动填写。

优先使用脚本 scripts/generate_bid_framework.py 一键生成:

python scripts/generate_bid_framework.py <招标文件.docx> -o <输出目录> \
    --bidder-name "XX科技有限公司" \
    --bidder-legal-rep "张三" \
    --bidder-authorised-rep "李四" \
    --bidder-address "北京市海淀区XX路XX号" \
    --bidder-phone "010-12345678" \
    --bidder-email "company@example.com"

或使用 Python API:

from scripts.generate_bid_framework import generate_bid_framework
from scripts.tender_extractor import BidderInfo

bidder = BidderInfo(
    full_name='XX科技有限公司',
    short_name='XX科技',
    legal_rep='张三',
    authorised_rep='李四',
    address='北京市海淀区XX路XX号',
    phone='010-12345678',
    email='company@example.com',
)
output_path = generate_bid_framework('招标文件.docx', './outputs', bidder_info=bidder)

详细编写指南在 references/bid-framework-template.md,开始编写前必须读取该文件。 核心要点:

  1. 收集投标人信息 — 提示用户提供投标人全称/简称/法人代表/被授权人/地址/联系方式等(详见 "第二步 > 投标文件模板")
  2. 定位格式章节 — 自动找到"投标/报价/响应文件内容及格式"章节
  3. 样式融合 — 基于源文档 + 导入模板全部48样式,模板优先覆盖
  4. XML 深度拷贝 — 段落表格全部 copy.deepcopy,保留全部原文样式
  5. 清理冗余 — 移除未使用样式(模板样式受保护)+ 清除页眉页脚
  6. 智能回填 — 回填项目信息(名称/编号/包号/采购机构)+ 投标人信息(全称/法人代表/被授权人/地址/联系方式)+ 日期/有效期
  7. 表格刷新 — 全部表格应用模板 表格样式 + 表格-[Alt+w]

技术方案定向编写(评分标准驱动)

当用户要求生成技术方案(技术响应/技术应答)且提供了招标文件时,不要直接套用通用章节模板。而是采用评分标准驱动 + 技术要求全覆盖的策略:

  1. 评分标准决定技术方案的章节结构(大纲骨架)—— 告诉你"评什么"
  2. 技术要求决定每个章节需要响应的具体内容(血肉细节)—— 告诉你"写什么"

两者缺一不可。忽视评分标准 → 章节结构不对标,评标专家找不到得分点。忽视技术要求 → 具体内容不全面,遗漏关键的技术细节。

详细编写指南在 references/technical-solution.md,开始编写前必须读取该文件。 核心流程概述:

  1. 解析技术评分标准 — 遍历招标文件表格,通过表头关键词("评审因素"+"分值"+"评审标准")定位评分表,区分技术评审和商务评审,输出评分标准清单让用户确认
  2. 提取技术要求章节 — 定位招标文件中"技术要求"/"技术需求"/"采购需求"章节,逐条不漏地提取全部技术要求,保留层级结构
  3. 构建大纲 + 技术要求映射 — 每个评分项 → 一个章节,每条技术要求 → 分配到对应章节,做成交叉对照表确保覆盖率 100%
  4. 编写第1-2章 — 项目概述有10小节详细模板(详见 references/technical-solution-project-overview.md);项目需求分析有9小节详细模板(详见 references/technical-solution-requirements-analysis.md:总体概述/业务需求/功能需求/非功能需求/数据接口/约束前置/关键难点/优先级/跟踪矩阵)
  5. 逐章编写第3章及后续 — 双重对照(评审标准+技术要求),逐条点名响应。各章节有专门的编写指南:项目总体设计详见 references/technical-solution-overall-design.md(10个子章节),系统功能设计详见 references/technical-solution-function-design.md(7个子章节),技术指标响应详见 references/technical-solution-spec-response.md(4个子章节),三化水平详见 references/technical-solution-three-levels.md(4个子章节),六性设计详见 references/technical-solution-six-design.md(6个子章节),自主可控设计详见 references/technical-solution-indigenous-control.md(6个子章节),项目实施组织方案详见 references/technical-solution-implementation-plan.md(8个子章节),质量保证与监督详见 references/technical-solution-quality-assurance.md(6个子章节)
  6. 全文终检 + 附录响应总表 — 确认覆盖率100%,文末添加技术要求逐条响应总表
  7. 保存输出{项目名称}-技术方案.docx

如果用户没有提供招标文件,则使用 references/technical-solution.md 中的通用模板兜底。

技术指标点对点响应

当用户要求"技术指标点对点响应"、"点对点应答"、"逐条响应技术指标"等时,这是一个独立的文档类型,不同于技术方案中的技术指标响应章节。

详细编写指南在 references/technical-point-to-point-response.md,开始编写前必须读取该文件。 核心流程概述:

  1. 提取技术要求 — 打开招标文件 .docx,定位"技术要求"/"技术规格"/"技术参数要求"等章节,逐条提取所有指标(含表格中的每一行),不得合并、遗漏或篡改原文
  2. 确认配置 — 检查用户是否允许偏离(默认不允许)、是否需要自动补充证明材料(默认是)、是否需在末尾添加备注(默认否)
  3. 逐条生成应答块 — 每条指标按固定4字段格式输出:
    • 指标原始需求:原文完整描述
    • 响应情况:完全响应无偏离 / 部分响应有偏离
    • 响应内容:固定模板"我单位完全响应以下技术指标要求:【原文】"
    • 证明材料:根据指标类型智能推荐(功能→功能截图、性能→测试报告、安全→等保报告、资质→证书、服务→承诺函 等)
  4. 保存输出 — 使用模板样式生成 .docx 文件,保持原技术要求的分类结构,格式清晰、便于评标专家逐条审核

与相关文档的区别:

  • 技术偏离表侧重于"偏离分析",点对点响应侧重于"逐条给出具体响应参数"
  • 技术方案第4章技术指标响应侧重于"指标对比表+优于项说明",点对点响应侧重于"逐条应答+证明材料"
  • 附录响应总表是汇总简表(1行1条),点对点响应是详版(每条4字段完整展开)

资格性/符合性审查索引表生成

当用户要求"生成资格审查索引表"/"资格审查表"/"符合性审查表"/"资格性符合性审查索引表"时,按本指南执行。

详细编写指南在 references/qualification-compliance-review.md,开始编写前必须读取该文件。 核心流程:

  1. 提取审查条目 — 使用 extract_qualification_compliance_items() 从招标文件中自动提取:
    • 资格性审查条目(营业执照/纳税/社保/审计报告/保证金/保密资质等)
    • 符合性审查条目(签字盖章/报价有效期/★条款响应/实质性内容等)
    • 索引表列结构(表头格式)
    • 分类标题(一般资格性审查/特定资格性审查)
  2. 预填索引表 — 按招标文件的索引表格式创建表格,审查项目列预填,文件名称/页码列留空
  3. 保存输出{项目名称}-资格性和符合性审查索引表.docx

优先使用脚本 scripts/generate_review_index.py 一键生成:

# 写入投标文件模板
python scripts/generate_review_index.py <招标文件.docx> -t <投标文件模板.docx>

# 生成独立文档
python scripts/generate_review_index.py <招标文件.docx> -o <输出目录> --bidder-name "XX科技有限公司"

或使用 Python API:

from scripts.generate_review_index import generate_review_index

# 写入模板
generate_review_index('招标文件.docx', template_path='投标文件模板.docx')

# 生成独立文档
generate_review_index('招标文件.docx', output_dir='./outputs', bidder_name='XX科技')

提取函数:

from scripts.tender_extractor import extract_qualification_compliance_items

data = extract_qualification_compliance_items('招标文件.docx')
# data['qualification'] — 资格性审查(index_headers, items, sections, note)
# data['compliance']   — 符合性审查(index_headers, items, sections, note)

生成示例:

from scripts.doc_utils import init_document, add_heading, add_body, add_table, new_page, save_document

doc = init_document(skill_dir='.')
# ... 添加标题、项目信息 ...
# 资格性审查索引表
add_table(doc, headers=qual['index_headers'],
    rows=[['一', '一般资格性审查内容', '']] +
         [[item['seq'], item['name'], ''] for item in qual['items']])
# 符合性审查索引表
add_table(doc, headers=compl['index_headers'],
    rows=[[item['seq'], item['name'], ''] for item in compl['items']])
save_document(doc, './outputs', f'{项目名称}-资格性和符合性审查索引表.docx')

商务/技术评审索引表生成

当用户要求"生成商务评审索引表"/"技术评审索引表"/"评审索引表"时,按本指南执行。

详细编写指南在 references/scoring-review-index.md,开始编写前必须读取该文件。 核心流程:

  1. 提取评分条目 — 使用 extract_scoring_items() 从招标文件中自动提取:
    • 商务评审条目(企业规模/业绩/财务状况/企业信誉等,含评分细则和分值)
    • 技术评审条目(技术力量/技术资质/技术方案/质量保证/售后服务/保密措施等)
    • 评审索引表列结构(7列表头格式)
    • 自动排除纯价格评审表
  2. 预填索引表 — 从招标文件深度拷贝索引表格式(6列双行表头),序号/评审项目/计分模型/标准分值列预填,指标值/页码列留空
  3. 保存输出{项目名称}-商务和技术评审索引表.docx

优先使用脚本 scripts/generate_scoring_index.py 一键生成:

# 写入投标文件模板(深度拷贝招标文件格式)
python scripts/generate_scoring_index.py <招标文件.docx> -t <投标文件模板.docx>

# 生成独立文档
python scripts/generate_scoring_index.py <招标文件.docx> -o <输出目录> --bidder-name "XX科技有限公司"

或使用 Python API:

from scripts.generate_scoring_index import generate_scoring_index

# 写入模板
generate_scoring_index('招标文件.docx', template_path='投标文件模板.docx')

# 生成独立文档
generate_scoring_index('招标文件.docx', output_dir='./outputs', bidder_name='XX科技')

提取函数:

from scripts.tender_extractor import extract_scoring_items

data = extract_scoring_items('招标文件.docx')
# data['business']   — 商务评审(index_header0/headers/items/total_score/index_note)
# data['technical']  — 技术评审(同上)
# index_headers 为 Row1 实际列名(6列:序号|评审项目|计分模型|标准分值|指标值或评分项|文件名称/页码)
# index_header0 为 Row0 采购机构行

生成示例(写入投标文件模板):

# 1. 从招标文件深度拷贝索引表格式(6列双行表头)
tender_doc = Document('招标文件.docx')
_, tender_tbl, _ = find_table_by_prev_text(tender_doc, ['商务评审索引表'])

# 2. 深度拷贝并填入评分数据
new_tbl = copy.deepcopy(tender_tbl._tbl)
# ... 保留双行表头+合计行+备注行,清除示例数据,按分类插入数据行 ...
template_doc.element.body.replace(tmpl_elem, new_tbl)
template_doc.save('投标文件模板.docx')

表格格式(6列双行表头):

Row0: 序号 | 采购机构填写 | 采购机构填写 | 采购机构填写 | 报价供应商填写 | 报价供应商填写
Row1: 序号 |   评审项目   |   计分模型   |  标准分值   | 指标值或评分项 | 文件名称/页码

输出规范

文件命名

  • 单文档:{项目名称}-{文档类型}.docx,如 XX项目-技术偏离表.docx
  • 多文档打包:所有文档放在 {项目名称}-投标文件/ 目录下

文档质量标准

  • 专业性:使用IT行业专业术语,符合投标文件规范用语
  • 针对性:根据招标文件具体条款编写,不产生泛泛的模板文字
  • 完整性:覆盖该文档类型应有的全部章节和要素
  • 一致性:所有文档间的公司信息、项目名称、技术参数保持一致
  • 格式规范:严格遵循模板样式,表格清晰、标题层次分明

偏离表格式

偏离表的列结构以招标文件中的偏离表格式为准。如招标文件未提供偏离表模板,使用以下通用格式:

通用商务偏离表: 序号 | 招标条款号 | 招标文件商务要求 | 投标文件商务响应 | 偏离说明

通用技术偏离表: 序号 | 技术要求 | 投标人响应内容 | 偏离情况 | 页码 | 说明

技术偏离表固定填写规则(详见 references/technical-deviation-table.md):

  • 投标人响应内容 — 固定格式:我单位完全响应以下技术要求: + 换行 + 复制技术要求原文
  • 偏离情况 — 所有条目统一填写:无偏离
  • 页码 — 所有条目统一填写:详见页
  • 说明 — 通常留空,★关键项可标注"★关键项"

项目内容/评审项目字段的填写规则:

如果偏离表包含"项目内容"或"评审项目"列,该列填写此条款在招标文件中所属的章节标题名称

  • 正确:货物(一)(交付时间、交货方式) ← 招标文件中的章节标题
  • 正确:报价供应商资格条件 ← 招标文件中的标题名称
  • 错误:第二章3.1条 货物(一)(交付时间、交货方式) ← 不要把条款编号放在这里

条款编号放在"招标文件要求"列的正文中引用(如"详见第二章3.1条"),和"项目内容"分开。这样项目内容列简洁清晰,条款编号在要求列中精确定位。

技术实现提示

依赖与路径

  • 必须安装 python-docx(操作 Word 文档),PDF 招标文件另需 pdfplumber
  • 模板路径为 assets/doc-template.docx(相对于技能目录)
  • 所有文档操作工具函数已封装在 scripts/doc_utils.py,生成文档时直接 import 使用
  • 招标文件信息提取工具已封装在 scripts/tender_extractor.py,提取项目信息/技术要求/评分标准/偏离表格式时使用

技能目录结构

bid-build/
├── SKILL.md                           ← 技能主文档
├── scripts/                            ← 可执行脚本
│   ├── doc_utils.py                    ← 文档生成工具:init/add_heading/add_table/save 等
│   ├── tender_extractor.py             ← 招标信息提取:TenderInfo/BidderInfo + 项目信息/技术要求/评分表/偏离表格式
│   ├── generate_bid_framework.py       ← 投标文件框架生成:11步全流程(样式融合→深度拷贝→清理→回填→投标人信息→表格刷新)
│   ├── generate_review_index.py        ← 资格性/符合性审查索引表生成:提取+写入模板/独立文档
│   ├── generate_scoring_index.py        ← 商务/技术评审索引表生成:深度拷贝格式+填入评分数据
│   ├── generate_business_deviation.py    ← 商务偏离表生成:提取商务要求+逐条响应
│   ├── generate_technical_deviation.py   ← 技术偏离表生成:提取技术要求+逐条响应
│   └── assemble_bid_document.py        ← 投标文件智能组装:扫描材料→智能匹配→自动插入图片和附件
├── assets/
│   └── doc-template.docx               ← Word 样式模板
└── references/                         ← 参考模板
    ├── bid-framework-template.md       ← 投标文件框架生成指南
    ├── technical-deviation-table.md
    ├── technical-solution.md
    └── ...

表格使用模板样式

生成表格时使用 scripts/doc_utils.py 中的 add_table(),而非手写代码:

from scripts.doc_utils import add_table

# 一行代码创建符合模板样式的表格
table = add_table(doc,
    headers=['序号', '名称', '数量', '单价', '备注'],
    rows=[
        ['1', 'LED显示屏', '10', '【填写】', ''],
        ['2', '视频处理器', '2', '【填写】', ''],
    ]
)

内部实现要点(使用者无需关心):

  • table.style = doc.styles['表格样式'] — 表格的整体边框、间距等格式
  • p.style = doc.styles['表格-[Alt+w]'] — 每个单元格内段落的文字格式
  • 表头行自动加粗

从招标文件中提取信息

使用 scripts/tender_extractor.py 提取招标文件中的关键信息,而非重复手写提取代码:

from scripts.tender_extractor import (
    extract_project_info,        # 项目名称/编号/预算/采购方式
    extract_document_structure,  # 章节层级
    find_scoring_tables,         # 评分标准表格
    find_deviation_table_format, # 偏离表模板列结构
    extract_qualification_tables,# 资格性/符合性审查表(旧接口,返回三元组)
    extract_qualification_compliance_items, # 资格性/符合性审查(新接口,含索引表格式+分类标题)
    extract_scoring_items,     # 商务/技术评审标准表(含索引表格式+分值+评审细则)
    list_all_tables,             # 浏览全部表格
    extract_technical_requirements, # 技术要求章节
)

# 提取项目信息
info = extract_project_info('招标文件.docx')
print(f"项目: {info.project_name} ({info.project_code})")
print(f"预算: {info.budget}, 采购方式: {info.bid_type}")

# 查找偏离表格式(用于确保输出格式与招标文件一致)
dev_fmt = find_deviation_table_format('招标文件.docx')
if dev_fmt:
    print(f"偏离表列结构: {dev_fmt['headers']}")

# 查找评分表
scoring = find_scoring_tables('招标文件.docx')
for s in scoring:
    print(f"表格{s['table_index']} [{s['type']}]: {s['headers']}")

生成投标文件框架

使用 scripts/generate_bid_framework.py 一键生成投标文件模板:

from scripts.generate_bid_framework import generate_bid_framework
from scripts.tender_extractor import BidderInfo

# 准备投标人信息(可选,未提供则保留占位符)
bidder = BidderInfo(
    full_name='XX科技有限公司',
    short_name='XX科技',
    legal_rep='张三',
    authorised_rep='李四',
    address='北京市海淀区XX路XX号',
    phone='010-12345678',
    email='company@example.com',
)

# 一键生成
output_path = generate_bid_framework('招标文件.docx', './outputs', bidder_info=bidder)

脚本自动完成11步:提取信息 → 定位章节 → 样式融合 → 深度拷贝 → 清理冗余样式 → 清除页眉页脚 → 回填项目信息 → 回填投标人信息 → 替换落款日期 → 回填投标有效期 → 表格样式刷新。

从招标文件中提取偏离表格式(手动方式)

如果 find_deviation_table_format() 未自动识别,手动遍历表格:

from docx import Document

tender_doc = Document('用户上传的招标文件.docx')

# 查找所有表格,输出其列结构
for i, table in enumerate(tender_doc.tables):
    if table.rows:
        headers = [cell.text.strip() for cell in table.rows[0].cells]
        print(f'Table {i}: {len(table.columns)} cols, headers: {headers}')

人工判断哪个表格是偏离表模板(通常表头包含"序号"+"招标"+"投标"+"偏离"等关键词),然后按该表格的列结构生成输出文档。