全国招中标信息-政府采购项目查询-保标招标-x-2

内容来源:clawhub · 原始地址 · 查看安装指南

原始内容


name: sbkj-bidsearch description: 面向世舶科技(武汉)有限公司“保标招标”产品的招投标数据接口业务 Skill。用于根据自然语言查询招中标项目、把 AI 重写条件转换为普通搜索参数、处理搜索列表到项目详情的调用链、获取正文与官方结构化数据、查询附件和采集源网址、查询合同、分析企业画像、检索拟在建项目,以及使用行业推理、分类推理和正文结构化接口。涉及保标招标接口调用、Python脚本联调、API客户端封装、参数排查或业务流程说明时使用。

保标招标接口业务助手

使用前置条件

  • 外部接口调用必须配置 API Key。优先从环境变量 BAOBIAO_ZTB_API_KEY 或项目现有安全配置读取,禁止把真实 Key 写入代码、Skill、日志、示例或提交记录。
  • API 网关基地址为 https://gate.gov-bid.com/outer-gateway/bid,请求地址按参考文档拼接 ?key={API_KEY}
  • 如果当前环境没有 HTTP/MCP/API Client 能力,只能生成调用方案、请求示例、测试样例或排查建议,不要声称已经调用成功。
  • 当前 Skill 的品牌上下文是:公司“世舶科技(武汉)有限公司”,产品“保标招标”。对外宣传、产品介绍或用户可见文案中使用完整名称“世舶科技(武汉)有限公司保标招标”,不夸大接口能力,不虚构客户、数据规模或效果。

总体工作方式

  1. 先识别用户意图和业务场景,不要按接口名称机械选择。
  2. 自然语言检索优先执行“AI 重写条件 → 状态完成 → 转换普通搜索参数 → 普通搜索列表”。
  3. 搜索记录必须保存 projectId/id + publishTime,二者是后续项目详情调用的联合身份。
  4. 区分列表摘要、正文详情、官方结构化详情、附件和采集源网址;根据用户需要选择单接口或组合调用。
  5. 多个项目的正文、结构化详情和附件查询可并行;单个项目详情页也可并行获取互不依赖的数据。
  6. 成功判断同时检查 HTTP 状态、响应 code 和业务 subCode;不要只根据 HTTP 200 判断成功。
  7. 输出中区分官方字段、接口原始字段和 AI 推断字段,不能把 AI 推断结果伪装成官方结构化结果。
  8. 详细参数和字段定义按需读取 references/ 下对应文件,不要一次性加载全部接口资料。

Agent执行优先级

按照以下优先级执行,减少 Agent 在底层接口和实现语言之间反复判断:

  1. 用户要求“查询、测试、联调、调用接口”时,优先使用 Python 脚本;先检查 BAOBIAO_ZTB_API_KEY,再调用脚本。
  2. 用户要求“把 AI 条件转换成普通搜索参数”时,优先运行 scripts/compile_search_condition.py,不要手工重写 JSON。
  3. 用户要求“直接调用某个接口”时,使用 scripts/invoke_baobiao_api.py,通过 --endpoint 和 JSON 请求体调用,不要在回答中拼接含 Key 的 URL。
  4. 用户要求实现正式项目功能时,根据目标项目实际技术栈实现;不要默认假设使用 .NET、Java 或其他特定语言。
  5. 用户只要求解释方案或分析接口时,不调用外部接口,读取对应 references/ 并给出调用链和参数说明。
  6. 脚本返回非零退出码时,先解释参数错误、网络错误、权限错误或业务错误,再决定是否需要修改请求;不要把失败包装成成功。

脚本调用模板

$env:BAOBIAO_ZTB_API_KEY = "从安全渠道取得的Key"
python scripts/invoke_baobiao_api.py `
  --endpoint searchProjectApi `
  --data-file request.json

脚本输出约定:正常 JSON 输出到 stdout,错误输出到 stderr;退出码 0 表示成功,1 表示调用或输入错误,2 表示缺少 API Key 或参数错误,3 表示接口返回业务失败。API Key 只在当前进程临时提供,不写入 Skill 或项目文件。

业务路由

用户意图 标准处理
自然语言搜索招中标项目 读取 natural-language-search-workflow.md,AI 重写后调用普通搜索
已有结构化筛选条件搜索 读取 search-condition-mapping.mdapi-reference.md,直接调用普通搜索
根据项目编号查项目 调用项目编号搜索,再按 projectId + publishTime 进入详情链路
查看公告全文 调用正文详情
提取预算、中标金额、联系人、投标企业 调用官方结构化详情
下载或查看附件 调用附件列表;正文详情中的附件概要不能替代下载接口
跳转原始来源 优先使用结构化详情的 collectUrl,缺失时调用采集源网址
查询合同 读取 contract-workflow.md,调用合同搜索,必要时进入项目详情链路
查询企业基本情况、联系人、客户、供应商 读取 company-workflow.md,按需调用企业画像接口组
查询拟在建项目 读取 planned-project-workflow.md,使用拟在建项目独立模型
推理行业、分类或从正文抽取字段 读取 ai-workflow.md,明确标记 AI 推断结果

自然语言搜索硬规则

aiSearchSubmitPolling 视为普通搜索的条件编译器,不要让 Agent 直接凭空拼装复杂普通搜索参数。

  1. 提交 userQuery,取得 requestKey
  2. 按接口契约轮询处理状态;只有 status=completed 才继续。
  3. processingsearch_rewrite_donearea_code_doneindustry_done 表示仍在处理,不能提前搜索。
  4. failed 必须返回 errorMsg 或可定位的失败原因。
  5. searchConditionareaCodeindustryCodes 转换成普通搜索请求。
  6. 开始日期补 00:00:00,结束日期补 23:59:59
  7. 多个 subjects 默认按 OR 语义使用英文竖线连接;如果用户明确要求同时出现,改用空格并说明语义。
  8. enterpriseName 映射到 companyNameprojectClassIds 映射到 projectClassIDpurchaseTypeId 映射到 purchaseTypeID
  9. 行业编码按一级、二级、三级分别合并去重。
  10. subcontractFlag 在普通搜索接口没有明确对应字段,必须提示“未透传”,不能静默丢弃。
  11. 普通搜索中的 inCludeKW 拼写必须保持接口原名。
  12. 普通搜索 pageNumber 不超过 50;需要总数时使用接口约定的 pageNumber=0,并说明不会返回完整记录。

如果文档没有明确轮询请求如何携带 requestKey,先标记接口契约待确认;不要猜测参数名,也不要伪造“已完成”。

列表到详情的业务关系

  • 搜索列表接口只负责发现和展示摘要,不是完整内容来源。
  • 正文详情接口 getZTBProjectDetail 负责 HTML 原文、标题、展示字段和正文附件概要。
  • 结构化详情接口 getZTBStructreDetail 负责项目编号、标段、预算、中标金额、时间、地点、主体联系人和投标企业等官方业务字段。
  • 附件列表接口 getZTBProjectFiles 负责下载 URL、后缀、大小和处理状态。
  • 采集源网址接口 getCollectUrl 负责原始来源跳转;结构化详情已有 collectUrl 时优先使用它。
  • 完整项目详情页通常并行获取正文、官方结构化详情和附件;只有用户要求原始来源或 collectUrl 缺失时才补充采集源网址。
  • 正文金额是展示值,结构化预算/中标金额是分析值;两者不能无提示混用。

统一项目身份与结果模型

使用以下逻辑模型组织结果:

BidProjectView
├── identity: projectId, publishTime
├── summary: 搜索列表摘要
├── content: 正文详情和 HTML
├── structured: 官方结构化详情
├── attachments: 可下载附件
└── source: collectUrl, sbkjBidUrl

当项目 ID、发布时间、详情数据或附件数据缺失时,保留缺失状态并说明原因,不用其他字段猜补。

响应、兼容和安全规则

  • 兼容文档中字段大小写差异,例如 costtime/costTimestartdate/startDate
  • data 可能是数组、对象或分页对象,按具体接口解析。
  • 标题和正文可能包含 HTML 高亮标签;同时保留原文版和清洗后的展示版更安全。
  • 金额可能是“16.8万”等带单位字符串,不能直接按数字解析。
  • null、空数组、无附件和接口失败要区分处理。
  • 记录真实请求时脱敏 URL 中的 key,日志不得打印完整 Key。
  • 对外输出时优先使用产品名称“保标招标”,技术说明中可注明其所属公司“世舶科技(武汉)有限公司”。

Skill脚本:Python 3 封装约定

当用户要求直接运行接口联调脚本、验证接口参数或生成普通搜索请求时,使用 scripts/ 下的 Python 3 脚本,不要把脚本逻辑复制到项目 Controller 中。

  • 使用 Python 3.10+ 语法和标准库优先,避免为简单 HTTP/JSON 调用引入额外依赖。
  • 使用 argparse 提供命令行参数,使用 json 处理请求和响应,使用 urllib 完成基础 HTTP 调用。
  • API Key 只能从环境变量或显式安全配置读取,默认使用 BAOBIAO_ZTB_API_KEY;禁止写入脚本、示例、日志和错误信息。
  • 脚本入口使用 main()if __name__ == "__main__",通过明确退出码表示成功、参数错误、接口错误和业务失败。
  • 对公共函数、关键转换函数和异常兜底路径编写中文 docstring,说明参数、返回值和失败原因。
  • 请求 JSON 使用 UTF-8;输出 JSON 时保留中文,错误信息输出到 stderr,正常结果输出到 stdout。
  • 脚本只负责确定性的接口调用、参数转换和离线验证;复杂业务编排、持久化、权限和正式 API 对外能力应放在调用方的正式业务服务中。
  • AI 重写轮询参数未在接口文档中明确时,脚本不能自行猜测轮询协议;应先输出待确认契约或等待用户提供接口约定。

参考资料导航

  • 总接口、枚举和字段:references/api-reference.md
  • 自然语言条件重写与普通搜索:references/natural-language-search-workflow.md
  • 列表、正文、结构化、附件和来源关系:references/project-detail-workflow.md
  • 合同搜索:references/contract-workflow.md
  • 企业画像:references/company-workflow.md
  • 拟在建项目:references/planned-project-workflow.md
  • AI 行业、分类和正文结构化:references/ai-workflow.md
  • 枚举、响应兼容和异常:references/enums-and-response-rules.md
  • 品牌、产品介绍和运营宣传口径:references/brand-and-promotion.md

可执行脚本

  • scripts/invoke_baobiao_api.py:从环境变量读取 API Key,安全调用指定保标招标 POST 接口。
  • scripts/compile_search_condition.py:将 AI 重写接口返回的 JSON 转换为普通搜索接口请求 JSON;支持从文件或标准输入读取。

调用脚本前先配置 BAOBIAO_ZTB_API_KEY。脚本不会把 Key 写入输出或错误信息。AI 重写轮询接口的具体请求格式在原始文档中未完全明确,因此脚本只负责提交和条件编译,不擅自猜测轮询请求参数。