diff --git a/client/src/components/ScatterPlot.vue b/client/src/components/ScatterPlot.vue
index f121ed5..0eeab96 100644
--- a/client/src/components/ScatterPlot.vue
+++ b/client/src/components/ScatterPlot.vue
@@ -7,17 +7,85 @@
diff --git a/client/src/views/Model.vue b/client/src/views/Model.vue
index 2ceefba..dd904d0 100644
--- a/client/src/views/Model.vue
+++ b/client/src/views/Model.vue
@@ -2,7 +2,6 @@
-
diff --git a/server/src/api/analytics.rs b/server/src/api/analytics.rs
index 8b156e0..0cbb229 100644
--- a/server/src/api/analytics.rs
+++ b/server/src/api/analytics.rs
@@ -9,6 +9,7 @@ pub mod filters {
) -> impl Filter + Clone {
list(client.clone())
.or(status(client.clone()))
+ .or(get_config(client.clone()))
.or(list_train(client.clone()))
// .or(create(db.clone()))
// // .or(update(db.clone()))
@@ -36,6 +37,16 @@ pub mod filters {
.and_then(handlers::status)
}
+ /// GET /analytics/config
+ pub fn get_config(
+ client: Client,
+ ) -> impl Filter + Clone {
+ warp::path!("analytics" / "config")
+ .and(warp::get())
+ .and(with_client(client))
+ .and_then(handlers::config)
+ }
+
/// GET /analytics/model
pub fn list_train(
client: Client,
@@ -82,6 +93,16 @@ mod handlers {
}
}
+ pub async fn config(client: Client) -> Result {
+ match client.get_config().await {
+ Ok(cf) => Ok(API::json(&cf)),
+ Err(e) => {
+ println!("{:?}", e);
+ Err(warp::reject::custom(BadQuery))
+ }
+ }
+ }
+
pub async fn list_train(client: Client) -> Result {
match client.get_train().await {
Ok(lt) => Ok(API::json(<)),
diff --git a/server/src/services/analytic_service/analytic_client.rs b/server/src/services/analytic_service/analytic_client.rs
index 2276e53..c01c64a 100644
--- a/server/src/services/analytic_service/analytic_client.rs
+++ b/server/src/services/analytic_service/analytic_client.rs
@@ -3,6 +3,7 @@ use tokio::sync::oneshot;
use crate::services::segments_service::Segment;
+use super::analytic_unit::types::AnalyticUnitConfig;
use super::types::DetectionTask;
use super::types::LearningStatus;
use super::types::LearningTrain;
@@ -34,6 +35,14 @@ impl AnalyticClient {
Ok(r)
}
+ pub async fn get_config(&self) -> anyhow::Result {
+ let (tx, rx) = oneshot::channel();
+ let req = AnalyticServiceMessage::Request(RequestType::GetConfig(tx));
+ self.tx.send(req).await?;
+ let r = rx.await?;
+ Ok(r)
+ }
+
pub async fn get_train(&self) -> anyhow::Result {
let (tx, rx) = oneshot::channel();
let req = AnalyticServiceMessage::Request(RequestType::GetLearningTrain(tx));
diff --git a/server/src/services/analytic_service/analytic_service.rs b/server/src/services/analytic_service/analytic_service.rs
index a929f95..449b229 100644
--- a/server/src/services/analytic_service/analytic_service.rs
+++ b/server/src/services/analytic_service/analytic_service.rs
@@ -1,7 +1,8 @@
+use super::analytic_unit::types::{AnalyticUnitConfig, PatternDetectorConfig};
use super::types::{self, DetectionRunnerConfig, LearningTrain};
use super::{
analytic_client::AnalyticClient,
- pattern_detector::{self, LearningResults, PatternDetector},
+ analytic_unit::pattern_detector::{self, LearningResults, PatternDetector},
types::{AnalyticServiceMessage, DetectionTask, LearningStatus, RequestType, ResponseType},
};
@@ -51,6 +52,7 @@ pub struct AnalyticService {
metric_service: MetricService,
segments_service: SegmentsService,
learning_results: Option,
+ analytic_unit_config: AnalyticUnitConfig,
learning_status: LearningStatus,
tx: mpsc::Sender,
rx: mpsc::Receiver,
@@ -78,8 +80,14 @@ impl AnalyticService {
AnalyticService {
metric_service,
segments_service,
+
// TODO: get it from persistance
learning_results: None,
+ analytic_unit_config: AnalyticUnitConfig::PatternDetector(PatternDetectorConfig {
+ correlation_score: 0.95,
+ model_score: 0.95
+ }),
+
learning_status: LearningStatus::Initialization,
tx,
rx,
@@ -180,6 +188,9 @@ impl AnalyticService {
.unwrap();
}
}
+ RequestType::GetConfig(tx) => {
+ tx.send(self.analytic_unit_config.clone()).unwrap();
+ }
};
}
diff --git a/server/src/services/analytic_service/analytic_unit/mod.rs b/server/src/services/analytic_service/analytic_unit/mod.rs
new file mode 100644
index 0000000..a185aea
--- /dev/null
+++ b/server/src/services/analytic_service/analytic_unit/mod.rs
@@ -0,0 +1,6 @@
+pub mod pattern_detector;
+pub mod types;
+
+trait AnalyticUnit {
+
+}
\ No newline at end of file
diff --git a/server/src/services/analytic_service/pattern_detector.rs b/server/src/services/analytic_service/analytic_unit/pattern_detector.rs
similarity index 99%
rename from server/src/services/analytic_service/pattern_detector.rs
rename to server/src/services/analytic_service/analytic_unit/pattern_detector.rs
index 62a5673..7663aa5 100644
--- a/server/src/services/analytic_service/pattern_detector.rs
+++ b/server/src/services/analytic_service/analytic_unit/pattern_detector.rs
@@ -11,7 +11,9 @@ use linfa_svm::{error::Result, Svm};
use ndarray::{Array, ArrayView, Axis};
-use super::types::LearningTrain;
+use crate::services::analytic_service::types::LearningTrain;
+
+
#[derive(Clone)]
pub struct LearningResults {
diff --git a/server/src/services/analytic_service/analytic_unit/types.rs b/server/src/services/analytic_service/analytic_unit/types.rs
new file mode 100644
index 0000000..d87f12f
--- /dev/null
+++ b/server/src/services/analytic_service/analytic_unit/types.rs
@@ -0,0 +1,12 @@
+use serde::{Deserialize, Serialize};
+
+#[derive(Debug, Serialize, Deserialize, Clone)]
+pub struct PatternDetectorConfig {
+ pub correlation_score: f32,
+ pub model_score: f32
+}
+
+#[derive(Debug, Serialize, Deserialize, Clone)]
+pub enum AnalyticUnitConfig {
+ PatternDetector(PatternDetectorConfig)
+}
\ No newline at end of file
diff --git a/server/src/services/analytic_service/mod.rs b/server/src/services/analytic_service/mod.rs
index a1100a7..fb15d78 100644
--- a/server/src/services/analytic_service/mod.rs
+++ b/server/src/services/analytic_service/mod.rs
@@ -1,5 +1,5 @@
mod analytic_service;
-mod pattern_detector;
+mod analytic_unit;
pub mod types;
pub mod analytic_client;
diff --git a/server/src/services/analytic_service/types.rs b/server/src/services/analytic_service/types.rs
index 0f0c8c5..7aa5669 100644
--- a/server/src/services/analytic_service/types.rs
+++ b/server/src/services/analytic_service/types.rs
@@ -1,6 +1,6 @@
use crate::services::segments_service::Segment;
-use super::pattern_detector::{self, LearningResults, PatternDetector};
+use super::analytic_unit::{pattern_detector::{self, LearningResults}, types::AnalyticUnitConfig};
use anyhow::Result;
use serde::Serialize;
@@ -15,6 +15,7 @@ pub enum LearningStatus {
Ready,
}
+// TODO: move to analytic_unit config of pattern detector
#[derive(Clone, Serialize, Debug)]
pub struct LearningTrain {
pub features: Vec,
@@ -58,6 +59,7 @@ pub enum RequestType {
RunLearning,
RunDetection(DetectionTask),
GetStatus(oneshot::Sender),
+ GetConfig(oneshot::Sender),
GetLearningTrain(oneshot::Sender),
}