Back to skills
SKILL.md
Ecm Dd Data Verify
ASecurityECM 尽职调查工具类 Skill:调用第三方公开数据源(Tushare Pro / 企查查开放平台)与客户 提供的材料做交叉比对,发现数据不一致、未披露变更、过期信息等问题。当用户提到以下场景时 触发:外部数据验证、第三方数据核实、自动比对工商信息 / 股东 / 主要人员 / 知识产权 / 行政处罚、 用 Tushare 查财务数据 / 用企查查查工商、客户提供的营业执照 / 股东名册与外部工商档案是否一致、 API 数据比对、public data verification、cross-check 客户材料、抓取外部公开数据、 核实注册资本、核实法定代表人、核实实控人穿透、查专利 / 商标 / 软著是否真实存在、 查行政处罚记录。 典型输入:公司统一社会信用代码 / 名称 / ts_code、需比对的维度列表、客户提供的对应数据; 典型输出:数据比对报告(Markdown 表格 + 差异分析 + 建议核实清单)。 非触发边界:本 skill 是**工具类**不输出 DD Memo(五段式);真正的合规判断由各业务 DD skill 去做。不负责文件读取(归 ecm-dd-fi...
- 15 stars
- 0 votes
- 0 copies
- 1 view
- Added June 7, 2026
Works with
Security analysis
92/100- Installs packages at runtime which could introduce malicious dependencies
npx -y skills add ThomasMoreAI/legal-skills-open --skill ecm-dd-data-verify --agent claude-codeAre you the author of Ecm Dd Data Verify?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/thomasmoreai-ecm-dd-data-verify)---
name: ecm-dd-data-verify
title: ecm-dd-data-verify
description: ECM 尽职调查工具类 Skill:调用第三方公开数据源(Tushare Pro / 企查查开放平台)与客户 提供的材料做交叉比对,发现数据不一致、未披露变更、过期信息等问题。当用户提到以下场景时 触发:外部数据验证、第三方数据核实、自动比对工商信息 / 股东 / 主要人员 / 知识产权 / 行政处罚、 用 Tushare 查财务数据 / 用企查查查工商、客户提供的营业执照 / 股东名册与外部工商档案是否一致、 API 数据比对、public data verification、cross-check 客户材料、抓取外部公开数据、 核实注册资本、核实法定代表人、核实实控人穿透、查专利 / 商标 / 软著是否真实存在、 查行政处罚记录。 典型输入:公司统一社会信用代码 / 名称 / ts_code、需比对的维度列表、客户提供的对应数据; 典型输出:数据比对报告(Markdown 表格 + 差异分析 + 建议核实清单)。 非触发边界:本 skill 是**工具类**不输出 DD Memo(五段式);真正的合规判断由各业务 DD skill 去做。不负责文件读取(归 ecm-dd-file-review)、不负责文件搬运(归 ecm-setup-file-organize)、不做实质合规结论(归各业务 DD skill)。 即使用户未明确说"外部数据比对",只要涉及"用 Tushare / 企查查 查 XXX 并与客户材料对比" 也应触发本 skill。
author: zeweihan
author_url: https://github.com/zeweihan/A-market-ecm-lawyer-plugin/tree/main/skills/ecm-dd-data-verify
license: MIT
version: 0.1.0
execution_mode: open
jurisdiction: cn
practice: corporate
language: zh
---
# ecm-dd-data-verify
## 定位与边界
本 skill 是 **ECM DD 的工具类 skill**,和 17 个业务性 DD skill(dd-approval / dd-entity / … /
dd-compliance)有明显的职责分工:
- 业务性 DD skill **输出"合规判断"**(核查要点 + 审阅发现 + 风险分级 + 建议措施,五段式)
- 本 skill **输出"数据差异清单"**(客户数据 ↔ 外部公开数据的逐字段比对结果),供业务 DD
skill 作为输入使用
> **⚠️ 本 skill 不套用 `shared/templates/dd-skill-template.md` 的五段式输出契约。**
> 该模板只约束业务性 DD skill。本 skill 走自己的"数据比对报告"格式。
### 本 skill 负责
- 按需求维度调用 `scripts/tushare_connector.py` / `scripts/qcc_connector.py` 取外部数据
- 将外部数据与客户材料中的对应字段做逐项比对
- 为每条差异打"高 / 中 / 低"级别(仅指**比对差异本身的严重程度**,不等同于业务风险分级)
- 输出差异清单 + 可能原因 + 建议核实措施
### 本 skill 不负责
- 合规结论——差异是否构成发行上市障碍,交由调用它的业务 DD skill 判断
- 文件读取——客户文件的 PDF/Word/Excel 读取归 `ecm-dd-file-review`
- 文件归位——归 `ecm-setup-file-organize`
- 法规解释——归 `ecm-research-reg-search` / `ecm-research-reg-study`
## 免责声明
本 skill 产出的数据比对报告仅为尽调辅助工具底稿,不构成最终法律意见。Tushare 与企查查是
第三方商业数据源,数据口径与更新频率由其运营方决定,存在滞后或偏差的可能。关键事项仍须
以政府主管部门出具的官方文件为准。完整免责声明见 [DISCLAIMER.md](../../DISCLAIMER.md)。
## 资深律师执行标准
执行本 skill 时,必须同时遵循 [senior-lawyer-execution-standards.md](../../shared/templates/senior-lawyer-execution-standards.md)。本 skill 的任何输出不得突破四条底线:事实可追溯、法源可核验、风险可分级、建议可落地;无法核验时必须显式标注。
## 本 skill 的实务加固点
- **数据不替代底稿**:Tushare、企查查等第三方数据仅作交叉验证线索,不得覆盖客户原件和官方登记信息。
- **差异分级**:主体名称、股本、股东、董监高、处罚、诉讼、经营范围等差异需按发行影响分级。
- **原始响应留存**:每次调用必须记录来源、查询关键词、时间戳、接口返回和失败原因,归入数据比对底稿。
- **高风险触发器**:第三方数据出现未披露处罚/诉讼/股权冻结/经营异常,应转对应 DD skill 复核。
## 前置依赖
### 外部依赖
- Python 3.9+(脚本使用 dataclass / `from __future__ import annotations`)
- `pip install -r scripts/requirements.txt`(requests / pandas 等)
- 至少一个以下环境变量组合(缺失时自动进入 fallback):
- `TUSHARE_TOKEN`(Tushare Pro 账号 token)
- `QCC_APPKEY` + `QCC_SECRET`(企查查开放平台凭证)
### 内部依赖
- `ecm-setup-file-organize`:已归位的客户文件,本 skill 据此定位"客户侧数据"
- `ecm-dd-file-review`:如需从 PDF/Word/Excel 中抽取客户侧字段值,先调用它
### 可选数据源
目前已封装的数据源:
| 数据源 | 覆盖维度 | 典型用途 |
|-------|---------|---------|
| Tushare Pro | 上市公司基础、财务指标、前十大股东、利润表 / 资产负债表 | 已上市标的反查、财务口径核验 |
| 企查查 | 工商基础、股东及出资、主要人员、工商变更、知识产权、行政处罚 | 全量非上市标的核验(发行人自身 / 股东 / 子公司 / 关联方) |
## 核心工作流(五步)
### 第 1 步:明确比对维度
和律师确认本次需要比对的维度。ECM DD 场景常见的 6 大维度:
| 维度 | 对应字段 | 数据源优先级 |
|------|---------|-------------|
| 工商基本信息 | 企业名称、统一社会信用代码、注册资本(实缴 / 认缴)、成立日期、注册地址、经营范围、法定代表人、登记机关、企业状态 | 企查查 > Tushare |
| 股东信息 | 股东名称、出资额、持股比例、出资方式、出资日期 | 企查查(穿透)+ Tushare(上市公司前十大) |
| 主要人员 | 法定代表人、董事、监事、高管 | 企查查 + Tushare `stock_company` |
| 知识产权 | 专利号、商标注册号、软著登记号、权利人 | 企查查 |
| 行政处罚 | 处罚机关、处罚日期、处罚事由、处罚结果 | 企查查 |
| 财务数据 | 营业收入、净利润、资产总额、负债总额、股东权益、ROE | Tushare(仅上市公司) |
不在列表里但用户要求的维度,应以"可扩展点"加入 `references/dimensions-registry.md`。
### 第 2 步:凭证预检
使用对应脚本的 `--smoke` 模式检查凭证:
```bash
python scripts/tushare_connector.py --smoke
python scripts/qcc_connector.py --smoke
```
- **两个都没凭证**:直接跳到第 5 步的"fallback 路径",不要伪造数据
- **只有一个有凭证**:走可用那个的维度,另一个相关维度进 fallback
### 第 3 步:取客户侧数据
对于每个维度,先确定"客户说什么":
1. 从 `02-尽职调查/02-02-主体资格/` 等目录读取相关文件(由
[ecm-dd-file-review](../ecm-dd-file-review/SKILL.md) 完成)
2. 从已完成的业务 DD skill 的 Memo 里摘取字段(如已运行 dd-entity,可从其 Memo 抽注册资本)
3. 直接由律师口头告知(适用于快速核对场景)
把客户侧数据整理成结构化表格写入 `references/client-data-staging.md`(工作区临时文件),
明确每个值的来源。
### 第 4 步:调用 API 取外部数据
按维度调用 connector。**推荐脚本方式**(可追溯 + 留日志):
```bash
# 工商基础 + 股东 + 处罚
python scripts/qcc_connector.py \
--basic "腾讯科技(深圳)有限公司" \
> 05-底稿和附件/数据比对/qcc_basic_$(date +%Y%m%d_%H%M%S).json
# 已上市标的:基础 + 财务
python scripts/tushare_connector.py \
--ts-code 600519.SH --fields full \
--period 20241231 --financials
```
**库方式**(供编排脚本使用):
```python
from scripts.qcc_connector import QccClient, MissingCredentialError
c = QccClient()
try:
basic = c.company_basic("腾讯科技(深圳)有限公司")
keyno = basic["Result"][0]["KeyNo"]
shareholders = c.shareholders(keyno)
penalty = c.penalty(keyno)
except MissingCredentialError:
# 跳到 fallback
...
```
所有原始响应 **留痕**到 `05-底稿和附件/数据比对/` 目录,保留到项目归档。
### 第 5 步:逐字段比对 + 输出报告
按下方"输出格式契约"生成 Markdown 报告。差异分级规则:
| 级别 | 含义 | 典型情形 |
|------|------|---------|
| **高** | 核心字段存在实质差异,**可能触发业务级高风险** | 注册资本客户说 5000 万、API 显示 3000 万;法定代表人客户写张三、API 显示李四;实控人穿透链断裂 |
| **中** | 次要字段差异或信息滞后 | 经营范围表述不同但实质相近;最近一次变更未同步到 API(<30 天) |
| **低** | 格式 / 笔误 / 翻译差异 | 名称全角 / 半角括号差异;地址后缀"号""栋"差异;单位万元 / 元 |
**差异 ≠ 业务风险**。差异的业务意义由调用本 skill 的上层业务 DD skill 判断。
### fallback 路径(凭证 / 数据完全不可用时)
无法取到外部数据时,**绝不伪造**。改为输出"人工核对清单":
```markdown
# 数据比对报告(fallback 模式)
> 本次比对因 [外部 API 凭证缺失 / API 返回错误 / 数据源暂时不可用],
> 已自动降级为"人工核对清单"。以下字段需要项目组律师**手工登录相应平台**核对,
> 核对完成后把结果补充到本报告。
## 建议的人工核对渠道
- 企查查官网 https://www.qcc.com/
- 天眼查 https://www.tianyancha.com/
- 国家企业信用信息公示系统 https://www.gsxt.gov.cn/
- 裁判文书网 https://wenshu.court.gov.cn/
- 证监会行政处罚库 http://www.csrc.gov.cn/pub/zjhpublic/ (搜索"行政处罚决定书")
## 待人工核对字段清单
| 维度 | 字段 | 客户侧数据 | 官方口径(待核对) | 核对结果 |
|------|------|-----------|-------------------|---------|
| 工商 | 注册资本 | 5000 万元 | (待核对) | |
| 工商 | 法定代表人 | 张三 | (待核对) | |
| ... | ... | ... | ... | |
```
## 输出格式契约
```markdown
# 数据比对报告:{客户简称}
> 项目:{客户简称} | 编制日期:YYYY-MM-DD | 编制人:{律师姓名}
> 数据源:{Tushare Pro / 企查查 / 二者}
> 凭证状态:{均可用 / 仅 Tushare / 仅企查查 / 均不可用(fallback 模式)}
## 一、比对维度与数据源
| 维度 | 数据源 | 抓取时间 | 原始响应存档 |
|------|-------|---------|-------------|
| 工商基本信息 | 企查查 | 2026-04-24 10:30 | 05-底稿和附件/数据比对/qcc_basic_20260424_103000.json |
| 股东信息 | 企查查 | 2026-04-24 10:31 | ... |
| 财务数据 | Tushare Pro | 2026-04-24 10:32 | ... |
## 二、比对结果汇总
| 序号 | 维度 | 字段 | 客户侧数据 | 外部数据 | 差异 | 级别 | 备注 |
|-----:|------|------|-----------|---------|------|------|------|
| 1 | 工商 | 注册资本 | 5000 万元 | 5000 万元 | 无 | - | 一致 |
| 2 | 工商 | 法定代表人 | 张三 | 李四 | 人名不同 | 高 | 建议核实最近变更 |
| 3 | 股东 | 股东 A 持股比例 | 30% | 28% | -2 个百分点 | 高 | 疑有未披露股权转让 |
## 三、差异分析
### 差异 2:法定代表人不一致
- 客户侧来源:02-02-主体资格/营业执照-20250312.pdf
- API 侧数据:企查查 2026-04-23 抓取
- 可能原因:
1. 客户营业执照为旧版,未及时更换
2. 外部数据源未同步最近变更
3. 存在未披露的治理层变更
- 建议核实:向客户索取最新营业执照 + 变更登记通知书;同时查工商局在线档案
### 差异 3:股东持股比例不一致
...
## 四、建议核实事项
- **高风险项(立即核实)**:
1. 法定代表人差异——要求客户提供最近一次变更登记完整档案
2. 股东 A 持股比例差异——要求客户提供近两年历次股权变更协议
- **中风险项(次轮核实)**:
- ...
- **低风险项(可一并处理)**:
- ...
## 五、数据源局限与注意事项
- 企查查数据有 T+{N} 天滞后,本次抓取时间:2026-04-24
- Tushare 财务数据以公司披露的定期报告为准,定期报告披露前可能暂无最新季度数据
- 行政处罚维度仅覆盖公开发布的处罚决定书,部门内部处理、未公开的警示谈话等不在覆盖范围
- 关键事项仍以政府主管部门出具的官方文件为准
## 六、附件
- 05-底稿和附件/数据比对/qcc_basic_YYYYMMDD_HHMMSS.json
- 05-底稿和附件/数据比对/qcc_shareholders_YYYYMMDD_HHMMSS.json
- 05-底稿和附件/数据比对/tushare_fina_YYYYMMDD_HHMMSS.csv
- (下级业务 DD skill 可直接引用上述原始响应)
```
**契约硬性要求**:
1. 一级标题必须是"数据比对报告:{客户简称}"——供上层 Skill 识别
2. 必有"比对维度与数据源 / 比对结果汇总 / 差异分析 / 建议核实事项 / 数据源局限与注意事项"
五个二级标题
3. 汇总表的"级别"列取值必须是"高 / 中 / 低 / -"("-" 表示一致)
4. 输出文件放到 `05-底稿和附件/数据比对/数据比对报告-{YYYYMMDD}.md`
(如该目录尚未建立,先按 `shared/templates/project-folder-structure.md` 创建)
5. 所有 API 原始响应必须**留痕存档**到 `05-底稿和附件/数据比对/`,不得仅贴到报告里
## 如何被其他 DD skill 调用
业务 DD skill 可以在自己的"核心工作流"里插入本 skill 作为可选前置步骤。约定:
- **调用方式**:在业务 DD skill 的 SKILL.md 里写"可选:调用 `ecm-dd-data-verify` 对 {具体字段}
做外部数据核验"
- **传递的输入**:公司名称 / 统一社会信用代码 / ts_code、需比对的字段清单、客户侧字段值
- **接收的输出**:本 skill 生成的 Markdown 报告 + 原始响应 JSON
- **后续处理**:业务 DD skill 将"高"级差异写进自己的"审阅发现"段,"中 / 低"级差异
作为补充材料注明
典型链路:
```
ecm-dd-entity(主体资格)
└─ 可选调用 ecm-dd-data-verify(工商基本信息维度)
└─ 调用 scripts/qcc_connector.py --basic
```
## 常见误用 / FAQ
- **Q:可以让本 skill 直接生成 DD Memo 吗?**
A:不可以。本 skill 是工具,产出的是"数据差异"。业务合规判断必须由对应业务 DD skill 完成。
- **Q:API 数据和客户数据都对不上怎么办?**
A:记为"高"级差异,写进报告的"差异分析",并建议人工登录政府主管部门官网核对 —— 以官方
档案为最终仲裁。
- **Q:可以把 TUSHARE_TOKEN 写到仓库的某个文件里吗?**
A:不可以。任何形式落盘都违反本 skill 的安全约束。见 [docs/data-connectors.md](../../docs/data-connectors.md#安全约束)。
- **Q:我只想手动对一下,不想跑脚本?**
A:可以。走 fallback 模式:不调用 API,仅输出"人工核对清单"+"建议核对渠道"。
## 参考资料索引
- [references/dimensions-registry.md](./references/dimensions-registry.md) — 6 大比对维度 + 字段级映射
- [references/report-template.md](./references/report-template.md) — 数据比对报告完整模板(含 fallback 版)
- [../../docs/data-connectors.md](../../docs/data-connectors.md) — 连接器安装、环境变量、异常分层、故障排查
- [../../scripts/tushare_connector.py](../../scripts/tushare_connector.py) — Tushare 封装
- [../../scripts/qcc_connector.py](../../scripts/qcc_connector.py) — 企查查封装
## 变更规则
- 输出契约变动(报告结构)→ **MAJOR**,同步更新所有引用本 skill 的业务 DD skill
- 新增数据源 / 新增比对维度 → **MINOR**,更新 `references/dimensions-registry.md` 和
`docs/data-connectors.md`
- connector 脚本 API 兼容性不变的修复 → **PATCH**
Attribution
Comments
Loading comments…