Files
gaokao-volunteer-system/docs/T8-4-fallback-sop.md
Hermes Agent 3f46811e49
Some checks failed
CI / pytest (Python 3.10) (push) Has been cancelled
CI / pytest (Python 3.11) (push) Has been cancelled
CI / pytest (Python 3.12) (push) Has been cancelled
release: cut v2.1
2026-06-13 14:49:58 +08:00

117 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# T8.4 渠道失败兜底 SOP
状态:已落地(巡检 CLI + 人工补录指令)
适用范围:当前巡检事实源以 `xianyu``webhook_audit` / `poller_state` / `poller_run` 为准;其他渠道目前仅复用“人工补录模板”,不应误解为已接入同等自动健康判定。
## 1. 目标
当 Webhook 主路径异常、poller 兜底异常或渠道侧临时不可用时,运营/值班同学可以:
1. 先做事实巡检,确认是不是链路退化;
2. 再走人工补录,确保订单不因为渠道故障而丢单;
3. 最后继续用已有 order-manager CLI 推进 `paid/serving/delivered` 状态。
## 2. 定期检查
建议每 5~15 分钟执行一次:
```bash
python3 scripts/gaokao-channel-fallback --db data/orders.db check --source xianyu --human
```
返回语义:
- `status: ok`:最近未发现明显异常
- `status: warn`:链路可能未启动 / 最近运行过旧 / 存在失败信号,需要人工关注
- `status: critical`poller 连续报错或最近一次 poller_run 失败,应立即切人工兜底
退出码:
- `0` = ok
- `1` = warn
- `2` = critical
适合 cron / systemd timer / 外部监控直接接入。
## 3. 人工兜底入口
### 3.1 打印模板
```bash
python3 scripts/gaokao-channel-fallback --db data/orders.db manual-template --source xianyu --human
```
### 3.2 新建订单
注意:当前 CLI 通过命令行参数接收姓名/手机号,存在 shell history / `ps` 暴露风险。仅建议在可信单用户主机上临时执行;执行后应清理历史记录,且不要把真实 PII 粘贴到工单/IM。
```bash
python3 scripts/gaokao-order-manager --db data/orders.db create \
--source xianyu \
--service-version basic \
--amount-cents 0 \
--customer-name 张三 \
--customer-phone 13800001234 \
--candidate-name 李同学 \
--candidate-province 湖南
```
说明:
- `external_id` 可留空,允许渠道故障期先人工建单;
- `amount_cents` 在未确认实付时可先填 `0`,后续再 `update`
- 订单创建后会自动生成 `GKO-*` 内部单号,后续推进都用该单号。
### 3.3 补齐字段 / 推进状态
```bash
python3 scripts/gaokao-order-manager --db data/orders.db update <ORDER_ID> \
--assigned-consultant consultant-a \
--note 渠道故障期人工补录
python3 scripts/gaokao-order-manager --db data/orders.db pay <ORDER_ID> --reason manual_pay
python3 scripts/gaokao-order-manager --db data/orders.db deliver <ORDER_ID> --reason manual_delivery
```
## 4. 值班判断规则
优先看以下事实:
1. `webhook_audit` 最近是否还有 `accepted`
2. `poller_state.last_run_at` 是否超过阈值
3. `poller_state.last_error` / `poller_run.error_message` 是否持续存在
4. 最近 60 分钟 `rejected + parse_error` 是否明显升高
建议阈值CLI 默认值):
- poller stale15 分钟
- webhook stale30 分钟
- recent window60 分钟
- reject warn threshold5 次
- poller error warn threshold3 次
## 5. 推荐调度
最小 cron 方案:
```cron
*/10 * * * * cd /home/long/project/gaokao-volunteer-system && python3 scripts/gaokao-channel-fallback --db data/orders.db check --source xianyu
```
说明:
- 非 0 退出码表示要进入监控/告警;
- 真正是否有业务影响,还要结合最近是否有渠道订单流量;
- 若当前阶段尚未启用 poller可接受 `warn`,但应明确值班同学走人工补录。
## 6. 当前边界
本次 T8.4 只补齐“巡检 + 人工兜底”闭环,不做:
- 自动调用真实闲鱼开放平台 API
- 自动把外部失败订单直接转成人工建单;
- 自动通知企业微信/短信。
-`wechat` / `school` 等非 xianyu 渠道建立独立 webhook/poller 健康事实源。
这些属于后续增强项,不影响当前人工值班闭环。