供应链风险分析报告生成
概述
基于水滴信用 MCP 数据平台,生成企业供应链风险全维度评估报告。输出 HTML 并通过 WeasyPrint 转为 PDF,采用 warm-tech 配色方案、深蓝渐变封面、统计卡片、AI 深度解读等标准模块。
MCP 依赖与配置
前置检查
执行本技能前,须确认以下 5 个水滴信用 MCP 服务均已配置并可调用:
| MCP 服务 | 功能 | 关键工具 |
|----------|------|---------|
| shuidi_data | 企业工商数据查询 | mcp_data_query_get_company_info、mcp_data_query_get_company_investment、mcp_data_query_search_supplier、mcp_data_query_search_company_risk |
| shuidi_risk | 司法风险数据 | mcp_data_risk_search_lawsuit、mcp_data_risk_search_executed_person、mcp_data_risk_search_abnormal_operation、mcp_data_risk_search_punishment |
| shuidi_qc | 企业资质与供应商关系 | mcp_supplier_get_company_info、mcp_supplier_search_relations |
| shuidi_sti | 知识产权与科创数据 | mcp_sti_search_patent、mcp_sti_search_trademark、mcp_sti_search_software_copyright(可选,用于知识产权维度评估) |
| shuidi_bid | 招投标数据 | mcp_bid_search_company_winning_bid、mcp_bid_search_company_bid、mcp_bid_search_bid |
检查方法:在生成报告前,调用任一上述 MCP 工具(如 mcp_data_query_get_company_info)确认返回 status_code: 1。若返回 status_code: 2 或连接错误,须停止执行并提示用户配置 MCP。
MCP 配置方法
在 Hermes Agent 的 MCP 配置文件中添加以下 5 个水滴服务:
{
"mcpServers": {
"shuidi_data": {
"url": "https://data.shuidi.cn/mcp?pname=${SHUIDI_MCP_PNAME}&pkey=${SHUIDI_MCP_PKEY}"
},
"shuidi_risk": {
"url": "https://risk.data.shuidi.cn/mcp?pname=${SHUIDI_MCP_PNAME}&pkey=${SHUIDI_MCP_PKEY}"
},
"shuidi_qc": {
"url": "https://qc.data.shuidi.cn/mcp?pname=${SHUIDI_MCP_PNAME}&pkey=${SHUIDI_MCP_PKEY}"
},
"shuidi_sti": {
"url": "https://sti.data.shuidi.cn/mcp?pname=${SHUIDI_MCP_PNAME}&pkey=${SHUIDI_MCP_PKEY}"
},
"shuidi_bid": {
"url": "https://bid.data.shuidi.cn/mcp/?pname=${SHUIDI_MCP_PNAME}&pkey=${SHUIDI_MCP_PKEY}"
}
}
}
获取凭证:访问 水滴信用开放平台 申请 SHUIDI_MCP_PNAME(项目名称)和 SHUIDI_MCP_PKEY(项目密钥)。将环境变量注入 Hermes Agent 运行环境:
export SHUIDI_MCP_PNAME="your_project_name"
export SHUIDI_MCP_PKEY="your_project_key"
Hermes Agent 启动时会自动替换 URL 中的 ${SHUIDI_MCP_PNAME} 和 ${SHUIDI_MCP_PKEY} 环境变量。
配置路径:MCP 配置文件通常位于 ~/.hermes/profiles/<profile>/mcp.json 或在 ~/.hermes/config.yaml 的 mcp 字段中配置。具体配置方式见 Hermes Agent 文档。
依赖缺失处理
若某 MCP 服务不可用(如 shuidi_sti 未配置),须:1) 跳过对应模块的查询;2) 在报告中标注「该维度数据不可获取:MCP 服务未配置」;3) 不因部分服务缺失而中断报告生成。核心服务 shuidi_data、shuidi_risk、shuidi_bid 缺一不可——缺失任一将严重影响报告质量。
适用场景
- 制造业 / 零售业企业供应商风险筛查
- 招投标活跃度评估与供应链活力诊断
- 客户 / 供应商集中度风险识别
- 供应链断裂风险传导路径分析
- 供应链金融中的企业信用与韧性评级
五维度评估框架
D1 · 供应商全景扫描
MCP 调用:mcp_supplier_get_company_info(主体企业)、mcp_data_query_search_supplier(供应商列表)、mcp_bid_search_company_winning_bid(客户识别)
输出:供应链结构分层表(原材料 / 零部件 / 外协 / 物流),标注可识别供应商数量、关键供应商数及风险等级。
D2 · 关键供应商风险评估
MCP 调用:mcp_data_query_search_company_risk(only_self_risk=true)(对每家关键供应商并行执行)、mcp_data_risk_search_lawsuit、mcp_data_risk_search_executed_person、mcp_data_risk_search_abnormal_operation、mcp_data_risk_search_punishment
输出:风险矩阵表(工商状态 / 司法风险 / 经营异常 / 行政处罚 / 综合评级)
D3 · 集中度风险分析
评估指标:
- CR5(前五大供应商占比):>70% 高风险 / 50-70% 中风险 / <50% 低风险
- 最大单一供应商占比:>30% 高风险 / 20-30% 中风险 / <20% 低风险
- 客户集中度:关注最大客户营收占比
注意:核心物料供应商的 CR5 数据通常须从年报「前五大供应商」获取,MCP 数据库中该类数据覆盖率较低。缺失时标注 [待年报补充]。
D4 · 招投标活跃度
MCP 调用:mcp_bid_search_company_winning_bid(中标记录)、mcp_bid_search_company_bid(招标记录)、mcp_bid_search_bid(行业搜索)
输出:中标次数 / 金额 / 时间趋势 / 采购方结构(政府 / 企业 / 军方),推断产能扩张信号(建设用地竞得、建设许可密集获批等)。
D5 · 风险传导与韧性
评估维度:供应商替代性 / 库存缓冲能力 / 地理分散度 / 内部纵向整合度 / 应急响应能力。
综合评级:
| 等级 | 标准 | 建议 | |------|------|------| | A | 供应商分散,无高风险,替代性强 | 稳健 | | B | 集中度适中,个别中风险,有备选 | 定期监测 | | C | 集中度较高,存在高风险供应商 | 须整改 | | D | 高度集中,存在失信供应商 | 须重构 |
数据采集流程
第一轮(并行 5 项)
| 工具 | 用途 |
|------|------|
| mcp_supplier_get_company_info | 主体企业工商信息 + 司法/经营/无形资产全貌 |
| mcp_data_query_search_supplier(page_index=0) | 供应商清单 |
| mcp_bid_search_company_winning_bid(page_index=0) | 中标记录 |
| mcp_data_query_search_company_risk(only_self_risk=false) | 综合风险 |
| mcp_data_query_get_company_investment(page_index=0) | 子公司/内部供应链 |
第二轮(对关键供应商并行)
对识别出的关键供应商,并行调用工商信息、综合风险、涉诉、被执行等工具。
报告输出规范
文件结构
| 类型 | 路径 |
|------|------|
| HTML 临时 | /tmp/<企业名>_供应链报告.html |
| PDF 输出 | workspace/<企业名>_供应链风险分析报告.pdf |
CSS 关键规则
详见 references/html-pdf-pattern.md。核心要点:
- 盒模型:CSS 首行必须
* { box-sizing: border-box; }——否则.page的 padding 叠加 width 导致右侧内容溢出 - 页面宽度:
.page { width: 180mm }=210mm - 2 × @page{margin:15mm} - 页眉:running element 与
@top-center的width须一致(180mm) - 封面/目录:
@page cover/@page toc禁用页眉页脚 - 防撕裂:表格和 AI 框设
page-break-inside: avoid - 名称列:企业名称/人名列用
.name-col { white-space: nowrap }
字体与 PDF 生成
from weasyprint import HTML as WHTML
from weasyprint.text.fonts import FontConfiguration
WHTML(filename=html_path).write_pdf(pdf_path, font_config=FontConfiguration())
系统字体声明:font-family: "Source Han Sans SC", "PingFang SC", sans-serif(禁止 @font-face + file:/// URL)。正常 PDF 体积 400-550KB。
强制执行规则
- NEVER 仅评估一级供应商——须考虑多级传导
- NEVER 忽视单一供应商依赖风险
- NEVER 对供应商的司法风险不进行穿透核查
- NEVER 忽略地理集中度风险(区域集中可能受自然灾害/政策影响)
- ALWAYS 评估关键物料的替代性
- ALWAYS 标注数据时效性及 MCP 覆盖边界
- ALWAYS 逐条验证子公司/投资数据归属——禁止混淆不同企业数据(常见信号:子公司名称中出现其他已知企业的地域/品牌关键词,如「盐城东山精密」混入胜宏科技报告)
验证清单
- [ ] 5 项首轮 MCP 工具并行调用完成
- [ ] 供应链结构表含层级分类与风险标注
- [ ] 关键供应商风险矩阵完整
- [ ] 集中度 CR5 与最大单一占比计算正确
- [ ] 招投标中标记录与时间线一致
- [ ] 风险传导路径与缓解措施对应
- [ ] 综合评级符合 4 级标准
- [ ] PDF 通过
FontConfiguration()嵌入字体,体积 400-550KB - [ ]
box-sizing: border-box首行声明,右侧无溢出 - [ ] 子公司数据经交叉验证,无其他企业数据混入
- [ ] HTML 用
''.join(parts)拼接,零花括号变量泄漏 - [ ] AI 解读段落使用【】标记,禁用 emoji
Scan to join WeChat group