📌 阅读提示本文档基于公开报道、行业会议发言、学术论文及监管文件等公开信息整理,旨在为某银行AI建设工程的AI测试能力建设提供同业参考。文中信息可能存在时效性差异,具体实践细节以各行官方发布为准。

1. 行业综述

银行业AI测试的整体发展水平

随着大模型技术的快速发展,国内银行业在AI测试领域的探索呈加速态势。据公开报道,截至2025年底,已有超过20家银行在年报或公开场合提及AI测试相关布局。整体来看,银行业AI测试呈现以下特征:

不同类型银行的AI测试进展差异

银行类型代表机构AI测试进展特点主要投入方向
国有大型银行工商银行、建设银行、某银行、中国银行体系化布局早,资源投入大,自研平台为主大模型评测平台、AI测试中台、安全评测体系
股份制银行招商银行、兴业银行、民生银行、中信银行敏捷探索,注重业务场景驱动,部分与外采结合智能用例生成、AI辅助测试、场景化评测
城商行/农商行北京银行、上海银行等起步较晚,多以跟随策略和外部合作为主AI应用验收测试、合规性检测

趋势与方向

据行业分析,未来3-5年银行业AI测试将呈现以下趋势:

💡 行业共识据2025年金融AI测试研讨会公开信息,业界普遍认为「评测能力」是银行AI落地能力的核心标志之一——评测不充分,再好的模型也不敢上生产。

2. 国有大行实践

工商银行:AI测试体系与大模型评测平台

据公开报道,工商银行在AI测试领域布局较早,建立了较为完善的AI测试体系:

📌 工行AI测试体系要点

据公开报道综合分析,工行AI测试体系的核心特点包括:统一评测平台支撑全行AI应用、金融场景专属评测数据集、安全评测常态化运行、AI辅助测试提效。其评测平台覆盖模型准入、上线验收、持续监测全生命周期。

建设银行:智能测试平台

据公开报道,建设银行在智能测试方面进行了积极探索:

某银行:AI赋能测试

据公开报道,某银行在AI赋能测试方面进行了实践探索:

中国银行:AI测试探索

据公开报道,中国银行在AI测试领域进行了探索性实践:

国有行AI测试投入对比

维度工商银行建设银行某银行中国银行
评测平台自研大模型评测平台,功能较完善智能测试平台建设中AI测试能力建设中探索阶段
安全评测常态化安全评测机制安全测试能力建设合规评测探索合规评测探索
AI辅助测试用例生成、缺陷分析等应用测试数据智能生成试点应用探索阶段
评测数据万级金融场景数据集建设中积累中积累中
组织保障专项AI测试团队测试团队+AI协同测试团队+AI协同测试团队+AI协同
公开信息丰富度较高中等中等较少
📖 说明以上信息基于各行年报、行业会议公开分享、媒体报道等公开渠道整理。各行AI测试建设的具体技术架构、投入规模、实施效果等细节信息,通常不对外完整披露,因此本对比仅反映公开可获取的信息,不一定代表各行实际能力水平。

3. 股份制银行实践

招商银行:AI测试体系与大模型测试实践

据公开报道,招商银行作为股份制银行中科技投入领先的机构,在AI测试领域较为活跃:

兴业银行:AI赋能测试

据公开报道,兴业银行在AI赋能测试方面进行了积极探索:

民生银行:AI测试探索

据公开报道,民生银行在AI测试领域进行了初步探索:

中信银行:AI辅助研发测试

据公开报道,中信银行在AI辅助研发测试方面进行了积极探索:

其他股份制银行动态

据公开报道,以下银行也在不同程度上开展了AI测试相关探索:

股份制银行AI测试特征总结

据公开信息综合分析,股份制银行在AI测试领域呈现出一些共同特征:

💡 启示股份制银行在AI测试领域普遍采用「敏捷探索、场景驱动」的策略,与国有行的「体系化建设」形成互补。对于中型银行而言,先聚焦1-2个关键场景做深评测,再逐步扩展,是一条较为务实的路径。

4. 重点专题分析

大模型评测平台建设

大模型评测平台是各行AI测试建设的核心基础设施。据公开信息,各行的评测平台功能对比如下:

功能模块说明行业建设情况
模型能力评测评估模型的推理、生成、理解等基础能力多数银行已开展,使用公开基准+自建数据集
安全评测有害内容、越狱攻击、注入攻击等安全测试头部银行已建立常态化机制,多数银行处于建设或探索阶段
场景化评测模拟真实业务场景的端到端评测头部银行已建设场景库,是差异化竞争的关键
自动化评测流水线评测任务的自动调度、执行和结果分析少数银行实现自动化,多数仍以半自动或手工为主
评测数据管理评测数据集的构建、标注、版本管理各行重视程度高,但数据质量和规模参差不齐
评测结果可视化评测报告的自动生成和可视化展示头部银行较完善,多数银行功能较基础

AI辅助测试工具

AI辅助测试工具是提升测试效率的重要手段。据公开报道,行业内应用较多的工具方向包括:

📦 工具应用成熟度参考

据行业分析,AI辅助测试工具的成熟度大致可分为三个层次:Level 1(辅助)—AI生成结果需人工审核确认,目前多数银行处于此阶段;Level 2(协同)—AI与测试人员协同工作,AI自动完成高置信度任务,仅复杂场景需人工介入;Level 3(自主)—AI在限定范围内自主完成测试设计与执行,人仅做监督和策略决策,行业整体尚未达到。

测试数据管理

测试数据是AI测试的基础要素,也是银行业面临的突出挑战。据公开信息:

安全评测实践

安全评测是银行业AI测试的重中之重。据公开信息,各行在大模型安全方面的主要实践包括:

⚠️ 关键发现据公开信息,业界普遍认为金融行业的大模型安全评测需要「通用安全 + 行业专项安全」双轨并行。通用安全评测已有较多开源工具和基准可参考,但金融场景专项安全评测(如反洗钱话术识别、信贷偏见检测等)尚无成熟的标准和工具,是各行自主建设的重点方向。

5. 对某银行AI建设工程的启示

可借鉴的做法

需避免的教训

差异化优势方向

结合某银行AI建设工程的「1+N+X」架构特点和某银行政策性银行的定位,以下方向可作为差异化建设的重点:

同业路径选择的深度分析

基于对同业公开信息的分析,各行在AI测试建设路径上呈现出几种典型模式,可为某银行AI建设工程提供更具体的参考:

模式一:平台先行型(以工行为代表)

据公开报道,该模式的特点是先建设统一的评测平台基础设施,再逐步接入各业务场景的AI应用。优势在于标准化程度高、可复用性强,但前期投入大、建设周期长。据行业会议信息,该路径适合AI应用场景丰富、技术团队规模较大的大型银行。对于某银行AI建设工程而言,可参考其平台架构设计理念,但不宜照搬其建设节奏和投入规模。

模式二:场景驱动型(以招行、兴业为代表)

据公开信息,该模式以具体业务场景为切入点,先在一个或少数几个场景中建设完整的评测能力进行验证,成功后再横向推广。优势是见效快、风险可控,但可能存在不同场景评测能力碎片化的风险。据行业交流信息,该模式对中型银行较为适用——某银行AI建设工程可优先选择智能客服、知识库问答等场景,完成「从0到1」的突破后再扩展。

模式三:跟随合作型(以多数城商行为代表)

据公开报道,该模式通过与科技厂商合作引入成熟的AI测试工具或平台,自身团队主要负责验收和使用。优势是启动快、技术门槛低,但定制化能力有限、长期可能存在供应商依赖。据行业分析,对于某银行AI建设工程而言,可在初期借助外部力量快速建立基线能力,但核心评测能力和评测数据应逐步实现自主可控。

某银行AI建设工程路径建议

综合以上模式分析,建议某银行AI建设工程采用「场景驱动 + 平台跟进」的混合路径:

💡 关键判断据行业公开信息分析,中型银行在AI测试建设中常见的误区是:在单个场景未跑通的情况下就启动大规模平台建设,导致平台建成后缺乏可接入的场景和充足的评测数据。建议某银行AI建设工程坚持「先场景验证、再平台整合」的原则,避免过早进行重资产投入。

🏗️ 我处AI测试能力建设建议

  • 短期(2026年):完成AI测试知识库建设(本知识库),建立大模型评测基础能力(至少覆盖安全评测和基础能力评测),积累首批评测用例
  • 中期(2027年):建设统一的评测管理平台,实现评测流程自动化,建立评测数据资产管理机制
  • 长期(2028年+):形成具有银行特色的AI测试体系,在政策性银行AI测试领域建立行业影响力

6. 标准化与行业协作

金融行业AI测试标准

据公开信息,金融行业AI测试标准正在逐步建立:

行业协会和评测基准

开放资源与参考

资源类型说明与银行业相关性
GarakNVIDIA开源LLM安全扫描器,支持多种攻击模式可用于安全评测基线建设
PyRIT微软开源红队测试框架用于深度安全测试
C-Eval / CMMLU中文大模型评测基准提供通用能力评测参考
金融领域论文学术界关于金融AI评测的研究提供方法论参考和对比基线
监管文件生成式AI管理办法等政策文件明确合规测试的底线要求
📖 延伸阅读安全评测的详细方法论和工具使用,请参考安全评测章节。评测维度体系请参考评测维度章节。

7. 银行业AI测试成熟度全景对比

基于公开信息的综合分析,以下从多个维度对主要银行的AI测试能力进行成熟度评估。需要说明的是,本对比仅反映公开渠道可获取的信息,各行实际能力可能存在差异,且信息具有时效性。

综合成熟度等级定义

等级定义典型特征
L1 起步期初步关注AI测试,尚未形成体系零星尝试,无专项团队,无评测标准
L2 探索期有明确规划,开展试点项目部分场景试点,小团队探索,开始积累评测数据
L3 建设期多场景推进,平台/工具建设中评测平台在建,评测流程初步标准化,有专职人员
L4 成熟期体系化运行,平台支撑常态化统一评测平台运转,安全评测常态化,评测数据资产化
L5 引领期行业领先,输出标准/方法论参与行业标准制定,开源/对外输出,形成方法论体系

主要银行AI测试成熟度对比

银行综合成熟度评测平台安全评测AI辅助测试评测数据组织保障行业影响力
工商银行L4 成熟期自研统一平台,多维度覆盖常态化运行,红队测试用例生成、缺陷分析等应用万级金融场景数据集专项AI测试团队高(行业会议多次分享)
建设银行L3 建设期智能测试平台建设中安全测试能力建设测试数据智能生成建设中测试团队+AI协同中(有公开分享)
某银行L2-L3AI测试能力建设中合规评测探索试点应用积累中测试团队+AI协同
中国银行L2 探索期探索阶段合规评测探索探索阶段积累中测试团队+AI协同较低
招商银行L3 建设期AI测试体系建设中安全评测机制建立持续测试能力建设场景数据集建设中敏捷测试团队较高(股份制标杆)
兴业银行L2-L3智能测试工具引入探索阶段AI工具引入,效率提升积累中测试团队+AI协同
民生银行L2 探索期探索阶段探索阶段初步探索积累中测试团队+AI协同较低
中信银行L2 探索期探索阶段初步探索AI辅助研发测试积累中测试团队+AI协同较低
城商行整体L1-L2以外采/合作为主依赖外部方案零星应用较少积累兼职/外包为主
📌 评估说明以上成熟度评估基于各行年报、行业会议公开分享、媒体报道及行业分析报告等公开信息综合判断(截至2025年底公开信息)。由于各行对外信息披露程度不同,公开信息丰富的银行评估可能相对更充分。实际的成熟度水平请以各行内部评估为准。

关键维度差距分析

据公开信息分析,当前银行业AI测试能力在各维度上的差距分布呈现以下特征:

8. 案例研究

📌 案例说明以下案例基于公开报道、行业会议发言、学术论文及行业分析报告等公开信息整理,对具体银行的名称和细节进行了适度匿名化处理,以便更聚焦于方法论和经验的提炼。案例中的关键发现和教训具有行业参考价值。

案例:某股份制银行AI测试体系建设经验

背景与起点

据公开信息整理,该股份制银行(以下简称「A银行」)在2023年初启动了AI测试能力的系统性建设。彼时,A银行面临的现实情况是:

建设路径:四步走策略

据公开报道及行业分析,A银行的AI测试能力建设大致可分为四个阶段:

第一步:先学后建(2023年上半年,约3个月)

据行业会议公开分享,该阶段A银行的核心工作是「能力储备和认知对齐」:

第二步:工具选型(2023年年中,约2个月)

据公开信息,A银行在工具选型阶段面临的核心决策是「自研 vs 采购」和「集中 vs 分散」:

🔑 关键决策点一:自研 vs 采购

据行业分析,A银行的决策逻辑如下:

考量维度自研方案采购/开源方案A银行的选择
技术门槛需较强的AI/评测技术团队依赖供应商/社区支持核心能力自研,通用工具复用开源
定制化程度高,可按需定制受限于产品/工具功能边界评测逻辑自研(贴合业务),执行框架复用开源
投入成本前期投入大,长期边际成本低前期投入小,但持续许可/服务费用优先控制前期投入,在验证价值后逐步加大自研
数据安全评测数据完全自控存在数据外泄风险评测数据本地化管理(刚性要求)

据行业交流信息,A银行最终选择了「核心自研 + 开源复用」的混合策略:评测逻辑、评测数据集、安全规则等核心资产完全自研;评测执行框架、基础攻击工具等复用开源方案(如Garak进行安全扫描基线建设、lm-evaluation-harness作为评测执行引擎)。

🔑 关键决策点二:集中 vs 分散

据公开信息分析,A银行面临的第二个关键选择是:评测能力由统一的中心化团队建设和管理,还是由各业务线的测试团队分别建设。

考量维度集中式(统一平台/团队)分散式(各业务线独立)
标准化程度高,评测标准统一低,各业务线标准可能不一致
响应速度可能较慢,需排队快,各业务线自主安排
资源效率避免重复建设,规模效应可能存在重复投入
业务贴合度需要主动理解业务天然贴近业务场景

据行业交流信息,A银行选择了「集中建设、分散使用」的联邦式架构:由中心AI测试团队负责评测平台建设、评测方法标准制定、通用评测数据集维护;各业务线测试团队基于平台能力进行场景化评测的定制和执行。这一模式在标准化和灵活性之间取得了较好的平衡。

第三步:试点项目(2023年下半年,约4个月)

据公开报道,A银行选择了智能客服升级项目作为AI测试能力建设的首个试点场景,原因包括:

据行业会议公开分享,试点阶段的主要实践包括:

第四步:全面推广(2024年至今)

据公开信息,在智能客服试点成功后,A银行将AI测试能力向更多场景推广:

据行业交流信息,至2024年底,A银行的AI测试平台已覆盖该行主要的AI应用场景,评测流程实现了半自动化,评测数据集规模持续增长。但A银行的实践也表明,从试点到全面推广的过程中,最大的挑战不是技术问题,而是组织协调——如何让不同业务线的测试团队真正使用并信任AI评测结果。

经验总结

据公开信息综合分析,A银行的AI测试建设经验可总结为以下几点:

✅ 值得借鉴的经验

  1. 「先学习、再建设」的务实态度:在团队对AI测试没有系统认知之前,不急于启动平台建设。通过系统学习和同业调研建立认知基础,有效避免了「拍脑袋建设」的常见问题
  2. 核心能力自研、通用工具复用的策略:在资源有限的情况下,将有限的研发资源聚焦于评测逻辑、评测数据、安全规则等核心资产,通用执行框架复用开源方案,实现了投入产出比的最大化
  3. 选择「安全可控」的场景作为首选试点:智能客服虽然面向客户,但影响范围可控,且在试点过程中即使出现问题也容易快速修复。这为团队积累了宝贵的实战经验,建立了组织信心
  4. 集中+分散的联邦式组织架构:兼顾了标准化和灵活性的需求,既避免了各业务线的重复建设,又保证了场景化评测的深度
  5. 将评测数据视为核心资产:从试点阶段就建立了评测数据的采集、标注和版本管理规范,确保评测数据的持续积累和复用

⚠️ 值得注意的教训

  1. 初期低估了评测数据建设的难度:据行业交流信息,A银行在初期低估了高质量评测数据构建的工作量。金融场景评测数据的标注需要业务专家参与,而业务专家的时间协调是持续的瓶颈。教训:评测数据建设需要提前规划并持续投入,不能依赖临时抽调业务专家
  2. 评测结果的可信度建设需要时间:在推广阶段,部分业务团队对AI自动评测的结果持怀疑态度,倾向于信任人工评测。教训:评测结果的可信度不仅取决于技术指标,还需要通过持续的对比验证(AI评测 vs 人工评测的一致性分析)来建立组织信任
  3. 工具链的持续演进带来维护成本:AI技术和开源工具迭代速度极快,评测工具链需要持续更新维护。教训:在工具选型时应考虑社区活跃度和长期可持续性,避免选择冷门的开源方案
  4. 过度聚焦技术评测,忽视了业务效果评测:初期评测指标体系偏向技术维度(准确率、召回率等),与业务方关注的用户体验、业务转化等指标存在脱节。教训:评测指标体系设计阶段就应该引入业务方的视角

对某银行AI建设工程的借鉴意义

基于A银行的案例经验,结合某银行AI建设工程的实际,以下几点建议值得特别关注:

💡 核心启示据行业公开信息分析,A银行AI测试建设最值得借鉴的一点是「务实」——在资源有限、团队能力尚在建设的情况下,不追求一步到位的大平台,而是通过聚焦试点、快速验证、逐步推广的方式,实现了从0到1的突破。这对于某银行AI建设工程的AI测试能力建设具有直接的参考价值。

💻 同业AI测试成熟度分析代码示例

以下 Python 脚本基于文中 L1–L5 成熟度评估框架,对同业银行的 AI 测试能力进行定量评估,输出综合排名及雷达图数据:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
银行AI测试成熟度评估模型
基于 L1-L5 成熟度框架,对同业银行的AI测试能力进行定量评估

成熟度等级定义:
  L1 - 初始级(Initial): 依赖人工,能力零散、被动响应
  L2 - 已管理级(Managed): 建立管理流程,开始使用工具
  L3 - 已定义级(Defined): 建立标准化体系,沉淀评测资产
  L4 - 量化管理级(Quantitatively Managed): 基于指标持续优化
  L5 - 优化级(Optimizing): AI 驱动的自适应、自演进评测
"""

import json
import math
from typing import List, Dict, Tuple

# ============================================================
# 1. 评估维度与权重(基于行业实践归纳)
# ============================================================
DIMENSIONS = {
    "D1_平台能力": {
        "weight": 0.25,
        "description": "自动化测试框架、工具链集成、AI评测平台",
        "sub_dimensions": {
            "自动化测试覆盖率": 0.35,
            "AI辅助用例生成": 0.30,
            "评测工具链完整度": 0.35,
        },
    },
    "D2_数据建设": {
        "weight": 0.25,
        "description": "评测数据集、标注质量、数据管理规范",
        "sub_dimensions": {
            "评测数据集规模与质量": 0.40,
            "数据标注体系规范度": 0.30,
            "数据安全与合规管理": 0.30,
        },
    },
    "D3_流程标准化": {
        "weight": 0.20,
        "description": "测试流程规范、评测指标体系、组织协作机制",
        "sub_dimensions": {
            "测试流程标准化程度": 0.35,
            "评测指标体系完整度": 0.35,
            "跨团队协作机制": 0.30,
        },
    },
    "D4_智能分析": {
        "weight": 0.15,
        "description": "缺陷智能定位、根因分析、预测性质量评估",
        "sub_dimensions": {
            "缺陷智能定位能力": 0.40,
            "根因分析自动化": 0.30,
            "质量趋势预测能力": 0.30,
        },
    },
    "D5_组织成熟度": {
        "weight": 0.15,
        "description": "人才梯队、AI文化、持续改进机制",
        "sub_dimensions": {
            "AI测试人才储备": 0.35,
            "组织AI文化成熟度": 0.30,
            "持续改进与学习机制": 0.35,
        },
    },
}


# ============================================================
# 2. 成熟度等级映射
# ============================================================
def score_to_level(score: float) -> Tuple[int, str]:
    """将综合得分映射到 L1-L5 成熟度等级"""
    if score < 1.5:
        return (1, "L1 初始级")
    elif score < 2.5:
        return (2, "L2 已管理级")
    elif score < 3.5:
        return (3, "L3 已定义级")
    elif score < 4.5:
        return (4, "L4 量化管理级")
    else:
        return (5, "L5 优化级")


# ============================================================
# 3. 同业银行评分数据(模拟数据,仅供示例)
# ============================================================
BANK_DATA: List[Dict] = [
    {
        "name": "A银行(国有大行)",
        "scores": {  # 每个子维度 1-5 分
            "D1_平台能力": {"自动化测试覆盖率": 3.5, "AI辅助用例生成": 2.8, "评测工具链完整度": 3.2},
            "D2_数据建设": {"评测数据集规模与质量": 3.0, "数据标注体系规范度": 2.5, "数据安全与合规管理": 4.0},
            "D3_流程标准化": {"测试流程标准化程度": 3.5, "评测指标体系完整度": 3.0, "跨团队协作机制": 2.8},
            "D4_智能分析": {"缺陷智能定位能力": 2.5, "根因分析自动化": 2.0, "质量趋势预测能力": 2.2},
            "D5_组织成熟度": {"AI测试人才储备": 2.8, "组织AI文化成熟度": 3.0, "持续改进与学习机制": 2.5},
        },
    },
    {
        "name": "B银行(股份制)",
        "scores": {
            "D1_平台能力": {"自动化测试覆盖率": 4.2, "AI辅助用例生成": 3.5, "评测工具链完整度": 3.8},
            "D2_数据建设": {"评测数据集规模与质量": 3.8, "数据标注体系规范度": 3.5, "数据安全与合规管理": 4.5},
            "D3_流程标准化": {"测试流程标准化程度": 4.0, "评测指标体系完整度": 3.8, "跨团队协作机制": 3.5},
            "D4_智能分析": {"缺陷智能定位能力": 3.2, "根因分析自动化": 2.8, "质量趋势预测能力": 3.0},
            "D5_组织成熟度": {"AI测试人才储备": 3.5, "组织AI文化成熟度": 3.8, "持续改进与学习机制": 3.2},
        },
    },
    {
        "name": "C银行(城商行)",
        "scores": {
            "D1_平台能力": {"自动化测试覆盖率": 2.5, "AI辅助用例生成": 1.5, "评测工具链完整度": 2.0},
            "D2_数据建设": {"评测数据集规模与质量": 2.0, "数据标注体系规范度": 1.5, "数据安全与合规管理": 3.0},
            "D3_流程标准化": {"测试流程标准化程度": 2.5, "评测指标体系完整度": 2.0, "跨团队协作机制": 1.8},
            "D4_智能分析": {"缺陷智能定位能力": 1.5, "根因分析自动化": 1.0, "质量趋势预测能力": 1.2},
            "D5_组织成熟度": {"AI测试人才储备": 1.5, "组织AI文化成熟度": 2.0, "持续改进与学习机制": 1.5},
        },
    },
    {
        "name": "D银行(互联网银行)",
        "scores": {
            "D1_平台能力": {"自动化测试覆盖率": 4.8, "AI辅助用例生成": 4.5, "评测工具链完整度": 4.5},
            "D2_数据建设": {"评测数据集规模与质量": 4.2, "数据标注体系规范度": 4.0, "数据安全与合规管理": 4.8},
            "D3_流程标准化": {"测试流程标准化程度": 4.5, "评测指标体系完整度": 4.2, "跨团队协作机制": 4.5},
            "D4_智能分析": {"缺陷智能定位能力": 4.0, "根因分析自动化": 3.8, "质量趋势预测能力": 4.2},
            "D5_组织成熟度": {"AI测试人才储备": 4.5, "组织AI文化成熟度": 4.8, "持续改进与学习机制": 4.5},
        },
    },
]


# ============================================================
# 4. 评估计算引擎
# ============================================================
def calculate_dimension_score(dim_key: str, sub_scores: Dict[str, float]) -> float:
    """计算单个维度的加权得分"""
    dim_info = DIMENSIONS[dim_key]
    score = 0.0
    for sub_name, sub_weight in dim_info["sub_dimensions"].items():
        score += sub_scores.get(sub_name, 0.0) * sub_weight
    return round(score, 2)


def evaluate_bank(bank: Dict) -> Dict:
    """对单家银行进行完整评估"""
    dimension_scores = {}
    composite_score = 0.0

    for dim_key, dim_info in DIMENSIONS.items():
        dim_score = calculate_dimension_score(dim_key, bank["scores"].get(dim_key, {}))
        dimension_scores[dim_key] = dim_score
        composite_score += dim_score * dim_info["weight"]

    composite_score = round(composite_score, 2)
    level_code, level_name = score_to_level(composite_score)

    return {
        "name": bank["name"],
        "composite_score": composite_score,
        "maturity_level": level_name,
        "dimension_scores": dimension_scores,
    }


def compute_ranking() -> List[Dict]:
    """计算所有银行综合排名"""
    results = [evaluate_bank(b) for b in BANK_DATA]
    results.sort(key=lambda x: x["composite_score"], reverse=True)
    for i, r in enumerate(results):
        r["rank"] = i + 1
    return results


# ============================================================
# 5. 雷达图数据生成器
# ============================================================
def generate_radar_data(results: List[Dict]) -> Dict:
    """
    生成 ECharts 格式的雷达图数据
    可直接用于前端可视化(Apache ECharts)
    """
    dim_keys = list(DIMENSIONS.keys())
    dim_labels = [d.replace("D1_", "").replace("D2_", "").replace("D3_", "")
                   .replace("D4_", "").replace("D5_", "") for d in dim_keys]

    radar_config = {
        "tooltip": {},
        "legend": {"data": [r["name"] for r in results], "bottom": 0},
        "radar": {
            "indicator": [{"name": label, "max": 5.0} for label in dim_labels],
            "shape": "polygon",
            "splitNumber": 5,
            "axisName": {"color": "#333", "fontSize": 12},
        },
        "series": [
            {
                "type": "radar",
                "data": [
                    {
                        "name": r["name"],
                        "value": [
                            r["dimension_scores"].get(dk, 0.0) for dk in dim_keys
                        ],
                    }
                    for r in results
                ],
            }
        ],
    }
    return radar_config


# ============================================================
# 6. 可读性报告输出
# ============================================================
def print_report(results: List[Dict]):
    """打印中文可读性评估报告"""
    print("=" * 65)
    print("   🏦 同业银行 AI 测试成熟度评估报告")
    print("=" * 65)
    print()

    for r in results:
        print(f"  #{r['rank']}  {r['name']}")
        print(f"      综合得分: {r['composite_score']:.2f} / 5.00")
        print(f"      成熟度等级: {r['maturity_level']}")
        print(f"      各维度得分:")
        for dk, dv in r["dimension_scores"].items():
            dim_name = DIMENSIONS[dk]["description"]
            bar = "█" * int(dv * 4) + "░" * (20 - int(dv * 4))
            print(f"        {dk}  {bar}  {dv:.2f}  ({dim_name})")
        print()

    print("-" * 65)
    print("  💡 雷达图数据已生成,可直接粘贴至前端可视化组件")
    print("=" * 65)


# ============================================================
# 7. 主程序入口
# ============================================================
if __name__ == "__main__":
    # 执行评估
    ranking = compute_ranking()

    # 打印可读报告
    print_report(ranking)

    # 输出雷达图 JSON(可直接用于 ECharts/前端)
    radar_json = generate_radar_data(ranking)
    print("\n📊 雷达图配置 JSON(ECharts 格式):")
    print(json.dumps(radar_json, ensure_ascii=False, indent=2))

    # 输出 CSV 摘要
    print("\n📋 CSV 摘要:")
    print("排名,银行,综合得分,成熟度等级," + ",".join(DIMENSIONS.keys()))
    for r in ranking:
        dim_vals = ",".join(
            str(r["dimension_scores"].get(dk, "")) for dk in DIMENSIONS
        )
        print(f"{r['rank']},\"{r['name']}\",{r['composite_score']},\"{r['maturity_level']}\",{dim_vals}")
📌 使用说明可直接运行 python3 maturity_eval.py 获得终端可读性评估报告和 ECharts 雷达图 JSON 配置数据,将雷达图 JSON 粘贴至前端即可实现可视化。各银行的子维度评分可根据实际调研数据调整。