# 预警逻辑管理 - 触发条件部件联动选择功能

## 📋 更新概述

为水肥一体化系统的**实时监测与预警 - 预警逻辑管理**模块的新增预警规则功能实现了智能化的部件联动参数选择机制。添加触发条件时，将原来的"设备选择"改为"水肥机部件选择"，并实现部件与参数的联动选择。

## 🎯 核心改进

### 1. **从设备选择改为部件选择** ⭐ 重要变更

#### 修改前（设备选择）
- 水肥机-01、水肥机-02、水肥机-03、水肥机-04
- 电动阀-V01、电动阀-V02
- 土壤传感器-01
- 气象站

#### 修改后（水肥机部件选择）
- **EC传感器** - 监测营养液电导率
- **PH传感器** - 监测营养液酸碱度
- **水压传感器** - 监测系统水压
- **流量计** - 监测水肥流量
- **液位传感器** - 监测储液罐液位
- **A桶肥料泵** - A桶施肥泵
- **B桶肥料泵** - B桶施肥泵
- **C桶肥料泵** - C桶施肥泵
- **1号电磁阀** - 主管道控制阀
- **2号电磁阀** - 副管道控制阀
- **电池** - 设备供电电池
- **太阳能板** - 光伏发电模块

### 2. **部件参数联动选择** ⭐ 核心功能

#### 联动规则
1. **初始状态**：参数选择器禁用，提示"请先选择部件"
2. **选择部件后**：参数选择器激活，只显示该部件的相关参数
3. **切换部件时**：自动清空已选参数，避免无效配置

#### 参数显示格式
- 参数名称 + 单位，如：
  - EC值 (mS/cm)
  - PH值 (pH)
  - 水压 (bar)
  - 流量 (L/h)
  - 液位 (L)

### 3. **智能配置提示** ⭐ 用户体验优化

#### 对话框说明更新
**修改前：** "配置多条件预警规则，实现智能预警"

**修改后：** "先选择水肥机部件，再选择监测参数，配置多条件预警规则实现智能预警"

#### 新增操作提示卡片
在触发条件区域顶部显示蓝色提示卡片：
```
ℹ️ 操作提示：先选择水肥机部件（如EC传感器、肥料泵等），
系统将自动显示该部件的可监测参数
```

## 📊 部件与参数对应关系

### EC传感器
- **EC值** (mS/cm)

### PH传感器
- **PH值** (pH)

### 水压传感器
- **水压** (bar)

### 流量计
- **流量** (L/h)

### 液位传感器
- **液位** (L)

### A桶肥料泵 / B桶肥料泵 / C桶肥料泵
- **泵压** (bar)
- **泵流量** (L/h)

### 1号电磁阀 / 2号电磁阀
- **阀门状态** (开关)

### 电池
- **电池电压** (V)

### 太阳能板
- **光伏电压** (V)

## 🎨 使用流程

### 新建预警规则 - 添加触发条件

#### 步骤1：点击"新建预警规则"
在预警逻辑管理页面，点击蓝色的"新建预警规则"按钮

#### 步骤2：填写基本信息
- **规则名称**：如"EC值异常预警"
- **告警级别**：提示/警告/严重
- **规则描述**：详细说明规则用途
- **条件逻辑**：且（AND）/ 或（OR）

#### 步骤3：添加触发条件
点击"添加条件"按钮

#### 步骤4：选择水肥机部件
从下拉列表选择部件，例如：
- 选择"EC传感器"

#### 步骤5：选择参数
部件选择后，参数列表自动激活并显示相关参数：
- 选择"EC值 (mS/cm)"

#### 步骤6：配置比较条件
- **等式**：大于 / 大于等于 / 小于 / 小于等于 / 等于
- **阈值**：输入数值

#### 步骤7：配置持续时间（可选）
设置条件需持续多少分钟才触发预警

#### 步骤8：保存规则
点击"保存规则"按钮完成创建

## 💡 使用示例

### 示例1：单条件预警规则

**规则名称**：EC值过高预警

**配置：**
- 部件：EC传感器
- 参数：EC值 (mS/cm)
- 等式：大于
- 阈值：3.5
- 持续时间：5分钟

**效果：**
```
当EC传感器检测到EC值 > 3.5 mS/cm，
且持续5分钟，触发警告级别预警
```

### 示例2：多条件预警规则（且逻辑）

**规则名称**：水肥系统异常预警

**条件逻辑**：且（AND）- 所有条件都满足

**条件1：**
- 部件：水压传感器
- 参数：水压 (bar)
- 等式：小于
- 阈值：2.0

**条件2：**
- 部件：A桶肥料泵
- 参数：泵流量 (L/h)
- 等式：小于
- 阈值：30

**效果：**
```
当水压 < 2.0 bar 且 A桶泵流量 < 30 L/h 时，
触发严重级别预警（可能是管道堵塞或泵故障）
```

### 示例3：多条件预警规则（或逻辑）

**规则名称**：电源异常预警

**条件逻辑**：或（OR）- 任一条件满足

**条件1：**
- 部件：电池
- 参数：电池电压 (V)
- 等式：小于
- 阈值：11.0

**条件2：**
- 部件：太阳能板
- 参数：光伏电压 (V)
- 等式：小于
- 阈值：13.0

**效果：**
```
当电池电压 < 11.0V 或 光伏电压 < 13.0V 时，
触发警告级别预警（需及时充电或检查光伏系统）
```

### 示例4：复杂肥料泵监控规则

**规则名称**：三桶肥料泵同步监控

**条件逻辑**：或（OR）

**条件1：**
- 部件：A桶肥料泵
- 参数：泵压 (bar)
- 等式：小于
- 阈值：0.8

**条件2：**
- 部件：B桶肥料泵
- 参数：泵压 (bar)
- 等式：小于
- 阈值：0.8

**条件3：**
- 部件：C桶肥料泵
- 参数：泵压 (bar)
- 等式：小于
- 阈值：0.8

**效果：**
```
任一肥料泵压力 < 0.8 bar 时触发预警，
确保三个肥料桶都正常工作
```

## 🎨 界面设计

### 触发条件配置卡片

```
┌─────────────────────────────────────────────────────┐
│ 条件 1                                    [删除图标] │
├─────────────────────────────────────────────────────┤
│                                                      │
│ 水肥机部件  参数           等式      阈值           │
│ ┌────────┐  ┌────────┐  ┌────┐  ┌────────┐        │
│ │EC传感器│  │EC值    │  │ >  │  │  3.5   │        │
│ │        │  │(mS/cm) │  │    │  │        │        │
│ └────────┘  └────────┘  └────┘  └────────┘        │
│                                                      │
└─────────────────────────────────────────────────────┘
```

### 操作提示卡片

```
┌─────────────────────────────────────────────────────┐
│ ℹ️ 操作提示：先选择水肥机部件（如EC传感器、       │
│ 肥料泵等），系统将自动显示该部件的可监测参数      │
└─────────────────────────────────────────────────────┘
```

## 💻 技术实现

### 数据结构复用

使用与阈值配置相同的部件和参数配置：

```typescript
// 复用componentConfig
const componentConfig = {
  'ec-sensor': { name: 'EC传感器', category: '水质参数' },
  'ph-sensor': { name: 'PH传感器', category: '水质参数' },
  // ... 其他部件
};

// 复用parameterConfig
const parameterConfig: Record<string, Array<{...}>> = {
  'ec-sensor': [
    {
      key: 'ec-value',
      name: 'EC值',
      unit: 'mS/cm',
      // ...
    }
  ],
  // ... 其他参数
};
```

### 部件选择实现

```typescript
<Select 
  value={condition.device}
  onValueChange={(value) => {
    setRuleConditions(ruleConditions.map(c => 
      c.id === condition.id 
        ? { ...c, device: value, parameter: '' } // 清空参数
        : c
    ));
  }}
>
  <SelectTrigger>
    <SelectValue placeholder="选择部件" />
  </SelectTrigger>
  <SelectContent>
    {Object.entries(componentConfig).map(([key, config]) => (
      <SelectItem key={key} value={key}>
        {config.name}
      </SelectItem>
    ))}
  </SelectContent>
</Select>
```

### 参数联动实现

```typescript
<Select 
  value={condition.parameter}
  disabled={!condition.device} // 未选部件时禁用
  onValueChange={(value) => {
    setRuleConditions(ruleConditions.map(c => 
      c.id === condition.id ? { ...c, parameter: value } : c
    ));
  }}
>
  <SelectTrigger>
    <SelectValue 
      placeholder={
        condition.device ? "选择参数" : "请先选择部件"
      } 
    />
  </SelectTrigger>
  <SelectContent>
    {condition.device && parameterConfig[condition.device]?.map((param) => (
      <SelectItem key={param.key} value={param.key}>
        {param.name} ({param.unit})
      </SelectItem>
    ))}
  </SelectContent>
</Select>
```

### 部件切换时清空参数

```typescript
onValueChange={(value) => {
  setRuleConditions(ruleConditions.map(c => 
    c.id === condition.id 
      ? { 
          ...c, 
          device: value,    // 更新部件
          parameter: ''     // 清空参数，避免无效组合
        } 
      : c
  ));
}}
```

## ✅ 功能优势

### 1. **更精准的部件选择**
- 直接选择具体部件（传感器、泵、阀门等）
- 比笼统的"设备选择"更加明确
- 便于快速定位监控对象

### 2. **智能参数过滤**
- 只显示部件相关的参数
- 避免无效的参数选择
- 减少配置错误

### 3. **统一的配置标准**
- 与阈值配置使用相同的部件和参数体系
- 保持系统配置的一致性
- 便于维护和扩展

### 4. **清晰的操作引导**
- 明确的选择顺序提示
- 实时的状态反馈
- 友好的错误预防

### 5. **灵活的规则组合**
- 支持多部件多参数组合
- 支持且/或逻辑运算
- 适应各种复杂监控场景

## 🎯 应用场景

### 1. **水质监控**
- EC传感器：监控营养液浓度
- PH传感器：监控酸碱度平衡
- 及时发现水质异常，保护作物

### 2. **设备运行监控**
- 水压传感器：监控系统压力
- 流量计：监控水肥流量
- 肥料泵：监控泵运行状态
- 及时发现设备故障，避免损失

### 3. **供电系统监控**
- 电池：监控电量状态
- 太阳能板：监控充电状态
- 保障设备持续稳定运行

### 4. **综合安全监控**
- 多部件联合监控
- 复杂条件组合
- 全方位系统保护

## 🧪 测试建议

### 功能测试
- [ ] 选择部件后参数列表正确显示
- [ ] 参数列表只显示该部件的相关参数
- [ ] 未选部件时参数选择器禁用
- [ ] 切换部件时参数选择自动清空
- [ ] 操作提示卡片正确显示
- [ ] 对话框说明文字正确更新
- [ ] 可以添加多个条件
- [ ] 可以删除条件
- [ ] 保存规则后数据正确

### 联动测试
- [ ] EC传感器 → EC值
- [ ] PH传感器 → PH值
- [ ] 水压传感器 → 水压
- [ ] A桶肥料泵 → 泵压、泵流量
- [ ] 电池 → 电池电压
- [ ] 所有部件参数映射正确

### 边界测试
- [ ] 快速切换部件时无异常
- [ ] 删除条件后状态正常
- [ ] 编辑已有规则时数据加载正确
- [ ] 多条件同时配置无冲突

### UI测试
- [ ] 提示卡片样式正确
- [ ] 选择器占位符文字正确
- [ ] 禁用状态样式正确
- [ ] 响应式布局正常

## 🔄 与其他功能的协作

### 1. **与阈值预警协同**
- 使用相同的部件参数体系
- 规则触发时参考阈值配置
- 统一的监控标准

### 2. **与告警推送联动**
- 规则触发后自动推送告警
- 告警消息包含部件和参数信息
- 便于快速定位问题

### 3. **与历史数据分析**
- 规则触发记录可追溯
- 分析哪些部件参数异常频繁
- 优化预警规则配置

## 📝 总结

本次更新将预警逻辑管理的触发条件配置从"设备选择"改为"水肥机部件选择"，并实现了部件与参数的智能联动，大幅提升了配置的准确性和易用性。

### 核心价值
✅ **更精准** - 直接选择具体部件，明确监控对象
✅ **更智能** - 自动过滤参数，避免无效配置
✅ **更统一** - 与阈值配置使用相同标准
✅ **更友好** - 清晰的操作提示和引导

所有功能已完成开发并可立即使用！
