Spaces:
Running
Running
Upload folder using huggingface_hub
Browse files- index.html +83 -19
index.html
CHANGED
|
@@ -1,19 +1,83 @@
|
|
| 1 |
-
|
| 2 |
-
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
) {
|
| 2 |
+
if (!file.type.startsWith('image/')) {
|
| 3 |
+
addLog('错误:请上传有效的图像文件。', 'system');
|
| 4 |
+
return;
|
| 5 |
+
}
|
| 6 |
+
|
| 7 |
+
const reader = new FileReader();
|
| 8 |
+
reader.onload = (e) => {
|
| 9 |
+
imagePreview.src = e.target.result;
|
| 10 |
+
imagePreview.style.display = 'block';
|
| 11 |
+
imagePreviewContainer.style.display = 'block';
|
| 12 |
+
uploadZone.style.display = 'none';
|
| 13 |
+
imageStatus.classList.add('active');
|
| 14 |
+
isImageLoaded = true;
|
| 15 |
+
analyzeBtn.disabled = false;
|
| 16 |
+
addLog('图像已成功加载。', 'user');
|
| 17 |
+
addLog('等待用户启动分析进程...', 'system');
|
| 18 |
+
};
|
| 19 |
+
reader.readAsDataURL(file);
|
| 20 |
+
}
|
| 21 |
+
|
| 22 |
+
// 2. 模拟 Agent 分析过程
|
| 23 |
+
analyzeBtn.addEventListener('click', async () => {
|
| 24 |
+
if (!isImageLoaded) return;
|
| 25 |
+
|
| 26 |
+
// UI 更新:禁用按钮,显示进度条
|
| 27 |
+
analyzeBtn.disabled = true;
|
| 28 |
+
analyzeBtn.innerHTML = '<i class="fa-solid fa-spinner fa-spin"></i> 分析中...';
|
| 29 |
+
progressContainer.style.display = 'block';
|
| 30 |
+
agentThinking.style.display = 'block';
|
| 31 |
+
agentStatus.classList.add('processing');
|
| 32 |
+
|
| 33 |
+
// 模拟步骤
|
| 34 |
+
const steps = [
|
| 35 |
+
{ text: '正在初始化视觉编码器...', delay: 500 },
|
| 36 |
+
{ text: '正在提取图像特征向量...', delay: 1500 },
|
| 37 |
+
{ text: '正在调用大语言模型 (LLM) 进行推理...', delay: 2500 },
|
| 38 |
+
{ text: '正在综合分析结果...', delay: 3500 }
|
| 39 |
+
];
|
| 40 |
+
|
| 41 |
+
for (let i = 0; i < steps.length; i++) {
|
| 42 |
+
await wait(steps[i].delay);
|
| 43 |
+
progressBar.style.width = `${((i + 1) / steps.length) * 100}%`;
|
| 44 |
+
addLog(steps[i].text, 'system');
|
| 45 |
+
thinkingText.textContent = steps[i].text;
|
| 46 |
+
}
|
| 47 |
+
|
| 48 |
+
// 完成
|
| 49 |
+
await wait(500);
|
| 50 |
+
progressBar.style.width = '100%';
|
| 51 |
+
addLog('分析完成!', 'agent');
|
| 52 |
+
agentStatus.classList.remove('processing');
|
| 53 |
+
agentStatus.classList.add('active'); // 确保显示为活跃状态
|
| 54 |
+
|
| 55 |
+
// 模拟生成最终结果
|
| 56 |
+
thinkingText.textContent = "分析完成。图像检测到包含高科技设备、电路板以及复杂的几何结构。";
|
| 57 |
+
analyzeBtn.innerHTML = '<i class="fa-solid fa-check"></i> 分析完成';
|
| 58 |
+
analyzeBtn.style.backgroundColor = 'var(--success-color)';
|
| 59 |
+
});
|
| 60 |
+
|
| 61 |
+
// 辅助函数:添加日志
|
| 62 |
+
function addLog(message, type) {
|
| 63 |
+
const entry = document.createElement('div');
|
| 64 |
+
entry.className = `log-entry ${type}`;
|
| 65 |
+
|
| 66 |
+
let icon = '';
|
| 67 |
+
if (type === 'system') icon = '<i class="fa-solid fa-terminal"></i>';
|
| 68 |
+
if (type === 'user') icon = '<i class="fa-solid fa-user"></i>';
|
| 69 |
+
if (type === 'agent') icon = '<i class="fa-solid fa-robot"></i>';
|
| 70 |
+
|
| 71 |
+
entry.innerHTML = `${icon} <span>${message}</span>`;
|
| 72 |
+
logContainer.appendChild(entry);
|
| 73 |
+
logContainer.scrollTop = logContainer.scrollHeight;
|
| 74 |
+
}
|
| 75 |
+
|
| 76 |
+
// 辅助函数:等待
|
| 77 |
+
function wait(ms) {
|
| 78 |
+
return new Promise(resolve => setTimeout(resolve, ms));
|
| 79 |
+
}
|
| 80 |
+
})();
|
| 81 |
+
</script>
|
| 82 |
+
</body>
|
| 83 |
+
</html>
|