招标文件解析与立项报告生成
> 立项报告模板来源:本 skill 生成的立项报告初稿基于通用《投标立项报告》模板结构。
> 自带默认模板为已脱敏的完整示例(公司名以"XX公司"占位);正式使用时建议用 --template 指定本公司在用模板。
> 默认模板为 references/立项报告默认模板.docx(该模板的完整示例);用户未提供模板时默认使用它,也可用 --template 指定其他模板。
> scripts/report_template_defs.py 中的字段定义(段落+报告元信息+主表章节)均从该模板提取。
何时使用
- 用户给出招标文件(.doc/.docx/.wps),要求生成立项报告初稿或投标立项材料。
- 投标前需要逐项核对资格、报价、评标、废标、合同风险并落成立项报告。
- 需要对立项报告模板的每个字段追溯招标文件原文出处。
核心原则
- 只读:不修改源招标文件;中间文件写入 output/。
- 通用类目:提取类目由
scripts/sections_defs.py定义(6 分组 × 37 类目),
是唯一类目权威,定义提取数据 JSON提取块的键名结构。禁止按某个项目临时增删/改名类目。 - 两件套·内外分工:立项报告初稿(docx)为对外展示的正式结果,
立项报告原文对照表(xlsx)为内部人员内控审核的结果。两者共享
scripts/report_template_defs.py字段定义,保证模板字段与对照表逐条对应。
立项报告原文对照表每行必须给出细颗粒度的招标文件原文片段 + 具体出处定位,
禁止用"综合分析""(项目元信息)"等无信息量的占位描述——值来自哪段原文、
位于哪个章节,必须逐条可查。 - 表格外·报告级信息等待填写:模板表格外(报告日期、报告编号、落款单位、
落款日期等)并非固定模板内容,需人工确认后才能填写。数据 JSON 的
report_meta块提供时按值填入;未提供时如实按等待填写格式:
报告日期/落款日期填"xx年xx月xx日"、报告编号/未知单位行填"xxx"、
落款单位首行保留模板固定公司名(默认模板中为"XX公司")。
严禁沿用模板中残留的旧项目内容(如模板自带的日期/编号/分公司名)。 - 找不到内容如实说明:填"招标文件中未提及",禁止留空、禁止用"无"替代。
- 空值区分:
未载明 / 待澄清 / 不适用 / 暂未获取附件,禁止用"无"替代"文件未说明"。 - 推算标注:凡推算的值须保留原文表述与推算过程。
- 前后文差异必查:跨章节口径不一致进"前后文描述差异"组,两处出处都记录。
- 填入内容格式统一:立项报告采用模板填充模式——以模板 docx 为底稿,
表头/结构/版式不动。默认使用自带默认模板references/立项报告默认模板.docx
(通用《投标立项报告》模板,已脱敏);用户未提供模板时默认使用它,
也可--template指定其他模板 docx。
所有由生成器填入的内容(项目简介、表格值列、报告日期/编号、落款区等)
一律统一为:西文 Times New Roman + 中文仿宋(FangSong)+ 12pt(小四,
sz=szCs=24);加粗按语义区分——项目简介整行、表格标签列
加粗;表格值列、报告日期/编号、落款区非加粗。项目简介每个类目后统一补
全角冒号":"分隔类目与所填信息。 - 初稿定位与人工复核:AI 提取结果仅为初稿。高风险字段(预算金额、
计划工期、资质门槛、废标条款)必须由业务人员人工复核确认后方可对外使用;
复核以《立项报告原文对照表》的"原文片段 + 出处定位"为线索逐条核对。
通用类目清单(6 分组 × 37 类目)
> 该类目体系是提取数据 JSON 提取 块的结构定义,立项报告字段定义
> report_template_defs.py 通过 c:分组:类目 从中取数。
| 分组 | 类目数 | 类目 |
|---|---|---|
| 基础信息 | 18 | 项目名称 / 标段名称 / 业主名称 / 计划工期 / 建设地点 / 是否接受联合体投标 / 提出问题的截止时间 / 报名截止时间 / 开标时间 / 质量要求 / 分包 / 最高投标限价或其计算方法 / 投标有效期 / 投标保证金 / 履约担保 / 预付款 / 进度款 / 评标委员会组建 |
| 资质要求 | 12 | 资质要求 / 财务要求 / 业绩要求 / 信誉要求 / 项目经理资格要求 / 技术负责人资格要求 / 设计负责人资格要求 / 安全负责人资格要求 / 施工负责人资格要求 / 项目管理机构其他主要人员 / 施工机械设备要求 / 其他要求 |
| 评标办法 | 4 | 评标办法及分值构成 / 投标报价评分方式 / 技术标评分细则 / 资信业绩评分标准 |
| 废标项 | 1 | 废标项 |
| 前后文描述差异 | 1 | 前后文描述差异 |
| 其他要求 | 1 | 其他要求 |
执行流程
第 1 步:确认文件与提取通道
- 确认输入文件路径与格式(.docx/.doc/.wps)。
- 优先使用本地 Office 编辑会话读取;不可用时改用只读提取脚本(第 2 步)。
- 扫描版 PDF 预处理:招标文件为扫描版 PDF(图片型、无文字层)时,须先用
OCR 转为可复制文本(PDF→Word/可复制文本层)后再进入第 2 步;本 skill 不直接
处理图片型扫描件。OCR 结果需抽查关键章节(投标人须知、评标办法)确认无乱码、
无丢行,再开始提取。
第 2 步:只读文本提取
python scripts/extract_doc_text.py "<输入招标文件>" "<output/XX_全文提取.txt>"
- .docx:解析 word/document.xml;.doc(OLE2):抽取 UTF-16LE 文本流。
- 输出关键章节命中清单;六标准章节缺失时提示完整性风险。
第 3 步:按通用类目逐组提取
按上方类目清单逐组检索,类目固定不变。某类目找不到对应内容 → 如实填"招标文件中未提及"。
编写提取结果时的硬性要求:
- 最小原文:逐字摘录最短相关片段,禁止大段照搬与跨行共享。
- 出处定位:统一"第X章-节号"格式,精确到条款编号。
- 复合内容可合并概述:一个类目可涵盖多个事实,在提取信息列概述完整。
- main 字段同样要追溯原文出处:立项报告填写的项目元信息/勾选项/复合分析文本
(存于 JSONmain块),须在main_sources块逐字段标注"原文片段 + 出处定位",
供立项报告原文对照表取数;无原文依据的内部记录字段(如提取日期)如实标
"招标文件中未提及 / —"。禁止用"综合分析"等占位描述替代真实原文与出处。 - 报告级信息如实说明:报告日期/报告编号/落款单位/落款日期等表格外信息
招标文件通常不含,写入 JSONreport_meta块(原文标"招标文件中未提及"、出处"—");
未提供时生成器自动按等待填写格式(日期"xx年xx月xx日"、编号"xxx"、
落款首行保留模板公司名),不得沿用模板自带的旧项目日期/编号/分公司名。
第 4 步:生成两份交付物
> 两份交付物共享 scripts/report_template_defs.py 字段定义;
> 其数据底座为 scripts/sections_defs.py 定义的提取类目体系(JSON 提取 块)。
交付物 1:立项报告初稿(scripts/build_approval_report_docx.py)
模板填充模式(基于通用立项报告模板结构):
# 模板填充(默认使用自带默认模板 references/立项报告默认模板.docx)
python scripts/build_approval_report_docx.py "<output/XX_提取数据.json>" "<output/XX_投标立项报告初稿.docx>"
# 模板填充(指定其他模板 docx)
python scripts/build_approval_report_docx.py "<output/XX_提取数据.json>" "<output/XX_投标立项报告初稿.docx>" --template "<其他立项报告模板.docx>"
以模板 docx 为底稿,表头与结构不动,按字段名从 JSON 取值填入。
默认模板为 references/立项报告默认模板.docx(通用《投标立项报告》模板完整示例,已脱敏);用户未提供模板时默认使用它,也可
--template 指定其他模板。
未涉及项均填"招标文件中未提及"。所有填入内容统一强制为
Times New Roman + 仿宋(FangSong)+ 12pt(sz=szCs=24);加粗按语义区分——
项目简介整行与表格标签列加粗,表格值列、报告日期/编号、落款区非加粗;
项目简介段落每个类目后统一补全角冒号":"分隔类目与所填信息。
表格外报告级信息(报告日期/报告编号/落款单位/落款日期):取 report_meta 块,
未提供时按等待填写格式——日期"xx年xx月xx日"、编号"xxx"、落款首行保留模板公司名、
次行及以下"xxx",不沿用模板旧项目内容。
交付物 2:立项报告原文对照表(scripts/build_report_review_xlsx.py)
python scripts/build_report_review_xlsx.py "<output/XX_立项报告原文对照表.xlsx>" "<output/XX_提取数据.json>"
按立项报告模板的全部表头/类目生成原文对照表(8 sheet × 4 列):
"项目简介"段落区域单独一个 sheet;"报告元信息"(报告日期/报告编号/落款单位/落款日期)
单独一个 sheet;主表各章节(基本信息/商机筛选/工程概况/商务概况/投标论证/其他)各一个 sheet。
每个字段标注填写内容、对应招标文件细颗粒度原文片段与具体出处;招标文件不涉及的字段如实说明"招标文件中未提及 / —"。
不得出现"综合分析"等占位描述——所有有值字段的原文与出处必须逐条来自招标文件。
第 5 步:质量自检
- [ ] 六个分组全部命中且逐组检索过
- [ ] 每个类目有提取信息或明确"招标文件中未提及"(不留空)
- [ ] 金额/期限/比例字段均带单位与出处
- [ ] 跨章节口径差异已进"前后文描述差异"组
- [ ] 技术标评分细则逐项提取
- [ ] 立项报告初稿未填项标注"招标文件中未提及"
- [ ] 立项报告初稿项目简介每个类目后带全角冒号":"
- [ ] 立项报告初稿所有填入内容格式统一(Times New Roman + 仿宋 FangSong + 12pt),无 10.5/11/11.5pt 或 FZSJ-FANGSJT/SimSun 等漂移残留(模板填充模式)
- [ ] 立项报告初稿加粗语义正确:项目简介整行、表格标签列加粗;表格值列、报告日期/编号、落款区非加粗
- [ ] 立项报告初稿表格外信息:日期为"xx年xx月xx日"、编号"xxx"、落款首行保留模板公司名、无模板旧项目残留
- [ ] 模板填充模式:主表含全部章节(一至八 + 审批部门九至十二),落款首行为"XX公司"(默认模板自带的脱敏占位,非旧项目残留)
- [ ] 立项报告原文对照表覆盖模板全部字段(含"报告元信息"sheet)
- [ ] 立项报告原文对照表无"综合分析"等占位,有值字段均标注真实原文与具体出处
- [ ] 输入为扫描版 PDF 时已完成 OCR 转文字并抽查关键章节无乱码/丢行
- [ ] 已提示用户:高风险字段(预算金额/计划工期/资质门槛/废标条款)须人工复核后方可对外使用
已知坑点
- 类目易被"项目化":通用类目禁止加入项目特有条目,项目特有内容归入"其他要求"。
- 找不到 ≠ 无:"招标文件中未提及"表示文件没写,"无"会被误读为"明确没有"。
- 技术评分表最易漏项:务必逐行读技术评分表,包括业绩加分与特殊规则。
- 履约担保前后文口径:前附表与合同条款可能不一致,两者并存必须进差异组。
- 合并单元格重复触发:python-docx 对垂直合并单元格多行返回同一文本,用 first 标志仅处理首行。
- 类目定义共享:新增/修改类目只改
sections_defs.py一处(JSON提取块键名随之变化),禁止在生成器中私自硬编码。 - 立项报告字段定义共享:修改模板字段映射只改
report_template_defs.py一处。 - 模板旧项目残留:立项报告模板表格外常带旧项目日期/编号/落款(如"报告日期:20xx年x月x日""报告编号:XX-XXX-XXX"),生成时必须按 report_meta 覆盖为实际值或等待填写格式(日期"xx年xx月xx日"、编号"xxx"),严禁原样保留。
- 落款首行保留公司名:落款单位首行是模板固定的公司名称(默认模板中为"XX公司"),不是旧项目残留,生成时必须保留;仅次行及以下(分公司等)按需等待填写。
- 报告级信息不属招标提取项:报告日期/编号/落款属报告自身要素而非招标文件提取项,只出现在立项报告两件套(初稿填等待填写格式、对照表标"招标文件中未提及"),不进入类目提取数据。
- 填入内容格式漂移:模板填入位置普遍漂移——项目简介区多数行继承 Normal 样式(10.5pt)、
个别行显式 12pt;表格值列 11/11.5/12pt 混用;落款/工程量表用 FZSJ-FANGSJT 10.5pt、
业主西文地址用 SimSun。生成器必须对所有填入 run 强制覆盖为 Times New Roman +
仿宋(FangSong)+ 12pt,并按语义区分加粗,不能沿用模板原 run 格式。 - 默认模板 vs 指定模板:默认使用自带默认模板
references/立项报告默认模板.docx
(通用《投标立项报告》模板完整示例,已脱敏),无需用户提供;
用户提供其他模板时用--template指定。两种情形均以模板 docx 为底稿填表,
表头/结构/版式不动(共享report_template_defs.py字段定义)。
参考文件
references/立项报告默认模板.docx:默认立项报告模板(通用《投标立项报告》模板完整示例,已脱敏;用户未提供模板时使用)。该模板以 base64 内嵌于scripts/_default_template.py;发布到 skill-hub(不支持上传 .docx 二进制)时无需随包上传此文件,运行build_approval_report_docx.py会在缺失时自动还原。references/字段字典.md:通用类目清单、JSON 数据模型(含 report_meta)、空值约定、立项报告字段映射scripts/extract_doc_text.py:只读文本提取(.doc/.docx)scripts/sections_defs.py:提取类目定义唯一权威(6 分组 × 37 类目,定义 JSON提取块结构)scripts/report_template_defs.py:立项报告模板字段定义(基于通用立项报告模板;段落+报告元信息+主表章节 + resolve)scripts/build_approval_report_docx.py:交付物①立项报告初稿(数据驱动,模板填充模式,默认使用自带默认模板)scripts/build_report_review_xlsx.py:交付物②立项报告原文对照表(8 sheet × 4 列)