---
title: "全球采购情报"
description: "WorldMonitor 如何汇聚活跃公共招标机会、说明来源健康状态，并提供分页采购 API。"
---

WorldMonitor 将**开放机会**与历史**近期授标**分开处理。开放机会显示在独立的 **Global Procurement** 面板中，是面向未来、由定时种子任务维护的数据流；授标记录仍在 Economic 面板中来自 USASpending。

Global Procurement 是 **Pro 功能**。免费用户会看到标准登录或升级门槛，RPC 还会在服务器端独立验证有效的一级订阅。浏览器仅在 Pro 权限有效时请求并保留招标数据；退出登录或降级会清除面板数据及其内存响应缓存。近期授标仍保留在免费的 Economic 面板中。

Pro 用户可以搜索标题和描述，按买方、两位国家代码和来源筛选，选择排序方式，并分页浏览完整结果集。面板不会直接读取 Upstash，而是调用分页 RPC，由 RPC 读取规范化的种子快照。

## 覆盖范围与新鲜度

初始适配器读取官方公开采购来源：

| 来源 | 覆盖范围 | 说明 |
| --- | --- | --- |
| SAM.gov | 美国 | 需要部署环境中的 `SAM_GOV_API_KEY`；未配置会显示为不可用，而不是零结果。 |
| TED | 欧盟 | 来自 TED Search API 的公开采购公告。 |
| Contracts Finder | 英国 | 已发布的 OCDS 招标记录。 |
| CanadaBuys | 加拿大 | CanadaBuys 每日更新的官方联邦开放招标 CSV。 |
| GETS | 新西兰 / 大洋洲 | 官方 GETS RSS 中当前开放的招标。 |
| 世界银行采购公告 | 多边 / 全球 | 面向借款国的世界银行资助机会公告。 |

Railway 种子任务每小时运行一次，并把规范快照写入 `economic:global-tenders:v1`。其三小时 TTL 能在单次任务失败时保留最近一次成功结果。若某个适配器失败，该来源最后一次成功的数据会与其他健康来源的结果一起保留，响应会报告 `availability: "partial"`；若全部适配器失败，则以 `availability: "stale"` 提供最后一次成功的数据。

`availability` 的含义如下：

- `available`：所有已配置适配器均成功且至少返回一条公告。
- `empty`：已配置适配器均成功，但没有返回公告。
- `partial`：至少一个适配器不可用或失败，另一个适配器成功。
- `stale`：当前所有来源请求均失败，因此正在提供最后一次成功的数据。
- `unavailable`：没有可用的新鲜规范快照。

数据流响应会包含每个来源的状态、记录数、最近请求时间、最近成功时间和过期标记。每个来源的种子键也会独立注册到 `/api/health`。对未覆盖国家的筛选绝不会被解释为确认的零机会。

## 部署配置

只有美国 SAM.gov 适配器需要新凭据：

1. 登录 [SAM.gov](https://sam.gov/)，打开 **Account Details**，输入账户密码以查看 API 密钥控件。
2. 请求 **Public API Key**；SAM.gov 会在 Account Details 页面显示生成的密钥。
3. 在运行 `node scripts/seed-bundle-relay-backup.mjs` 的 Railway 服务中添加 `SAM_GOV_API_KEY`。不要通过 `VITE_` 变量公开，也不要提交到仓库。

官方步骤和请求限制见 [GSA Get Opportunities Public API 指南](https://open.gsa.gov/api/get-opportunities-public-api/)。TED、Contracts Finder、CanadaBuys、GETS 和世界银行无需 API 密钥。若未配置 `SAM_GOV_API_KEY`，只有 SAM 来源会显示为 `unavailable`，其他适配器仍会正常运行。

不配置 SAM 是受支持的状态，而非降级：`/api/health` 会将该来源报告为 [`NOT_CONFIGURED`](/docs/health-endpoints)（绿色，不计入 `problems`），而不是错误。因此，从未申请 GSA 密钥的部署仍会得到干净的健康端点。添加密钥后，下一次种子运行即自动转为 `OK`，无需修改任何健康配置。

### 澳大利亚：AusTender 适配器目前被上游阻塞

目前无法安全地上线官方澳大利亚 `austender` 适配器：没有任何允许自动复用的 AusTender 机器可读接口发布开放机会记录所必需的截止时间。以下为截至 2026-07-13 的证据：

- 官方 AusTender 当前 ATM RSS 数据流（`https://www.tenders.gov.au/public_data/rss/rss.xml`，由澳大利亚财政部在 [data.gov.au](https://data.gov.au/data/dataset/latest-approaches-to-markets-listed-on-austender) 注册）只发布公告标题、官方链接、自由文本描述和发布日期，不包含截止时间、买方或分类字段。
- 官方 [AusTender OCDS API](https://github.com/austender/austender-ocds-api) 仅提供 2013 年以来已授予的合同公告，而非开放的市场招标（ATM）。
- data.gov.au 上机器可读的开放 ATM 导出数据止于 2014 年 6 月。
- 截止时间只出现在逐条公告的 HTML 页面上；提取它们意味着抓取 AusTender 网站——这不是文档化的机器可读复用接口，也被本数据流的非目标明确排除。

本数据流绝不表示没有可验证未来截止时间的记录，因此澳大利亚覆盖保持缺失而不是被推断，也不会用新西兰 GETS 数据替代澳大利亚覆盖。按 `country=AU` 筛选时保持未观测国家的标准 `countryCoverage: "unknown"` 语义。一旦 AusTender 通过机器可读渠道发布截止时间，该适配器即可在不改动管道的情况下上线。

## API

`GET /api/economic/v1/list-global-tenders` 仅向 Pro 开放、有意采用分页，且**不会**进入启动批量载荷。它支持 `country`、重复的 `countries`、`region`、`source`、`status`、`buyer`、`published_from`、`published_to`、`deadline_from`、`deadline_to`、`min_value`、`max_value`、`currency`、`category`、`query`、`min_automation_score`、`page_size`、`cursor` 和 `sort`。

支持的排序方式为 `newest`、`closing_soon`、`estimated_value` 和 `relevance`。`page_size` 最大为 100。响应包含已应用的筛选条件、游标、快照时间、可用性和各来源健康摘要。

每条记录都含有稳定的 WorldMonitor ID（`source:sourceNoticeId`）、官方公告链接、来源公告 ID、上游提供时的金额字段、时间戳、分类数据和可追溯的来源名称。缺失的上游字段保持缺失，不会被推断填补。

## MCP 工具

`get_procurement_opportunities` 向已认证的 MCP 客户端暴露同一条规范路由；它绝不直接读取 `economic:global-tenders:v1`。其上下文预算有意设为**默认 10 条紧凑机会，最多 25 条**。它公开 `country`、重复的 `countries`、`source`、`query`、`buyer`、`deadline_from`、`deadline_to`、`sort`、`min_automation_score`、`page_size` 和 `cursor`。

紧凑投影省略描述文本、资格要求和提交 URL，同时保留每条机会的官方 URL、来源、标题、买方、日期、金额、分类、领域、`participationMode` 和精简的 `automationFit`。它还保留游标分页、`total`、`appliedFilters`、`countryCoverage`、可用性、快照时间和来源健康摘要。25 条的 MCP 上限有意小于 REST 路由 100 条的上限。

MCP 工具与 HTTP 路由一样仅限 Pro，且不属于 bootstrap。无筛选工具调用会保留所有开放机会；`min_automation_score` 始终是可选项。完整参数契约见 [MCP 工具参考](/zh/mcp-tools-reference#get_procurement_opportunities)。

## 技术相关性

`automationFit` 是针对软件、AI、数据、网络安全、自动化、云服务及相关术语的透明关键词相关性信号。它包含评分、分类版本、匹配理由和文本证据，**不是**法律意见或采购资格判断；除非上游来源明确提供，`participationMode` 始终为 `unknown`。

可选的 `min_automation_score` 查询参数（1–100 的整数；超出上限会被截断，非整数值会被忽略）仅返回 `automationFit.score` 达到阈值的机会。它默认关闭，因此现有调用方继续收到所有匹配的开放机会；启用时会出现在响应的 `appliedFilters` 中。独立面板以 **Technology relevant only** 复选框提供该筛选。该筛选与每条记录的匹配理由仅表达关键词相关性证据，绝不表示任何 AI 系统、代理或供应商具有投标资格。

仪表板只会在 URL 通过安全处理后显示官方公告链接，并会同时展示与来源提供机会详情对应的相关性理由。
