返回 Skill 列表
extension
分类: 其它需要 API Key

企业科创能力评估报告

基于水滴信用 MCP 生成企业科创能力评估报告,产出含仪表盘、雷达图、行业排名等 SVG 可视化图表的标准化报告。 覆盖综合科创等级评定、五维度指标分析(投入/产出/质量/影响/成长)、行业对标排名、企业概况及 AI 深度解读。 适用场景:企业科创能力评估、高新企业认定支撑、投资标的科创尽调。 当用户请求科创评估、STI 评分、专利分析或生成科创报告时使用此技能。

person作者: user_87fe9f99hubcommunity

水滴信用科创能力评估报告(STI 报告)

概述

基于水滴信用 MCP sti / data_query / data_risk 工具集,使用 scripts/generate_html.py 变量驱动生成器输出含仪表盘(SVG gauge)、雷达图(SVG radar)、行业排名等可视化的标准化 STI 评估报告。

MCP 依赖与配置

前置检查

执行本技能前,须确认以下水滴信用 MCP 服务均已配置:

| MCP 服务 | 功能 | STI 报告关键工具 | |----------|------|---------------| | shuidi_sti | 科创评估核心 | evaluate_sti_capabilityget_sti_invest_scoreget_sti_output_scoreget_sti_quality_scoreget_sti_influence_scoreget_sti_develop_scoresearch_patentsearch_software_copyrightsearch_trademarksearch_standardsearch_honor | | shuidi_data | 企业工商与经营数据 | get_company_infoget_company_introductionget_company_partnerget_company_investmentget_company_employeeget_company_controllersearch_tax_creditget_taxpayer_infosearch_company_riskget_company_honorget_company_certsearch_funding_record | | shuidi_risk | 司法风险(可选) | search_lawsuit_punishment 等——用于风险维度补充 |

检查方法:调用 mcp_sti_evaluate_sti_capability 确认返回 status_code: 1。若失败须提示用户配置 MCP。

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_PNAMESHUIDI_MCP_PKEY。注入环境变量:

export SHUIDI_MCP_PNAME="your_project_name"
export SHUIDI_MCP_PKEY="your_project_key"

配置路径~/.hermes/profiles/<profile>/mcp.json~/.hermes/config.yamlmcp 字段。

依赖缺失处理

STI 报告对 MCP 依赖分级:

  • 核心(缺一不可)shuidi_stishuidi_data——缺失任一将导致科创评分和工商数据空白,报告无法生成
  • 可选shuidi_risk——缺失时风险维度标注「数据不可获取」,不影响核心报告生成

四轮执行模式

第一轮:数据采集(4 批并行)

首批(核心)mcp_sti_evaluate_sti_capabilitymcp_data_query_get_company_infomcp_data_query_get_company_introduction

次批(股权人员)mcp_data_query_get_company_partner_investment_employee_controller

第三批(风险/资质/融资)mcp_data_query_search_tax_creditget_taxpayer_infosearch_company_riskget_company_honorget_company_certmcp_sti_search_honormcp_data_query_search_funding_record

第四批(STI 分项)mcp_sti_get_sti_invest_score_output_score_quality_score_influence_score_develop_scoremcp_sti_search_patent_software_copyright_trademark_standard

详细工具覆盖与字段映射见 references/mcp-tools-directory.mdreferences/data-population-guide.md

第二轮:报告生成(变量驱动)

🔴 使用 scripts/generate_html.py 变量驱动生成器,禁止复制旧模板后 sed 替换。

  1. 将 MCP 查询结果填入脚本的数据字典区(COMPANY / STI / RANKINGS / SHAREHOLDERS / CONTROLLER / INVESTMENTS / MANAGEMENT / TAX / RISK / HONORS / CERTS / FUNDING / 五维度 STI_*
  2. 运行生成器:python3 scripts/generate_html.py <output_dir>
  3. PDF:WHTML(filename='report.html').write_pdf('report.pdf', font_config=FontConfiguration())

第三轮:验证

强制执行(详见 references/pitfalls.md):

# div 嵌套验证
python3 scripts/verify_nesting.py <output_dir>/report.html

# 表格闭合验证
grep -c '</table>' report.html  # 必须 = grep -c '<table' 数

# 仪表盘 SVG 验证
grep 'stroke-dashoffset' gauge_*.svg  # 必须 = 314.15
grep 'transform="rotate' gauge_*.svg   # 必须为空

pymupdf 检查关键页面:确保评级表在 1.3 节内、第二章无表格泄漏。

报告结构

| 页码 | 章节 | |------|------| | 1 | 封面 — 深色渐变底,白色文字,「水滴信用」标识 | | 2 | 目录 — target-counter 自动页码,虚线点引 | | 3-6 | 一、综合评述 — 1.1 科创等级(仪表盘 + 雷达图)+ 1.2 评级指标分析 + 1.3 评级体系说明 + AI 深度解读 | | 7-10 | 二、企业概况 — 工商信息/股东/投资/人员/纳税/风险/荣誉 + AI 深度解读 | | 11-12 | 三、企业竞争力 — 经营/品牌/创新 + AI 深度解读 | | 13-17 | 四、科技创新能力评估 — 五维度(投入/产出/质量/影响/成长)+ AI 深度解读 | | 18 | 数据来源与免责声明 |

样式规范

| 要素 | 规格 | |------|------| | 配色 | 背景 #F7F4ED;标题线 #D4A574 2px;表头 #2C3E50 白字;AI 框 #F0F7FF + #4A90D9 左边框 | | 封面 | linear-gradient(160deg, #2C3E50, #1a2a38, #243342) | | 页眉 | running header(公司名左 / 水滴信用右),@top-center 同宽 180mm | | 分页 | .page { page-break-before: always };表格/AI 框 page-break-inside: avoid | | 封面/目录 | @page cover / @page toc 禁用页眉页脚 |

SVG 图表关键公式

仪表盘(Gauge)

  • 弧线公式:dasharray = math.pi * 100 * score / 100 180/360 减半——已验证正确值为 π×100×s/100
  • 弧线起始点:stroke-dashoffset = 314.15(π×100),定位 9 点钟 = 左红起点
  • 禁止 rotate:objectBoundingBox 渐变随旋转翻转;用 dashoffset 替代
  • 指针公式:rotation = -90 + score * 1.8(覆盖 180° 弧)

雷达图(Radar)

  • viewBox="-30 -25 460 450",标签因子 1.10,防截断
  • 无外框矩形(五边形顶点直接连目标分值点)
  • 满分基准线用浅色虚线

等级徽章

  • width: 55px(非 40px),避免 AAA 被裁切
  • 9 级评级表:AAA(95-100) / AA(85-94) / A(75-84) / BBB(65-74) / BB(60-64) / B(50-59) / CCC(40-49) / CC(30-39) / C(0-29)
  • A 行不设背景高亮

关键陷阱

| # | 陷阱 | 关键修复 | |---|------|---------| | 1 | f-string 内 <style> 花括号未转义 → NameError | {→{{}→}},全量 ~70 处 | | 2 | 仪表盘弧线公式错误 | dasharray = π×100×s/100(非 180/360) | | 3 | 仪表盘用 rotate | 禁止;用 dashoffset=314.15 定位起点 | | 4 | 雷达图标签截断 | viewBox="-30 -25 460 450" | | 5 | WeasyPrint 页面右偏 | .page 不设 width(或只用 180mm + box-sizing) | | 6 | .page div 嵌套 → 章节错位 | 每章 .page 显式关闭,verify_nesting.py 验证 | | 7 | 章间双重分页 → 空白页 | 移除 break-after,仅靠 .page break-before: page | | 8 | 评级表缺 </table> → 泄漏到下一章 | 显式闭合,grep 验证 | | 9 | 删 AI 框时误删 </table> | 删除相邻代码块前检查闭合完整性 | | 10 | build_html() 变量残留 | 返回前 html.replace('{C["name"]}', C["name"]) 防御安全网 | | 11 | 等级徽章 AAA 裁切 | width: 55px | | 12 | A 行意外高亮 | 评级表 A 行不设背景色 |

详细诊断与修复见 references/pitfalls.md

验证清单

  • [ ] 4 批 MCP 调用全部完成,数据填入数据字典
  • [ ] f-string CSS 花括号全量转义
  • [ ] 仪表盘:dashoffset=314.15,无 rotate,指针公式 -90+s*1.8
  • [ ] 雷达图:viewBox 正确,无外框矩形
  • [ ] 等级徽章 width=55px
  • [ ] </table> 数 = <table
  • [ ] .page div 零嵌套(verify_nesting.py 通过)
  • [ ] 章间无 break-after 残留
  • [ ] build_html() 返回前变量残留替换安全网
  • [ ] PDF > 200KB(字体嵌入正常),< 700KB
  • [ ] pymupdf 确认评级表在 1.3 节内,Ch2 无表格泄漏