use crate::services::segments_service::Segment; use super::pattern_detector::{self, LearningResults}; use anyhow::Result; use serde::Serialize; use tokio::sync::oneshot; #[derive(Debug, Clone, PartialEq, Serialize)] pub enum LearningStatus { Initialization, Starting, Learning, Error, Ready, } #[derive(Clone, Serialize, Debug)] pub struct LearningTrain { pub features: Vec, pub target: Vec, } impl Default for LearningTrain { fn default() -> Self { return LearningTrain { features: Vec::new(), target: Vec::new(), }; } } #[derive(Debug)] pub enum ResponseType { LearningStarted, LearningFinished(LearningResults), LearningFinishedEmpty, LearningDatasourceError, } #[derive(Debug)] pub struct DetectionTask { pub sender: oneshot::Sender>>, pub from: u64, pub to: u64, } #[derive(Debug)] pub struct DetectionRunnerConfig { // pub sender: mpsc::Sender>>, pub endpoint: String, pub from: u64, } #[derive(Debug)] pub enum RequestType { // TODO: convert to result RunLearning(anyhow::Result<()>) RunLearning, RunDetection(DetectionTask), GetStatus(oneshot::Sender), GetLearningTrain(oneshot::Sender), } #[derive(Debug)] pub enum AnalyticServiceMessage { // Status, Request(RequestType), Response(ResponseType), // Detect { from: u64, to: u64 }, }