Files
LabelChange-server/.trae/documents/complete_metrics_definition_v6.md
2026-06-01 16:30:29 +08:00

310 lines
11 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.

# 日级报表所有指标的来源和计算方式 - 完整版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%** |
| 考核通过率 | 考核通过总数 | 高标签率应该换单 | 参考用 |