feat: 实现 Builder API Key 系统级配置和 Gasless 交易支持

- 新增系统配置表(SystemConfig)用于存储 Builder API Key
- 实现 Builder API Key 的前端配置页面
- 集成 Builder Relayer API 支持 Gasless 交易
- 在 API 健康检查中添加 Builder Relayer API 检测
- 移除前端 API 测试功能,简化配置页面
- 修复赎回仓位时的 Builder API Key 检查逻辑
- 更新错误处理,引导用户配置 Builder API Key
This commit is contained in:
WrBug
2025-12-06 23:10:26 +08:00
parent 3369dbb248
commit bfbbbdd1de
27 changed files with 1971 additions and 233 deletions
@@ -45,6 +45,14 @@ polymarket.gamma.base-url=https://gamma-api.polymarket.com
# 示例:https://polygon-rpc.com 或 https://polygon-mainnet.infura.io/v3/YOUR_PROJECT_ID
polygon.rpc.url=${POLYGON_RPC_URL:https://polygon-rpc.com}
# Builder Relayer 配置(用于 Gasless 交易)
# 从 polymarket.com/settings?tab=builder 获取 Builder API 凭证
# 如果未配置,将使用手动发送交易的方式(需要用户支付 gas)
polymarket.builder.relayer-url=${POLYMARKET_BUILDER_RELAYER_URL:https://relayer-v2.polymarket.com/}
polymarket.builder.api-key=${POLYMARKET_BUILDER_API_KEY:}
polymarket.builder.secret=${POLYMARKET_BUILDER_SECRET:}
polymarket.builder.passphrase=${POLYMARKET_BUILDER_PASSPHRASE:}
# 仓位推送配置
# 轮询间隔(毫秒),默认3秒
position.push.polling-interval=${POSITION_PUSH_POLLING_INTERVAL:3000}
@@ -0,0 +1,22 @@
-- ============================================
-- V7: 创建系统配置表
-- 用于存储系统级别的配置(如 Builder API Key
-- ============================================
CREATE TABLE IF NOT EXISTS system_config (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
config_key VARCHAR(100) NOT NULL UNIQUE COMMENT '配置键(唯一)',
config_value TEXT NULL COMMENT '配置值(加密存储)',
description VARCHAR(255) NULL COMMENT '配置描述',
created_at BIGINT NOT NULL COMMENT '创建时间(毫秒时间戳)',
updated_at BIGINT NOT NULL COMMENT '更新时间(毫秒时间戳)',
INDEX idx_config_key (config_key)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统配置表';
-- 初始化 Builder API Key 配置项(如果不存在)
INSERT IGNORE INTO system_config (config_key, config_value, description, created_at, updated_at)
VALUES
('builder.api_key', NULL, 'Builder API Key(用于 Gasless 交易)', UNIX_TIMESTAMP() * 1000, UNIX_TIMESTAMP() * 1000),
('builder.secret', NULL, 'Builder Secret(用于 Gasless 交易)', UNIX_TIMESTAMP() * 1000, UNIX_TIMESTAMP() * 1000),
('builder.passphrase', NULL, 'Builder Passphrase(用于 Gasless 交易)', UNIX_TIMESTAMP() * 1000, UNIX_TIMESTAMP() * 1000);