using CommunityToolkit.Mvvm.ComponentModel;
namespace YZWater.Core.Models;
///
/// 系统配置模型
///
public partial class SystemConfig : ObservableObject
{
///
/// PLC IP 地址
///
[ObservableProperty]
private string _plcIp = "192.168.0.150";
///
/// PLC 端口
///
[ObservableProperty]
private int _plcPort = 5000;
///
/// 是否自动连接
///
[ObservableProperty]
private bool _autoConnect = true;
///
/// 液位高报警值
///
[ObservableProperty]
private float _levelHighAlarm = 80f;
///
/// 液位低报警值
///
[ObservableProperty]
private float _levelLowAlarm = 20f;
///
/// 流量高报警值
///
[ObservableProperty]
private float _flowHighAlarm = 100f;
///
/// 流量低报警值
///
[ObservableProperty]
private float _flowLowAlarm = 5f;
///
/// 泵频率设置
///
[ObservableProperty]
private float _pumpFrequency = 50f;
///
/// 系统名称
///
[ObservableProperty]
private string _systemName = "污水处理监控系统";
///
/// 公司名称
///
[ObservableProperty]
private string _companyName = "扬州旭轩科技有限公司";
///
/// 联系人
///
[ObservableProperty]
private string _contactPerson = "赵经理";
///
/// 联系电话
///
[ObservableProperty]
private string _contactPhone = "18115099090";
///
/// 是否深色主题
///
[ObservableProperty]
private bool _isDarkTheme;
///
/// 是否中文语言
///
[ObservableProperty]
private bool _isChinese = true;
///
/// 中控服务端口
///
[ObservableProperty]
private int _hubPort = 8765;
///
/// 中控服务端地址(客户端模式使用)
///
[ObservableProperty]
private string _hubServerUrl = "ws://localhost:8765";
///
/// 运行模式:Direct/Server/Client
///
[ObservableProperty]
private string _runMode = "Direct";
///
/// Hub 通信令牌(服务端和客户端必须匹配)
///
[ObservableProperty]
private string _hubToken = string.Empty;
///
/// 是否记住登录用户名
///
[ObservableProperty]
private bool _rememberUserName;
///
/// 保存的用户名
///
[ObservableProperty]
private string _savedUserName = string.Empty;
///
/// 当前激活的项目名称(对应 projects/ 目录下的 JSON 文件名,不含后缀)
/// 空字符串表示使用内置默认项目配置
///
[ObservableProperty]
private string _activeProject = string.Empty;
///
/// PLC 轮询间隔(毫秒)
///
[ObservableProperty]
private int _plcPollingIntervalMs = 1000;
///
/// 是否开机自启动
///
[ObservableProperty]
private bool _runAtStartup;
///
/// PLC 地址覆盖(key=标签名如 Tank1Level, value=地址如 VD100)
/// 空则使用默认地址
///
public Dictionary PlcAddresses { get; set; } = new();
///
/// PLC 协议类型:SiemensS7 / MitsubishiMC / OmronFins / ModbusTcp / AllenBradley
/// 默认 SiemensS7(当前项目使用 S7-200 Smart)
///
[ObservableProperty]
private string _plcProtocol = "SiemensS7";
// ═══ 数据保留配置 ═══
///
/// 数据保留配置
///
public DataRetentionConfig DataRetention { get; set; } = new();
// ═══ 备份配置 ═══
///
/// 备份配置
///
public BackupConfig Backup { get; set; } = new();
}
///
/// 数据保留配置
///
public class DataRetentionConfig
{
/// 报警记录保留天数(默认 90 天)
public int AlarmRecordRetentionDays { get; set; } = 90;
/// 流量记录保留天数(默认 360 天)
public int FlowRecordRetentionDays { get; set; } = 360;
/// 模拟量记录保留天数(默认 360 天)
public int AnalogRecordRetentionDays { get; set; } = 360;
/// 审计日志保留天数(默认 365 天)
public int AuditLogRetentionDays { get; set; } = 365;
}
///
/// 备份配置
///
public class BackupConfig
{
/// 是否启用定时备份
public bool EnableScheduledBackup { get; set; } = true;
/// 定时备份间隔(小时,默认 24 小时)
public int BackupIntervalHours { get; set; } = 24;
/// 保留备份数量(默认 7 个)
public int KeepBackupCount { get; set; } = 7;
}