# 停机工单 SLA 状态规则说明

## 一、SLA 基本规则

### 1. SLA 时间限制
- **标准时限**：2小时（120分钟）
- **计时单位**：毫秒（ms）
- **计算公式**：`SLA剩余时间 = SLA时限 - (当前时间 - 工单创建时间)`

### 2. SLA 计时起点
- **开始时间**：工单创建时立即开始计时
- **记录字段**：`slaStartTime`（工单创建时间戳）
- **初始值**：`slaTimeRemaining = 2小时（7200000毫秒）`

### 3. SLA 计时停止条件
- 工单状态变为 `closed`（已关闭）时停止计时
- 已关闭的工单不再更新 SLA 剩余时间

---

## 二、SLA 状态分类

### 状态1：正常（Normal）
- **条件**：`剩余时间 > 1小时（3600000毫秒）`
- **显示样式**：黄色背景，正常显示
- **说明**：工单在正常处理时限内

### 状态2：警告（Warning）
- **条件**：`0 < 剩余时间 ≤ 1小时（3600000毫秒）`
- **显示样式**：橙色/红色背景，警告提示
- **说明**：工单即将超时，需要紧急处理

### 状态3：超时（Timeout）
- **条件**：`剩余时间 ≤ 0`
- **显示样式**：红色背景，闪烁动画
- **说明**：工单已超过 SLA 时限，需要立即处理

---

## 三、SLA 状态判断逻辑

### 代码实现逻辑
```javascript
// SLA剩余时间计算
if (工单状态 !== 'closed' && slaStartTime存在) {
    已用时间 = 当前时间 - slaStartTime
    剩余时间 = Math.max(0, SLA时限 - 已用时间)
}

// 状态判断
if (剩余时间 <= 0) {
    状态 = '超时'
} else if (剩余时间 < 1小时) {
    状态 = '警告'
} else {
    状态 = '正常'
}
```

### 状态更新频率
- **更新间隔**：每1秒更新一次
- **更新范围**：所有未关闭的工单
- **实时性**：页面实时显示倒计时

---

## 四、SLA 统计规则

### 1. 超时工单统计
- **统计条件**：`slaTimeRemaining <= 0 && status !== 'closed'`
- **统计位置**：列表页统计卡片、统计&分析页
- **用途**：监控 SLA 达成情况

### 2. 平均响应时间
- **计算公式**：`(响应时间 - 创建时间) / 工单数量`
- **单位**：分钟
- **统计范围**：所有已响应的工单

### 3. 平均解决时间
- **计算公式**：`(解决时间 - 创建时间) / 工单数量`
- **单位**：分钟
- **统计范围**：所有已解决的工单

---

## 五、SLA 状态显示规则

### 1. 列表页显示
- **位置**：每个工单卡片下方
- **格式**：`⏱️ SLA计时: X小时 X分钟 X秒`
- **颜色**：根据状态自动变色

### 2. 详情页显示
- **位置**：工单基本信息区域
- **格式**：大号显示，更醒目
- **动画**：超时时闪烁提醒

### 3. 统计页显示
- **位置**：核心指标统计卡片
- **内容**：SLA超时数量统计
- **图表**：响应时间分析图表

---

## 六、特殊情况处理

### 1. 工单关闭后
- **SLA计时停止**：不再更新剩余时间
- **状态保持**：保留关闭时的 SLA 状态
- **统计计入**：计入历史统计数据

### 2. 页面刷新
- **数据恢复**：从 localStorage 恢复工单数据
- **时间重算**：根据 `slaStartTime` 重新计算剩余时间
- **状态更新**：自动更新到当前状态

### 3. 跨天/跨月
- **时间计算**：基于时间戳，不受日期影响
- **精确计算**：毫秒级精度，确保准确性

---

## 七、SLA 规则配置

### 当前配置
```javascript
slaLimit: 2 * 60 * 60 * 1000  // 2小时 = 7200000毫秒
```

### 可调整参数
- **SLA时限**：可根据业务需求调整（建议范围：1-4小时）
- **警告阈值**：当前为1小时，可调整
- **更新频率**：当前为1秒，可调整

---

## 八、SLA 状态流转图

```
工单创建
   ↓
SLA开始计时（2小时倒计时）
   ↓
[正常状态] 剩余时间 > 1小时
   ↓
[警告状态] 剩余时间 ≤ 1小时
   ↓
[超时状态] 剩余时间 ≤ 0
   ↓
工单关闭 → SLA计时停止
```

---

## 九、注意事项

1. **时间精度**：使用毫秒级时间戳，确保计算准确
2. **时区问题**：使用本地时间，确保显示正确
3. **性能优化**：定时器每秒更新，注意页面性能
4. **数据持久化**：SLA状态随工单数据一起保存
5. **状态一致性**：确保所有页面 SLA 状态显示一致

---

## 十、未来优化建议

1. **分级SLA**：根据客户等级设置不同的SLA时限
2. **暂停机制**：支持暂停SLA计时（如等待客户反馈）
3. **预警通知**：SLA即将超时前自动发送通知
4. **历史记录**：记录SLA状态变化历史
5. **报表导出**：SLA达成率报表导出功能

