Spaces:
Sleeping
Sleeping
| import { useState } from 'react'; | |
| import axios from 'axios'; | |
| const API = ''; | |
| export default function ScatterPlot({ clusters, anomalies }) { | |
| console.log('ScatterPlot render:', typeof clusters, clusters); | |
| } | |
| export function useCluster() { | |
| const [logs, setLogs] = useState(''); | |
| const [loading, setLoading] = useState(false); | |
| const [tuning, setTuning] = useState(false); | |
| const [error, setError] = useState(null); | |
| const [tuningResult, setTuningResult] = useState(null); | |
| const [bestSize, setBestSize] = useState(null); | |
| const [result, setResult] = useState(null); | |
| async function runTuning() { | |
| if (!logs.trim()) return; | |
| setTuning(true); | |
| setError(null); | |
| setTuningResult(null); | |
| setBestSize(null); | |
| setResult(null); | |
| try { | |
| const response = await axios.post(`/api/cluster/tune`, { | |
| logs, | |
| min_cluster_size: 2, | |
| }); | |
| const data = response.data.results; | |
| setTuningResult(data); | |
| const best = data.reduce((prev, curr) => | |
| curr.silhouette_score > prev.silhouette_score ? curr : prev | |
| ); | |
| setBestSize(best.min_cluster_size); | |
| } catch (err) { | |
| setError(err.response?.data?.detail || 'Tuning failed'); | |
| } finally { | |
| setTuning(false); | |
| } | |
| } | |
| async function runClustering() { | |
| if (!logs.trim() || bestSize == null) return; | |
| setLoading(true); | |
| setError(null); | |
| setResult(null); | |
| try { | |
| const response = await axios.post(`/api/cluster/run`, { | |
| logs, | |
| min_cluster_size: bestSize, | |
| }); | |
| setResult(response.data); | |
| } catch (err) { | |
| setError(err.response?.data?.detail || 'Something went wrong'); | |
| } finally { | |
| setLoading(false); | |
| } | |
| } | |
| function reset() { | |
| setLogs(''); | |
| setResult(null); | |
| setTuningResult(null); | |
| setBestSize(null); | |
| setError(null); | |
| } | |
| return { | |
| logs, setLogs, | |
| tuning, loading, | |
| error, | |
| tuningResult, bestSize, setBestSize, | |
| result, | |
| runTuning, runClustering, reset, | |
| }; | |
| } |