# 定时任务快速参考

## 📌 核心信息

| 项目 | 内容 |
|------|------|
| **服务类** | `LabelPdfCacheBackgroundService` |
| **执行间隔** | 每5分钟 |
| **处理范围** | 失效缓存、待处理任务、新订单 |
| **时间限制** | 新订单仅处理 >= 2026-05-10 |

---

## 🚀 常用命令

### 查看状态
```bash
curl -X GET http://localhost:5002/api/label/background-service/status
```

### 暂停任务
```bash
curl -X POST http://localhost:5002/api/label/background-service/pause
```

### 恢复任务
```bash
curl -X POST http://localhost:5002/api/label/background-service/resume
```

### 查看缓存统计
```bash
curl -X GET http://localhost:5002/api/label/cache-statistics
```

---

## 📂 文件位置

| 文件 | 路径 |
|------|------|
| **服务主类** | `src/CONTROLLER/BackgroundServices/LabelPdfCacheBackgroundService.cs` |
| **服务管理器** | `src/CONTROLLER/BackgroundServices/BackgroundServiceManager.cs` |
| **业务逻辑** | `src/BLL/Services/LabelPdfCacheService.cs` |
| **数据访问** | `src/DAL/Repositories/LabelPdfCacheRepository.cs` |

---

## ⏱️ 配置参数

### 执行间隔
**文件**: `LabelPdfCacheBackgroundService.cs` 第18行
```csharp
private const int TaskIntervalMinutes = 5;
```
改为所需的分钟数

### 批处理大小
**文件**: `LabelPdfCacheService.cs` ProcessPendingTasksAsync方法
```csharp
public async Task<int> ProcessPendingTasksAsync(int maxRetryCount = 3, int batchSize = 100)
```
调整 `batchSize` 参数

### 时间限制日期
**文件**: `LabelPdfCacheRepository.cs` GetNewOrdersWithLabelsForBackgroundTaskAsync方法
```csharp
var cutoffDate = new DateTime(2026, 5, 10, 0, 0, 0);
```
改为所需的日期

---

## 🔄 工作流程

```
每5分钟执行一次:
    ├─ 处理失效缓存 (Status=3)
    ├─ 处理待处理任务 (Status=0 或 Status=2)
    └─ 处理新订单 (>= 2026-05-10 的有标签订单)
```

---

## ✅ 检查清单

- [ ] 定时任务是否正在运行？ → 查看状态
- [ ] 是否有待处理任务堆积？ → 查看缓存统计
- [ ] 新订单是否被自动处理？ → 检查创建时间是否 >= 2026-05-10
- [ ] 定时任务是否遇到错误？ → 查看日志文件

---

## 🆘 快速故障排查

| 问题 | 解决方案 |
|------|---------|
| 定时任务不执行 | 检查是否暂停，查看日志 |
| 新订单未被处理 | 检查创建时间，检查是否有标签 |
| 任务堆积 | 调整批处理大小或手动处理 |
| 错误重复发生 | 暂停任务，调查问题，恢复 |

---

## 📊 关键指标

从 `/api/label/cache-statistics` 获取：

- **totalRecords**: 总缓存数
- **successRecords**: 成功数
- **failedRecords**: 失败数
- **pendingRecords**: 待处理数
- **averageParseDurationMs**: 平均耗时
- **withBarcodeRecords**: 含条码数

---

## 🔗 相关文档

1. [定时任务暂停指南](01-定时任务暂停指南.md) - 如何控制定时任务
2. [执行范围修改说明](02-定时任务执行范围修改说明.md) - 时间限制详解
3. [定时任务与API隔离](03-定时任务与API隔离修改.md) - API与定时任务的区别

---

**最后更新**: 2026-05-14
