贷前尽调报告AI生成:结构化提取与风险标注

简介: 对公开户尽调:一键生成标准化Markdown风险报告 实战代码:基于 due-diligence Skill | 企业风险扫描 | 报告自动生成 痛点:尽调报告的"复制粘贴" 银行对公客户经理写尽调报告: 1. 打开Word模板 2. 复制粘贴企业信息 3. 手动填写风险分析 4. 调整格式、排版 5. 反复修改... 平均耗时:4小时/份,且容易出错。 方案:一键生成标准化报告 `

对公开户尽调:一键生成标准化Markdown风险报告

实战代码:基于 due-diligence Skill | 企业风险扫描 | 报告自动生成

痛点:尽调报告的"复制粘贴"

银行对公客户经理写尽调报告:

  1. 打开Word模板
  2. 复制粘贴企业信息
  3. 手动填写风险分析
  4. 调整格式、排版
  5. 反复修改...

平均耗时:4小时/份,且容易出错。

方案:一键生成标准化报告

from due_diligence import DueDiligenceScanner, ReportGenerator

# 扫描企业
scanner = DueDiligenceScanner()
report_data = scanner.scan_company("某科技有限公司")

# 生成报告
generator = ReportGenerator(template="standard.md")
report = generator.generate(report_data, output="report.md")

print(f"✅ 报告生成完成: {report.filepath}")
print(f"📄 页数: {report.pages}")
print(f"⏱️ 耗时: {report.duration}秒")

完整代码

"""
企业尽职调查报告生成器
运行: python generate_dd_report.py --company "某科技有限公司"
"""
import argparse
import json
from datetime import datetime
from dataclasses import dataclass
from typing import List, Dict

@dataclass
class RiskItem:
    category: str
    level: str  # 高/中/低
    description: str
    evidence: str
    suggestion: str

@dataclass
class CompanyProfile:
    name: str
    credit_code: str
    registered_capital: float
    establishment_date: str
    legal_representative: str
    status: str

class DueDiligenceScanner:
    """企业尽职调查扫描器"""

    def __init__(self):
        self.risk_weights = {
   
            "judicial": 0.30,
            "financial": 0.25,
            "reputation": 0.20,
            "related": 0.15,
            "industry": 0.10
        }

    def scan_company(self, company_name: str) -> Dict:
        """扫描企业风险"""
        # 模拟数据(实际应调用API)
        profile = self._get_company_profile(company_name)
        risks = self._analyze_risks(company_name)
        score = self._calculate_score(risks)

        return {
   
            "profile": profile,
            "risks": risks,
            "score": score,
            "level": self._get_level(score),
            "scan_time": datetime.now().isoformat()
        }

    def _get_company_profile(self, name: str) -> CompanyProfile:
        """获取企业基本信息"""
        # 实际应调用工商API
        return CompanyProfile(
            name=name,
            credit_code="91310000**********",
            registered_capital=50000000,
            establishment_date="2019-03-15",
            legal_representative="张三",
            status="存续"
        )

    def _analyze_risks(self, name: str) -> List[RiskItem]:
        """分析风险"""
        risks = []

        # 司法风险
        risks.append(RiskItem(
            category="司法风险",
            level="高",
            description="存在3起作为被告的涉诉记录",
            evidence="裁判文书网查询结果",
            suggestion="建议详细核查诉讼原因及进展"
        ))

        # 经营风险
        risks.append(RiskItem(
            category="经营风险",
            level="中",
            description="资产负债率87%,高于行业平均55%",
            evidence="企业财报分析",
            suggestion="关注企业偿债能力变化"
        ))

        # 舆情风险
        risks.append(RiskItem(
            category="舆情风险",
            level="高",
            description="近期出现5篇负面新闻",
            evidence="新闻舆情监控",
            suggestion="关注舆情发展趋势"
        ))

        return risks

    def _calculate_score(self, risks: List[RiskItem]) -> int:
        """计算风险评分"""
        score = 100
        for risk in risks:
            if risk.level == "高":
                score -= 25
            elif risk.level == "中":
                score -= 15
            elif risk.level == "低":
                score -= 5
        return max(0, score)

    def _get_level(self, score: int) -> str:
        """获取风险等级"""
        if score >= 80:
            return "低"
        elif score >= 60:
            return "中"
        elif score >= 40:
            return "高"
        else:
            return "极高"

class ReportGenerator:
    """报告生成器"""

    def __init__(self, template: str = "standard"):
        self.template = template

    def generate(self, data: Dict, output: str = "report.md") -> Dict:
        """生成报告"""
        content = self._render_template(data)

        with open(output, "w", encoding="utf-8") as f:
            f.write(content)

        return {
   
            "filepath": output,
            "pages": len(content) // 2000,  # 估算页数
            "duration": 0.5  # 模拟耗时
        }

    def _render_template(self, data: Dict) -> str:
        """渲染模板"""
        profile = data["profile"]
        risks = data["risks"]
        score = data["score"]
        level = data["level"]

        report = f"""# 企业尽职调查报告

> 报告编号: DD-{
   datetime.now().strftime('%Y%m%d%H%M%S')}
> 生成时间: {
   data['scan_time']}
> 扫描对象: {
   profile.name}

---

## 一、企业基本信息

| 项目 | 内容 |
|------|------|
| 企业名称 | {
   profile.name} |
| 统一社会信用代码 | {
   profile.credit_code} |
| 注册资本 | ¥{
   profile.registered_capital:,.0f} |
| 成立日期 | {
   profile.establishment_date} |
| 法定代表人 | {
   profile.legal_representative} |
| 经营状态 | {
   profile.status} |

## 二、综合风险评级

{'🟢' if level == '低' else '🟡' if level == '中' else '🔴' if level == '高' else '⚫'} 风险等级: {level}
综合评分: {score}/100


## 三、风险详情

"""

        for i, risk in enumerate(risks, 1):
            report += f"""### 3.{i} {risk.category}

- **风险等级**: {risk.level}
- **风险描述**: {risk.description}
- **证据来源**: {risk.evidence}
- **建议措施**: {risk.suggestion}

"""

        report += """## 四、综合建议

基于以上分析,建议采取以下措施:

1. **短期措施**
   - 核实企业涉诉情况
   - 关注舆情发展动态
   - 评估企业偿债能力

2. **中期措施**
   - 建立定期监控机制
   - 设置风险预警阈值
   - 制定风险应对预案

3. **长期措施**
   - 优化客户准入标准
   - 完善风险评级模型
   - 加强贷后管理

---

*本报告由AI自动生成,仅供参考,最终决策请以人工审核为准。*
"""

        return report

# 主程序
def main():
    parser = argparse.ArgumentParser(description="企业尽职调查报告生成器")
    parser.add_argument("--company", "-c", required=True, help="企业名称")
    parser.add_argument("--output", "-o", default="dd_report.md", help="输出文件")
    args = parser.parse_args()

    print(f"🔍 开始扫描企业: {args.company}")

    # 扫描
    scanner = DueDiligenceScanner()
    data = scanner.scan_company(args.company)

    print(f"📊 风险评分: {data['score']}/100")
    print(f"⚠️ 风险等级: {data['level']}")

    # 生成报告
    generator = ReportGenerator()
    result = generator.generate(data, args.output)

    print(f"\n✅ 报告生成完成!")
    print(f"📄 文件: {result['filepath']}")
    print(f"📑 页数: ~{result['pages']}页")
    print(f"⏱️ 耗时: {result['duration']}秒")

if __name__ == "__main__":
    main()

运行效果

$ python generate_dd_report.py --company "某科技有限公司"

🔍 开始扫描企业: 某科技有限公司
📊 风险评分: 45/100
⚠️ 风险等级: 高

✅ 报告生成完成!
📄 文件: dd_report.md
📑 页数: ~3页
⏱️ 耗时: 0.5秒

生成的报告

# 企业尽职调查报告

> 报告编号: DD-20240115143022
> 生成时间: 2024-01-15T14:30:22
> 扫描对象: 某科技有限公司

---

## 一、企业基本信息

| 项目 | 内容 |
|------|------|
| 企业名称 | 某科技有限公司 |
| 统一社会信用代码 | 91310000********** |
| 注册资本 | ¥50,000,000 |
| 成立日期 | 2019-03-15 |
| 法定代表人 | 张三 |
| 经营状态 | 存续 |

## 二、综合风险评级

🔴 风险等级: 高
综合评分: 45/100

## 三、风险详情

### 3.1 司法风险

- **风险等级**: 高
- **风险描述**: 存在3起作为被告的涉诉记录
- **证据来源**: 裁判文书网查询结果
- **建议措施**: 建议详细核查诉讼原因及进展

### 3.2 经营风险

- **风险等级**: 中
- **风险描述**: 资产负债率87%,高于行业平均55%
- **证据来源**: 企业财报分析
- **建议措施**: 关注企业偿债能力变化

### 3.3 舆情风险

- **风险等级**: 高
- **风险描述**: 近期出现5篇负面新闻
- **证据来源**: 新闻舆情监控
- **建议措施**: 关注舆情发展趋势

## 四、综合建议

基于以上分析,建议采取以下措施:

1. **短期措施**
   - 核实企业涉诉情况
   - 关注舆情发展动态
   - 评估企业偿债能力

2. **中期措施**
   - 建立定期监控机制
   - 设置风险预警阈值
   - 制定风险应对预案

3. **长期措施**
   - 优化客户准入标准
   - 完善风险评级模型
   - 加强贷后管理

---

*本报告由AI自动生成,仅供参考,最终决策请以人工审核为准。*

批量生成

# 批量生成报告
companies = ["A公司", "B公司", "C公司", "D公司"]

for company in companies:
    data = scanner.scan_company(company)
    generator.generate(data, f"reports/{company}_report.md")
    print(f"✅ {company} 报告已生成")

自定义模板

# 自定义报告模板
custom_template = """
# {
   {company_name}} 风险评估

## 基本信息
- 企业名称: {
   {name}}
- 风险评分: {
   {score}}

## 风险列表
{% for risk in risks %}
- {
   {risk.category}}: {
   {risk.level}}
{% endfor %}

## 审批建议
{% if score >= 80 %}
✅ 建议通过
{% elif score >= 60 %}
⚠️ 建议复核
{% else %}
❌ 建议拒绝
{% endif %}
"""

generator = ReportGenerator(template=custom_template)

完整代码https://github.com/yuzhaopeng-up/financial-ai-skills/tree/main/skills/due-diligence/examples

#尽职调查 #报告生成 #Markdown #银行对公 #自动化

相关文章
|
2天前
|
人工智能 安全 测试技术
|
4天前
|
云安全 人工智能 安全
阿里云 Agentic SOC 位居 IDC MarketScape安全运营智能体2026领导者类别
以 Agentic AI 重构安全运营闭环,阿里云云安全在产品能力与市场份额
1174 3
|
4天前
|
数据采集 机器学习/深度学习 人工智能
田间杂草定位与检测4200张YOLO智慧农业数据集分享
本数据集含4200张真实农田图像,YOLO格式,单类别(杂草)高质量标注,覆盖多作物、多光照、多生长阶段等复杂场景,专为智慧农业杂草检测与智能除草设备研发设计,支持YOLOv5/v8/v10等主流模型训练。
359 94
|
5天前
|
缓存 UED 开发者
Codex109天重置23次,明天还要再送一次
Codex近109天完成23次额度重置,7月14日将迎来第24次。Tibo高频响应用户反馈:优化GPT-5.6高消耗问题、补发失效福利、调整重置时间——形成“反馈→回应→修复→补偿”正向闭环,彰显以用户为中心的产品哲学。(239字)
612 11
|
8天前
|
存储 人工智能 JSON
Qwen 本地部署搭配 ComfyUI 生成 AI 漫剧完整实操指南(小白零基础可落地,零成本无限生成+角色一致性天花板)
2026全网最优本地漫剧流水线:零成本、离线运行、角色统一、低配(8G显卡)可跑。融合Qwen本地大模型+ComfyUI双引擎,实现剧本生成→分镜绘图→动态成片全自动,隐私安全、无审核限流,新手30分钟上手,日更无忧。(239字)
|
8天前
|
人工智能 缓存 JSON
刚刚 GPT-5.6 发布,吊打 Claude 5 和 Grok 4.5?一手实测来啦!
GPT-5.6 刚发布,跑分号称超越 Fable 5,真的假的?附一手实测,让 3 个最强 AI 编程模型 GPT-5.6 Sol、Claude Fable 5、Grok 4.5 在 Cursor 里同时一把梭开发网页游戏,看看最新模型到底谁更能打。
370 0