From 94d14cabc9a1fdfda56cde7f8d9917612d42ef46 Mon Sep 17 00:00:00 2001 From: icy Date: Thu, 6 Nov 2025 19:30:37 +0800 Subject: [PATCH] fix: show supported models/exchanges in selection modals --- web/src/components/AITradersPage.tsx | 41 +++++++++++++++++++++++----- 1 file changed, 34 insertions(+), 7 deletions(-) diff --git a/web/src/components/AITradersPage.tsx b/web/src/components/AITradersPage.tsx index d4517576..70441cf7 100644 --- a/web/src/components/AITradersPage.tsx +++ b/web/src/components/AITradersPage.tsx @@ -1,4 +1,4 @@ -import React, { useState, useEffect } from 'react' +import React, { useState, useEffect, useMemo } from 'react' import useSWR from 'swr' import { api } from '../lib/api' import type { @@ -135,6 +135,36 @@ export function AITradersPage({ onTraderSelect }: AITradersPageProps) { const configuredModels = allModels || [] const configuredExchanges = allExchanges || [] + const selectableModels = useMemo(() => { + const map = new Map() + ;(supportedModels || []).forEach((model) => { + if (model?.id) { + map.set(model.id, model) + } + }) + ;(allModels || []).forEach((model) => { + if (model?.id) { + map.set(model.id, { ...map.get(model.id), ...model }) + } + }) + return Array.from(map.values()) + }, [supportedModels, allModels]) + + const selectableExchanges = useMemo(() => { + const map = new Map() + ;(supportedExchanges || []).forEach((exchange) => { + if (exchange?.id) { + map.set(exchange.id, exchange) + } + }) + ;(allExchanges || []).forEach((exchange) => { + if (exchange?.id) { + map.set(exchange.id, { ...map.get(exchange.id), ...exchange }) + } + }) + return Array.from(map.values()) + }, [supportedExchanges, allExchanges]) + // 只在创建交易员时使用已启用且配置完整的 const enabledModels = allModels?.filter((m) => m.enabled && m.apiKey) || [] const enabledExchanges = @@ -1075,7 +1105,7 @@ export function AITradersPage({ onTraderSelect }: AITradersPageProps) { {/* Model Configuration Modal */} {showModelModal && (
- {availableExchanges.map((exchange) => ( + {(allExchanges || []).map((exchange) => (