eis/eqpalg/.do_not_use/data_handler/rs_mgr.h

115 lines
2.4 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#pragma once
/**
* @file rs_mgr.h
* @brief rs即dlib的running state
* 其中包含均值、方差、数量、标准差
* 超值峰度、偏度等信息
* @author Cat (null.null.null@qq.com)
* @version 0.1
* @date 2021-09-10
*
* Copyright: Baosight Co. Ltd.
* DO NOT COPY/USE WITHOUT PERMISSION
*
*/
#include <dlib/statistics.h>
#include <log4cplus/LOG.h>
#include <eqpalg/data_handler/rs_tools.h>
#include <eqpalg/define/dlib.h>
#include <boost/date_time.hpp>
#include <memory>
#include <string>
#include <filesystem>
#include <fstream>
#include <functional>
#include <optional>
#include "mix_cc/json.h"
namespace data_handler {
using namespace boost::posix_time;
using namespace boost::gregorian;
/**
* @brief dlib::RunningState的管理器
* @tparam dims
*/
class RsMgr {
public:
using RunningStats = Rs; ///< small_vector<dlib::running_stats<double>, 3>
protected:
const std::unique_ptr<LOG> logger_; // Logger类
const std::string rule_id_; // 规则ID
const size_t dims_;
RunningStats running_stats_; ///< 整体数据的统计特征
RunningStats weekly_running_stats_; ///< 本周运行统计
bool is_first_sampling_ = true;
size_t rs_count_ = 0;
public:
RsMgr(std::string rule_id_, size_t dims);
/**
* @brief 载入running state信息在此之前要检测是否是第一次采样
* @return true
* @return false
*/
bool load();
/**
* @brief 第一次采样函数data_load为第一次采样中cron进程累积的数据
* @param data_load My Param doc
* @return int
*/
int first_sampling(const SampleWindow& data_load);
/**
* @brief 是否是第一次采样如果是则需要执行first_sampling()函数
* @return true
* @return false
*/
bool is_first_sampling();
/**
* @brief Get the running stats object
* @return RunningStats
*/
RunningStats get_running_stats();
/**
* @brief 把mon进程中满足条件的单个周期的数据存在其中
* @param value My Param doc
* @return true
* @return false
*/
bool store(const SamplePoint& value);
/**
* @brief 把数据变更写入磁盘
* @return true
* @return false
*/
bool commit();
/**
* @brief 每周组织报告数据
* @return int
*/
// int weekly_organize_data();
protected:
/**
* @brief 正态偏移检验
* @return int
*/
int normal_dist_shift_alarm();
};
} // namespace data_handler