update
This commit is contained in:
parent
dd11e70c82
commit
492beff418
@ -5,7 +5,7 @@ services:
|
|||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
image: tradus-web:1.2.6
|
image: tradus-web:1.2.7
|
||||||
container_name: tradus-web
|
container_name: tradus-web
|
||||||
ports:
|
ports:
|
||||||
- '6000:80'
|
- '6000:80'
|
||||||
|
|||||||
@ -29,13 +29,20 @@ const handleKeyup = (event: KeyboardEvent) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 处理错误消息的显示
|
||||||
|
const setErrorMessage = (message: string) => {
|
||||||
|
// 直接使用错误消息内容
|
||||||
|
analysisContent.value = `错误: ${message}`
|
||||||
|
currentThought.value = '分析失败'
|
||||||
|
}
|
||||||
|
|
||||||
const handleAnalysis = async () => {
|
const handleAnalysis = async () => {
|
||||||
const code = stockCode.value.trim()
|
const code = stockCode.value.trim()
|
||||||
if (!code || isAnalyzing.value) return
|
if (!code || isAnalyzing.value) return
|
||||||
|
|
||||||
// 验证股票代码格式
|
// 验证股票代码格式
|
||||||
if (!/^\d{6}$/.test(code)) {
|
if (!/^\d{6}$/.test(code)) {
|
||||||
analysisContent.value = '<div class="error-message">请输入正确的6位股票代码</div>'
|
setErrorMessage('请输入正确的6位股票代码')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -58,7 +65,18 @@ const handleAnalysis = async () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
throw new Error(`HTTP error! status: ${response.status}`)
|
// 解析错误响应
|
||||||
|
try {
|
||||||
|
const errorData = await response.json()
|
||||||
|
if (errorData && errorData.detail) {
|
||||||
|
setErrorMessage(errorData.detail)
|
||||||
|
} else {
|
||||||
|
setErrorMessage(`请求失败,状态码: ${response.status}`)
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
setErrorMessage(`请求失败,状态码: ${response.status}`)
|
||||||
|
}
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
const reader = response.body?.getReader()
|
const reader = response.body?.getReader()
|
||||||
@ -111,22 +129,19 @@ const handleAnalysis = async () => {
|
|||||||
|
|
||||||
case 'error':
|
case 'error':
|
||||||
const errorMessage = data.error || '未知错误'
|
const errorMessage = data.error || '未知错误'
|
||||||
analysisContent.value = `<div class="error-message">分析过程中出现错误:${errorMessage}</div>`
|
setErrorMessage(errorMessage)
|
||||||
currentThought.value = '分析过程出现错误'
|
|
||||||
await scrollToBottom()
|
await scrollToBottom()
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error('解析响应数据出错:', e)
|
console.error('解析响应数据出错:', e)
|
||||||
analysisContent.value = '<div class="error-message">解析响应数据时出错,请稍后重试</div>'
|
setErrorMessage('解析响应数据时出错,请稍后重试')
|
||||||
currentThought.value = '数据解析出错'
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('分析请求失败:', error)
|
console.error('分析请求失败:', error)
|
||||||
analysisContent.value = '<div class="error-message">抱歉,分析请求失败,请稍后重试</div>'
|
setErrorMessage('抱歉,分析请求失败,请稍后重试')
|
||||||
currentThought.value = '请求失败'
|
|
||||||
} finally {
|
} finally {
|
||||||
isAnalyzing.value = false
|
isAnalyzing.value = false
|
||||||
await scrollToBottom()
|
await scrollToBottom()
|
||||||
@ -276,7 +291,12 @@ const copyAnalysis = async () => {
|
|||||||
ref="analysisContainer"
|
ref="analysisContainer"
|
||||||
:class="{ 'fade-in': analysisContent }"
|
:class="{ 'fade-in': analysisContent }"
|
||||||
>
|
>
|
||||||
<div class="analysis-content" v-html="analysisContent"></div>
|
<div v-if="analysisContent.startsWith('错误:')" class="error-message">
|
||||||
|
{{ analysisContent.substring(4) }}
|
||||||
|
</div>
|
||||||
|
<div v-else class="analysis-content">
|
||||||
|
{{ analysisContent }}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -580,14 +600,21 @@ const copyAnalysis = async () => {
|
|||||||
color: var(--color-text-primary);
|
color: var(--color-text-primary);
|
||||||
}
|
}
|
||||||
|
|
||||||
:deep(.error-message) {
|
.error-message {
|
||||||
margin: 1rem 0;
|
color: #ff3333;
|
||||||
padding: 0.75rem 1rem;
|
font-weight: 500;
|
||||||
background-color: rgba(255, 0, 0, 0.05);
|
padding: 1rem;
|
||||||
border: 1px solid rgba(255, 0, 0, 0.1);
|
background-color: rgba(255, 51, 51, 0.08);
|
||||||
border-radius: var(--border-radius);
|
border: 1px solid rgba(255, 51, 51, 0.2);
|
||||||
color: #ff4444;
|
border-radius: 0.5rem;
|
||||||
font-size: 0.95rem;
|
margin: 1rem;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 1rem;
|
||||||
|
line-height: 1.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.error-message::before {
|
||||||
|
content: '⚠️ ';
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 动画 */
|
/* 动画 */
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user