上传源代码版本

This commit is contained in:
Im-Jenisson
2026-06-01 16:30:29 +08:00
commit b2a9b7d3c2
462 changed files with 104365 additions and 0 deletions

View File

@@ -0,0 +1,238 @@
# 24H换单率计算逻辑最终修正 - v5.0
**更新日期**: 2026-05-16
**版本**: v5.0 - 24H换单率完整定义
**状态**: ✅ 编译通过
---
## 核心修正24H换单率的正确含义
### 用户提供的场景说明
```
场景1冻结标签率 = 79% < 80%,低标签率)
├─ 100个应该完成的订单
├─ 规则:完成即达标
├─ 24H完成数80个
└─ 局部24H换单率 = 80 / 100 = 80%
场景2冻结标签率 = 80% >= 80%,高标签率)
├─ 100个应该完成的订单
├─ 规则按16点前后分段+考核时间
├─ 考核通过数75个16点前通过 + 16点后通过
└─ 局部24H换单率 = 75 / 100 = 75%
汇总:
├─ 低标签率80个完成 + 100个应该完成 = 80%
├─ 高标签率75个考核通过 + 100个应该完成 = 75%
└─ 整体24H换单率 = (80 + 75) / (100 + 100) = 155 / 200 = 77.5%
```
### 关键洞察
**24H换单率应该按照"标签率维度"分别计算,然后汇总**
| 标签率维度 | 应该完成数 | 完成/通过数 | 计算 | 含义 |
|----------|---------|----------|------|------|
| 低标签率(<80%| 100 | 24H完成=80 | 80/100 | 完成即达标的24小时完成情况 |
| 高标签率(≥80%| 100 | 考核通过=75 | 75/100 | 按规则考核通过的情况 |
| **整体** | **200** | **155** | **155/200** | **整体24小时的履约达成率** |
---
## SQL 实现修改
### 新增 CTE 1: DailyLowLabelRate24HCompleted
```sql
DailyLowLabelRate24HCompleted AS (
SELECT
ar.到货日期 AS 日期,
COUNT(DISTINCT ar.NeutralWaybillNumber) AS 低标签率24H完成数
FROM ArrivalRequests ar
INNER JOIN OverallScanStatus oss ON ar.NeutralWaybillNumber = oss.NeutralWaybillNumber
WHERE
oss.曾成功 = 1
AND oss.首次成功时间 IS NOT NULL
-- 低标签率订单考核时间为NULL完成即达标
AND ar.考核时间 IS NULL
GROUP BY ar.到货日期
)
```
**说明**
- 统计冻结标签率 < 80% 的订单在24H内完成的数量
- 这些订单的规则是"完成即达标"所以只需统计"曾成功"
### 新增 CTE 2: DailyHighLabelRateAssessed
```sql
DailyHighLabelRateAssessed AS (
SELECT
日期,
SUM(16点前考核通过包裹数) + SUM(16点后考核通过包裹数) AS 高标签率考核通过数
FROM (
SELECT 日期, 16点前考核通过包裹数, 0 AS 16点后考核通过包裹数 FROM DailyBeforeNoonPassed
UNION ALL
SELECT 日期, 0 AS 16点前考核通过包裹数, 16点后考核通过包裹数 FROM DailyAfternoonPassed
) t
GROUP BY 日期
)
```
**说明**
- 统计冻结标签率 80% 的订单中根据16点前/后分段规则考核通过的数量
- 注意这里不包括"低标签率考核通过包裹数"那些本来就是标签率<80%
### 修改24H换单率计算
```sql
24H换单率 = (低标签率24H完成数 + 高标签率考核通过数)
/ (低标签率应该换单数 + 高标签率应该换单数) × 100%
```
**这个公式的构成**
- **分子**
- `低标签率24H完成数`标签率<80%且24H内完成的订单
- `高标签率考核通过数`标签率80%且按规则考核通过的订单
- **分母**
- `低标签率应该换单数`所有标签率<80%的订单总数
- `高标签率应该换单数`所有标签率80%的订单总数
---
## 数据流示例
### 完整的日报表数据
```
【输入数据】
低标签率维度 (冻结标签率 < 80%):
├─ 低标签率应该换单数: 100
├─ 低标签率24H完成数: 80
├─ 低标签率24H换单率: 80/100 = 80%
高标签率维度 (冻结标签率 >= 80%):
├─ 高标签率应该换单数: 100
├─ 16点前考核通过: 40
├─ 16点后考核通过: 35
├─ 高标签率考核通过数: 40 + 35 = 75
├─ 高标签率24H换单率: 75/100 = 75%
【计算】
整体24H换单率 = (低标签率24H完成数 + 高标签率考核通过数)
/ (低标签率应该换单数 + 高标签率应该换单数)
= (80 + 75) / (100 + 100)
= 155 / 200
= 77.5%
【输出】
日期: 2026-05-16
低标签率应该换单数: 100
高标签率应该换单数: 100
低标签率24H完成数: 80
高标签率考核通过数: 75
16点前考核通过包裹数: 40
16点后考核通过包裹数: 35
24H换单率: 77.5%
```
---
## 关键字段说明
### 新增字段
| 字段 | 含义 | 来源 | 说明 |
|------|------|------|------|
| 低标签率24H完成数 | 标签率<80%的24H完成订单数 | DailyLowLabelRate24HCompleted | 完成即达标的24小时完成情况 |
| 高标签率考核通过数 | 标签率80%的考核通过订单数 | DailyHighLabelRateAssessed | 16点前考核通过 + 16点后考核通过 |
### 24H换单率计算逻辑
```
24H换单率用途衡量24小时内的整体履约达成率
分子 = 低标签率24H完成 + 高标签率考核通过
= 所有在24H内满足规则的订单
分母 = 低标签率应该换单 + 高标签率应该换单
= 所有应该完成的订单总数
结果 = 分子 / 分母
= 整体24小时的履约达成情况
```
---
## 完整的指标体系(最终版)
### 基础统计指标11个
```
日期、当日新增换单数、当日换单失败、当日换单成功数、当日STOP数、
16点前到仓、16点后到仓、当日完成数、24H内完成数、
当日标签推送数、当日扫描数
```
### 递推计算指标2个
```
累计要换的总单数、当天应该换单数
```
### 逻辑相关指标1个
```
换单失败未完结订单
```
### 考核维度指标3个
```
16点前考核通过、16点后考核通过、低标签率考核通过
```
### 标签率维度指标2个
```
高标签率应该换单数、低标签率应该换单数
```
### 衍生计算指标4个
```
考核通过总数、当天换单完成率、24H换单率、数据拉取时间
```
### 24H换单率支撑字段2个
```
低标签率24H完成数、高标签率考核通过数
```
---
## 编译状态
**编译成功**
- 所有新增CTE已定义
- 24H换单率计算公式已修正
- JOIN语句已更新
- 无编译错误
---
## 业务意义总结
**24H换单率 = 77.5% 说明**
在当日的200个应该完成的订单中
- 100个是标签率低的订单 80个在24H内完成 (80%)
- 100个是标签率高的订单 75个满足规则并通过考核 (75%)
- 整体155个完成/通过 **77.5%的整体履约达成**
这个指标对客户有说服力因为
1. 分子是实际完成的订单不区分标签率
2. 分母是应该完成的订单总数统一标准
3. 结果反映了整个团队的24小时履约能力