/**
* Haoliang.Core.Services - 核心业务服务接口层
*
* 本文件定义CNC机床数据采集分析系统的所有核心业务服务接口。
* 采用依赖注入模式,确保各层解耦和可测试性。
*
* 接口设计原则:
* 1. 每个接口职责单一,便于实现和测试
* 2. 方法命名清晰,体现业务语义
* 3. 支持异步操作,提升系统吞吐量
* 4. 返回类型明确,便于调用方处理
*
* 修订历史:
* - 2024-01-01: 初始版本,定义系统核心服务接口
*/
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Haoliang.Models.User;
using Haoliang.Models.Device;
using Haoliang.Models.Production;
using Haoliang.Models.System;
using Haoliang.Models.Template;
using Haoliang.Models.DataCollection;
namespace Haoliang.Core.Services
{
#region ========== 用户与认证服务 ==========
///
/// 认证服务接口
///
/// 负责用户登录、登出、令牌刷新等认证相关业务逻辑。
/// 支持JWT令牌认证机制,提供安全的会话管理。
///
public interface IAuthService
{
///
/// 用户登录
///
/// 登录请求,包含用户名和密码
/// 认证结果,包含令牌和用户信息
Task LoginAsync(LoginRequest request);
///
/// 用户登出
///
/// 用户ID
/// 登出是否成功
Task LogoutAsync(int userId);
///
/// 刷新访问令牌
///
/// 刷新令牌
/// 新的认证结果
Task RefreshTokenAsync(string refreshToken);
///
/// 检查用户名是否存在
///
/// 用户名
/// 是否存在
Task UsernameExistsAsync(string username);
///
/// 检查邮箱是否存在
///
/// 邮箱地址
/// 是否存在
Task EmailExistsAsync(string email);
///
/// 根据ID获取用户
///
/// 用户ID
/// 用户信息
Task GetUserByIdAsync(int userId);
}
///
/// 用户服务接口
///
/// 负责用户 CRUD 操作、密码管理、用户状态维护等。
/// 与认证服务配合完成完整的用户管理功能。
///
public interface IUserService
{
///
/// 创建用户
///
/// 用户实体
/// 创建的用户视图模型
Task CreateUserAsync(User user);
///
/// 根据ID获取用户
///
/// 用户ID
/// 用户视图模型,不存在返回null
Task GetUserByIdAsync(int userId);
///
/// 获取所有用户
///
/// 用户列表
Task> GetAllUsersAsync();
///
/// 更新用户信息
///
/// 用户ID
/// 用户更新数据
/// 更新后的用户视图模型
Task UpdateUserAsync(int userId, User user);
///
/// 修改密码
///
/// 用户ID
/// 旧密码
/// 新密码
/// 修改是否成功
Task ChangePasswordAsync(int userId, string oldPassword, string newPassword);
///
/// 激活用户
///
/// 用户ID
/// 操作是否成功
Task ActivateUserAsync(int userId);
///
/// 停用用户
///
/// 用户ID
/// 操作是否成功
Task DeactivateUserAsync(int userId);
}
///
/// 权限服务接口
///
/// 负责权限和角色的管理、用户权限分配、权限验证等。
/// 支持基于角色的访问控制(RBAC)和基于权限的访问控制。
///
public interface IPermissionService
{
///
/// 获取用户的权限列表
///
/// 用户ID
/// 权限标识列表
Task> GetUserPermissionsAsync(int userId);
///
/// 检查用户是否拥有指定权限
///
/// 用户ID
/// 权限标识
/// 是否拥有权限
Task HasPermissionAsync(int userId, string permission);
///
/// 分配权限给用户
///
/// 用户ID
/// 权限列表
Task AssignPermissionsToUserAsync(int userId, IEnumerable permissions);
///
/// 移除用户的所有权限
///
/// 用户ID
Task RemoveAllPermissionsFromUserAsync(int userId);
}
#endregion
#region ========== 日志与缓存服务 ==========
///
/// 日志服务接口
///
/// 提供结构化日志记录功能,支持多级别日志、日志查询和归档。
/// 日志级别:Debug、Info、Warning、Error、Critical
///
public interface ILoggingService
{
///
/// 记录信息日志
///
/// 日志消息
Task LogInformationAsync(string message);
///
/// 记录警告日志
///
/// 日志消息
Task LogWarningAsync(string message);
///
/// 记录错误日志
///
/// 日志消息
/// 异常对象
Task LogErrorAsync(string message, Exception? exception = null);
///
/// 获取日志列表
///
/// 日志级别过滤
/// 开始日期
/// 结束日期
/// 日志类别
/// 日志条目列表
Task> GetLogsAsync(Haoliang.Models.System.LogLevel? logLevel, DateTime? startDate, DateTime? endDate, string? category = null);
///
/// 获取错误日志
///
/// 开始日期
/// 结束日期
/// 错误日志列表
Task> GetErrorLogsAsync(DateTime? startDate = null, DateTime? endDate = null);
///
/// 获取日志数量
///
/// 日志级别过滤
/// 开始日期
/// 结束日期
/// 日志数量
Task GetLogCountAsync(Haoliang.Models.System.LogLevel? logLevel = null, DateTime? startDate = null, DateTime? endDate = null);
///
/// 归档日志
///
/// 保留天数
Task ArchiveLogsAsync(int daysToKeep = 90);
///
/// 清除所有日志
///
Task ClearLogsAsync();
///
/// 记录信息日志 (LogInfoAsync的别名)
///
/// 日志消息
Task LogInfoAsync(string message);
}
///
/// 缓存服务接口
///
/// 提供内存缓存和分布式缓存支持,用于提升系统性能。
/// 支持缓存过期、缓存失效、缓存统计等功能。
///
public interface ICacheService
{
///
/// 获取缓存值
///
/// 缓存值类型
/// 缓存键
/// 缓存值,不存在返回null
T? Get(string key) where T : class;
///
/// 设置缓存值
///
/// 缓存值类型
/// 缓存键
/// 缓存值
/// 过期时间
void Set(string key, T value, TimeSpan? expiration = null) where T : class;
///
/// 移除缓存
///
/// 缓存键
/// 是否成功移除
bool Remove(string key);
///
/// 检查缓存是否存在
///
/// 缓存键
/// 是否存在
bool Exists(string key);
///
/// 获取或设置缓存
///
/// 缓存值类型
/// 缓存键
/// 缓存不存在时的工厂方法
/// 过期时间
/// 缓存值
T GetOrSet(string key, Func factory, TimeSpan? expiration = null) where T : class;
///
/// 清除所有缓存
///
void Clear();
///
/// 获取缓存统计信息
///
/// 缓存统计
CacheStats GetStatistics();
}
///
/// 缓存统计信息
///
public class CacheStats
{
public long TotalItems { get; set; }
public long HitCount { get; set; }
public long MissCount { get; set; }
public double HitRate => HitCount + MissCount > 0 ? (double)HitCount / (HitCount + MissCount) : 0;
public long MemoryUsageBytes { get; set; }
public DateTime LastCleared { get; set; }
}
#endregion
#region ========== 设备与采集服务 ==========
///
/// 设备采集服务接口
///
/// 负责CNC设备的添加、删除、更新、查询,
/// 以及设备数据采集的启动、停止、状态监控等功能。
/// 支持多品牌CNC设备(发那科、三菱、西门子等)的统一采集。
///
public interface IDeviceCollectionService
{
///
/// 获取所有设备
///
/// 设备列表
Task> GetAllDevicesAsync();
///
/// 根据ID获取设备
///
/// 设备ID
/// 设备信息,不存在返回null
Task GetDeviceByIdAsync(int deviceId);
///
/// 创建设备
///
/// 设备信息
/// 创建的设备
Task CreateDeviceAsync(CNCDevice device);
///
/// 更新设备信息
///
/// 设备信息
/// 更新后的设备,不存在返回null
Task UpdateDeviceAsync(CNCDevice device);
///
/// 删除设备
///
/// 设备ID
/// 是否删除成功
Task DeleteDeviceAsync(int deviceId);
///
/// 采集指定设备数据
///
/// 设备ID
Task CollectDeviceAsync(int deviceId);
///
/// 采集所有设备数据
///
Task CollectAllDevicesAsync();
///
/// 获取设备状态
///
/// 设备ID
/// 设备状态信息
Task GetDeviceStatusAsync(int deviceId);
///
/// 获取设备健康状态
///
/// 设备ID
/// 健康状态信息
Task GetDeviceHealthAsync(int deviceId);
///
/// 获取设备当前状态
///
/// 设备ID
/// 设备当前状态信息
Task GetDeviceCurrentStatusAsync(int deviceId);
}
///
/// 设备状态机服务接口
///
/// 管理和维护设备状态转换逻辑,包括:
/// - 在线/离线状态
/// - 运行/空闲/报警状态
/// - 状态转换规则和事件触发
///
/// 采用状态模式实现,支持自定义状态转换规则。
///
public interface IDeviceStateMachine
{
///
/// 获取设备当前状态
///
/// 设备ID
/// 设备状态
DeviceStatus GetCurrentState(int deviceId);
///
/// 触发状态转换
///
/// 设备ID
/// 新状态
/// 转换是否成功
bool TransitionTo(int deviceId, DeviceStatus newState);
///
/// 注册状态变更监听器
///
/// 设备ID
/// 回调函数
void RegisterStateChangeHandler(int deviceId, Action callback);
///
/// 获取设备状态历史
///
/// 设备ID
/// 开始时间
/// 结束时间
/// 状态历史记录
IEnumerable GetStateHistory(int deviceId, DateTime fromTime, DateTime toTime);
}
///
/// Ping服务接口
///
/// 提供设备网络连通性检测功能,用于判断设备是否在线。
/// 支持批量Ping和异步Ping操作。
///
public interface IPingService
{
///
/// Ping指定设备
///
/// 设备ID
/// IP地址
/// Ping结果
Task PingAsync(int deviceId, string ipAddress);
///
/// 批量Ping设备
///
/// 设备列表(ID和IP)
/// Ping结果列表
Task> PingAllAsync(IEnumerable<(int DeviceId, string IpAddress)> devices);
///
/// 检查设备是否可达
///
/// IP地址
/// 超时时间
/// 是否可达
Task IsReachableAsync(string ipAddress, TimeSpan? timeout = null);
}
///
/// Ping结果
///
public class PingResult
{
public int DeviceId { get; set; }
public string IpAddress { get; set; } = string.Empty;
public bool Success { get; set; }
public long RoundtripTime { get; set; }
public string? ErrorMessage { get; set; }
public DateTime Timestamp { get; set; }
}
///
/// 设备状态变更记录
///
public class DeviceStatusChange
{
public int DeviceId { get; set; }
public DeviceStatus? FromState { get; set; }
public DeviceStatus? ToState { get; set; }
public DateTime Timestamp { get; set; }
public string? Reason { get; set; }
}
///
/// 设备健康状态
///
public class DeviceHealth
{
public int DeviceId { get; set; }
public bool IsHealthy { get; set; }
public double CpuUsage { get; set; }
public double MemoryUsage { get; set; }
public double DiskUsage { get; set; }
public int ActiveAlerts { get; set; }
public DateTime LastCheck { get; set; }
public List? Issues { get; set; }
}
///
/// 健康问题
///
public class HealthIssue
{
public string? Type { get; set; }
public string? Description { get; set; }
public string? Severity { get; set; }
}
///
/// 设备状态
///
public class DeviceStatus
{
public int DeviceId { get; set; }
public string? DeviceName { get; set; }
public string? Status { get; set; }
public DateTime Timestamp { get; set; }
public string? OperatingMode { get; set; }
public string? RunState { get; set; }
public string? CurrentProgram { get; set; }
public string? Runtime { get; set; }
}
#endregion
#region ========== 生产与统计服务 ==========
///
/// 生产服务接口
///
/// 负责生产数据的查询、计算、导出等功能。
/// 支持按设备、程序、日期等多维度统计。
/// 采用差分计算逻辑处理累计值,详见设计文档。
///
public interface IProductionService
{
///
/// 获取生产汇总
///
/// 日期
/// 生产汇总
Task GetProductionSummaryAsync(DateTime date);
///
/// 获取生产统计
///
/// 日期
/// 统计结果
Task GetProductionStatisticsAsync(DateTime date);
///
/// 获取指定设备的今日生产数据
///
/// 设备ID
/// 生产数据
Task GetTodayProductionAsync(int deviceId);
///
/// 获取指定设备的生产统计
///
/// 设备ID
/// 日期
/// 统计结果
Task GetProductionStatisticsAsync(int deviceId, DateTime date);
///
/// 获取质量率
///
/// 设备ID
/// 日期
/// 质量率百分比
Task GetQualityRateAsync(int deviceId, DateTime date);
///
/// 计算所有设备的生产数据
///
Task CalculateAllProductionAsync();
///
/// 计算指定设备的生产数据
///
/// 设备ID
Task CalculateProductionAsync(int deviceId);
///
/// 获取生产程序列表
///
/// 日期
/// 程序列表
Task> GetProductionProgramsAsync(DateTime date);
///
/// 获取指定程序的生产数据
///
/// 程序名
/// 日期
/// 程序生产数据
Task GetProgramProductionAsync(string programName, DateTime date);
///
/// 导出生产数据
///
/// 开始日期
/// 结束日期
/// CSV文件字节数组
Task ExportProductionDataAsync(DateTime startDate, DateTime endDate);
///
/// 归档生产数据
///
/// 保留天数
Task ArchiveProductionDataAsync(int daysToKeep = 90);
///
/// 获取设备指定日期的生产数据
///
/// 设备ID
/// 日期
/// 生产数据
Task GetDeviceProductionForDateAsync(int deviceId, DateTime date);
}
///
/// 生产计算器接口
///
/// 负责根据采集的原始数据计算生产数量。
/// 实现差分计算逻辑,处理程序切换、跨天等情况。
///
public interface IProductionCalculator
{
///
/// 计算单个设备的生产增量
///
/// 设备ID
/// 当前累计值
/// 当前程序名
/// 时间戳
/// 生产增量
Task CalculateProductionIncrementAsync(int deviceId, decimal currentValue, string programName, DateTime timestamp);
///
/// 重置设备的生产状态
///
/// 设备ID
void ResetDeviceProductionState(int deviceId);
///
/// 验证生产数据的有效性
///
/// 设备ID
/// 累计值
/// 是否有效
bool ValidateProductionValue(int deviceId, decimal value);
}
///
/// 生产调度器接口
///
/// 负责生产统计任务的调度执行,
/// 包括定时计算、数据归档、报表生成等。
///
public interface IProductionScheduler
{
///
/// 启动调度器
///
Task StartAsync();
///
/// 停止调度器
///
Task StopAsync();
///
/// 注册定时任务
///
/// 任务ID
/// 调度表达式
/// 任务动作
void RegisterTask(string taskId, string schedule, Func action);
///
/// 移除定时任务
///
/// 任务ID
void RemoveTask(string taskId);
///
/// 获取调度器状态
///
/// 是否运行中
bool IsRunning { get; }
}
///
/// 生产统计服务接口
///
/// 提供高级生产分析功能,包括:
/// - 生产趋势分析
/// - OEE计算
/// - 效率指标
/// - 质量分析
/// - 预测分析
/// - 异常检测
///
public interface IProductionStatisticsService
{
///
/// 计算生产趋势
///
/// 设备ID
/// 开始日期
/// 结束日期
/// 趋势分析结果
Task CalculateProductionTrendsAsync(int deviceId, DateTime startDate, DateTime endDate);
///
/// 生成生产报表
///
/// 报表过滤条件
/// 生产报表
Task GenerateProductionReportAsync(ReportFilter filter);
///
/// 计算效率指标
///
/// 过滤条件
/// 效率指标
Task CalculateEfficiencyMetricsAsync(EfficiencyFilter filter);
///
/// 执行质量分析
///
/// 过滤条件
/// 质量分析结果
Task PerformQualityAnalysisAsync(QualityFilter filter);
///
/// 获取仪表盘汇总
///
/// 过滤条件
/// 仪表盘数据
Task GetDashboardSummaryAsync(DashboardFilter filter);
///
/// 计算OEE
///
/// 设备ID
/// 日期
/// OEE指标
Task CalculateOeeAsync(int deviceId, DateTime date);
///
/// 生成生产预测
///
/// 预测过滤条件
/// 预测结果
Task GenerateProductionForecastAsync(ForecastFilter filter);
///
/// 检测生产异常
///
/// 过滤条件
/// 异常分析结果
Task DetectProductionAnomaliesAsync(AnomalyFilter filter);
}
#endregion
#region ========== 告警服务 ==========
///
/// 告警服务接口
///
/// 负责告警的创建、查询、更新、解决等功能。
/// 支持多种告警类型:设备故障、产量异常、运行异常等。
///
public interface IAlarmService
{
///
/// 获取所有告警
///
/// 告警列表
Task> GetAllAlarmsAsync();
///
/// 根据类型获取告警
///
/// 告警类型
/// 告警列表
Task> GetAlarmsByTypeAsync(AlarmType type);
///
/// 获取活跃告警
///
/// 活跃告警列表
Task> GetActiveAlarmsAsync();
///
/// 根据ID获取告警
///
/// 告警ID
/// 告警信息
Task GetAlarmByIdAsync(int alarmId);
///
/// 创建告警
///
/// 告警信息
/// 创建的告警
Task CreateAlarmAsync(Alarm alarm);
///
/// 更新告警
///
/// 告警ID
/// 告警信息
/// 更新后的告警
Task UpdateAlarmAsync(int alarmId, Alarm alarm);
///
/// 删除告警
///
/// 告警ID
/// 是否删除成功
Task DeleteAlarmAsync(int alarmId);
///
/// 解决告警
///
/// 告警ID
/// 解决备注
/// 是否成功
Task ResolveAlarmAsync(int alarmId, string? resolutionNote);
///
/// 确认告警
///
/// 告警ID
/// 确认备注
/// 是否成功
Task AcknowledgeAlarmAsync(int alarmId, string? acknowledgeNote);
///
/// 获取设备的告警
///
/// 设备ID
/// 查询天数
/// 告警列表
Task> GetDeviceAlarmsAsync(int deviceId, int days = 7);
///
/// 获取严重告警
///
/// 严重告警列表
Task> GetCriticalAlarmsAsync();
///
/// 获取告警统计
///
/// 日期
/// 统计结果
Task GetAlarmStatisticsAsync(DateTime date);
///
/// 按日期范围获取告警
///
/// 开始日期
/// 结束日期
/// 告警列表
Task> GetAlarmsByDateRangeAsync(DateTime startDate, DateTime endDate);
}
///
/// 告警规则服务接口
///
/// 负责告警规则的CRUD和规则测试。
/// 支持自定义告警条件和触发阈值。
///
public interface IAlarmRuleService
{
///
/// 获取所有告警规则
///
/// 规则列表
Task> GetAllAlarmRulesAsync();
///
/// 根据ID获取告警规则
///
/// 规则ID
/// 规则信息
Task GetAlarmRuleByIdAsync(int ruleId);
///
/// 创建告警规则
///
/// 规则信息
/// 创建的规则
Task CreateAlarmRuleAsync(AlarmRule rule);
///
/// 更新告警规则
///
/// 规则ID
/// 规则信息
/// 更新后的规则
Task UpdateAlarmRuleAsync(int ruleId, AlarmRule rule);
///
/// 删除告警规则
///
/// 规则ID
/// 是否删除成功
Task DeleteAlarmRuleAsync(int ruleId);
///
/// 测试告警规则
///
/// 规则ID
Task TestAlarmRuleAsync(int ruleId);
///
/// 启用/禁用告警规则
///
/// 规则ID
/// 是否启用
Task SetAlarmRuleEnabledAsync(int ruleId, bool enabled);
}
///
/// 告警通知服务接口
///
/// 负责告警通知的发送和跟踪。
/// 支持多种通知渠道:邮件、短信、微信、Webhook等。
///
public interface IAlarmNotificationService
{
///
/// 发送告警通知
///
/// 通知信息
Task SendAlarmNotificationAsync(AlarmNotification notification);
///
/// 发送告警通知到多个渠道
///
/// 告警信息
/// 通知渠道列表
Task SendAlarmNotificationToChannelsAsync(Alarm alarm, IEnumerable channels);
///
/// 获取通知状态
///
/// 通知ID
/// 通知状态
Task GetNotificationStatusAsync(int notificationId);
///
/// 重试失败的通知
///
/// 通知ID
Task RetryNotificationAsync(int notificationId);
///
/// 取消通知
///
/// 通知ID
Task CancelNotificationAsync(int notificationId);
}
#endregion
#region ========== 模板服务 ==========
///
/// 模板服务接口
///
/// 负责CNC品牌模板的CRUD、验证、克隆等功能。
/// 支持多品牌(发那科、三菱、西门子等)的字段映射配置。
///
public interface ITemplateService
{
///
/// 获取所有模板
///
/// 模板列表
Task> GetAllTemplatesAsync();
///
/// 根据ID获取模板
///
/// 模板ID
/// 模板信息
Task GetTemplateByIdAsync(int templateId);
///
/// 创建模板
///
/// 模板信息
/// 创建的模板
Task CreateTemplateAsync(CNCBrandTemplate template);
///
/// 更新模板
///
/// 模板ID
/// 模板信息
/// 更新后的模板
Task UpdateTemplateAsync(int templateId, CNCBrandTemplate template);
///
/// 删除模板
///
/// 模板ID
/// 是否删除成功
Task DeleteTemplateAsync(int templateId);
///
/// 启用模板
///
/// 模板ID
/// 是否成功
Task EnableTemplateAsync(int templateId);
///
/// 禁用模板
///
/// 模板ID
/// 是否成功
Task DisableTemplateAsync(int templateId);
///
/// 克隆模板
///
/// 源模板ID
/// 新模板名称
/// 克隆的模板
Task CloneTemplateAsync(int templateId, string newName);
///
/// 测试模板
///
/// 模板ID
Task TestTemplateAsync(int templateId);
///
/// 根据品牌获取模板
///
/// 品牌名称
/// 模板列表
Task> GetTemplatesByBrandAsync(string brandName);
///
/// 获取启用的模板
///
/// 启用状态的模板列表
Task> GetActiveTemplatesAsync();
///
/// 验证模板
///
/// 模板信息
/// 是否有效
Task ValidateTemplateAsync(CNCBrandTemplate template);
}
///
/// 标签映射服务接口
///
/// 负责CNC设备标签与系统标准字段的映射配置管理。
/// 将不同品牌的原始标签映射为系统统一字段。
///
public interface ITagMappingService
{
///
/// 获取模板的标签映射
///
/// 模板ID
/// 映射列表
Task> GetMappingsByTemplateAsync(int templateId);
///
/// 创建标签映射
///
/// 映射信息
/// 创建的映射
Task CreateTagMappingAsync(TagMapping mapping);
///
/// 批量创建标签映射
///
/// 模板ID
/// 映射列表
Task CreateTagMappingsAsync(int templateId, IEnumerable mappings);
///
/// 更新标签映射
///
/// 映射ID
/// 映射信息
/// 更新的映射
Task UpdateTagMappingAsync(int mappingId, TagMapping mapping);
///
/// 删除标签映射
///
/// 映射ID
/// 是否删除成功
Task DeleteTagMappingAsync(int mappingId);
///
/// 映射设备标签
///
/// 设备原始标签
/// 模板ID
/// 映射后的标签数据
Task> MapDeviceTagsAsync(IEnumerable deviceTags, int templateId);
///
/// 根据系统字段ID获取映射
///
/// 模板ID
/// 系统字段ID
/// 映射信息
Task GetMappingBySystemFieldAsync(int templateId, string systemFieldId);
}
///
/// 模板验证服务接口
///
/// 负责模板的验证、迁移分析和兼容性检查。
/// 支持跨品牌模板迁移的可行性分析。
///
public interface ITemplateValidationService
{
///
/// 验证模板对指定设备的适用性
///
/// 模板ID
/// 设备ID
/// 验证错误列表,无错误返回空列表
Task> ValidateTemplateForDeviceAsync(int templateId, int deviceId);
///
/// 生成迁移报告
///
/// 源模板
/// 目标品牌
/// 迁移报告
Task GenerateMigrationReportAsync(CNCBrandTemplate template, string targetBrand);
///
/// 检查模板完整性
///
/// 模板信息
/// 完整性检查结果
Task ValidateTemplateCompletenessAsync(CNCBrandTemplate template);
}
///
/// 模板迁移服务接口
///
/// 负责模板的跨品牌迁移转换。
/// 将一个品牌的模板转换为另一个品牌的模板。
///
public interface ITemplateMigrationService
{
///
/// 执行模板迁移
///
/// 源模板ID
/// 目标品牌
/// 迁移后的模板
Task MigrateTemplateAsync(int sourceTemplateId, string targetBrand);
///
/// 验证迁移可行性
///
/// 源模板ID
/// 目标品牌
/// 是否可行
Task CanMigrateAsync(int sourceTemplateId, string targetBrand);
///
/// 获取迁移映射建议
///
/// 源模板ID
/// 目标品牌
/// 映射建议列表
Task> GetMigrationMappingSuggestionsAsync(int sourceTemplateId, string targetBrand);
}
///
/// 模板迁移报告
///
public class TemplateMigrationReport
{
public bool CanMigrate { get; set; }
public List? Issues { get; set; }
public List? Warnings { get; set; }
public List? MappedFields { get; set; }
public List? UnmappedFields { get; set; }
}
///
/// 模板验证结果
///
public class TemplateValidationResult
{
public bool IsValid { get; set; }
public List? Errors { get; set; }
public List? Warnings { get; set; }
}
///
/// 标签映射建议
///
public class TagMappingSuggestion
{
public string? SourceField { get; set; }
public string? SuggestedTargetField { get; set; }
public double Confidence { get; set; }
}
#endregion
#region ========== 系统与配置服务 ==========
///
/// 系统服务接口
///
/// 提供系统级别的操作和管理功能,
/// 包括系统状态、健康检查、调度器管理等。
///
public interface ISystemService
{
///
/// 获取系统状态
///
/// 系统状态信息
Task GetSystemStatusAsync();
///
/// 执行健康检查
///
/// 健康检查结果
Task PerformHealthCheckAsync();
///
/// 获取系统指标
///
/// 系统指标数据
Task GetSystemMetricsAsync();
///
/// 重启系统服务
///
Task RestartAsync();
}
///
/// 系统配置服务接口
///
/// 提供系统配置项的CRUD和缓存管理。
/// 支持配置的分类查询和动态更新。
///
public interface ISystemConfigService
{
///
/// 获取所有配置
///
/// 配置列表
Task> GetAllConfigsAsync();
///
/// 获取指定配置
///
/// 配置键
/// 配置值
Task GetConfigAsync(string key);
///
/// 设置配置
///
/// 配置键
/// 配置值
/// 设置后的配置
Task SetConfigAsync(string key, string value);
///
/// 删除配置
///
/// 配置键
/// 是否删除成功
Task DeleteConfigAsync(string key);
///
/// 检查配置是否存在
///
/// 配置键
/// 是否存在
Task ConfigExistsAsync(string key);
///
/// 按分类获取配置
///
/// 分类名称
/// 配置列表
Task> GetConfigsByCategoryAsync(string category);
///
/// 刷新配置缓存
///
Task RefreshConfigCacheAsync();
///
/// 获取系统配置
///
Task