314 lines
10 KiB
Java
314 lines
10 KiB
Java
package com.dongni.collisionavoidance.rule.service;
|
||
|
||
import com.dongni.collisionavoidance.rule.model.entity.SpatialRule;
|
||
import com.dongni.collisionavoidance.rule.model.enums.RuleCategory;
|
||
import com.dongni.collisionavoidance.rule.model.enums.RuleStatus;
|
||
import com.dongni.collisionavoidance.rule.service.SpatialRuleService.RuleValidationResult;
|
||
|
||
import java.time.LocalDateTime;
|
||
import java.util.List;
|
||
import java.util.Map;
|
||
|
||
/**
|
||
* 规则配置服务接口
|
||
* 提供基本的规则配置管理功能
|
||
*
|
||
* @author AI Assistant
|
||
* @version 1.0
|
||
* @since 2025-01-17
|
||
*/
|
||
public interface RuleConfigurationService {
|
||
|
||
// ==================== 基础配置功能 ====================
|
||
|
||
/**
|
||
* 创建规则配置模板
|
||
*
|
||
* @param category 规则类别
|
||
* @param name 规则名称
|
||
* @param description 规则描述
|
||
* @return 创建的规则模板
|
||
*/
|
||
SpatialRule createRuleTemplate(RuleCategory category, String name, String description);
|
||
|
||
/**
|
||
* 克隆现有规则作为新配置
|
||
*
|
||
* @param sourceRuleId 源规则ID
|
||
* @param newRuleId 新规则ID
|
||
* @param newName 新规则名称
|
||
* @return 克隆的规则
|
||
*/
|
||
SpatialRule cloneRuleConfiguration(String sourceRuleId, String newRuleId, String newName);
|
||
|
||
/**
|
||
* 更新规则基本信息
|
||
*
|
||
* @param ruleId 规则ID
|
||
* @param name 新名称
|
||
* @param description 新描述
|
||
* @param priority 新优先级
|
||
* @return 更新是否成功
|
||
*/
|
||
boolean updateRuleBasicInfo(String ruleId, String name, String description, Integer priority);
|
||
|
||
/**
|
||
* 配置规则时间窗口
|
||
*
|
||
* @param ruleId 规则ID
|
||
* @param effectiveStartTime 生效开始时间
|
||
* @param effectiveEndTime 生效结束时间
|
||
* @param timePattern 时间模式配置(JSON格式)
|
||
* @return 配置是否成功
|
||
*/
|
||
boolean configureRuleTimeWindow(String ruleId, LocalDateTime effectiveStartTime,
|
||
LocalDateTime effectiveEndTime, String timePattern);
|
||
|
||
/**
|
||
* 配置规则空间范围
|
||
*
|
||
* @param ruleId 规则ID
|
||
* @param spatialObjectType 空间对象类型
|
||
* @param relatedObjectId 关联对象ID
|
||
* @param customGeometryWkt 自定义几何形状(WKT格式)
|
||
* @return 配置是否成功
|
||
*/
|
||
boolean configureRuleSpatialScope(String ruleId, String spatialObjectType,
|
||
String relatedObjectId, String customGeometryWkt);
|
||
|
||
/**
|
||
* 配置规则参数
|
||
*
|
||
* @param ruleId 规则ID
|
||
* @param parameters 规则参数映射
|
||
* @return 配置是否成功
|
||
*/
|
||
boolean configureRuleParameters(String ruleId, Map<String, Object> parameters);
|
||
|
||
// ==================== 配置验证功能 ====================
|
||
|
||
/**
|
||
* 验证规则配置的完整性
|
||
*
|
||
* @param ruleId 规则ID
|
||
* @return 验证结果
|
||
*/
|
||
RuleValidationResult validateRuleConfiguration(String ruleId);
|
||
|
||
/**
|
||
* 批量验证规则配置
|
||
*
|
||
* @param ruleIds 规则ID列表
|
||
* @return 验证结果映射(规则ID -> 验证结果)
|
||
*/
|
||
Map<String, RuleValidationResult> batchValidateRuleConfigurations(List<String> ruleIds);
|
||
|
||
/**
|
||
* 检查规则配置冲突
|
||
*
|
||
* @param ruleId 规则ID
|
||
* @return 冲突的规则列表
|
||
*/
|
||
List<SpatialRule> checkConfigurationConflicts(String ruleId);
|
||
|
||
/**
|
||
* 验证规则参数的有效性
|
||
*
|
||
* @param category 规则类别
|
||
* @param parameters 参数映射
|
||
* @return 验证结果
|
||
*/
|
||
RuleValidationResult validateRuleParameters(RuleCategory category, Map<String, Object> parameters);
|
||
|
||
// ==================== 配置模板管理 ====================
|
||
|
||
/**
|
||
* 获取规则类别的默认配置模板
|
||
*
|
||
* @param category 规则类别
|
||
* @return 默认配置模板
|
||
*/
|
||
Map<String, Object> getDefaultConfigurationTemplate(RuleCategory category);
|
||
|
||
/**
|
||
* 保存配置模板
|
||
*
|
||
* @param templateName 模板名称
|
||
* @param category 规则类别
|
||
* @param template 模板配置
|
||
* @return 保存是否成功
|
||
*/
|
||
boolean saveConfigurationTemplate(String templateName, RuleCategory category, Map<String, Object> template);
|
||
|
||
/**
|
||
* 获取所有可用的配置模板
|
||
*
|
||
* @param category 规则类别(可选,为null时返回所有类别)
|
||
* @return 配置模板映射(模板名称 -> 模板配置)
|
||
*/
|
||
Map<String, Map<String, Object>> getAvailableTemplates(RuleCategory category);
|
||
|
||
/**
|
||
* 应用配置模板到规则
|
||
*
|
||
* @param ruleId 规则ID
|
||
* @param templateName 模板名称
|
||
* @return 应用是否成功
|
||
*/
|
||
boolean applyConfigurationTemplate(String ruleId, String templateName);
|
||
|
||
// ==================== 配置导入导出 ====================
|
||
|
||
/**
|
||
* 导出规则配置
|
||
*
|
||
* @param ruleId 规则ID
|
||
* @return 配置数据(JSON格式)
|
||
*/
|
||
String exportRuleConfiguration(String ruleId);
|
||
|
||
/**
|
||
* 批量导出规则配置
|
||
*
|
||
* @param ruleIds 规则ID列表
|
||
* @return 配置数据(JSON格式)
|
||
*/
|
||
String exportRuleConfigurations(List<String> ruleIds);
|
||
|
||
/**
|
||
* 导入规则配置
|
||
*
|
||
* @param configurationJson 配置数据(JSON格式)
|
||
* @return 导入的规则列表
|
||
*/
|
||
List<SpatialRule> importRuleConfiguration(String configurationJson);
|
||
|
||
/**
|
||
* 从文件导入规则配置
|
||
*
|
||
* @param filePath 配置文件路径
|
||
* @return 导入的规则数量
|
||
*/
|
||
int importRuleConfigurationFromFile(String filePath);
|
||
|
||
// ==================== 配置历史管理 ====================
|
||
|
||
/**
|
||
* 获取规则配置历史
|
||
*
|
||
* @param ruleId 规则ID
|
||
* @param limit 返回数量限制
|
||
* @return 配置历史列表
|
||
*/
|
||
List<RuleConfigurationHistory> getRuleConfigurationHistory(String ruleId, int limit);
|
||
|
||
/**
|
||
* 保存规则配置快照
|
||
*
|
||
* @param ruleId 规则ID
|
||
* @param changeReason 变更原因
|
||
* @param changedBy 变更人
|
||
* @return 快照是否保存成功
|
||
*/
|
||
boolean saveConfigurationSnapshot(String ruleId, String changeReason, String changedBy);
|
||
|
||
/**
|
||
* 恢复规则配置到指定版本
|
||
*
|
||
* @param ruleId 规则ID
|
||
* @param snapshotId 快照ID
|
||
* @param restoredBy 恢复操作人
|
||
* @return 恢复是否成功
|
||
*/
|
||
boolean restoreConfigurationFromSnapshot(String ruleId, String snapshotId, String restoredBy);
|
||
|
||
// ==================== 配置统计分析 ====================
|
||
|
||
/**
|
||
* 获取配置统计信息
|
||
*
|
||
* @return 配置统计数据
|
||
*/
|
||
ConfigurationStatistics getConfigurationStatistics();
|
||
|
||
/**
|
||
* 获取最常用的配置参数
|
||
*
|
||
* @param category 规则类别
|
||
* @param limit 返回数量限制
|
||
* @return 参数使用统计
|
||
*/
|
||
Map<String, Long> getMostUsedConfigurationParameters(RuleCategory category, int limit);
|
||
|
||
/**
|
||
* 获取配置错误统计
|
||
*
|
||
* @param startTime 统计开始时间
|
||
* @param endTime 统计结束时间
|
||
* @return 错误统计数据
|
||
*/
|
||
Map<String, Long> getConfigurationErrorStatistics(LocalDateTime startTime, LocalDateTime endTime);
|
||
|
||
// ==================== 内部类定义 ====================
|
||
|
||
/**
|
||
* 规则配置历史记录
|
||
*/
|
||
class RuleConfigurationHistory {
|
||
private final String snapshotId;
|
||
private final String ruleId;
|
||
private final LocalDateTime timestamp;
|
||
private final String changeReason;
|
||
private final String changedBy;
|
||
private final String configurationSnapshot;
|
||
|
||
public RuleConfigurationHistory(String snapshotId, String ruleId, LocalDateTime timestamp,
|
||
String changeReason, String changedBy, String configurationSnapshot) {
|
||
this.snapshotId = snapshotId;
|
||
this.ruleId = ruleId;
|
||
this.timestamp = timestamp;
|
||
this.changeReason = changeReason;
|
||
this.changedBy = changedBy;
|
||
this.configurationSnapshot = configurationSnapshot;
|
||
}
|
||
|
||
// Getters
|
||
public String getSnapshotId() { return snapshotId; }
|
||
public String getRuleId() { return ruleId; }
|
||
public LocalDateTime getTimestamp() { return timestamp; }
|
||
public String getChangeReason() { return changeReason; }
|
||
public String getChangedBy() { return changedBy; }
|
||
public String getConfigurationSnapshot() { return configurationSnapshot; }
|
||
}
|
||
|
||
/**
|
||
* 配置统计信息
|
||
*/
|
||
class ConfigurationStatistics {
|
||
private final long totalConfigurations;
|
||
private final long validConfigurations;
|
||
private final long invalidConfigurations;
|
||
private final Map<RuleCategory, Long> configurationsByCategory;
|
||
private final Map<RuleStatus, Long> configurationsByStatus;
|
||
private final double configurationValidityRate;
|
||
|
||
public ConfigurationStatistics(long totalConfigurations, long validConfigurations,
|
||
long invalidConfigurations, Map<RuleCategory, Long> configurationsByCategory,
|
||
Map<RuleStatus, Long> configurationsByStatus, double configurationValidityRate) {
|
||
this.totalConfigurations = totalConfigurations;
|
||
this.validConfigurations = validConfigurations;
|
||
this.invalidConfigurations = invalidConfigurations;
|
||
this.configurationsByCategory = configurationsByCategory;
|
||
this.configurationsByStatus = configurationsByStatus;
|
||
this.configurationValidityRate = configurationValidityRate;
|
||
}
|
||
|
||
// Getters
|
||
public long getTotalConfigurations() { return totalConfigurations; }
|
||
public long getValidConfigurations() { return validConfigurations; }
|
||
public long getInvalidConfigurations() { return invalidConfigurations; }
|
||
public Map<RuleCategory, Long> getConfigurationsByCategory() { return configurationsByCategory; }
|
||
public Map<RuleStatus, Long> getConfigurationsByStatus() { return configurationsByStatus; }
|
||
public double getConfigurationValidityRate() { return configurationValidityRate; }
|
||
}
|
||
} |