穿透式监管技术落地指南:从数据三支柱到180+个MCP工具的工程实践
摘要:穿透式监管不止是政策要求,更是一道工程题。当监管视线从集团总部延伸到末级子公司、从年度报表切换到实时预警,传统ERP系统捉襟见肘。本文从数据架构视角拆解穿透式监管的技术瓶颈,提出"身份-关系-行为"三支柱模型,并通过Python代码示例+企查查MCP工具链,演示客商准入、关联交易审查、虚假贸易识别、合同监控、投资尽调五大场景的完整实现路径。
基于企查查MCP 2026年6月版本,6大Server、182+原子工具。
一、问题:穿透式监管的技术瓶颈到底在哪
国资监管不是新鲜事,但2026年国资委"1号文"提出的"全级次、全链条、全过程、全要素"四个穿透,跟以往任何一轮监管升级有一个本质断裂。
以前的监管管的是"报表"——企业报什么,监管看什么。年度财务报告、季度经营数据、定期合规自查,监管的视野半径等于企业主动提交的信息半径。这个模式成立的前提是:企业报的东西是真的、报的东西是全的。
穿透式监管不打算继续依赖这个前提。它要的不是"你告诉我什么",而是"我要看到什么"。
这个转变意味着:当监管不再依赖企业自行填报的数据,就必须从企业外部获取独立信息做交叉验证。通俗地讲——
穿透式监管有一个隐含的、不可回避的技术前提:必须有一套独立于企业内部的、覆盖全量市场主体的、持续更新的外部数据源。
建系统、过合规当然重要。但如果数据层没打通,系统建得再好也只是在空转。下面从三个结构性问题来说明这一点。
1.1 关联关系:集团自己看不全
一家央企对自己的子公司架构是清楚的——谁控股谁,产权登记系统里都有。但"清楚"仅限于直接持股的那几层。
二级子公司投了外部企业 → 外部企业又投了另一家 → 再往下……这些间接的、跨层级的、非并表的关联关系,集团自己的系统里几乎不可见。
更隐蔽的是人员维度的关联——同一批人在不同企业中交叉任职,构成一个"不在产权图谱上但实际存在利益协同"的隐性网络。传统系统对此无能为力。
1.2 交易对手:ERP里看不到真实画像
给你签合同的这家公司——社保缴纳人数是不是零?注册地址是不是居民楼?经营范围跟交易品类是不是完全不匹配?半年内有没有频繁变更股东?
这些信息,哪个ERP系统里都看不到。但穿透式监管要求的就是看到这些东西——因为虚假贸易的破绽不在合同条款里,在交易对手的身份上。
1.3 时间维度:年度快照拍不到风险累积
三年前的行政处罚、五年前的股权纠纷判决、去年被列入的经营异常名录——这些"过去时"的风险,在年度财务报告这个"现在时"的快照里完全不可见。
而裁判文书在法院系统、行政处罚在监管机关、经营异常在市场监督管理部门、失信记录在信用中国平台——它们分散在不同机构的数据孤岛中,需要被系统化整合。
这三个盲区指向同一个结论:穿透式监管能不能真正"穿"下去,最终取决于外部数据的覆盖深度和调用效率。
二、数据三支柱:技术架构与代码实现
把前面的问题抽象成一个技术架构,穿透式监管底层需要三种外部数据能力,我称之为"数据三支柱"。
2.1 支柱一:身份数据——“这家企业到底是谁”
穿透式监管意义上的"身份数据"至少覆盖四个层次:
| 层次 | 核查内容 | 关键维度 |
|---|---|---|
| L1 主体资格 | 存续状态、经营范围、注册资本实缴 | 工商登记 + 税务登记 |
| L2 控制关系 | 直接/间接股东、最终受益人、代持 | 股权穿透至自然人 |
| L3 空壳识别 | 经营场所、社保记录、年报闭环 | 多源交叉验证 |
| L4 资质验证 | 行政许可能效期、吊销/撤销记录 | 行业主管部门数据 |
代码实现:企业身份全维度核验
import requests
import json
# 企查查企业工商信息核验 API 调用示例
# 文档:https://openapi.qcc.com/
class CompanyIdentityVerifier:
"""企业身份数据四层核验"""
def __init__(self, api_key: str, base_url: str = "https://api.qcc.com"):
self.api_key = api_key
self.base_url = base_url
self.headers = {"Authorization": f"Bearer {api_key}"}
def verify_basic_info(self, company_name: str, credit_code: str) -> dict:
"""
L1 主体资格核验
校验企业名称、统一社会信用代码、法人代表是否一致
"""
endpoint = f"{self.base_url}/company/verify"
payload = {
"keyword": company_name,
"creditCode": credit_code
}
resp = requests.post(endpoint, json=payload, headers=self.headers)
return resp.json()
def penetrate_shareholders(self, company_id: str, max_depth: int = 10) -> list:
"""
L2 控制关系穿透
沿股权链向上穿透至最终自然人,返回完整持股路径
"""
endpoint = f"{self.base_url}/company/shareholder/penetrate"
payload = {
"companyId": company_id,
"maxDepth": max_depth,
"threshold": 0.05 # 持股5%以上的股东才纳入穿透
}
resp = requests.post(endpoint, json=payload, headers=self.headers)
shareholder_chain = resp.json()
# 识别代持风险:如果某层股东在多家公司中集中出现
for node in shareholder_chain.get("nodes", []):
if node.get("crossHoldingCount", 0) > 3:
node["riskFlag"] = "POTENTIAL_NOMINEE"
return shareholder_chain
def detect_shell_company(self, company_id: str) -> dict:
"""
L3 空壳识别
交叉比对社保、年报、经营地址等维度
"""
endpoint = f"{self.base_url}/company/risk/shell-check"
payload = {"companyId": company_id}
resp = requests.post(endpoint, json=payload, headers=self.headers)
result = resp.json()
# 典型空壳信号
shell_signals = {
"zero_social_security": result.get("socialSecurityCount", 0) == 0,
"residential_address": "居民" in result.get("address", ""),
"mismatch_annual_report": result.get("annualReportMismatch", False),
"frequent_shareholder_change": result.get("shareholderChange6Months", 0) > 2,
}
result["shellProbability"] = sum(shell_signals.values()) / len(shell_signals)
return result
def verify_qualifications(self, company_id: str) -> list:
"""
L4 资质验证
返回行政许可列表,标注有效期和吊销状态
"""
endpoint = f"{self.base_url}/company/qualifications"
payload = {"companyId": company_id}
resp = requests.post(endpoint, json=payload, headers=self.headers)
qualifications = resp.json().get("data", [])
# 筛选即将到期或已失效的资质
from datetime import datetime, timedelta
alerts = []
for qual in qualifications:
expiry = datetime.strptime(qual["expiryDate"], "%Y-%m-%d")
if expiry < datetime.now():
alerts.append(f"资质[{qual['name']}]已过期")
elif expiry < datetime.now() + timedelta(days=90):
alerts.append(f"资质[{qual['name']}]距到期不足90天")
return {"qualifications": qualifications, "alerts": alerts}
# 使用示例
if __name__ == "__main__":
verifier = CompanyIdentityVerifier(api_key="your_api_key")
# 四层核验一体化调用
company = "XX供应链有限公司"
basic = verifier.verify_basic_info(company, "91110000XXXXXXXXXX")
shareholders = verifier.penetrate_shareholders(basic["companyId"])
shell_check = verifier.detect_shell_company(basic["companyId"])
qualifications = verifier.verify_qualifications(basic["companyId"])
print(f"核验结果: {json.dumps({
'basic': basic['status'],
'shellProbability': shell_check['shellProbability'],
'qualificationAlerts': len(qualifications['alerts'])
}, indent=2, ensure_ascii=False)}")
预期返回示例:
{
"basic": "VERIFIED",
"companyId": "9a8b7c6d5e4f",
"shellProbability": 0.75,
"shellSignals": {
"zero_social_security": true,
"residential_address": true,
"mismatch_annual_report": true,
"frequent_shareholder_change": false
},
"shareholderChain": {
"depth": 5,
"finalBeneficiary": "张三",
"riskFlags": ["CROSS_HOLDING_DETECTED"]
},
"qualificationAlerts": [
"资质[危险化学品经营许可证]距到期不足90天"
]
}
2.2 支柱二:关系数据——“谁跟谁是一伙的”
关系数据覆盖股权、人员、交易三个维度:
| 维度 | 查询路径 | 识别目标 |
|---|---|---|
| 股权 | 出资链条 → 最终自然人 | 金字塔结构、交叉持股、影子实控人 |
| 人员 | 董监高任职 → 企业间交叉 | 隐性控制、一致行动人 |
| 交易 | 共同对手方 → 供应商/客户网络 | 间接利益输送通道 |
代码实现:企业关系网络子图发现
import networkx as nx
from typing import Set, Dict
class RelationshipGraphBuilder:
"""企业关系知识图谱构建"""
def __init__(self, api_client):
self.api = api_client
self.graph = nx.MultiDiGraph()
def discover_subgraph(
self,
company_id: str,
degrees: int = 3
) -> Dict[str, Set[str]]:
"""
以目标企业为中心,抓取N度范围内的关联关系子图
Args:
company_id: 目标企业ID
degrees: 穿透度数(3-5度推荐,过大会导致性能问题)
Returns:
按关系类型分类的关联企业集合
"""
# 构建三层关系网络
relations = {
"investment": self._trace_investment_chain(company_id, degrees),
"personnel": self._find_personnel_overlap(company_id, degrees),
"transaction": self._detect_transaction_links(company_id, degrees)
}
# 交叉维度分析:找同时出现在多个维度中的企业
all_entities = {}
for rel_type, entities in relations.items():
for entity_id in entities:
if entity_id not in all_entities:
all_entities[entity_id] = set()
all_entities[entity_id].add(rel_type)
# 同时出现在3个维度 = 高风险隐性关联
high_risk = {
eid for eid, rels in all_entities.items()
if len(rels) >= 3
}
return {
"relations": relations,
"highRiskEntities": list(high_risk),
"totalNodes": len(all_entities)
}
def _trace_investment_chain(self, company_id: str, depth: int) -> set:
"""沿股权链追溯投资关系"""
endpoint = f"{self.api.base_url}/graph/investment"
payload = {"companyId": company_id, "maxDepth": depth}
resp = requests.post(endpoint, json=payload, headers=self.api.headers)
data = resp.json()
# 构建NetworkX有向图(投资方向)
for edge in data.get("edges", []):
self.graph.add_edge(
edge["from"], edge["to"],
weight=edge["ratio"],
relation_type="investment"
)
return {n for n in self.graph.nodes()}
def _find_personnel_overlap(self, company_id: str, depth: int) -> set:
"""识别人员重叠"""
endpoint = f"{self.api.base_url}/graph/personnel"
payload = {"companyId": company_id, "maxDepth": depth}
resp = requests.post(endpoint, json=payload, headers=self.api.headers)
data = resp.json()
related_companies = set()
for person in data.get("personnel", []):
for company in person.get("positions", []):
if company["companyId"] != company_id:
related_companies.add(company["companyId"])
self.graph.add_edge(
company_id, company["companyId"],
via_person=person["name"],
relation_type="personnel_overlap"
)
return related_companies
def _detect_transaction_links(self, company_id: str, depth: int) -> set:
"""通过共同交易对手方发现间接关联"""
endpoint = f"{self.api.base_url}/graph/transaction-link"
payload = {"companyId": company_id, "maxDepth": depth}
resp = requests.post(endpoint, json=payload, headers=self.api.headers)
data = resp.json()
linked = set()
for partner in data.get("commonPartners", []):
if partner["sharedCompanies"] > 3:
# 共享超过3个交易对手方 = 可疑信号
for linked_company in partner["linkedEntities"]:
linked.add(linked_company)
return linked
# 使用示例
graph_builder = RelationshipGraphBuilder(api_client=verifier)
result = graph_builder.discover_subgraph("9a8b7c6d5e4f", degrees=3)
print(f"子图规模: {result['totalNodes']}个节点, "
f"高风险关联: {len(result['highRiskEntities'])}个")
2.3 支柱三:行为数据——持续监控与技术实现
行为数据覆盖司法涉诉、行政处罚、经营异常、信用记录、资产变动五大类。它的核心特征是持续变化,因此技术实现的关键是自动化监控 + 主动推送。
from datetime import datetime
import asyncio
class BehaviorMonitor:
"""企业行为数据持续监控 + 风险预警"""
def __init__(self, api_client, alert_threshold: float = 0.6):
self.api = api_client
self.threshold = alert_threshold
self.watchlist: Dict[str, datetime] = {}
def add_to_watchlist(self, company_id: str):
"""将企业加入监控清单"""
self.watchlist[company_id] = datetime.now()
def check_risk_events(self, company_id: str) -> dict:
"""全维度行为数据查询"""
dimensions = [
"judicial_cases", # 司法涉诉
"administrative_penalty", # 行政处罚
"business_exception", # 经营异常
"dishonest_record", # 失信记录
"asset_freeze" # 资产冻结
]
results = {}
for dim in dimensions:
endpoint = f"{self.api.base_url}/company/behavior/{dim}"
resp = requests.post(
endpoint,
json={"companyId": company_id, "timeRange": "3Y"},
headers=self.api.headers
)
data = resp.json()
results[dim] = {
"total": data.get("count", 0),
"recent_6m": data.get("recent6Months", 0),
"severity": data.get("maxSeverity", "normal")
}
# 风险评分:近期事件数量 + 严重程度加权
severity_weights = {"high": 3, "medium": 2, "low": 1, "normal": 0}
risk_score = sum(
results[dim]["recent_6m"] * severity_weights[results[dim]["severity"]]
for dim in dimensions
)
results["riskScore"] = risk_score
results["riskLevel"] = (
"HIGH" if risk_score > 10
else "MEDIUM" if risk_score > 5
else "LOW"
)
return results
async def daily_scan(self):
"""每日定时扫描监控清单中的所有企业"""
while True:
alerts = []
for company_id in list(self.watchlist.keys()):
result = self.check_risk_events(company_id)
if result["riskLevel"] == "HIGH":
alerts.append({
"companyId": company_id,
"riskScore": result["riskScore"],
"details": result,
"timestamp": datetime.now().isoformat()
})
if alerts:
self._send_alerts(alerts)
# 每日运行一次
await asyncio.sleep(86400)
def _send_alerts(self, alerts: list):
"""推送预警(对接企业微信/钉钉/飞书/邮件)"""
webhook_url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=YOUR_KEY"
for alert in alerts:
message = {
"msgtype": "markdown",
"markdown": {
"content": f"""
## 🚨 企业风险预警
> 企业ID: {alert['companyId']}
> 风险评分: **{alert['riskScore']}** (HIGH)
> 检测时间: {alert['timestamp']}
请及时评估对该企业合同履行的影响。
"""
}
}
requests.post(webhook_url, json=message)
三、五大业务场景:完整代码实践

3.1 场景一:客商入库——从"资格核验"升级为"风险画像"
业务痛点:当前客商准入只核验营业执照复印件,回答不了"这家公司有没有问题"。
技术方案:在入库审批节点上,系统自动调取外部数据,完成四层身份核验 + 风险标记。
#!/bin/bash
# 客商入库自动化核验脚本
# 触发时机:采购系统提交供应商入库申请时
COMPANY_NAME="$1"
CREDIT_CODE="$2"
echo "=== 开始核验供应商: ${COMPANY_NAME} ==="
# 步骤1:工商信息核验
echo "[1/5] 工商信息核验..."
BASIC_RESULT=$(curl -s -X POST https://api.qcc.com/company/verify \
-H "Authorization: Bearer ${QCC_API_KEY}" \
-d "{\"keyword\":\"${COMPANY_NAME}\",\"creditCode\":\"${CREDIT_CODE}\"}")
STATUS=$(echo $BASIC_RESULT | jq -r '.status')
if [ "$STATUS" != "VERIFIED" ]; then
echo "❌ 工商核验不通过: ${STATUS}"
exit 1
fi
# 步骤2:股权穿透
echo "[2/5] 股权穿透..."
COMPANY_ID=$(echo $BASIC_RESULT | jq -r '.companyId')
SHAREHOLDER_RESULT=$(curl -s -X POST https://api.qcc.com/company/shareholder/penetrate \
-H "Authorization: Bearer ${QCC_API_KEY}" \
-d "{\"companyId\":\"${COMPANY_ID}\",\"maxDepth\":10}")
BENEFICIARY=$(echo $SHAREHOLDER_RESULT | jq -r '.finalBeneficiary')
echo " 最终受益人: ${BENEFICIARY}"
# 步骤3:空壳检测
echo "[3/5] 空壳检测..."
SHELL_RESULT=$(curl -s -X POST https://api.qcc.com/company/risk/shell-check \
-H "Authorization: Bearer ${QCC_API_KEY}" \
-d "{\"companyId\":\"${COMPANY_ID}\"}")
SHELL_PROB=$(echo $SHELL_RESULT | jq -r '.shellProbability')
if (( $(echo "$SHELL_PROB > 0.5" | bc -l) )); then
echo "⚠️ 空壳风险概率: ${SHELL_PROB}"
fi
# 步骤4:司法风险扫描
echo "[4/5] 司法风险扫描..."
RISK_RESULT=$(curl -s -X POST https://api.qcc.com/company/risk/scan \
-H "Authorization: Bearer ${QCC_API_KEY}" \
-d "{\"companyId\":\"${COMPANY_ID}\"}")
RISK_FLAGS=$(echo $RISK_RESULT | jq -r '.riskFlags | join(", ")')
echo " 风险标记: ${RISK_FLAGS:-无}"
# 步骤5:综合风险评级
echo "[5/5] 综合评估..."
# 整合四层核验结果,输出入库决策建议
RISK_SCORE=$(echo $RISK_RESULT | jq -r '.overallScore')
echo ""
echo "=== 核验完成 ==="
echo "供应商: ${COMPANY_NAME}"
echo "综合风险评分: ${RISK_SCORE}/100"
echo "建议: $(if [ $RISK_SCORE -gt 80 ]; then echo '❌ 高风险,不建议入库'; elif [ $RISK_SCORE -gt 50 ]; then echo '⚠️ 提交风控部门复核'; else echo '✅ 自动通过'; fi)"
3.2 场景二:关联交易审查——从"企业申报"到"子图发现"
业务痛点:关联方清单是企业自己报的。如果企业不报,审查就无从启动。
技术方案:知识图谱的子图发现能力——一次查询抓取N度范围内所有关联节点。
def find_hidden_related_parties(
company_id: str,
blacklist_companies: list
) -> list:
"""
关联交易审查核心函数
在目标企业的关系网络中,查找与黑名单企业存在隐性关联的节点
算法思路:
1. 以目标企业为中心,构建3-5度关系子图
2. 找出子图中与黑名单企业通过任何路径相连的节点
3. 这些节点就是"隐性关联方"
"""
graph_builder = RelationshipGraphBuilder(api_client)
subgraph = graph_builder.discover_subgraph(company_id, degrees=4)
# 构造关系网络
G = graph_builder.graph
hidden_relations = []
for node in subgraph["highRiskEntities"]:
# 检查该节点是否有通向黑名单企业的路径
for blacklisted in blacklist_companies:
if nx.has_path(G, node, blacklisted):
path = nx.shortest_path(G, node, blacklisted)
hidden_relations.append({
"entity": node,
"connectedTo": blacklisted,
"pathLength": len(path),
"path": path,
"riskType": "HIDDEN_RELATED_PARTY"
})
# 按路径长度排序:越短的关系越直接,风险越高
hidden_relations.sort(key=lambda x: x["pathLength"])
return hidden_relations
# 使用示例
blacklist = ["blacklisted_company_001", "blacklisted_company_002"]
hidden = find_hidden_related_parties("target_company_id", blacklist)
for relation in hidden:
print(f"⚠️ 发现隐性关联: {relation['entity']} ←→ {relation['connectedTo']} "
f"(距离: {relation['pathLength']}度)")
预期返回:
[
{
"entity": "XX贸易有限公司",
"connectedTo": "blacklisted_company_001",
"pathLength": 2,
"path": [
"XX贸易有限公司",
"张三(共同法人)",
"blacklisted_company_001"
],
"riskType": "HIDDEN_RELATED_PARTY"
}
]
3.3 场景三:虚假贸易——交叉比对自动识别
业务痛点:合同真实、发票真实、资金流真实,但贸易本身是假的。破绽不在单据上,在交易对手的企业画像上。
技术方案:将内部交易数据与外部企业数据进行交叉比对,输出矛盾信号。
def detect_fake_trade(
internal_transaction: dict,
external_profile: dict
) -> dict:
"""
虚假贸易识别引擎
Args:
internal_transaction: 内部交易数据(合同金额、品类、对手方)
external_profile: 外部企业数据(注册资本、社保、经营范围、关联关系)
Returns:
矛盾信号列表 + 虚假贸易概率
"""
anomalies = []
# 规则1:交易规模与经营能力不匹配
contract_amount = internal_transaction["amount"]
registered_capital = external_profile["registeredCapital"]
social_security = external_profile["socialSecurityCount"]
if social_security == 0 and contract_amount > registered_capital * 2:
anomalies.append({
"type": "CAPACITY_MISMATCH",
"detail": f"社保0人,合同金额({contract_amount}万)远超注册资金({registered_capital}万)",
"severity": "HIGH"
})
# 规则2:经营范围与交易品类不匹配
biz_scope = external_profile["businessScope"]
trade_category = internal_transaction["category"]
if not is_category_in_scope(trade_category, biz_scope):
anomalies.append({
"type": "SCOPE_MISMATCH",
"detail": f"交易品类[{trade_category}]不在经营范围中",
"severity": "MEDIUM"
})
# 规则3:隐性关联关系
buyer_id = internal_transaction["buyerId"]
seller_id = internal_transaction["sellerId"]
hidden_link = check_hidden_relationship(buyer_id, seller_id)
if hidden_link:
anomalies.append({
"type": "HIDDEN_RELATIONSHIP",
"detail": f"买方与卖方存在隐性关联: {hidden_link}",
"severity": "HIGH"
})
# 规则4:短期频繁变更
if external_profile.get("shareholderChange6Months", 0) > 3:
anomalies.append({
"type": "FREQUENT_CHANGE",
"detail": f"近6个月股东变更{external_profile['shareholderChange6Months']}次",
"severity": "MEDIUM"
})
# 综合评分
severity_score = sum(
3 if a["severity"] == "HIGH" else 2 for a in anomalies
)
return {
"transactionId": internal_transaction["id"],
"anomalies": anomalies,
"anomalyCount": len(anomalies),
"fakeProbability": min(severity_score / 10, 1.0),
"decision": "REJECT" if severity_score >= 5 else "REVIEW" if severity_score >= 3 else "PASS"
}
def is_category_in_scope(category: str, business_scope: str) -> bool:
"""检查交易品类是否在企业经营范围内"""
# 实际实现可使用NLP相似度匹配
category_keywords = {
"电解铜": ["有色金属", "矿产品", "金属材料"],
"医疗器械": ["医疗器械", "医疗设备"],
"化工原料": ["化工", "化学", "危险化学品"]
}
keywords = category_keywords.get(category, [category])
return any(kw in business_scope for kw in keywords)
3.4 场景四:合同全周期风险监控
import schedule
import time
class ContractRiskMonitor:
"""合同履行期间的全周期风险监控"""
def __init__(self, api_client, db_conn):
self.api = api_client
self.db = db_conn
self.monitor = BehaviorMonitor(api_client)
def load_active_contracts(self) -> list:
"""从合同台账中加载所有履行中的合同"""
cursor = self.db.execute(
"SELECT contract_id, counterparty_id, amount, expiry "
"FROM contracts WHERE status = 'ACTIVE'"
)
return cursor.fetchall()
def scan_all_counterparties(self):
"""批量扫描所有合同相对方"""
contracts = self.load_active_contracts()
alerts = []
for contract in contracts:
risk = self.monitor.check_risk_events(contract["counterparty_id"])
if risk["riskLevel"] in ("HIGH", "MEDIUM"):
alerts.append({
"contractId": contract["contract_id"],
"counterpartyId": contract["counterparty_id"],
"contractAmount": contract["amount"],
"riskLevel": risk["riskLevel"],
"riskDetails": risk
})
# 按合同金额 × 风险等级排序,优先处理大额高风险合同
alerts.sort(
key=lambda x: x["contractAmount"] * (3 if x["riskLevel"] == "HIGH" else 2),
reverse=True
)
return alerts
# 定时任务:每日凌晨3点执行全量扫描
monitor = ContractRiskMonitor(api_client, db_connection)
schedule.every().day.at("03:00").do(monitor.scan_all_counterparties)
while True:
schedule.run_pending()
time.sleep(60)
3.5 场景五:投资尽调——穿透式核查
-- 投资尽调穿透式核查:SQL视角的数据整合
-- 此查询整合了目标企业及其关联方的多维风险数据
WITH target_company AS (
SELECT * FROM companies WHERE id = '9a8b7c6d5e4f'
),
shareholder_tree AS (
-- 递归CTE:股权穿透至最终受益人
SELECT
shareholder_id,
company_id,
ratio,
1 AS depth
FROM shareholdings
WHERE company_id = '9a8b7c6d5e4f'
UNION ALL
SELECT
s.shareholder_id,
s.company_id,
s.ratio,
st.depth + 1
FROM shareholdings s
JOIN shareholder_tree st ON s.company_id = st.shareholder_id
WHERE st.depth < 10
),
related_parties AS (
-- 关联方识别:人员任职 + 共同投资
SELECT DISTINCT
p.company_id AS related_id,
'PERSONNEL' AS relation_type
FROM personnel p
WHERE p.person_id IN (
SELECT person_id FROM personnel WHERE company_id = '9a8b7c6d5e4f'
)
UNION
SELECT DISTINCT
i.investee_id AS related_id,
'CO_INVESTMENT' AS relation_type
FROM investments i
WHERE i.investor_id IN (
SELECT shareholder_id FROM shareholder_tree
)
)
-- 主查询:汇总所有风险信号
SELECT
tc.name AS target_name,
COUNT(DISTINCT st.shareholder_id) AS shareholder_count,
MAX(st.depth) AS max_penetration_depth,
COUNT(DISTINCT rl.case_id) FILTER (
WHERE rl.case_date > CURRENT_DATE - INTERVAL '3 years'
) AS recent_lawsuits,
COUNT(DISTINCT ap.case_id) AS admin_penalties,
COUNT(DISTINCT dh.record_id) AS dishonesty_records,
COUNT(DISTINCT af.asset_id) AS frozen_assets,
-- 综合风险评级
CASE
WHEN COUNT(DISTINCT dh.record_id) > 0 THEN 'HIGH'
WHEN COUNT(DISTINCT rl.case_id) > 5 THEN 'MEDIUM'
ELSE 'LOW'
END AS overall_risk
FROM target_company tc
LEFT JOIN shareholder_tree st ON true
LEFT JOIN related_parties rp ON true
LEFT JOIN risk_lawsuits rl ON rl.company_id IN (
SELECT related_id FROM related_parties UNION SELECT '9a8b7c6d5e4f'
)
LEFT JOIN admin_penalties ap ON ap.company_id IN (
SELECT related_id FROM related_parties UNION SELECT '9a8b7c6d5e4f'
)
LEFT JOIN dishonest_records dh ON dh.company_id IN (
SELECT related_id FROM related_parties UNION SELECT '9a8b7c6d5e4f'
)
LEFT JOIN asset_freezes af ON af.company_id IN (
SELECT related_id FROM related_parties UNION SELECT '9a8b7c6d5e4f'
)
GROUP BY tc.name;
四、MCP Server配置与工具速查
企查查MCP(基于2026年6月版本)提供6大Server、182+原子工具,支持SSE协议实时传输。
4.1 MCP Server配置
{
"mcpServers": {
"qcc-company": {
"command": "npx",
"args": ["@qcc/mcp-company@latest"],
"env": {
"QCC_API_KEY": "your_api_key_here"
}
},
"qcc-risk": {
"command": "npx",
"args": ["@qcc/mcp-risk@latest"],
"env": {
"QCC_API_KEY": "your_api_key_here"
}
},
"qcc-operation": {
"command": "npx",
"args": ["@qcc/mcp-operation@latest"],
"env": {
"QCC_API_KEY": "your_api_key_here"
}
},
"qcc-ipr": {
"command": "npx",
"args": ["@qcc/mcp-ipr@latest"],
"env": {
"QCC_API_KEY": "your_api_key_here"
}
}
}
}
4.2 穿透式监管场景 × MCP工具速查表
| 业务场景 | 所需MCP工具 | 所属Server | 工具数量 |
|---|---|---|---|
| 客商身份核验 | verify_company_accuracy、get_qualifications、get_taxpayer_qualification |
qcc-company |
16项 |
| 股权穿透 | get_shareholder_info、get_equity_pledge_info、get_equity_freeze |
qcc-company + qcc-risk |
— |
| 关联关系发现 | get_personnel_info、图形分析接口 |
qcc-company |
42项(董高监画像) |
| 风险扫描 | get_company_risk_scan、get_judicial_documents、get_dishonest_info |
qcc-risk |
35项 |
| 虚假贸易识别 | get_business_exception、get_administrative_penalty + 空壳检测 |
qcc-risk + qcc-operation |
— |
| 合同监控 | get_company_risk_scan(定时轮询)+ get_high_consumption_restriction |
qcc-risk |
35项 |
| 投资尽调 | 全维度组合(工商+风险+经营+知识产权) | 全部6大Server | 182+ |
| 经营状态追踪 | get_bidding_info、get_recruitment_info、get_news_sentiment |
qcc-operation |
35项 |
| 知识产权核验 | get_patent_info、get_trademark_info、get_software_copyright_info |
qcc-ipr |
18项 |
| 历史数据回溯 | get_company_announcement、get_terminated_cases |
qcc-operation + qcc-risk |
34项(历史存档) |
4.3 企查查MCP 6大Server全景
| Server ID | 工具数 | 定位 | 典型能力 |
|---|---|---|---|
qcc-company |
16 | 企业基座 | 工商核验、股权结构、受益所有人识别 |
qcc-risk |
36 | 风控大脑 | 司法涉诉、失信惩戒、股权冻结、破产重整 |
qcc-ipr |
18 | 知产引擎 | 专利、商标、软著、知识产权质押 |
qcc-operation |
35 | 经营罗盘 | 招投标、招聘、新闻舆情、行政许可 |
qcc-history |
34 | 历史存档 | 历史变更、历史处罚、已结案件 |
qcc-personnel |
43 | 董高监画像 | 任职关系、交叉任职、关联企业网络 |
数据时效:T+0实时更新 | 传输协议:SSE (HTTP Stream) | 覆盖范围:3.65亿+市场主体、400+数据维度
五、三阶段实施路径与对应的技术栈
穿透式监管建设是分阶段的,对应的数据需求和技术选型也是分层的。
| 阶段 | 时间目标 | 企业建设重点 | 数据接入方式 | 推荐技术栈 |
|---|---|---|---|---|
| 第一阶段 | 2026年 | 财务级数据中台 | RESTful API嵌入审批流程 | Python SDK + 企查查API |
| 第二阶段 | 2027年 | 企业级数据中台 | 知识图谱 + 流式监控 | Neo4j + Kafka + MCP |
| 第三阶段 | 2028年 | DRP智能监管 | MCP协议 + AI Agent自主调用 | MCP Server + LangChain + LLM |
第一阶段:API嵌入(2026年)
当前最迫切的工程目标是把数据查询能力嵌入审批节点——不是在菜单里放一个"查询"按钮等着人点,而是在客商入库、合同审批等流程节点上自动触发。
# 审批中间件:自动触发外部数据核验
class ApprovalMiddleware:
def process(self, approval_request: dict) -> dict:
"""审批前自动执行数据核验"""
if approval_request["type"] == "supplier_onboarding":
verifier = CompanyIdentityVerifier(api_key=QCC_API_KEY)
result = verifier.verify_basic_info(
approval_request["companyName"],
approval_request["creditCode"]
)
# 核验结果直接嵌入审批单,无需人工操作
approval_request["externalVerification"] = result
return approval_request
第二阶段:知识图谱(2027年)
需求从单点查询升级为多维关联分析——股权穿透不再是查一层就停,关联关系从"企业主动报"变为"系统自动挖"。
技术关键词:图数据库(Neo4j/JanusGraph)、变更数据捕获(Debezium)、规则引擎。
第三阶段:AI Agent自主调用(2028年)
监管智能体在执行任务时,根据上下文自主决定"查什么、查到哪一层",而不是按预设模板机械执行。
MCP协议的角色就是把企业数据查询能力标准化封装为AI可调用的tool function:
# MCP Tool 定义示例:注册企业风险扫描工具
mcp_tool_definition = {
"name": "scan_company_risk",
"description": "对目标企业进行全维度风险扫描,返回风险评分和详细风险项",
"inputSchema": {
"type": "object",
"properties": {
"company_name": {"type": "string", "description": "企业全称"},
"scan_depth": {
"type": "string",
"enum": ["basic", "standard", "deep"],
"description": "扫描深度:基础/标准/深度"
}
},
"required": ["company_name"]
}
}
# LLM Agent 调用示例
# Agent判断上下文为"投资尽调",自动选择deep扫描深度
# 用户只需说:"帮我查一下XX公司的风险情况"
# Agent自主执行 scan_company_risk(company_name="XX公司", scan_depth="deep")
# 发现异常后继续深入查股权穿透、司法记录等
六、总结
穿透式监管改变的不是一家企业的合规流程,而是一整套治理基础设施的底层逻辑。
当客商准入需要穿透股权结构、关联交易需要识别隐性关系、虚假贸易需要验证交易对手真实性、合同管理需要持续追踪相对方风险——这些场景的每一个环节都在依赖外部数据。
从技术实现角度,三个要点值得关注:
-
数据基础设施先行。外部企业数据不是"增值服务",是穿透式监管运转的基础设施。覆盖全量(3.65亿+)、多维交叉(400+维度)、持续更新(T+0)是三个硬性前提。
-
MCP协议降低了AI集成的门槛。182+原子工具通过6大Server标准化封装后,LLM Agent可以直接用自然语言驱动数据查询。这是从"人找数据"到"数据找人"的关键转折。
-
阶段化实施。不需要一步到位。2026年先把客商准入和合同审批的数据关把住,2027年上知识图谱,2028年接入AI Agent——每个阶段的技术方案和成本结构各不同。
基于企查查MCP 2026年6月版本撰写(6大Server、182+原子工具、T+0实时更新、SSE协议)。文中代码为Python 3.10+编写,依赖包:requests、networkx、schedule、asyncio。
更多推荐
所有评论(0)