diff --git a/frontend/components/dashboard/ScanTerminalCard.module.css b/frontend/components/dashboard/ScanTerminalCard.module.css index 51c40274..1e85bf3b 100644 --- a/frontend/components/dashboard/ScanTerminalCard.module.css +++ b/frontend/components/dashboard/ScanTerminalCard.module.css @@ -1000,6 +1000,21 @@ color: #7d92b2; } +.root :global(.scan-ai-prediction-card.ai.pending) { + border-color: rgba(34, 211, 238, 0.14); + background: rgba(8, 36, 52, 0.28); +} + +.root :global(.scan-ai-prediction-card.ai.pending strong) { + color: #4a7d9a; + animation: pulse-pending 2s ease-in-out infinite; +} + +@keyframes pulse-pending { + 0%, 100% { opacity: 0.3; } + 50% { opacity: 0.6; } +} + .root :global(.scan-ai-weather-summary) { color: #e6edf3; font-weight: 850; diff --git a/frontend/components/dashboard/scan-terminal/AiEvidencePanel.tsx b/frontend/components/dashboard/scan-terminal/AiEvidencePanel.tsx index f06331d0..905f3428 100644 --- a/frontend/components/dashboard/scan-terminal/AiEvidencePanel.tsx +++ b/frontend/components/dashboard/scan-terminal/AiEvidencePanel.tsx @@ -99,6 +99,14 @@ export function AiEvidencePanel({ {aiRangeText ? {aiRangeText} : null} + ) : aiForecast.status === "loading" && hasDebPrediction ? ( +
+ {isEn ? "AI predicted high" : "AI 预测最高温"} + {isEn ? "..." : "…"} + + {isEn ? "Predicting" : "预测中"} + +
) : null} {hasDebPrediction ? (
@@ -110,6 +118,23 @@ export function AiEvidencePanel({
) : null} + ) : hasDebPrediction ? ( +
+
+ {isEn ? "DEB fusion" : "DEB 融合"} + {formatTemperatureValue(debPrediction!, tempSymbol, { digits: 1 })} + + {isEn ? "Reference" : "参考"} + +
+
+ {isEn ? "AI predicted high" : "AI 预测最高温"} + {isEn ? "..." : "…"} + + {isEn ? "Predicting" : "预测中"} + +
+
) : null} {aiForecast.status === "loading" ? (