feat: 实现RPC节点管理功能

- 后端功能:
  - 添加RPC节点配置管理(增删改查、优先级调整)
  - 实现节点健康检查和自动故障转移
  - 修复Retrofit baseUrl处理问题(使用拦截器动态替换URL)
  - 添加RPC节点可用性验证(创建前验证)
  - 默认节点作为兜底,不返回给前端,始终排在最后
  - API健康检查使用动态获取的可用节点

- 前端功能:
  - 添加RPC节点设置页面
  - 支持添加、删除、检查节点
  - 支持调整节点优先级
  - 完整的多语言支持(中文简体/繁体、英文)
  - 添加菜单项多语言key

- 数据库:
  - 添加RPC节点配置表迁移脚本
This commit is contained in:
WrBug
2025-12-25 23:58:50 +08:00
parent 7bc059ec34
commit 1580b60d24
20 changed files with 1856 additions and 70 deletions
@@ -0,0 +1,41 @@
-- 创建 RPC 节点配置表
CREATE TABLE rpc_node_config (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键',
provider_type VARCHAR(50) NOT NULL COMMENT '服务商类型: ALCHEMY, INFURA, QUICKNODE, CHAINSTACK, GETBLOCK, CUSTOM, PUBLIC',
name VARCHAR(100) NOT NULL COMMENT '节点名称',
http_url VARCHAR(500) NOT NULL COMMENT 'HTTP RPC URL',
ws_url VARCHAR(500) COMMENT 'WebSocket URL (可选)',
api_key VARCHAR(200) COMMENT 'API Key (加密存储)',
enabled BOOLEAN DEFAULT TRUE COMMENT '是否启用',
priority INT DEFAULT 0 COMMENT '优先级(数字越小优先级越高)',
last_check_time BIGINT COMMENT '最后检查时间(毫秒时间戳)',
last_check_status VARCHAR(20) COMMENT '最后检查状态: HEALTHY, UNHEALTHY, UNKNOWN',
response_time_ms INT COMMENT '最后一次响应时间(毫秒)',
created_at BIGINT NOT NULL COMMENT '创建时间(毫秒时间戳)',
updated_at BIGINT NOT NULL COMMENT '更新时间(毫秒时间戳)',
INDEX idx_enabled_priority (enabled, priority),
INDEX idx_last_check_status (last_check_status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Polygon RPC 节点配置表';
-- 插入默认公共节点 (PublicNode)
INSERT INTO rpc_node_config (
provider_type,
name,
http_url,
ws_url,
enabled,
priority,
created_at,
updated_at,
last_check_status
) VALUES (
'PUBLIC',
'PublicNode (Default)',
'https://polygon.publicnode.com',
'wss://polygon.publicnode.com',
TRUE,
999,
UNIX_TIMESTAMP() * 1000,
UNIX_TIMESTAMP() * 1000,
'UNKNOWN'
);