# 顺丰物流管线 · 完整调试记录（2026-07-30/08-01）

## 最终状态
- 覆盖率: 697 → 1349 (34% → 66%)
- 运输中: 664条, 已签收: 685条, 无单号: 672条, 待校验: 35条

## 根因链

```
症状: 661条"月结卡号不匹配"/"手机号校验失败"
  ↓
① checkPhoneNo = 每运单独立的收件人手机后4位（非宝锐号6804/月结卡2900）
  ↓
② SF API批量查询只校验第一个单号，后续全拒绝（1条✅ 2条✅❌ 4条✅❌❌❌）
  ↓
③ watchdog 50%成功率保护触发 sys.exit(1)，丢弃全部结果
  ↓
④ 新订单需数小时处理才能查到路由（时序延迟）
```

## 穷举测试结论

| 参数 | 结果 |
|------|------|
| checkPhoneNo=6804(宝锐注册手机) | ❌ |
| checkPhoneNo=2900(月结卡后4位) | ❌ |
| checkPhoneNo=7561222900(完整月结卡) | ❌ |
| checkPhoneNo=18666926804(完整手机) | ❌ |
| checkPhoneNo=收件人0727 | ✅ 仅该收件人通过 |
| 不传checkPhoneNo | ❌ 月结卡号不匹配 |
| methodType=2 | ❌ |

## 修复的文件

### `~/.hermes/scripts/sf_delivery_watchdog.py`
- 批量查询 → 逐条查询（`for tn, o in tn_map.items()`）
- 移除 `sys.exit(1)` 50%保护
- 新增 `ok_batch` 计数和调试日志

### `脚本/sf_bulk_refresh.py`（新建）
- 独立批量路由刷新脚本
- 逐条查询 + 写入 shipment_status.json
- 无推送，纯数据修复

## 数据流确认

```
MCP销售订单 → pull_orders.py → shipment_status.json
                                 ↓ phone = o.get("收货人联系电话#")
                                 ↓ checkPhoneNo = phone[-4:]
sf_bulk_refresh.py(逐条) → SF API → 路由写入 → CloudBase部署
```

## 配置

```
partnerID: BRSWK5CQ08HV
月结卡号: 7561222900
注册手机: 18666926804（后4位6804，不用于checkPhoneNo）
```
