tech-bid-manageV1.2_20260424/utils/tender_kind_sections.py
2026-04-24 18:53:49 +08:00

279 lines
15 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
按招标文件类型(工程 / 服务 / 货物)区分的章节正文生成提示词模板。
与 modules.generator.BID_WRITING_SYSTEM 配合使用;自称以系统铁律为准,统一用「我方」。
"""
import re
from typing import Optional
VALID_TENDER_KINDS = frozenset({'engineering', 'service', 'goods'})
DEFAULT_WORD_COUNT_SPEC = (
'- 一般小节:不少于 2000 字;核心技术/重点评分章节:不少于 4000 字\n'
'- 字数须由实质方案内容支撑,禁止用重复项目背景或复述招标要求凑字数\n'
'- 有实质细节的展开写,原则性描述可简洁处理;通过流程、节点、比选、管控展开满足篇幅'
)
TENDER_KIND_CLASSIFY = """\
你是一名招标文件分类专家。根据以下招标文件摘录,判断本项目技术标书应采用的「写作模板类型」。
只输出以下三个英文单词之一,不要输出任何其他文字、标点、换行或解释:
engineering
service
goods
含义:
- engineering工程施工类建筑、市政、公路、水利、装修、园林、拆除等以现场施工组织、工艺、机械、进度网络为主
- service服务类咨询、设计、监理、运维、物业、保洁、餐饮配送、培训、安保、技术服务等以人力/智力交付、流程、SLA 为主)
- goods货物类设备、材料、车辆、家具、软硬件供货等以产品规格、供货、质保、验收为主含附带安装指导仍以供货为主可归此类
判定规则:
若主要为施工安装且涉及土建/结构/施工机械与工期,归为 engineering。
若主要为服务过程、人员驻场、响应时效与服务质量体系,归为 service。
若主要为产品技术规格、供货批次、出厂检验与到货验收,归为 goods。
若施工与供货并重,以现场施工量与工期为主则 engineering以设备物资交付为主则 goods。
【招标文件摘录】
{excerpt}
"""
def get_tender_kind_classify_prompt(excerpt: str) -> str:
return TENDER_KIND_CLASSIFY.replace('{excerpt}', excerpt or '')
def parse_tender_kind_response(response: str) -> str:
"""从模型返回中解析出 engineering / service / goods失败则 engineering。"""
if not response:
return 'engineering'
tokens = re.sub(r'[^a-zA-Z]+', ' ', response).lower().split()
for w in tokens:
if w in VALID_TENDER_KINDS:
return w
low = response.lower()
for k in ('engineering', 'service', 'goods'):
if k in low:
return k
return 'engineering'
def normalize_tender_kind(kind: Optional[str]) -> str:
k = (kind or '').strip().lower()
return k if k in VALID_TENDER_KINDS else 'engineering'
# ── 工程类 ───────────────────────────────────────────────────────────────
SECTION_DETAILS_ENGINEERING = """\
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
- 角色:资深工程施工组织设计专家
- 任务:撰写通用型工程施工组织设计技术章节
【核心定位】
- 通用施工模板,适用于建筑、市政、公路、水利等工程施工类项目
- 聚焦:施工方案、工艺方法、机械设备、进度计划、质量安全控制
- 正文为可直接提交的成稿语句:凡招标文件概要或工程量清单摘要已给出的工程量、地质、工期、指标等,可如实融入叙述;未给出的具体数值、型号、台数、吨位等,一律用通顺的中文概括表达(如"相应规格""与进度及作业面相匹配的台套""符合设计及规范要求的能级"),不得使用方括号或待填项留白
【内容特征】
- 施工工艺描述到"方法层面";可引用规范条文名称或编号(如"应符合JTG/T 3610要求");无依据处不写臆造数字
- 设备与资源配置:写清设备类别与用途,用"按工况与设计要求选配相应规格与数量""满足流水作业与峰值强度需要"等概括句式,禁止出现"[型号][数量]台"类占位
- 进度计划使用相对阶段("施工准备期""主体施工期")而非具体日期
- 技术措施可提供多方案比选,用"视地质与水文条件选用适宜工艺"等自然语言衔接现场条件,禁止方括号待填
【未定参数的写法(替代一切占位符)】
- 工程规模与结构:用"本工程相应单体与线路区段""按设计结构形式与跨度条件"等概括,不罗列未提供的具体数字
- 技术参数:已见于招标/清单的写具体值;未见者写"按设计强度等级与验收标准执行""压实度与分层厚度满足规范及设计要求"
- 机械与劳动力:写"配置满足峰值强度与关键线路需要的机械组合""劳动力按施工阶段动态投入并保持关键岗位持证齐备"
- 时间节点:写"在招标工期内划分准备、主体、收尾阶段并设置可控里程碑",无具体日历则不用臆造周数
【行文规范】
- 自称统一用「我方」,禁用「我们」「本公司」
- 招标人称「招标方」或「建设单位」
- 禁止前导句和AI套话综上所述、高度重视等
- 列举用(1)(2)(3),禁用"首先其次"
- 纯文本输出,段落间空行分隔
【防过拟合约束】
- 不绑定具体地名与局地气候细节,改为"结合项目环境与季节特点采取针对性措施"
- 不绑定特定施工方法(如不说"必须用旋挖钻",改为"根据地质选用适宜桩基工艺"
- 使用弹性表述:"按设计要求""视现场情况""符合规范规定"
【字数要求】
{word_count_spec}
- 通过展开多方案比选、详细工艺流程、管控节点来满足篇幅
【输入】
- 招标文件概要:{summary}
- 标书目录:{outline}
- 子小节标题:{subsection_title}
直接输出正文,不含标题和解释。"""
# ── 服务类 ───────────────────────────────────────────────────────────────
SECTION_DETAILS_SERVICE = """\
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
- 角色:资深服务方案架构师
- 任务:撰写通用型服务项目实施方案
【核心定位】
- 通用服务模板,适用于咨询服务、运维服务、技术服务、物业管理、培训服务等
- 聚焦:服务方案、实施流程、人员配置、质量保障、响应机制、服务标准
- 严禁出现工程施工技术参数(如混凝土标号、压实度等)
- 正文为成稿:招标/采购文件已载明的服务范围、人数、响应时限、到场要求等可如实写入;未载明的不得用方括号待填,改用"按采购文件与服务等级要求配置""满足驻场与高峰时段人力需要""建立分级响应与升级机制"等概括表述写清含义
【内容特征】
- 服务流程:按"接收需求→分析评估→方案制定→实施执行→验收交付→持续改进"框架展开
- 人员配置:强调专业资质与岗位角色齐全,用"配备满足本项目服务范围与关键岗位持证要求的人员力量""项目经理及骨干具备相应执业或认证资格"等完整句子,禁止"[资质][岗位][数量]名"式占位
- 质量保障使用服务体系标准如ISO 9001、ITIL、ITSS而非工程规范
- 响应机制:写清"受理—分派—处理—回访/关闭"闭环;时限已见于招标文件的写具体值,未见者写"按招标文件及行业通行服务等级划分响应与处理时限,并设置升级与应急通道"
- 服务标准可引用SLA框架用自然语言描述指标层级与考核方式禁止用方括号代替指标
【未定参数的写法】
- 服务范围与对象:用"采购文件约定的服务内容与交付边界""服务对象规模与业务场景按项目实际确定"等概括
- 人员与资源:用"与峰值并发与服务等级相匹配的人力与工具配置"
- 场地与备件:用"按需设置服务场所与备件储备,保障连续性与可用性目标"
【行文规范】
- 自称统一用「我方」,禁用「我们」「本公司」
- 招标人称「招标方」「采购人」或「甲方」
- 禁止前导句和AI套话
- 列举用(1)(2)(3),禁用"首先其次"
- 纯文本输出,段落间空行分隔
- 强调"服务承诺""保障措施"的可执行性,避免空泛
【防过拟合约束】
- 不预设具体行业细节(如不说"针对医院HIS系统",改为"针对采购人业务系统与数据环境"
- 服务方案提供"标准模块+可选配置"结构("基础服务包包含...,增值服务可选..."
- 使用"结合采购人行业特点与监管要求""参照同类项目成熟实践"等弹性表述
【内容禁区】
- 禁止出现:施工工艺、材料设备技术参数、工程量计算、施工机械配置
- 禁止出现:建筑结构、土木工程技术措施
【字数要求】
{word_count_spec}
- 通过详细描述服务流程节点、人员职责分工、质量检查点、应急预案来满足篇幅
【输入】
- 招标文件概要:{summary}
- 标书目录:{outline}
- 子小节标题:{subsection_title}
直接输出正文,不含标题和解释。"""
# ── 货物类 ───────────────────────────────────────────────────────────────
SECTION_DETAILS_GOODS = """\
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
- 角色:资深供货方案技术专家
- 任务:撰写通用型货物采购项目技术响应方案
【核心定位】
- 通用供货模板,适用于设备采购、材料供应、系统集成、软件采购等
- 聚焦:产品技术规格、供货方案、质量保证、安装调试(如有)、售后服务
- 正文为成稿:采购文件、技术规范书或清单中已列明的型号、数量、指标、交货期、质保期等可如实响应;未列明的不得臆造优于招标的数字,亦不得用方括号待填;用"不低于采购文件对应条款""满足招标文件列明的性能与符合性要求""供货批次与到货节奏与现场安装计划相衔接"等概括语言写全句
【内容特征】
- 技术规格:按"指标项—符合性说明"展开;已给出阈值的照写;未给出的写"满足招标文件技术指标与检测方法要求""与同类应用场景主流水平相当且不降低实质性响应"
- 产品描述:强调功能特性、可靠性与标准符合性,避免绑定特定品牌(除非招标文件指定)
- 供货方案:分阶段描述(签约后组织生产或备货、出厂检验、运输与到货验收);具体天数仅在有依据时写出,否则用"按合同与采购文件约定的供货周期执行"
- 质量保障:强调"出厂检验+第三方检测(如要求)+质保期服务"分层体系
- 售后服务:写清质保责任边界、备件与技术支持渠道;时长以招标为准,无则写"按采购文件及国家相关规定执行"
【未定参数的写法】
- 性能与容量:用"满足采购文件规定的处理能力/精度/兼容性等关键指标"
- 数量与批次:用"与合同清单及现场需求匹配的供货批次与配套件配置"
- 服务时效:用"建立可追踪的报修、响应与闭环机制,时限不低于采购文件要求"
【行文规范】
- 自称统一用「我方」,禁用「我们」「本公司」
- 招标人称「招标方」「采购人」或「甲方」
- 禁止前导句和AI套话
- 列举用(1)(2)(3),禁用"首先其次"
- 纯文本输出,段落间空行分隔
- 技术描述客观准确,避免夸大(不用"最先进""行业第一",改用"符合国家标准或采购文件引用标准的要求""满足招标文件实质性条款")
【防过拟合约束】
- 不绑定特定品牌(如不说"采用华为服务器",改为"提供满足采购文件性能与安全要求的服务器设备"
- 无具体数值依据时,不写虚构的"≥某数值",改为对符合性与可检测性的承诺
- 供货方案考虑多种交付场景(国内供货、进口设备、定制生产等)时,用自然语言比较路径优劣与适用条件
【内容禁区】
- 禁止出现:施工组织、安装工艺(除非含安装服务)、土建工程、人员现场施工配置
- 禁止出现:工程管理流程(如施工进度网络图)
【字数要求】
{word_count_spec}
- 通过详细展开技术参数说明、供货流程节点、质量检验程序、售后服务细则来满足篇幅
【输入】
- 招标文件概要:{summary}
- 标书目录:{outline}
- 子小节标题:{subsection_title}
直接输出正文,不含标题和解释。"""
def build_section_detail_prompt(
kind: str,
summary: str,
outline: str,
title: str,
word_count_spec: str = '',
boq_summary: str = '',
) -> str:
k = normalize_tender_kind(kind)
if k == 'service':
base = SECTION_DETAILS_SERVICE
elif k == 'goods':
base = SECTION_DETAILS_GOODS
else:
base = SECTION_DETAILS_ENGINEERING
wc = word_count_spec.strip() or DEFAULT_WORD_COUNT_SPEC
text = base.format(
word_count_spec=wc,
summary=summary or '(未提供)',
outline=outline or '(未提供)',
subsection_title=title or '',
)
text += (
'\n\n【须同步遵守的全局写作禁忌】'
'禁止复述招标要求后再作答;禁止各章重复工程量数字与项目背景;'
'禁止无依据将参数写成优于招标文件;字数不得仅靠套话堆砌;'
'禁止使用方括号、「待填」「TBD」等表示未完稿字段如[型号][数量][数值]'
'未定信息须写成通顺的概括性中文整句。'
'若本任务提示词末尾另有「图示/表格」专用输出规范,其中的结构化标记按该规范执行,'
'不视为待填占位。'
)
if boq_summary.strip():
text += (
'\n\n- 工程量清单关键信息(写作时按需引用清单中已有数量与单位,勿无故复读;'
'清单未列明的分项用概括性施工组织语言描述,禁止使用方括号待填项):\n'
+ boq_summary.strip()
)
return text
# 对话模式:按类型追加的系统说明片段(与 app.py 中基础说明拼接)
CHAT_KIND_INSTRUCTION = {
'engineering': (
'\n【本模板类型:工程施工】'
'侧重施工组织、工艺与质量安全;未在招标文件或清单中出现的具体型号、台数、吨位等'
'用概括性中文表述写清,禁止使用方括号待填;勿虚构优于招标的规格。'
),
'service': (
'\n【本模板类型:服务】'
'侧重服务流程、人员与SLA人数、时限等以招标/采购文件为准,无则概括表述,禁止方括号待填;'
'禁止大段写混凝土标号、压实度、施工机械等工程参数。'
),
'goods': (
'\n【本模板类型:货物供货】'
'侧重规格、供货、检验与质保;指标与交期以采购文件为准,无则概括表述,禁止方括号待填;'
'禁止写施工组织与土建;勿绑定未指定的品牌。'
),
}