企业尽职调查报告生成规范
概述
基于水滴信用 MCP 数据平台(data_query / sti / bid / data_risk / data_listed),生成具备公开发布质量的企业尽职调查报告。报告以 Markdown 撰写,通过 scripts/build_dd_report.py 转为含封面/目录/页眉页脚及 AI 深度解读的 PDF。
MCP 依赖与配置
前置检查
执行本技能前,须确认以下水滴信用 MCP 服务均已配置并可调用:
| MCP 服务 | 功能 | DD 报告关键工具 |
|----------|------|---------------|
| shuidi_data | 企业工商数据 | get_company_info、get_company_partner、get_company_investment、get_company_changes、get_company_beneficial_owner、pierce_equity、get_company_controller、get_person_related_company、search_funding_record、search_company_risk、search_news |
| shuidi_risk | 司法风险数据 | search_lawsuit、_case、_executed_person、_dishonest、_bankruptcy、_punishment、_equity_pledge、_abnormal_operation |
| shuidi_qc | 供应商关系与资质 | supplier_get_company_info、supplier_search_relations、search_import_export_credit |
| shuidi_sti | 知识产权与科创 | search_patent、search_software_copyright、search_trademark、search_standard、evaluate_sti_capability、search_website_icp |
| shuidi_bid | 招投标数据 | search_company_winning_bid、search_company_bid、search_bid |
| shuidi_listed | 上市公司财务 | get_quoted_company_info、get_income_statement、get_balance_sheet、get_cash_flow、search_annual_stock_indicator |
检查方法:在生成报告前,调用 mcp_data_query_get_company_info 确认返回 status_code: 1。若返回 status_code: 2 或连接错误,须停止执行并提示用户配置 MCP。
MCP 配置方法
在 Hermes Agent 的 MCP 配置文件中添加以下水滴服务:
{
"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"
配置路径:MCP 配置文件通常位于 ~/.hermes/profiles/<profile>/mcp.json 或在 ~/.hermes/config.yaml 的 mcp 字段中配置。
依赖缺失处理
DD 报告八模块对 MCP 服务的依赖分级:
- 核心(缺一不可):
shuidi_data、shuidi_risk——缺失将严重削弱控制权分析和风险模块 - 重要(缺失可降级):
shuidi_sti、shuidi_bid、shuidi_qc——缺失时对应的技术/招投标/供应链模块标注「数据不可获取」 - 可选:
shuidi_listed——仅上市公司调研需要
核心原则:证据链优先
所有结论须满足可验证、可复现。每个数据点须标注:
| 要素 | 说明 |
|------|------|
| 数据来源 | 具体 MCP 工具名称与查询时间 |
| 计算方式 | 推演过程的完整公式 |
| 置信等级 | [事实] / [推断] / [待验证] |
数据源优先级
查询水滴 MCP → 有结果?→ 直接引用(零额外成本)
↓ 无结果或不足
是否属于博查补位场景?
↓ 是 → 调用博查搜索(计费,严格限次)
水滴 MCP 覆盖约 80% 场景(工商/股权/司法/科创/招投标/新闻)。博查仅用于:实时事件(24-48h)、产品详情、第三方行业报告、政策法规变动、创始人社交媒体、融资并购传闻、目标企业无水滴记录。博查的使用策略详见 references/bocha-query-strategy.md。
八模块调研框架
A · 公司基本面
get_company_info / get_company_partner / get_company_investment / get_company_changes
B · 控制权与隐藏链条 ★(创始人调查核心)
工具链:get_company_beneficial_owner → pierce_equity(direction=1) → get_company_controller
检测流程:
- 比对受益声明与实际加权持股
- 对主要股东递归执行股东 + 受益所有人查询
- 筛查壳公司特征:短期密集注册、法人代持、地址接近目标
- 计算实际控制力 = 直接持股 + Σ(路径比例 × 实体持股)
- 标记偏差 →
[发现]
一致行动人识别、跨境实体处理、壳公司命名模式详见 references/control-chain-detection.md。
C · 创始人画像
get_person_related_company 获取完整任职记录。按 establish_time 排序构建全周期职业时间线,检测:前创业期实体、校友命名模式、离职高管竞争威胁、董事会外部 VC 关联。创始人法律纠纷用 search_lawsuit 检索。
D · 融资与资本
search_funding_record / search_quoted_company / get_company_investment(基金 LP/GP 结构)
E · 技术与知识产权
search_patent(page_index=0) / search_software_copyright / search_trademark / search_standard / evaluate_sti_capability。注意:专利可能分散在多家子公司(如「XX 科技」与「XX 创新科技」),须分别检索。
F · 市场、供应链与销售网络
四子模块可并行执行:
- F1 · 供应商:投资树从内向外重构供应链 +
supplier_search_relations(level=3) - F2 · 销售网络:筛选贸易子公司 + 风险隔离检测 +
search_import_export_credit - F3 · 品牌渠道:商标推断品牌架构 + ICP 备案 + 消费者投诉分析
- F4 · 上市供应商财务反推 ★:识别上市供应商 → 查财务三表 → 估算采购规模(行业占比法 + BOM 成本法交叉验证)。详见
references/listed-supplier-reverse-engineering.md
G · 风险与舆情
search_company_risk(only_self_risk=false) — 信息价值最高的单次调用,一次性返回自身/关联/合同风险仪表盘。补充 search_news 按情感标签分类。
H · 竞争格局分析 ★
四阶段模式:基础对比(专利/投资/融资并列表)→ 政府支持分析(军工合同/招商)→ 客户披露(IPO 辅导材料)→ 供应链映射(互动平台客户确认)。非上市企业发现技法详见 references/competitive-analysis.md。
报告输出
文件结构
| 文件 | 路径 |
|------|------|
| Markdown 正文 | ~/.hermes/profiles/<profile>/reports/<kebab-name>.md |
| PDF 输出 | scripts/build_dd_report.py report.md output_dir/ |
Markdown 头部格式
# [财经媒体风格标题]
> **出品方**:水滴信用
> **数据支持**:水滴信用 MCP
> **研究日期**:YYYY-MM-DD
十章结构
第一章 执行摘要
第二章 公司概况
第三章 控制权深度分析 ★
第四章 创始人画像
第五章 资本路径
第六章 技术与知识产权
第七章 供应商与制造体系
第八章 营销体系与市场
第九章 风险分析
第十章 竞争格局 ★(如适用)
附录 数据来源与免责声明
PDF 排版关键规则
强制交付标准
以下五项为报告的强制交付标准,缺一不可:
| # | 强制项 | 实现方式 |
|---|--------|---------|
| 1 | 封面占完整一页 | @page cover { margin: 0; @top-center { content: none; } @bottom-center { content: none; } } + .cover { width: 210mm; height: 297mm; page: cover; } 满版铺满,封面无页眉页脚页码 |
| 2 | 目录不可缺 | 独立 @page toc 页,列明全部章节标题 |
| 3 | 目录须有自动页码 | <a href="#ch1"> + a::after { content: target-counter(attr(href), page); } — 注意 ::after 必须挂在 <a> 上而非子元素上,否则 attr(href) 取值为空导致所有页码为 0 |
| 4 | 正文每章段前强制分页 | .chapter { page-break-before: always } 或 .page { page-break-before: always } |
| 5 | 全局页码 | @bottom-center { content: counter(page); } 放在默认 @page 规则中 |
CSS 命名页规范
@page { margin: 15mm; size: A4;
@top-center { content: element(header); font-size: 9px; color: #888; }
@bottom-center { content: counter(page); font-size: 9px; color: #888; }
}
@page cover { margin: 0; @top-center { content: none; } @bottom-center { content: none; } }
@page toc { @top-center { content: none; } }
.cover { page: cover; width: 210mm; height: 297mm; }
.toc { page: toc; }
.page { page-break-before: always; }
目录页码的 target-counter 陷阱
target-counter(attr(href), page) 必须通过 ::after 应用在 <a> 元素本身上,不能应用在子元素:
/* ✗ 错误 — .toc-pn 是 <a> 的子 span,无 href 属性 → 所有页码为 0 */
.toc .toc-pn::after { content: target-counter(attr(href), page); }
/* ✓ 正确 — ::after 挂在 <a> 上,attr(href) 读取到 "#ch1" */
.toc-entry a::after { content: leader(".") target-counter(attr(href), page); }
<!-- ✓ 正确结构 -->
<a href="#ch1"><span>执行摘要</span><span class="toc-dots"></span></a>
页眉 Running Header
.page-header { position: running(header); display: flex; justify-content: space-between; }
@page { @top-center { content: element(header); } }
@page cover, @page toc { @top-center { content: none; } }
关键陷阱
| # | 陷阱 | 处置 |
|---|------|------|
| 1 | 封面未占整页/缺目录/无页码/未分页(高频错误) | 严格按"强制结构"5 项逐项检查:封面整页→目录独立→章前分页→全局页码→全局页眉。交付前肉眼确认 PDF 每页格式 |
| 2 | **text** 在 PDF 中未渲染粗体 | apply_bold() 应用于所有内容路径 + 最终 3-pass 正则安全网 |
| 3 | <pre> 树形图中文字符错位 | CSS box-model 树形图替代制表符 |
| 4 | 页眉文字与横线间距大 | @top-center margin/padding=0,横线移至 .page-header |
| 5 | 少数股东权益为负 → 子公司资不抵债 | get_balance_sheet 检查 minority_equity |
| 6 | 受益所有人查询不完整 | 须与 get_company_partner 交叉验证 |
| 7 | get_company_controller 返回空 | 结果本身即分析价值——记录系统无法识别控制人 |
| 8 | search_news 按人名搜索返回空 | 仅匹配公司名,创始人新闻须按公司名搜索 |
| 9 | execute_code 生成大型 HTML(>25KB)报 SyntaxError | DD 报告 HTML 通常 30-50KB,execute_code 的多行 f-string 极易触发 unterminated string literal。改用 write_file 写入完整 HTML,然后用 terminal 调 WeasyPrint 转换。资产报告等较小 HTML(~24KB)仍可用 execute_code |
验证清单
- [ ] 八模块 MCP 调用全部完成
- [ ] 控制权计算逐步展示公式
- [ ] 每个数据点标注来源 + 置信等级
- [ ] 核心结论至少有 2 个独立来源交叉验证
- [ ] 封面整页满版(
@page cover { margin: 0 }+ 210mm × 297mm),无页眉页脚页码 - [ ] 目录独立成页,列出全部章节标题
- [ ] 目录页码由
target-counter(attr(href), page)自动生成,各章节页码不为 0 - [ ] 每章段前强制分页(
.page { page-break-before: always }) - [ ] 全局页码
counter(page)正确递增 - [ ] 全局页眉显示"企业名 · 尽职调查报告"(封面和目录页除外)
- [ ] 表格和 AI 框设置
page-break-inside: avoid - [ ] PDF 中文正常渲染
微信扫一扫