银行应用集成演示

一个集成了开放银行项目(OBP)沙箱的演示应用,包含模拟银行前端、AI聊天机器人和MCP服务器,适用于金融科技开发和测试。

  • by 0pens0
  • Java
  • 本地部署
  • 更新于
在 GitHub 查看 0pens0/obp-demo-app

使用说明

带MCP服务器的OBP演示应用程序

一个与开放银行项目(OBP)沙箱集成的综合演示应用程序,具有一个带有管理和客户部分的模拟银行前端,一个具有RAG功能的AI聊天机器人,以及一个展示OBP帐户API工具的MCP服务器。

目录

概述

此演示应用程序展示了与以下功能的完整银行应用程序集成:

  1. obp模拟银行:一个具有以下功能的Spring Boot web应用程序:

    • 用于在OBP沙箱中创建客户用户的管理仪表板
    • 用于查看帐户信息的客户仪表板
    • 具有RAG(检索增强生成)功能的人工智能聊天机器人
    • PostgreSQL聊天历史和上下文矢量存储
  2. MCP服务器:一个独立的模型上下文协议服务器,用于公开OBP API工具:

    • getAccounts:检索用户帐户
    • getTransactions:获取交易历史记录
    • getAccountBalance:获取账户余额
    • getCounterparties:列出账户交易对手

建筑

┌─────────────────────────────────┐
│   obp-demo-banking (Port 8080)  │
│   - Admin Dashboard              │
│   - Customer Dashboard           │
│   - AI Chatbot (with RAG)        │
└─────────────────────────────────┘
              │
              │ Uses OBP API
              ▼
┌─────────────────────────────────┐
│   OBP Sandbox API               │
│   apisandbox.openbankproject.com │
└─────────────────────────────────┘
              ▲
              │ MCP Tools expose
              │
┌─────────────────────────────────┐
│   MCP Server (Port 8081)        │
│   - getAccounts tool            │
│   - getTransactions tool        │
│   - getAccountBalance tool      │
│   - getCounterparties tool      │
└─────────────────────────────────┘

┌─────────────────────────────────┐
│   PostgreSQL (with pgvector)   │
│   - Vector embeddings storage   │
│   - Similarity search           │
│   - Chat history & context      │
└─────────────────────────────────┘
              ▲
              │ Service Binding
              │
┌─────────────────────────────────┐
│   Tanzu Marketplace Services     │
│   - LLM Service (OpenAI/Azure)  │
│   - PostgreSQL Service          │
└─────────────────────────────────┘

特性

obp演示银行应用程序

  • 行政科

    • 在OBP沙箱中创建和管理客户用户
    • 使用OBP用户ID查看创建的用户
    • 简单身份验证(管理员/管理员)
  • 客户仪表板

    • 查看帐户详细信息(标签、编号、IBAN、类型)
    • 按货币显示账户余额
    • 查看最近交易(最近10笔)
    • 列出账户交易对手
    • 总余额账户摘要
  • 配备RAG的人工智能聊天机器人

    • 由Spring AI驱动的交互式聊天机器人
    • 使用PostgreSQL向量存储检索增强生成(RAG)
    • 基于客户银行数据的情境感知响应
    • 聊天记录存储在矢量数据库中,以改善响应
    • 相关上下文检索的相似性搜索

MCP服务器

  • MCP协议实现

    • 符合JSON-RPC 2.0标准
    • RESTful API端点
    • 工具注册和发现
  • 可用工具

    • getAccounts:获取已验证用户的所有帐户
    • getTransactions:检索帐户的交易历史记录
    • getAccountBalance:用货币获取账户余额
    • getCounterparties:列出账户的交易对手

技术栈

后端

  • Spring Boot: 3.3.5
  • 春季AI: 1.0.1
  • Spring数据JPA:用于数据库操作
  • PostgreSQL:具有用于矢量存储的pgvector扩展
  • 飞路:数据库迁移
  • 春季WebFlux:OBP API的响应式HTTP客户端
  • Spring Security:身份验证和授权
  • 百里香叶:服务器端模板

前端

  • Thymeleaf模板:服务器端渲染
  • Bootstrap CSS:现代UI样式
  • JavaScript:交互式聊天机器人小部件

基础设施

  • Tanzu应用平台:Cloud Foundry部署
  • 春云绑定:自动服务绑定
  • PostgreSQL服务:来自Tanzu市场
  • LLM服务:来自Tanzu市场(OpenAI/Azure OpenAI)

先决条件

促进地方发展

  • Java 17或更高版本
  • Maven 3.6+
  • PostgreSQL 12+,带pgvector扩展
  • OBP沙盒帐户和API密钥
  • (可选)用于本地人工智能测试的OpenAI API密钥

用于Tanzu部署

  • 访问Tanzu应用平台
  • Cloud Foundry命令行界面(cf)已安装并配置
  • Tanzu命令行界面(tanzu)已安装(可选,适用于TAP)
  • OBP沙盒API密钥
  • 访问Tanzu市场服务:
    • PostgreSQL服务(支持pgvector)
    • LLM服务(OpenAI或Azure OpenAI)

项目结构

obp-demo-app/
├── .gitignore
├── README.md (this file)
├── DEMO_FLOW.md (deployment and usage guide)
├── obp-demo-banking/
│   ├── pom.xml
│   ├── manifest.yml (Cloud Foundry deployment)
│   ├── README.md
│   ├── DEMO_FLOW.md
│   └── src/
│       ├── main/
│       │   ├── java/com/obp/demo/
│       │   │   ├── config/ (Configuration classes)
│       │   │   ├── controller/ (MVC controllers)
│       │   │   ├── service/ (Business logic)
│       │   │   ├── model/ (Domain models)
│       │   │   ├── dto/ (Data transfer objects)
│       │   │   └── exception/ (Exception classes)
│       │   └── resources/
│       │       ├── application.yml
│       │       ├── application-cloud.yml
│       │       ├── db/migration/ (Flyway migrations)
│       │       ├── templates/ (Thymeleaf templates)
│       │       └── static/ (CSS, JS)
│       └── test/
└── open-banking-mcp/
    └── mcp-server/
        ├── pom.xml
        ├── manifest.yml (Cloud Foundry deployment)
        ├── README.md
        └── src/
            ├── main/
            │   ├── java/com/openbanking/mcpserver/
            │   │   ├── config/ (Configuration)
            │   │   ├── controller/ (REST controllers)
            │   │   ├── service/ (OBP API service)
            │   │   ├── model/ (Data models)
            │   │   ├── protocol/ (MCP protocol)
            │   │   ├── tools/ (MCP tools)
            │   │   └── exception/ (Exception handling)
            │   └── resources/
            │       ├── application.yml
            │       └── application-cloud.yml
            └── test/

本地开发

1.克隆和设置

cd ~/git/obp-demo-app

2.配置OBP API密钥

设置环境变量:

export OBP_API_KEY=your-api-key-here

或更新 obp-demo-banking/src/main/resources/application.yml:

obp:
  api:
    api-key: your-api-key-here

3.设置PostgreSQL(本地)

安装PostgreSQL和pgvector扩展:

# On macOS
brew install postgresql
brew install pgvector

# Create database
createdb obp_demo

# Connect and enable extension
psql obp_demo
CREATE EXTENSION vector;

更新 application.yml:

spring:
  datasource:
    url: jdbc:postgresql://localhost:5432/obp_demo
    username: your-username
    password: your-password

4.配置AI(本地可选)

对于没有Tanzu服务绑定的本地测试:

export OPENAI_API_KEY=your-openai-api-key

5.运行obp模拟银行

cd obp-demo-banking
mvn clean install
mvn spring-boot:run

访问地址:http://localhost:8080

6.运行MCP服务器

cd ../open-banking-mcp/mcp-server
mvn clean install
mvn spring-boot:run

运行时间:http://localhost:8081

Tanzu平台部署

看 演示_流量.md 了解详细的部署说明。

快速开始

  1. 设置OBP API密钥变量 (部署前需要):

    # Set as space variable (recommended)
    cf set-space-variable <space-name> OBP_API_KEY "your-obp-api-key-here"
    
  2. 创建服务:

    cf create-service postgresql standard postgres-vector-db
    cf create-service <llm-service-name> <plan> llm-service
    
  3. 构建应用程序:

    cd obp-demo-banking && mvn clean package -DskipTests
    cd ../open-banking-mcp/mcp-server && mvn clean package -DskipTests
    
  4. 部署:

    cd obp-demo-banking && cf push
    cd ../open-banking-mcp/mcp-server && cf push
    

    备注:清单文件使用 ((OBP_API_KEY)) 这将在部署过程中自动从space/org变量中解析出来。

使用指南

行政科

  1. 导航到: http://your-app-url/admin/login
  2. 登录方式: admin / admin
  3. 创建新客户:
    • 填写用户名、电子邮件、密码、名字、姓氏
    • 点击“创建客户”
    • 注意分配的OBP用户ID

客户部

  1. 导航到: http://your-app-url/customer/login
  2. 使用在管理部分创建的凭据登录
  3. 查看仪表板:
    • 账户信息
    • 最近交易
    • 交易对手
    • 账户余额
  4. 使用AI聊天机器人:
    • 点击聊天图标(💬) 在右下角
    • 问以下问题:
      • “我的账户余额是多少?”
      • “显示我最近的交易记录”
      • “谁是我的对手?”

MCP服务器

API终点

  • POST /mcp/call -执行MCP工具调用
  • GET /actuator/health -健康检查

示例用法

列出可用工具:

curl -X POST http://localhost:8081/mcp/call \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "tools/list",
    "id": "1"
  }'

调用getAccounts工具:

curl -X POST http://localhost:8081/mcp/call \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "tools/call",
    "id": "2",
    "params": {
      "name": "getAccounts",
      "arguments": {
        "token": "your-obp-token"
      }
    }
  }'

故障排除

应用程序无法启动

  • 验证是否安装了Java 17+: java -version
  • 检查Maven是否已安装: mvn -version
  • 查看应用程序日志中的特定错误

数据库连接问题

  • 验证PostgreSQL是否正在运行
  • 检查中的数据库凭据 application.yml
  • 确保已安装pgvector扩展: CREATE EXTENSION vector;

OBP API错误

  • 验证OBP API密钥是否正确
  • 检查互联网连接 apisandbox.openbankproject.com
  • 查看OBP API文档中的端点更改

聊天机器人没有响应

  • 对于本地:验证 OPENAI_API_KEY 已设置
  • 对于Tanzu:检查LLM服务绑定是否已配置
  • 查看应用程序日志中的AI服务连接错误

服务绑定问题(Tanzu)

  • 验证服务是否已创建: cf services
  • 检查服务绑定: cf service postgres-vector-db
  • 查看应用程序日志中的绑定错误
  • 确保包含Spring Cloud绑定依赖项

贡献

这是一个用于教育目的的演示应用程序。欢迎贡献和改进!

许可证

这是一个用于教育目的的演示应用程序。

参考文献