From c8ff4ab869443c8099c291a462e7ed61b53cf289 Mon Sep 17 00:00:00 2001 From: aaron <> Date: Mon, 26 May 2025 16:25:17 +0800 Subject: [PATCH] no message --- docker-compose.yml | 2 +- src/views/AIAgentsView.vue | 9 ++++++ src/views/UniversalAnalysisView.vue | 50 +++++++++++++++++++++++++---- 3 files changed, 54 insertions(+), 7 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 2d83f39..22a0f16 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,7 @@ services: build: context: . dockerfile: Dockerfile - image: tradus-web:1.3.24 + image: tradus-web:1.3.25 container_name: tradus-web ports: - '6000:80' diff --git a/src/views/AIAgentsView.vue b/src/views/AIAgentsView.vue index f275a2f..d55bb2e 100644 --- a/src/views/AIAgentsView.vue +++ b/src/views/AIAgentsView.vue @@ -24,6 +24,15 @@ const agents = [ `, route: '/analysis/stock', }, + { + id: 'usstock-analysis', + name: '美股股票分析智能体', + description: '获取美股上市公司的深度AI智能分析报告', + icon: ` + + `, + route: '/analysis/usstock', + }, ] const navigateToAgent = (route: string) => { diff --git a/src/views/UniversalAnalysisView.vue b/src/views/UniversalAnalysisView.vue index b3d11cd..5a59d67 100644 --- a/src/views/UniversalAnalysisView.vue +++ b/src/views/UniversalAnalysisView.vue @@ -50,6 +50,8 @@ const pageTitle = computed(() => { switch (analysisType.value) { case 'stock': return 'A股股票分析智能体' + case 'usstock': + return '美股股票分析智能体' case 'crypto': default: return '加密货币分析智能体' @@ -60,6 +62,8 @@ const pageDescription = computed(() => { switch (analysisType.value) { case 'stock': return '获取A股上市公司的深度AI智能分析' + case 'usstock': + return '获取美股上市公司的深度AI智能分析' case 'crypto': default: return '获取加密货币的深度AI智能分析' @@ -70,6 +74,8 @@ const inputPlaceholder = computed(() => { switch (analysisType.value) { case 'stock': return '请输入上市公司股票代码' + case 'usstock': + return '请输入美股股票代码,如AAPL、TSLA等' case 'crypto': default: return '请输入BTC、ETH, 一次只能分析一个币种' @@ -77,7 +83,9 @@ const inputPlaceholder = computed(() => { }) // 是否为股票分析模式 -const isStockMode = computed(() => analysisType.value === 'stock') +const isStockMode = computed( + () => analysisType.value === 'stock' || analysisType.value === 'usstock', +) // 常见标的列表 const commonItemsList = computed(() => { @@ -95,6 +103,19 @@ const commonItemsList = computed(() => { { code: '600036', label: '招商银行' }, { code: '603288', label: '海天味业' }, ] + case 'usstock': + return [ + { code: 'AAPL', label: '苹果 (AAPL)' }, + { code: 'TSLA', label: '特斯拉 (TSLA)' }, + { code: 'NVDA', label: '英伟达 (NVDA)' }, + { code: 'GOOGL', label: '谷歌 (GOOGL)' }, + { code: 'MSFT', label: '微软 (MSFT)' }, + { code: 'AMZN', label: '亚马逊 (AMZN)' }, + { code: 'META', label: 'Meta (META)' }, + { code: 'NFLX', label: '奈飞 (NFLX)' }, + { code: 'AMD', label: 'AMD (AMD)' }, + { code: 'BABA', label: '阿里巴巴 (BABA)' }, + ] case 'crypto': default: return [ @@ -143,9 +164,12 @@ const saveAnalysisHistory = async () => { } // 根据不同模式设置不同参数 - if (isStockMode.value) { - payload.stock_code = symbolCode.value.trim() + if (analysisType.value === 'stock') { + payload.symbol = symbolCode.value.trim() payload.type = 'astock' + } else if (analysisType.value === 'usstock') { + payload.symbol = symbolCode.value.toUpperCase().trim() + payload.type = 'usstock' } else { payload.symbol = symbolCode.value.toUpperCase().trim() payload.timeframe = selectedTimeframe.value @@ -169,11 +193,17 @@ const handleAnalysis = async () => { if (!code || isAnalyzing.value) return // 股票模式下验证股票代码格式 - if (isStockMode.value && !/^\d{6}$/.test(code)) { + if (analysisType.value === 'stock' && !/^\d{6}$/.test(code)) { setErrorMessage('请输入正确的6位股票代码') return } + // 美股模式下验证股票代码格式(字母和数字组合,1-5位) + if (analysisType.value === 'usstock' && !/^[A-Za-z]{1,5}$/.test(code)) { + setErrorMessage('请输入正确的美股股票代码(1-5位字母)') + return + } + // 先切换到分析视图,再设置分析状态 showInitialView.value = false isAnalyzing.value = true @@ -184,12 +214,18 @@ const handleAnalysis = async () => { let requestData // 根据分析类型构造不同的请求参数 - if (isStockMode.value) { + if (analysisType.value === 'stock') { // A股分析参数 requestData = { stock_code: code, type: 'astock', } + } else if (analysisType.value === 'usstock') { + // 美股分析参数 + requestData = { + stock_code: code.toUpperCase(), + type: 'usstock', + } } else { // 加密货币分析参数 requestData = { @@ -381,7 +417,9 @@ const parsedContent = computed(() => { :placeholder="inputPlaceholder" @keydown="handleKeydown" :disabled="isAnalyzing" - :maxlength="isStockMode ? 6 : undefined" + :maxlength=" + analysisType === 'stock' ? 6 : analysisType === 'usstock' ? 5 : undefined + " />