From 317a6a9572673a24050c6774e6e46882ddadaac1 Mon Sep 17 00:00:00 2001 From: Alexandr Velikiy <39257464+VargBurz@users.noreply.github.com> Date: Mon, 20 May 2019 12:37:40 +0300 Subject: [PATCH] AnomalyDetector: Need at least 1 labeled segment #667 (#668) --- .../src/controllers/analytics_controller.ts | 51 +++++++++++-------- 1 file changed, 31 insertions(+), 20 deletions(-) diff --git a/server/src/controllers/analytics_controller.ts b/server/src/controllers/analytics_controller.ts index ca111bf..d80fff5 100644 --- a/server/src/controllers/analytics_controller.ts +++ b/server/src/controllers/analytics_controller.ts @@ -120,27 +120,38 @@ async function getQueryRange( analyticUnitId: AnalyticUnit.AnalyticUnitId, detectorType: AnalyticUnit.DetectorType ): Promise { - if( - detectorType === AnalyticUnit.DetectorType.PATTERN || - detectorType === AnalyticUnit.DetectorType.ANOMALY - ) { - const segments = await Segment.findMany(analyticUnitId, { $or: { labeled: true, deleted: true } }); - if(segments.length === 0) { - throw new Error('Need at least 1 labeled segment'); - } - - return getQueryRangeForLearningBySegments(segments); - } - - if(detectorType === AnalyticUnit.DetectorType.THRESHOLD) { - const now = Date.now(); - return { - from: now - 5 * SECONDS_IN_MINUTE * 1000, - to: now - }; + let segments: Segment.Segment[]; + switch(detectorType) { + case AnalyticUnit.DetectorType.PATTERN: + segments = await Segment.findMany(analyticUnitId, { $or: { labeled: true, deleted: true } }); + if(segments.length === 0) { + throw new Error('Need at least 1 labeled segment'); + } + return getQueryRangeForLearningBySegments(segments); + + case AnalyticUnit.DetectorType.THRESHOLD: + const now = Date.now(); + return { + from: now - 5 * SECONDS_IN_MINUTE * 1000, + to: now + }; + + case AnalyticUnit.DetectorType.ANOMALY: + segments = await Segment.findMany(analyticUnitId, { $or: { labeled: true, deleted: true } }); + if(segments.length === 0) { + const now = Date.now(); + return { + from: now - 5 * SECONDS_IN_MINUTE * 1000, + to: now + }; + } + else { + return getQueryRangeForLearningBySegments(segments); + } + + default: + throw new Error(`Cannot get query range for detector type ${detectorType}`); } - - throw new Error(`Cannot get query range for detector type ${detectorType}`); } async function query(