# 通知用户管理 - 样例数据说明

## 📋 样例数据初始化

为了让用户打开页面就能看到效果，系统会**自动初始化3条样例数据**。

---

## 🔄 智能初始化逻辑

系统采用**三级初始化策略**，确保无论什么情况都能显示样例数据：

### 策略1：从用户管理系统读取（优先）

```typescript
条件：用户管理系统中有活跃用户
操作：
1. 从 localStorage 读取 'smart_agriculture_users'
2. 筛选 status === 'active' 的用户
3. 选择前3个活跃用户
4. 自动配置不同的通知渠道
```

**示例：**
```
用户系统有数据时：
┌──────────────────────────────────────────────┐
│ 系统管理员 (超级管理员) [启用]               │
│ 📱 13900000000  📧 admin@system.com          │
│ 🔔 [短信] [邮件] [站内信]                    │
└──────────────────────────────────────────────┘

┌──────────────────────────────────────────────┐
│ 李总 (企业管理员) [启用]                     │
│ 📱 13900139002  📧 litotal@fengshou.com      │
│ 🔔 [短信] [邮件]                              │
└──────────────────────────────────────────────┘

┌──────────────────────────────────────────────┐
│ 张三 (操作员) [启用]                          │
│ 📱 13800138001  📧 zhangsan@fengshou.com     │
│ 🔔 [短信] [站内信]                            │
└──────────────────────────────────────────────┘
```

---

### 策略2：使用固定样例数据（备用）

```typescript
条件：用户管理系统中没有活跃用户 或 用户系统数据不存在
操作：使用预设的固定样例数据
```

**固定样例数据：**
```typescript
[
  {
    id: 'sample-1',
    name: '系统管理员',
    phone: '13900000000',
    email: 'admin@system.com',
    role: '超级管理员',
    enabled: true,
    channels: ['短信', '邮件', '站内信']
  },
  {
    id: 'sample-2',
    name: '李总',
    phone: '13900139002',
    email: 'litotal@fengshou.com',
    role: '企业管理员',
    enabled: true,
    channels: ['短信', '邮件']
  },
  {
    id: 'sample-3',
    name: '张三',
    phone: '13800138001',
    email: 'zhangsan@fengshou.com',
    role: '操作员',
    enabled: true,
    channels: ['短信', '站内信']
  }
]
```

**显示效果：**
```
┌──────────────────────────────────────────────┐
│ 系统管理员 (超级管理员) [启用]               │
│ 📱 13900000000  📧 admin@system.com          │
│ 🔔 [短信] [邮件] [站内信]                    │
│            [📤 测试] [⏸ 禁用] [🗑 删除]     │
└──────────────────────────────────────────────┘

┌──────────────────────────────────────────────┐
│ 李总 (企业管理员) [启用]                     │
│ 📱 13900139002  📧 litotal@fengshou.com      │
│ 🔔 [短信] [邮件]                              │
│            [📤 测试] [⏸ 禁用] [🗑 删除]     │
└──────────────────────────────────────────────┘

┌──────────────────────────────────────────────┐
│ 张三 (操作员) [启用]                          │
│ 📱 13800138001  📧 zhangsan@fengshou.com     │
│ 🔔 [短信] [站内信]                            │
│            [📤 测试] [⏸ 禁用] [🗑 删除]     │
└──────────────────────────────────────────────┘
```

---

### 策略3：读取已保存配置（最高优先级）

```typescript
条件：localStorage 中有已保存的通知用户配置
操作：直接读取并显示之前保存的配置
```

**读取逻辑：**
```typescript
const savedContacts = localStorage.getItem('irrigation_notification_contacts');
if (savedContacts) {
  // 使用已保存的配置
  setContacts(JSON.parse(savedContacts));
} else {
  // 执行初始化逻辑（策略1或策略2）
}
```

---

## 🎯 通知渠道差异化配置

为了展示多样性，3个样例用户配置了不同的通知渠道组合：

| 用户 | 角色 | 通知渠道 | 说明 |
|------|------|----------|------|
| **用户1** | 超级管理员/系统管理员 | 短信 + 邮件 + 站内信 | 全渠道通知，最高权限 |
| **用户2** | 企业管理员 | 短信 + 邮件 | 传统渠道，适合管理层 |
| **用户3** | 操作员 | 短信 + 站内信 | 快速通知，适合一线员工 |

**设计理由：**
- ✅ **展示灵活性** - 演示不同渠道组合的可能性
- ✅ **分级通知** - 不同角色使用不同的通知方式
- ✅ **真实场景** - 贴近实际使用习惯

---

## 💾 数据持久化

### 自动保存机制

```typescript
useEffect(() => {
  if (contacts.length > 0) {
    localStorage.setItem('irrigation_notification_contacts', JSON.stringify(contacts));
  }
}, [contacts]);
```

**说明：**
- ✅ 通知用户列表任何变化都会自动保存
- ✅ 页面刷新后配置保持不变
- ✅ 添加、删除、启用/禁用都会触发保存

### 存储位置

```
localStorage key: 'irrigation_notification_contacts'
```

### 数据格式

```typescript
interface NotificationContact {
  id: string;              // 用户ID或样例ID
  name: string;            // 姓名
  phone: string;           // 手机号
  email: string;           // 邮箱
  role: string;            // 角色
  enabled: boolean;        // 启用状态
  channels: string[];      // 通知渠道：['短信', '邮件', '站内信']
}
```

---

## 🔍 完整初始化流程图

```
页面加载
   ↓
读取 localStorage('irrigation_notification_contacts')
   ↓
[存在已保存配置?]
   ├─ 是 → 直接使用已保存配置 → 结束
   └─ 否 → 继续
       ↓
   读取 localStorage('smart_agriculture_users')
       ↓
   [用户系统有数据?]
       ├─ 是 → 筛选活跃用户
       │       ↓
       │   [有活跃用户?]
       │       ├─ 是 → 选择前3个用户
       │       │       ↓
       │       │   配置差异化通知渠道
       │       │       ↓
       │       │   初始化完成 → 结束
       │       │
       │       └─ 否 → 使用固定样例数据 → 结束
       │
       └─ 否 → 使用固定样例数据 → 结束
```

---

## 🧪 测试验证

### 测试场景1：首次访问（有用户系统数据）

**前提：**
- 用户管理系统中有3个以上活跃用户
- 没有保存过通知用户配置

**预期结果：**
```
✅ 自动显示3个通知用户
✅ 用户信息来自用户管理系统
✅ 每个用户的通知渠道不同
✅ 所有用户默认启用
```

---

### 测试场景2：首次访问（无用户系统数据）

**前提：**
- 用户管理系统中没有数据
- 没有保存过通知用户配置

**预期结果：**
```
✅ 自动显示3个固定样例用户
✅ 样例数据：系统管理员、李总、张三
✅ 每个用户的通知渠道不同
✅ 所有用户默认启用
```

---

### 测试场景3：有历史配置

**前提：**
- 之前已保存过通知用户配置

**预期结果：**
```
✅ 显示之前保存的通知用户
✅ 用户列表、启用状态、通知渠道保持不变
✅ 不会重新初始化样例数据
```

---

### 测试场景4：修改后保存

**操作：**
1. 删除一个用户
2. 添加新用户
3. 修改用户的启用状态

**预期结果：**
```
✅ 修改立即生效
✅ 自动保存到 localStorage
✅ 刷新页面后配置保持
```

---

## 📝 样例数据详情

### 样例1：系统管理员（全渠道通知）

```typescript
{
  id: 'sample-1',
  name: '系统管理员',
  phone: '13900000000',
  email: 'admin@system.com',
  role: '超级管理员',
  enabled: true,
  channels: ['短信', '邮件', '站内信']
}
```

**特点：**
- 💼 **角色**：超级管理员 - 系统最高权限
- 📞 **手机**：13900000000 - 示例号码
- 📧 **邮箱**：admin@system.com - 系统邮箱
- 🔔 **渠道**：全渠道 - 确保重要告警必达

---

### 样例2：李总（管理层通知）

```typescript
{
  id: 'sample-2',
  name: '李总',
  phone: '13900139002',
  email: 'litotal@fengshou.com',
  role: '企业管理员',
  enabled: true,
  channels: ['短信', '邮件']
}
```

**特点：**
- 💼 **角色**：企业管理员 - 企业级管理
- 📞 **手机**：13900139002 - 企业手机
- 📧 **邮箱**：litotal@fengshou.com - 企业邮箱
- 🔔 **渠道**：短信+邮件 - 传统通知方式

---

### 样例3：张三（一线员工）

```typescript
{
  id: 'sample-3',
  name: '张三',
  phone: '13800138001',
  email: 'zhangsan@fengshou.com',
  role: '操作员',
  enabled: true,
  channels: ['短信', '站内信']
}
```

**特点：**
- 💼 **角色**：操作员 - 一线操作人员
- 📞 **手机**：13800138001 - 个人手机
- 📧 **邮箱**：zhangsan@fengshou.com - 个人邮箱
- 🔔 **渠道**：短信+站内信 - 快速响应

---

## ✅ 使用建议

### 1. 保留样例数据
- 首次使用时可以保留样例数据
- 用于熟悉功能和测试通知

### 2. 添加真实用户
- 从用户管理系统选择真实用户
- 替换或补充样例数据

### 3. 配置通知渠道
- 根据用户角色配置合适的通知渠道
- 管理层：短信+邮件
- 一线员工：短信+站内信
- 关键岗位：全渠道

### 4. 定期维护
- 删除离职人员
- 更新联系方式
- 调整通知渠道

---

## 🎉 总结

### 核心优势

✅ **即开即用** - 打开页面立即看到样例数据
✅ **智能初始化** - 优先使用真实用户，无数据时使用样例
✅ **自动保存** - 配置变更自动持久化
✅ **灵活配置** - 支持自由添加、删除、修改
✅ **多样展示** - 3种不同的通知渠道组合

### 数据来源优先级

```
1. 已保存配置（最高优先级）
   ↓
2. 用户管理系统的活跃用户
   ↓
3. 固定样例数据（保底方案）
```

现在打开页面就能看到3条样例通知用户数据！🎊
