上线前演练清单
---
章节:附录C
更新日期:2026-08-25
C.1 为什么需要演练
核心理念:正式开启定时任务前,必须手动模拟各种故障场景,确认任务行为符合预期。
不演练的风险: - 某天数据源超时,任务直接崩溃 - 推送失败后重复执行,产生垃圾数据 - 成本超限才发现,已经消耗大量 Token
C.2 标准演练场景
C.2.1 场景1:所有数据源正常
| 项目 | 预期 |
|---|---|
| 触发 | 定时触发 / 手动触发 |
| 数据源状态 | 4/4 可用 |
| 聚合结果 | 原始条目 ≥ 20 条 |
| 过滤结果 | 有效条目 ≥ 5 条 |
| 质量状态 | pass |
| 推送结果 | 成功 |
| 输出 | 完整清单,无特殊标注 |
检查点: - [ ] 所有数据源响应时间 < 10 秒 - [ ] 过滤后条目数量符合预期 - [ ] 输出格式正确 - [ ] 推送到达指定位置 - [ ] 日志记录完整
C.2.2 场景2:某个数据源超时
| 项目 | 预期 |
|---|---|
| 触发 | 定时触发 |
| 数据源状态 | 3/4 可用(1个超时) |
| 聚合结果 | 原始条目减少 |
| 过滤结果 | 有效条目 ≥ 5 条 |
| 质量状态 | warning |
| 推送结果 | 成功 |
| 输出 | 完整清单,顶部标注缺失来源 |
检查点: - [ ] 超时数据源被标记为"缺失" - [ ] 其他数据源正常处理 - [ ] 输出顶部标注缺失来源 - [ ] 任务不因单点失败而崩溃 - [ ] 总耗时在可接受范围
C.2.3 场景3:当日无相关内容
| 项目 | 预期 |
|---|---|
| 触发 | 定时触发 |
| 数据源状态 | 4/4 可用 |
| 聚合结果 | 原始条目 < 10 条 |
| 过滤结果 | 有效条目 < 5 条 |
| 质量状态 | blocked |
| 推送结果 | 不推送正文 |
| 输出 | 只推送说明和告警 |
检查点: - [ ] 过滤后条目数 < 5 - [ ] 状态进入 blocked - [ ] 不推送空清单 - [ ] 推送说明和告警 - [ ] 次日正常重新触发
C.2.4 场景4:推送目标不可达
| 项目 | 预期 |
|---|---|
| 触发 | 定时触发 |
| 数据源状态 | 4/4 可用 |
| 聚合结果 | 正常 |
| 过滤结果 | 有效条目 ≥ 5 条 |
| 质量状态 | pass |
| 推送结果 | 失败(重试2次后仍失败) |
| 输出 | 告警并保留结果 |
检查点: - [ ] 第一次推送失败,记录错误 - [ ] 指数退避重试 2 次 - [ ] 重试仍失败,进入 blocked - [ ] 发送告警给 owner - [ ] 结果保留在状态文件中 - [ ] 手动重试时从 delivering 继续
C.2.5 场景5:重复触发(手动 + 定时)
| 项目 | 预期 |
|---|---|
| 触发 | 手动触发 + 定时触发同时发生 |
| 数据源状态 | 4/4 可用 |
| 聚合结果 | 正常 |
| 过滤结果 | 有效条目 ≥ 5 条 |
| 质量状态 | pass |
| 推送结果 | 只推送一次 |
检查点: - [ ] 检测到批次 ID 重复 - [ ] 第二次触发被跳过 - [ ] 记录"已跳过,无需重复推送" - [ ] 不产生重复消息
C.2.6 场景6:成本超限
| 项目 | 预期 |
|---|---|
| 触发 | 定时触发 |
| 数据源状态 | 4/4 可用 |
| Token 消耗 | 超过预算上限 |
| 处理 | 记录告警,继续运行 |
检查点: - [ ] Token 消耗超过上限 - [ ] 记录告警 - [ ] 任务继续运行(不中断) - [ ] 下次运行前需确认
C.2.7 场景7:认证失效
| 项目 | 预期 |
|---|---|
| 触发 | 定时触发 |
| 数据源状态 | 1/4 可用(3个认证失效) |
| 聚合结果 | 部分数据 |
| 过滤结果 | 有效条目 < 5 条 |
| 质量状态 | blocked |
| 推送结果 | 不推送正文 |
检查点: - [ ] 认证失效的数据源不重试 - [ ] 标记为"需要人工处理" - [ ] 发送告警给 owner - [ ] 提示检查 API Key - [ ] 不自动重试,避免浪费成本
C.3 演练流程
C.3.1 演练前准备
□ 确定演练日期和时间
□ 通知相关人员(避免误判为真实故障)
□ 准备测试环境(或低峰时段)
□ 准备回滚方案
C.3.2 演练执行
1. 按场景顺序执行(1 → 7)
2. 每场景完成后记录结果
3. 不符合预期立即停止,排查问题
4. 通过后进入下一场景
C.3.3 演练后复盘
□ 统计通过率(通过场景数 / 总场景数)
□ 记录不符合预期的场景
□ 分析根因
□ 制定改进计划
□ 更新文档和检查清单
C.4 演练记录模板
# 演练记录
**任务名称**:AI 热点选题日报
**演练日期**:2026-07-10
**执行人**:桂皮
**环境**:生产环境(低峰时段)
## 场景结果
| 场景 | 预期 | 实际 | 通过 | 备注 |
|------|------|------|------|------|
| 1. 所有数据源正常 | 完整清单 | - | ☐ | - |
| 2. 某个数据源超时 | 标记缺失 | - | ☐ | - |
| 3. 当日无相关内容 | blocked | - | ☐ | - |
| 4. 推送目标不可达 | 告警保留 | - | ☐ | - |
| 5. 重复触发 | 只推送一次 | - | ☐ | - |
| 6. 成本超限 | 告警继续 | - | ☐ | - |
| 7. 认证失效 | 不重试告警 | - | ☐ | - |
## 问题记录
### 问题1
- **场景**:
- **预期**:
- **实际**:
- **根因**:
- **改进措施**:
## 改进计划
1.
2.
3.
## 演练结论
- **通过率**:X/7
- **是否可上线**:是 / 否
- **下次演练日期**:
C.5 图文说明
📌 待补充:建议绘制以下示意图 1. 演练流程图(准备 → 执行 → 复盘) 2. 7个场景的决策树 3. 演练记录表示例截图 4. 通过率统计图
📝 版本迭代记录
| 版本 | 日期 | 更新内容摘要 | 操作人 |
|---|---|---|---|
| v1.0 | 2026-08-25 | 创建附录C | 桂皮 |
❓ 什么是上线前演练清单?
❓ 如何理解C.3 演练流程?
□ 确定演练日期和时间
❓ 如何理解改进计划?
1.