# 阈值预警与告警 - 部件联动参数选择功能

## 📋 更新概述

为水肥一体化系统的实时监测与预警模块中的**阈值预警与告警**功能实现了智能化的部件联动参数选择机制。添加阈值时，先选择水肥机部件，再联动选择参数，最小值、最大值与单位由系统自动带出且不可修改。

## 🎯 核心功能

### 1. **部件选择** ⭐ 新增

支持的水肥机部件（12种）：

#### 水质监测部件
- **EC传感器** - 监测营养液电导率
- **PH传感器** - 监测营养液酸碱度

#### 设备控制部件
- **水压传感器** - 监测系统水压
- **流量计** - 监测水肥流量
- **液位传感器** - 监测储液罐液位

#### 肥料泵部件
- **A桶肥料泵** - A桶（氮肥）施肥泵
- **B桶肥料泵** - B桶（磷肥）施肥泵
- **C桶肥料泵** - C桶（钾肥）施肥泵

#### 阀门部件
- **1号电磁阀** - 主管道控制阀
- **2号电磁阀** - 副管道控制阀

#### 电源部件
- **电池** - 设备供电电池
- **太阳能板** - 光伏发电模块

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

根据选择的部件，自动显示对应的可监测参数：

#### EC传感器参数
- **EC值** (mS/cm)
  - 最小值: 1.5
  - 最大值: 4.0
  - 建议警告范围: 1.8 - 3.5
  - 严重阈值: 1.5 - 4.0

#### PH传感器参数
- **PH值** (pH)
  - 最小值: 5.5
  - 最大值: 7.5
  - 建议警告范围: 6.0 - 7.0
  - 严重阈值: 5.5 - 7.5

#### 水压传感器参数
- **水压** (bar)
  - 最小值: 1.5
  - 最大值: 4.5
  - 建议警告范围: 2.0 - 4.0
  - 严重阈值: 1.5 - 4.5

#### 流量计参数
- **流量** (L/h)
  - 最小值: 50
  - 最大值: 500
  - 建议警告范围: 80 - 450
  - 严重阈值: 50 - 500

#### 液位传感器参数
- **液位** (L)
  - 最小值: 100
  - 最大值: 450
  - 建议警告范围: 150 - 400
  - 严重阈值: 100 - 450

#### 肥料泵参数（A/B/C桶通用）
1. **泵压** (bar)
   - 最小值: 0.5
   - 最大值: 3.0
   - 建议警告范围: 0.8 - 2.5
   - 严重阈值: 0.5 - 3.0

2. **泵流量** (L/h)
   - 最小值: 10
   - 最大值: 100
   - 建议警告范围: 20 - 90
   - 严重阈值: 10 - 100

#### 电磁阀参数（1号/2号通用）
- **阀门状态** (开关)
  - 最小值: 0
  - 最大值: 1
  - 建议警告范围: 0 - 1
  - 严重阈值: 0 - 1

#### 电池参数
- **电池电压** (V)
  - 最小值: 10.5
  - 最大值: 13.5
  - 建议警告范围: 11.0 - 13.0
  - 严重阈值: 10.5 - 13.5

#### 太阳能板参数
- **光伏电压** (V)
  - 最小值: 12.0
  - 最大值: 18.0
  - 建议警告范围: 13.0 - 17.0
  - 严重阈值: 12.0 - 18.0

### 3. **自动参数配置** ⭐ 核心功能

选择参数后，系统自动显示：

#### 只读字段（不可修改）
- ✅ **参数类别** - 自动识别（水质参数/设备参数）
- ✅ **单位** - 自动设置对应单位
- ✅ **最小值** - 系统预设最小阈值
- ✅ **最大值** - 系统预设最大阈值

#### 可配置字段
- ⚙️ **警告下限** - 用户可自定义，有建议值
- ⚙️ **警告上限** - 用户可自定义，有建议值

### 4. **智能验证机制**

#### 选择验证
- 必须先选择部件才能选择参数
- 部件改变时自动清空参数选择
- 未完成选择时保存按钮禁用

#### 阈值验证
- 警告下限不能小于系统最小值
- 警告上限不能大于系统最大值
- 警告下限必须小于警告上限
- 实时显示允许范围提示

## 📊 使用流程

### 添加阈值配置

1. **点击添加按钮**
   - 在阈值预警与告警页面
   - 点击"添加阈值"按钮

2. **选择部件**
   - 从下拉列表选择水肥机部件
   - 例如：选择"EC传感器"

3. **选择参数**
   - 根据部件自动显示可用参数
   - 例如：选择"EC值"

4. **查看自动配置**
   - 系统自动显示参数配置
   - 查看参数类别、单位、最小值、最大值
   - 这些值不可修改

5. **设置警告阈值**
   - 输入警告下限（可参考建议值）
   - 输入警告上限（可参考建议值）
   - 系统实时验证输入范围

6. **保存配置**
   - 点击"保存配置"按钮
   - 系统验证通过后添加配置
   - 显示成功提示

## 🎨 界面设计

### 1. **分步选择布局**

```
┌─────────────────────────────────────┐
│ 添加阈值配置                         │
├─────────────────────────────────────┤
│                                      │
│ 水肥机部件: [请选择水肥机部件 ▼]     │
│                                      │
│ 监测参数:   [请先选择部件]          │
│             (选择部件后激活)          │
│                                      │
└─────────────────────────────────────┘
```

### 2. **参数配置预览卡片**

选择参数后显示蓝色配置卡片：

```
┌─────────────────────────────────────┐
│ ⚙️ 参数配置（自动生成）              │
├─────────────────────────────────────┤
│ ┌──────────┐  ┌──────────┐         │
│ │参数类别  │  │单位      │         │
│ │水质参数  │  │mS/cm     │         │
│ └──────────┘  └──────────┘         │
│ ┌──────────┐  ┌──────────┐         │
│ │最小值    │  │最大值    │         │
│ │1.5       │  │4.0       │         │
│ └──────────┘  └──────────┘         │
│                                      │
│ ℹ️ 最小值、最大值和单位由系统         │
│    自动设置，不可修改                │
└─────────────────────────────────────┘
```

### 3. **警告阈值设置**

```
┌─────────────────────────────────────┐
│ 警告下限        警告上限             │
│ [1.8]          [3.5]                │
│ 建议: 1.8      建议: 3.5            │
└─────────────────────────────────────┘

┌─────────────────────────────────────┐
│ 💡 提示：警告阈值应在最小值 (1.5)    │
│ 和最大值 (4.0) 之间                 │
└─────────────────────────────────────┘
```

### 4. **操作按钮**

- **取消**：灰色轮廓按钮，关闭并重置
- **保存配置**：蓝色主按钮，未完成选择时禁用

## 💻 技术实现

### 数据结构

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

#### 参数配置
```typescript
const parameterConfig: Record<string, Array<{
  key: string;
  name: string;
  minValue: number;
  maxValue: number;
  warningMin: number;
  warningMax: number;
  criticalMin: number;
  criticalMax: number;
  unit: string;
}>> = {
  'ec-sensor': [
    {
      key: 'ec-value',
      name: 'EC值',
      minValue: 1.5,
      maxValue: 4.0,
      warningMin: 1.8,
      warningMax: 3.5,
      criticalMin: 1.5,
      criticalMax: 4.0,
      unit: 'mS/cm'
    }
  ],
  // ... 其他参数
};
```

### 状态管理

```typescript
// 表单状态
const [selectedComponent, setSelectedComponent] = useState('');
const [selectedParameter, setSelectedParameter] = useState('');
const [thresholdWarningMin, setThresholdWarningMin] = useState<number>(0);
const [thresholdWarningMax, setThresholdWarningMax] = useState<number>(0);
```

### 核心函数

#### 获取可用参数
```typescript
const getAvailableParameters = () => {
  if (!selectedComponent) return [];
  return parameterConfig[selectedComponent] || [];
};
```

#### 获取参数配置
```typescript
const getCurrentParameterConfig = () => {
  const params = getAvailableParameters();
  return params.find(p => p.key === selectedParameter);
};
```

#### 部件改变处理
```typescript
onValueChange={(value) => {
  setSelectedComponent(value);
  setSelectedParameter(''); // 清空参数选择
}}
```

### 验证逻辑

```typescript
// 阈值范围验证
if (thresholdWarningMin < paramConfig.minValue || 
    thresholdWarningMax > paramConfig.maxValue) {
  toast.error('警告阈值超出允许范围');
  return;
}

// 上下限关系验证
if (thresholdWarningMin >= thresholdWarningMax) {
  toast.error('警告下限必须小于警告上限');
  return;
}
```

## 📊 使用示例

### 示例1：配置EC值监测

**操作步骤：**
1. 点击"添加阈值"按钮
2. 选择部件：EC传感器
3. 选择参数：EC值
4. 查看自动配置：
   - 参数类别：水质参数
   - 单位：mS/cm
   - 最小值：1.5
   - 最大值：4.0
5. 设置警告阈值：
   - 警告下限：1.8
   - 警告上限：3.5
6. 点击"保存配置"

**结果：**
```
✅ 阈值配置已添加
参数: EC值
类别: 水质参数
范围: 1.5 - 4.0 mS/cm
警告: 1.8 - 3.5 mS/cm
```

### 示例2：配置A桶肥料泵压力

**操作步骤：**
1. 选择部件：A桶肥料泵
2. 选择参数：泵压
3. 自动配置：
   - 类别：设备参数
   - 单位：bar
   - 范围：0.5 - 3.0
4. 设置警告：0.8 - 2.5
5. 保存

**结果：**
```
✅ 阈值配置已添加
参数: 泵压
类别: 设备参数
范围: 0.5 - 3.0 bar
警告: 0.8 - 2.5 bar
```

### 示例3：配置电池电压

**操作步骤：**
1. 选择部件：电池
2. 选择参数：电池电压
3. 自动配置：
   - 类别：设备参数
   - 单位：V
   - 范围：10.5 - 13.5
4. 设置警告：11.0 - 13.0
5. 保存

**结果：**
```
✅ 阈值配置已添加
参数: 电池电压
类别: 设备参数
范围: 10.5 - 13.5 V
警告: 11.0 - 13.0 V
```

## ✅ 功能优势

### 1. **标准化管理**
- 统一的参数标准
- 预设的合理阈值范围
- 避免配置错误

### 2. **操作简化**
- 两步选择即可完成
- 自动填充参数信息
- 减少手动输入错误

### 3. **智能联动**
- 部件参数自动关联
- 只显示相关参数
- 避免无效配置

### 4. **数据安全**
- 关键参数不可修改
- 范围验证防止异常
- 建议值作为参考

### 5. **用户友好**
- 清晰的操作流程
- 实时的验证反馈
- 详细的提示信息

## 🎯 配置建议

### 1. **EC值监测**
- **应用场景**：营养液浓度控制
- **建议警告**：1.8 - 3.5 mS/cm
- **关注重点**：超标可能烧苗，过低营养不足

### 2. **PH值监测**
- **应用场景**：营养液酸碱度控制
- **建议警告**：6.0 - 7.0 pH
- **关注重点**：影响养分吸收效率

### 3. **水压监测**
- **应用场景**：管道系统压力监控
- **建议警告**：2.0 - 4.0 bar
- **关注重点**：过低可能泄漏，过高可能爆管

### 4. **液位监测**
- **应用场景**：储液罐存量管理
- **建议警告**：150 - 400 L
- **关注重点**：及时补充肥液，避免断供

### 5. **电池电压**
- **应用场景**：设备供电保障
- **建议警告**：11.0 - 13.0 V
- **关注重点**：及时充电，保证设备正常运行

## 🔄 与其他功能的协作

### 1. **与预警逻辑管理**
- 阈值配置为预警规则提供基础数据
- 规则触发时参考阈值范围
- 统一的参数标准体系

### 2. **与实时监测**
- 实时数据与阈值对比
- 超出警告范围立即提示
- 状态颜色实时更新

### 3. **与告警推送**
- 触发告警时包含阈值信息
- 告警消息明确超标情况
- 便于快速判断问题

## 🧪 测试建议

### 功能测试
- [ ] 选择部件，参数列表正确联动
- [ ] 选择参数，配置信息正确显示
- [ ] 最小值、最大值、单位只读
- [ ] 警告阈值可正常输入
- [ ] 超范围输入触发验证错误
- [ ] 上下限关系验证正常
- [ ] 保存后配置正确添加到列表
- [ ] 取消按钮正确重置表单

### 边界测试
- [ ] 未选择部件时参数选择器禁用
- [ ] 部件改变时参数选择被清空
- [ ] 警告阈值等于边界值的处理
- [ ] 输入非数字时的处理
- [ ] 快速切换部件和参数

### UI测试
- [ ] 配置预览卡片正确显示
- [ ] 建议值占位符正确显示
- [ ] 提示信息清晰易懂
- [ ] 按钮状态正确切换
- [ ] 响应式布局正常

## 📝 总结

本次更新实现了智能化的部件联动参数选择机制，通过标准化的参数配置和自动化的数据填充，大幅简化了阈值配置流程，提升了配置的准确性和规范性。

### 核心价值
✅ **标准化** - 统一的参数标准和阈值规范
✅ **智能化** - 自动联动和数据填充
✅ **简单化** - 两步选择即可完成配置
✅ **安全化** - 多重验证防止配置错误

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