no message
This commit is contained in:
parent
eaefac1290
commit
c8ff4ab869
@ -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'
|
||||
|
||||
@ -24,6 +24,15 @@ const agents = [
|
||||
</svg>`,
|
||||
route: '/analysis/stock',
|
||||
},
|
||||
{
|
||||
id: 'usstock-analysis',
|
||||
name: '美股股票分析智能体',
|
||||
description: '获取美股上市公司的深度AI智能分析报告',
|
||||
icon: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path d="M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z"/>
|
||||
</svg>`,
|
||||
route: '/analysis/usstock',
|
||||
},
|
||||
]
|
||||
|
||||
const navigateToAgent = (route: string) => {
|
||||
|
||||
@ -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
|
||||
"
|
||||
/>
|
||||
<button
|
||||
v-if="symbolCode.trim() || analysisContent"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user