#ifndef TPS_DISTRIBUTION_MONITOR_HPP #define TPS_DISTRIBUTION_MONITOR_HPP #include "app.hpp" #include #include // ============================================================ // 方案分发与状态监控模块(SU-07 方案分发单元 & SU-08 状态监控单元) // ============================================================ /** * 方案分发与状态监控处理器。 * 负责将任务方案分发至作战资产,以及接收遥测数据维护状态监控看板。 */ class DistributionMonitor { public: DistributionMonitor() = default; ~DistributionMonitor() = default; /** * 将任务方案分发至指定的作战资产。 * * @requirement(name="方案驱动分发与状态响应", id="SRS-F-06-001") * 将任务方案分发至卫星、无人机、雷达等资产,监听ACK信号, * 更新状态指示灯。 * * @param planId 方案ID * @param assetType 目标资产类型(如 "卫星" / "无人机" / "雷达") * @return 分发日志记录 */ DistributionLog distributePlan(const std::string& planId, const std::string& assetType); /** * 处理接收到的 ACK 响应,更新分发状态。 * * @param logId 分发日志ID * @param ackCode 响应码("ACK" / "NACK") */ void receiveAck(uint64_t logId, const std::string& ackCode); /** * 实时接收资产遥测数据并解析。 * * @requirement(name="驱动状态监控与异常信息展示", id="SRS-F-06-002") * 实时接收资产遥测数据,解析后更新监控看板, * 检测异常状态码时触发报警。 * * @param rawData 原始遥测数据包 * @param source 数据来源标识 * @return 解析后的状态日志 */ StatusLog receiveTelemetry(const std::string& rawData, const std::string& source); /** * 检测状态码是否为异常,触发报警信号。 * * @param statusCode 状态码 * @return true 表示检测到异常并已触发报警 */ bool triggerAlarm(const std::string& statusCode); /** * 获取所有分发日志。 */ std::vector getDistributionLogs() const; /** * 获取所有状态日志。 */ std::vector getStatusLogs() const; private: std::vector distLogs_; ///< 分发日志 std::vector statusLogs_; ///< 状态日志 uint64_t nextLogId_{1}; ///< 自增日志ID /** * 模拟发送数据到目标资产。 */ bool sendToAsset(const std::string& planId, const std::string& assetType); }; #endif // TPS_DISTRIBUTION_MONITOR_HPP