# 日级报表所有指标的来源和计算方式 - 完整版（v6.0）

**更新日期**: 2026-05-16  
**版本**: v6.0 - 完整字段来源总结  
**状态**: ✅ 编译通过，逻辑最终确定

---

## 核心指标定义变更

### 24H换单率 - 最终定义

**新公式**：
```
24H换单率 = 高标签率考核通过数 / 高标签率应该换单数 × 100%

其中：
- 高标签率考核通过数 = 16点前考核通过 + 16点后考核通过
- 高标签率应该换单数 = 所有冻结标签率≥80%的订单
```

**场景说明**：
```
情景1：冻结标签率 = 79% （< 80%）
├─ 100个订单
├─ 完成数：80个
├─ 贡献到24H换单率的分子：0（不计入）
├─ 贡献到24H换单率的分母：0（不计入）

情景2：冻结标签率 = 80% （>= 80%）
├─ 100个订单
├─ 考核通过数：75个
├─ 贡献到24H换单率的分子：75（全部计入）
├─ 贡献到24H换单率的分母：100（全部计入）

汇总24H换单率：
24H换单率 = 75 / 100 = 75%
（注意：79%的100个订单不参与计算）
```

---

## 完整字段清单与数据来源

### 第1组：基础时间字段

| 字段名 | 中文名 | 数据来源 | 计算方式 | 说明 |
|-------|-------|--------|--------|------|
| Date | 日期 | ArrivalRequests | DATE(CONVERT_TZ(到货时间, '+00:00', '-05:00')) | UTC-5时区的自然日 |

### 第2组：基础统计字段（直接来自原始数据）

| 字段名 | 中文名 | 数据来源 CTE | 查询逻辑 | 说明 |
|-------|-------|-----------|--------|------|
| DailyNewReplaceCount | 当日新增换单数 | DailyBase | COUNT(DISTINCT 交接单) WHERE 到货日期=当日 | 当天新增的交接单总数 |
| DailyFailureCount | 当日换单失败数 | DailyFailedOrders | COUNT(DISTINCT 订单) WHERE 失败标记时间=当日 | 当天新增失败的订单数 |
| DailySuccessCount | 当日换单成功数 | DailySuccessCount | COUNT(DISTINCT 订单) WHERE 首次成功时间=当日 | 当天首次成功扫描的订单数 |
| DailyStopCount | 当日STOP数 | DailyScanMetrics | COUNT(DISTINCT 订单) WHERE STOP标记时间=当日 | 当天被STOP的订单数 |
| BeforeNoonArrivedCount | 16点前到仓包裹数 | DailyBase | COUNT(DISTINCT 订单) WHERE 到货时间 BETWEEN 当日00:00 AND 16:00 | 当天早上16点前到达的订单 |
| AfternoonArrivedCount | 16点后到仓包裹数 | DailyBase | COUNT(DISTINCT 订单) WHERE 到货时间 BETWEEN 当日16:01 AND 23:59 | 当天下午16点后到达的订单 |
| DailyCompletedOrders | 当日完成数 | DailyCompletedOrders | COUNT(DISTINCT 订单) WHERE 完成时间=当日 | 当天完成流程的订单数 |
| Daily24HCompleted | 24H内完成数 | Daily24HCompletedOrders | COUNT(DISTINCT 订单) WHERE 完成时间在24小时内 | 24小时周期内完成的订单数 |
| DailyLabelPushCount | 当日标签推送数 | DailyBase | COUNT(DISTINCT 订单) WHERE 标签推送时间=当日 | 当天新增推送的标签数 |
| DailyScanCount | 当日扫描数 | DailyScanMetrics | COUNT(DISTINCT 订单) WHERE 首次扫描时间=当日 | 当天首次被扫描的订单数 |

### 第3组：递推累计字段（需要上一日数据）

| 字段名 | 中文名 | 计算方式 | 说明 |
|-------|-------|--------|------|
| CumulativeTotalReplaceCount | 累计要换的总单数 | MAX(0, 前一日累计 + 前一日新增 - 前一日完成) | 当前待处理的积压交接单数 |
| ShouldReplaceCount | 当天应该换单数 | 累计要换的总单数 + 当日新增换单数 | 当天的完成目标数 |
| UnfinishedFailureCount | 换单失败未完结订单 | 从HistoryUnfinished或LatestUnfinished | 失败且未完成的订单数 |

### 第4组：考核维度字段

#### 4.1 高标签率考核通过（标签率≥80%）

| 字段名 | 中文名 | 数据来源 CTE | 考核逻辑 | 说明 |
|-------|-------|-----------|--------|------|
| BeforeNoonPassedCount | 16点前考核通过包裹数 | DailyBeforeNoonPassed | WHERE 到货时间<16:00 AND 首次成功时间≤考核时间 AND 标签率≥80% | 16点前到仓，标签率高，按16点分段规则考核通过 |
| AfternoonPassedCount | 16点后考核通过包裹数 | DailyAfternoonPassed | WHERE 到货时间≥16:00 AND 首次成功时间≤考核时间 AND 标签率≥80% | 16点后到仓，标签率高，按23:59:59规则考核通过 |

**考核时间规则**：
```
IF 冻结标签率 >= 80% THEN
  IF 到货时间 < 16:00 THEN
    考核时间 = 当日16:00 ~ 次日16:00
  ELSE
    考核时间 = 当日16:00 ~ 次日23:59:59
  END IF
ELSE
  考核时间 = NULL（完成即达标）
END IF
```

#### 4.2 低标签率考核通过（标签率<80%）

| 字段名 | 中文名 | 数据来源 CTE | 考核逻辑 | 说明 |
|-------|-------|-----------|--------|------|
| LowLabelRatePassedCount | 低标签率考核通过包裹数 | DailyLowLabelRatePassed | WHERE 首次成功时间 IS NOT NULL AND 标签率<80% | 标签率低，只要完成就达标 |

### 第5组：标签率维度字段

| 字段名 | 中文名 | 数据来源 CTE | 计算方式 | 说明 |
|-------|-------|-----------|--------|------|
| HighLabelRateShouldCount | 高标签率应该换单数 | DailyHighLabelRateShould | COUNT(所有冻结标签率≥80%的交接单中的包裹) | 应该按高标签率规则处理的订单总数 |
| LowLabelRateShouldCount | 低标签率应该换单数 | DailyLowLabelRateShould | COUNT(所有冻结标签率<80%的交接单中的包裹) | 应该按低标签率规则处理的订单总数 |

### 第6组：衍生计算字段

#### 6.1 考核通过总数

| 字段名 | 中文名 | 计算公式 | 说明 |
|-------|-------|--------|------|
| AssessmentPassedCount | 考核通过总数 | 16点前考核通过 + 16点后考核通过 + 低标签率考核通过 | 所有通过考核的订单总数 |

#### 6.2 当天换单完成率

| 字段名 | 中文名 | 计算公式 | 说明 |
|-------|-------|--------|------|
| DailyCompletionRate | 当天换单完成率 | 当日完成数 / 当天应该换单数 × 100% | 当天的完成达成率 |

#### 6.3 24H换单率（最终定义）

| 字段名 | 中文名 | 计算公式 | 说明 |
|-------|-------|--------|------|
| Rate24Hour | 24H换单率 | 高标签率考核通过数 / 高标签率应该换单数 × 100% | **关键KPI：标签率≥80%的订单在24小时内的考核达成率** |

**详细计算**：
```
高标签率考核通过数 = 16点前考核通过包裹数 + 16点后考核通过包裹数

24H换单率 = 高标签率考核通过数 / 高标签率应该换单数 × 100%

示例：
16点前考核通过：40个
16点后考核通过：35个
高标签率考核通过数 = 40 + 35 = 75个

高标签率应该换单数 = 100个

24H换单率 = 75 / 100 = 75%
```

#### 6.4 元数据

| 字段名 | 中文名 | 计算方式 | 说明 |
|-------|-------|--------|------|
| DataFetchTime | 数据拉取时间（UTC-5） | UTC_TIMESTAMP() - INTERVAL 5 HOUR | 报表生成时间 |

---

## 冻结标签率详解

### 定义

```
冻结标签率 = (最早扫描时间 > 标签推送时间的包裹数) / 总包裹数 × 100%
```

### 计算来源

```
InterchangeUnitLabelRates CTE:
├─ 对每个交接单计算
├─ 最早扫描时间 = MIN(label_scan_history.CreatedAt)
├─ 标签推送时间 = label_replace_requests.LabelRetrievedAt
└─ 比较：最早扫描时间 > 标签推送时间
   ↓
   TRUE → 标签在作业开始前推送（高标签率）
   FALSE → 标签在作业开始时或之后推送（低标签率）
```

### 应用

```
IF 冻结标签率 >= 80% THEN
  整个交接单的所有包裹 → 按高标签率规则处理
    ├─ 16点前到仓 → 考核时间 = 当日16:00 ~ 次日16:00
    └─ 16点后到仓 → 考核时间 = 当日16:00 ~ 次日23:59:59
  
ELSE IF 冻结标签率 < 80% THEN
  整个交接单的所有包裹 → 按低标签率规则处理
    └─ 完成即达标（无固定考核时间）
END IF
```

---

## 完整的数据流示例

### 场景数据

```
【高标签率交接单】冻结标签率 = 85%
├─ 100个应该完成的订单
├─ 16点前到仓：60个
├─ 16点后到仓：40个
├─ 16点前考核通过：50个
├─ 16点后考核通过：30个

【低标签率交接单】冻结标签率 = 30%
├─ 100个应该完成的订单
├─ 完成即达标
├─ 实际完成：85个

【总计】200个订单
```

### 指标计算

```
1. 标签率维度统计
   高标签率应该换单数 = 100（冻结标签率≥80%的交接单）
   低标签率应该换单数 = 100（冻结标签率<80%的交接单）

2. 考核通过统计
   高标签率考核通过 = 50 + 30 = 80个
   低标签率考核通过 = 85个（完成即达标）
   考核通过总数 = 80 + 85 = 165个

3. 完成率统计
   当天换单完成率 = (50 + 30 + 85) / 200 × 100% = 82.5%

4. 24H换单率（关键指标）
   24H换单率 = 高标签率考核通过数 / 高标签率应该换单数
           = 80 / 100 × 100% = 80%
   
   注意：低标签率的85个完成订单不参与这个指标
   因为24H换单率只关注"标签率≥80%"的履约情况
```

---

## 指标的业务含义

### 当天换单完成率 (82.5%)
- **含义**：当天应该完成的所有200个订单中，有82.5%在当天完成
- **用途**：衡量当天的工作效率
- **计算**：`(当日完成数) / (当天应该换单数)`

### 24H换单率 (80%)
- **含义**：标签率≥80%的100个订单中，有80个在24小时内满足考核条件
- **用途**：**客户看到的关键指标**，衡量"高质量需求"的履约能力
- **计算**：`(高标签率考核通过数) / (高标签率应该换单数)`
- **为什么不包括低标签率**？
  - 低标签率的订单只需"完成即达标"，门槛较低
  - 24H换单率重点反映"标签率高"（难度大）的订单的完成情况
  - 对客户更有说服力

---

## SQL CTE 关键依赖关系

```
基础表 (label_replace_requests, OverallScanStatus, arrival_handover_forms)
    ↓
┌─ ArrivalRequests (考核时间计算)
│    ↓
├─ InterchangeUnitLabelRates (冻结标签率计算)
│    ↓
├─ DailyBeforeNoonPassed (16点前考核通过)
│
├─ DailyAfternoonPassed (16点后考核通过)
│    ↓
├─ DailyHighLabelRateAssessed (高标签率考核通过数汇总)
│
├─ DailyLowLabelRatePassed (低标签率考核通过)
│
├─ DailyHighLabelRateShould (高标签率应该换单数)
│
├─ DailyLowLabelRateShould (低标签率应该换单数)
│
└─ DailyStatsWithPrev (最终汇总)
     ↓
   最终SELECT (所有指标输出)
```

---

## 编译状态

✅ **编译成功** (exit code 0)
- 24H换单率公式已修正
- 所有字段来源已梳理
- SQL逻辑已完整

---

## 关键总结

### 24H换单率的核心价值

**公式**：`高标签率考核通过数 / 高标签率应该换单数`

**意义**：
1. ✅ **专注于高难度需求**：只看标签率≥80%的订单
2. ✅ **衡量24小时履约**：在规定考核时间内是否完成
3. ✅ **对客户有说服力**：客观反映在更高要求下的完成能力
4. ✅ **分子分母明确**：分子=考核通过，分母=应该换单

### 与其他指标的区别

| 指标 | 分子 | 分母 | 涵盖范围 |
|------|------|------|--------|
| 当天完成率 | 当日完成数 | 当天应该换单数 | 所有订单 |
| 24H换单率 | 高标签率考核通过 | 高标签率应该换单 | **仅≥80%** |
| 考核通过率 | 考核通过总数 | 高标签率应该换单 | 参考用 |

