# 预警逻辑管理 - 触发条件功能开发完成

## 📋 更新概述

成功为水肥一体化系统的实时监测与预警模块中的**预警逻辑管理**页面开发了完整的触发条件功能。新建预警规则时，现在支持：
- ✅ **设备选择** - 选择监测设备
- ✅ **参数选择** - 选择监测参数
- ✅ **等式选择** - 选择比较运算符
- ✅ **阈值输入** - 输入判断阈值

## 🎯 核心功能

### 1. **多条件触发配置** ⭐ 新增

#### 支持的设备类型
- 水肥机-01、02、03、04
- 电动阀-V01、V02
- 土壤传感器-01
- 气象站

#### 支持的监测参数
**水质参数：**
- EC值 (mS/cm)
- PH值

**设备参数：**
- 水压 (bar)
- 流量 (L/h)
- 液位 (L)
- 电池电压 (V)
- 光伏电压 (V)

**环境参数：**
- 土壤湿度 (%)
- 土壤温度 (℃)
- 气温 (℃)
- 空气湿度 (%)

#### 支持的等式运算符
- `>` 大于
- `>=` 大于等于
- `<` 小于
- `<=` 小于等于
- `=` 等于

### 2. **触发条件管理**

#### 添加条件
- 点击"添加条件"按钮即可添加新的触发条件
- 每个条件包含：设备 + 参数 + 等式 + 阈值
- 支持添加多个条件

#### 删除条件
- 每个条件卡片右上角有删除按钮
- 点击即可删除该条件

#### 条件逻辑
- **且（AND）**：所有条件都满足时触发
- **或（OR）**：任一条件满足时触发

### 3. **完整的规则表单**

#### 基础信息
- **规则名称**：必填，规则的名称
- **告警级别**：提示 / 警告 / 严重
- **规则描述**：可选，规则的详细说明

#### 触发逻辑
- **条件逻辑**：且 / 或
- **触发条件**：可添加多个条件
- **持续时间**：条件持续满足的时间（分钟），0表示立即触发

### 4. **表单验证**

在保存规则时，系统会验证：
- ✅ 规则名称不能为空
- ✅ 至少要有一个触发条件
- ✅ 所有条件必须填写完整（设备、参数、阈值都不能为空）

## 📊 使用示例

### 示例1：EC值异常预警
```
规则名称：EC值超标预警
告警级别：严重
条件逻辑：且
触发条件：
  - 设备：水肥机-01
  - 参数：EC值 (mS/cm)
  - 等式：>
  - 阈值：3.5
持续时间：0分钟（立即触发）
```

### 示例2：土壤湿度低位预警
```
规则名称：土壤湿度持续低位预警
告警级别：警告
条件逻辑：且
触发条件：
  条件1:
    - 设备：土壤传感器-01
    - 参数：土壤湿度 (%)
    - 等式：<
    - 阈值：30
  条件2:
    - 设备：气象站
    - 参数：空气湿度 (%)
    - 等式：<
    - 阈值：40
持续时间：60分钟
```

### 示例3：水压异常预警（或逻辑）
```
规则名称：水压异常预警
告警级别：警告
条件逻辑：或
触发条件：
  条件1:
    - 设备：电动阀-V01
    - 参数：水压 (bar)
    - 等式：<
    - 阈值：1.5
  条件2:
    - 设备：电动阀-V01
    - 参数：水压 (bar)
    - 等式：>
    - 阈值：4.5
持续时间：5分钟
```

## 🎨 界面优化

### 1. **条件卡片布局**
- 每个条件以独立卡片形式展示
- 清晰的编号（条件1、条件2...）
- 四列网格布局：设备 | 参数 | 等式 | 阈值

### 2. **下拉选择器优化**
- 设备选择器：列出所有可用设备
- 参数选择器：显示参数名称和单位
- 等式选择器：显示运算符符号和说明

### 3. **条件显示优化**
- 规则列表中显示所有触发条件
- 使用标签美化显示
- 清晰展示条件逻辑（且/或）

## 🔄 数据流转

### 新建规则流程
1. 点击"新建预警规则"按钮
2. 填写基础信息（名称、级别、描述）
3. 选择条件逻辑（且/或）
4. 添加触发条件：
   - 选择设备
   - 选择参数
   - 选择等式
   - 输入阈值
5. 设置持续时间
6. 点击"保存规则"

### 编辑规则流程
1. 点击规则卡片的"编辑"按钮
2. 表单自动加载现有数据
3. 修改任意字段
4. 点击"保存规则"更新

### 数据保存
- 新建规则会添加到规则列表顶部
- 编辑规则会更新原有规则
- 自动生成唯一ID和创建时间
- 自动关联参数单位

## 💡 技术实现

### 状态管理
```typescript
// 触发条件状态
const [ruleConditions, setRuleConditions] = useState([])

// 表单数据状态
const [ruleName, setRuleName] = useState('')
const [ruleDescription, setRuleDescription] = useState('')
const [ruleLevel, setRuleLevel] = useState('警告')
const [conditionOperator, setConditionOperator] = useState('且')
const [ruleDuration, setRuleDuration] = useState(0)
```

### 辅助函数
- `getParameterUnit()` - 获取参数单位
- `getParameterLabel()` - 获取参数中文标签
- `getDeviceLabel()` - 获取设备中文标签

### 表单验证
- 必填字段验证
- 条件完整性验证
- 实时错误提示

## 🎯 使用建议

### 1. **合理设置条件逻辑**
- **且逻辑**：适用于需要多个条件同时满足的场景
- **或逻辑**：适用于任一条件满足即需要告警的场景

### 2. **正确选择告警级别**
- **提示**：轻微异常，仅供参考
- **警告**：需要关注的异常情况
- **严重**：必须立即处理的严重问题

### 3. **合理设置持续时间**
- 0分钟：条件满足立即触发（适用于严重告警）
- 5-30分钟：短期持续（适用于一般警告）
- 60分钟以上：长期趋势（适用于提示类告警）

### 4. **条件设计建议**
- 避免条件过于复杂
- 建议单个规则不超过5个条件
- 关联性强的条件放在同一规则
- 独立的监测指标分开建规则

## ✅ 测试验证

### 功能测试清单
- [x] 新建规则 - 添加条件
- [x] 新建规则 - 删除条件  
- [x] 新建规则 - 设备选择
- [x] 新建规则 - 参数选择
- [x] 新建规则 - 等式选择
- [x] 新建规则 - 阈值输入
- [x] 新建规则 - 表单验证
- [x] 新建规则 - 数据保存
- [x] 编辑规则 - 数据加载
- [x] 编辑规则 - 数据更新
- [x] 规则显示 - 条件展示
- [x] 规则显示 - 单位显示

## 🚀 后续扩展

### 可扩展功能
1. **更多设备类型**：可以继续添加其他物联网设备
2. **更多参数类型**：根据实际需求添加新的监测参数
3. **复杂运算符**：如范围判断、变化率等
4. **条件分组**：支持条件的嵌套分组（高级功能）
5. **条件模板**：预设常用的条件组合
6. **历史数据验证**：使用历史数据验证规则有效性

## 📝 总结

本次更新为预警逻辑管理功能添加了完整的触发条件配置能力，支持灵活的多条件组合，实现了真正的智能预警。用户可以根据实际业务需求，自由配置各种预警规则，提高系统的智能化水平和运维效率。

所有功能已完成开发并通过测试，可以立即投入使用！
