现有API路径来自本站文档;标准化数据模型为方案设计,需根据真实响应编写适配器。示例数据不用于实际投标、政策申报或业务判断。
技术档案
| 档案编号 | YM-TECH-20261016-03 / v1.0 |
|---|---|
| 作者与发布主体 | 合肥域明科技有限责任公司 |
| 实现状态 | 设计文章 + 浏览器离线演示 + Python参考实现;不代表新增生产服务上线。 |
| 运行环境 | Python 3.10及以上,标准库;浏览器演示无构建依赖。 |
| 测试与范围 | 10项Python单元测试;演示页面使用5条固定样本。没有验证真实来源覆盖率或邮件送达率。 |
架构与流程

实现逻辑
先划清两种数据来源
现有AI监控API面向问题与平台任务,可以提交问题、查询状态并获取任务结果。它不能被直接等同于政府公告实时订阅接口。招标与政策信息需要独立的来源采集适配器,两类数据进入分析层之前都应保留来源、时间和原始响应。本文将已记录在文档中的接口与拟议的标准化数据层分别描述,避免使用虚构的线上接口路径。
目标规则:业务人员决定关心什么
目标由关键词、任一或全部匹配方式、排除词和地区组成。演示在标题与证据片段中执行不区分大小写的子串匹配,并返回命中的词与排除原因;它不是分词引擎,也不衡量真实语义相似度。实际业务可加品牌别名词典、语言归一化和人工标注集,观察误报与漏报后再扩展。空关键词会阻止执行,避免一次误配置匹配所有信息。
接口接入:HTTP成功和任务完成是两件事
后端从环境变量读取域名与Token,提交任务后保存taskId。轮询应有间隔和总次数限制,只有业务状态为completed才获取完整结果;失败或未知状态停止并报告。网络超时不意味着任务没有创建,示例不会自动重试可能计费的POST。现有状态枚举需在实际联调时确认,示例对未知状态采用停止策略。Token不放在网页、不写入截图,也不随跨域重定向转发。
标准化层:保留原始结果,再生成分析记录
不同平台或版本的返回字段可能不同,应以实际响应编写适配器,将结果映射为source、id、platform、title、text、source_url与时间字段。此处展示的records结构属于参考分析模型,不是现有API响应格式承诺。下载的API客户端保留原始JSON;离线monitor.py接受已标准化的fixture数据。两者之间的字段映射需要在取得真实样本后实现并测试。
分析与分发:指标必须说明样本口径
演示导出每条记录的判断、命中词和证据,并按matched、review、excluded统计。匹配数除以样本数只是当前数据集的规则命中比例,不能称为市场份额或行业覆盖率。客户可在自有环境进一步做分组分析、趋势比较和报表。若引入客户隔离、Webhook或邮件分发,需要额外实现权限、签名校验、重放防护、发件队列和回执记录;本页面不保存真实密钥或发起付费接口请求。
参考数据结构
下表是本专题的标准化字段,不是新发布的线上API响应契约。
| 字段 | 含义 | 处理要求 |
|---|---|---|
| taskId | 现有API任务标识 | 状态查询与结果获取使用 |
| source / platform | 来源 / 平台 | 标准化分析模型字段 |
| rule_version / reasons | 规则版本 / 命中依据 | 记录分析时采用的条件 |
| raw_response / source_url | 原始结果 / 引用地址 | 保留证据,不把模型表述当事实 |
查看完整样本记录
{
"id": "signal-1",
"kind": "signal",
"source": "fixture",
"title": "示例品牌产品信息更新",
"text": "品牌产品新增参数说明,来源为模拟AI回答。",
"region": "安徽",
"budget": null,
"status": "published",
"deadline": null,
"updated_at": "2026-10-16T08:00:00+08:00",
"published_at": "2026-10-16T07:30:00+08:00",
"fetched_at": "2026-10-16T08:05:00+08:00",
"application_open": null,
"platform": "DeepSeek",
"source_url": "https://example.invalid/signal/1"
}核心代码
已有AI监控API:有界轮询与结果读取。完整文件和测试见资料包。
def wait_result(task_id, attempts=12, interval=5):
if attempts < 1 or interval < 1:
raise ValueError('Polling limits must be positive')
identifier = quote(task_id, safe='')
for attempt in range(attempts):
data = call('GET', '/api/business/monitor/task/status/' + identifier)
state = data.get('status')
if state == 'completed':
return call('GET', '/api/business/monitor/task/result/' + identifier)
if state not in ('pending', 'running', 'processing', 'queued'):
raise RuntimeError('Task is terminal or unknown: ' + str(state))
if attempt < attempts - 1:
time.sleep(interval)
raise TimeoutError('Polling budget exhausted; keep task ID and resume later')复现方式
python -m unittest -v
python monitor.py custom-monitoring-api.json --output output/custom-monitoring-api在资料包的 examples 目录运行,生成 analysis.json 与 digest.eml。没有真实采集或邮件发送。
已有接口接入示例
python api_client.py --submit request.example.json
python api_client.py --task-id YOUR_TASK_ID先在服务器环境设置 MONITOR_API_ORIGIN 与 MONITOR_API_TOKEN。submit会创建任务并可能计费,本文未执行真实调用。首次提交成功后保留taskId,不要反复提交相同任务。
页面展示

验收口径与实现边界
- 客户端只在completed状态获取结果
- 轮询次数耗尽后停止,不无限等待
- 失败或未知任务状态明确报错
- 网页导出包括规则、口径与每条判断
- 未配置真实域名和Token时不发起接口调用
生产化还需要来源适配器、权限与租户隔离、审核记录、调度、持久化和异常告警。建议记录抓取成功率、解析缺失率、人工复核通过率及投递失败率;不要用页面演示数据宣称覆盖率或准确率。
技术参考
配套发布文案
公众号导读
监测能力可以通过API进入企业自己的分析流程。本文展示自定义目标、异步任务查询、结果标准化与JSON分析的完整边界:现有AI监控API用于获取AI任务结果,公告和政策仍需专门采集;规则匹配模型不冒充官方响应结构。提供Python客户端、离线分析器、模拟测试和可交互页面。开发者可以先用样本复现,再对照真实响应实现适配器。
朋友圈摘要
不只看一个看板,也可以自己拿数据分析。自定义监测技术专题:目标规则可配置、命中依据可查看、JSON可导出,并附现有AI监控API的Python接入示例。
配图建议:架构图用于说明流程,交互页面图用于说明配置与结果。发布时保留“离线演示”与样本口径。