update: 优化代码

This commit is contained in:
lww155
2026-02-04 09:54:21 +08:00
parent 85a83727fd
commit e4cfabeb7e
3 changed files with 60 additions and 40 deletions
+2 -2
View File
@@ -832,12 +832,12 @@ body {
} }
.model-select:hover { .model-select:hover {
background: #4f545c; border-color: #5865f2;
} }
.model-select:focus { .model-select:focus {
outline: none; outline: none;
border-color: #40444b; border-color: #5865f2;
} }
.model-select option { .model-select option {
+22 -4
View File
@@ -240,8 +240,22 @@ class App {
log(`拍照成功,图像数据长度: ${photoData.length}`, 'success'); log(`拍照成功,图像数据长度: ${photoData.length}`, 'success');
try { try {
const visionApiUrl = window.visionApiUrl || 'http://localhost:8003/mcp/vision/explain'; const xz_tester_vision = localStorage.getItem('xz_tester_vision');
log(`正在发送图片到视觉分析接口: ${visionApiUrl}`, 'info'); if (xz_tester_vision) {
let visionInfo = null;
try {
visionInfo = JSON.parse(xz_tester_vision);
} catch (err) {
throw new Error(`视觉配置解析失败`);
}
const { url, token } = visionInfo || {};
if (!url || !token) {
throw new Error('视觉分析失败:配置缺少接口地址(url)或令牌(token)');
}
log(`正在发送图片到视觉分析接口: ${url}`, 'info');
const deviceId = document.getElementById('deviceMac')?.value || ''; const deviceId = document.getElementById('deviceMac')?.value || '';
const clientId = document.getElementById('clientId')?.value || 'web_test_client'; const clientId = document.getElementById('clientId')?.value || 'web_test_client';
@@ -250,12 +264,13 @@ class App {
formData.append('question', question); formData.append('question', question);
formData.append('image', dataURItoBlob(photoData), 'photo.jpg'); formData.append('image', dataURItoBlob(photoData), 'photo.jpg');
const response = await fetch(visionApiUrl, { const response = await fetch(url, {
method: 'POST', method: 'POST',
body: formData, body: formData,
headers: { headers: {
'Device-Id': deviceId, 'Device-Id': deviceId,
'Client-Id': clientId 'Client-Id': clientId,
'Authorization': `Bearer ${token}`
} }
}); });
@@ -274,6 +289,9 @@ class App {
photo_height: canvas.height, photo_height: canvas.height,
vision_analysis: analysisResult vision_analysis: analysisResult
}); });
} else {
log('未配置视觉分析服务', 'warning');
}
} catch (error) { } catch (error) {
log(`视觉分析失败: ${error.message}`, 'error'); log(`视觉分析失败: ${error.message}`, 'error');
resolve({ resolve({
@@ -306,15 +306,17 @@ export class WebSocketHandler {
} else if (payload.method === 'initialize') { } else if (payload.method === 'initialize') {
log(`收到工具初始化请求: ${JSON.stringify(payload.params)}`, 'info'); log(`收到工具初始化请求: ${JSON.stringify(payload.params)}`, 'info');
// 保存视觉分析接口地址 // 保存视觉分析接口地址
if (payload.params?.capabilities?.vision?.url) { const visionUrl = document.getElementById('visionUrl');
window.visionApiUrl = payload.params.capabilities.vision.url; const visionConfig = payload?.params?.capabilities?.vision;
log(`视觉分析接口地址: ${window.visionApiUrl}`, 'success'); if (visionConfig && typeof visionConfig === 'object' && visionConfig.url && visionConfig.token) {
// 更新输入框显示 const visionConfigStr = JSON.stringify(visionConfig);
const visionUrlInput = document.getElementById('visionUrl'); localStorage.setItem('xz_tester_vision', visionConfigStr);
if (visionUrlInput) { if (visionUrl) visionUrl.value = visionConfig.url;
visionUrlInput.value = window.visionApiUrl; } else {
} localStorage.removeItem('xz_tester_vision');
if (visionUrl) visionUrl.value = '';
} }
const replyMessage = JSON.stringify({ const replyMessage = JSON.stringify({
"session_id": message.session_id || "", "session_id": message.session_id || "",
"type": "mcp", "type": "mcp",