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

5.5 KiB
Raw Permalink Blame History

简化日级报表输出字段 - 计划

目标精简GetDailyLabelStatsChineseAsync()的输出仅保留17个核心字段

用户需求:只保留以下字段

  1. 日期
  2. 当日新增换单数
  3. 16点前到仓包裹数
  4. 16点后到仓包裹数
  5. 累计要换的总单数
  6. 当天应该换单数
  7. 换单失败未完结订单
  8. 当日换单失败
  9. 当日换单成功数
  10. 当日STOP数
  11. 24H内完成数
  12. 当日完成数
  13. 当日标签推送数
  14. 当日扫描数
  15. 数据拉取时间UTC_5
  16. 当天换单完成率
  17. 24H换单率

修改步骤

第1步分析当前输出

当前输出包含以下多余字段:

  • 16点前考核通过包裹数
  • 16点后考核通过包裹数
  • 低标签率考核通过包裹数
  • 低标签率24H完成数
  • 高标签率考核通过数
  • 高标签率应该换单数
  • 低标签率应该换单数
  • 考核通过总数

共8个多余字段需要删除

第2步修改SQL查询

位置LabelReplaceRepository.cs 第1173-1206行

任务

  1. 从外层SELECT中删除8个多余字段
  2. 保留17个核心字段
  3. 保持聚合函数和逻辑正确

修改前(当前状态):

SELECT 
    日期,
    MAX(当日新增换单数) AS 当日新增换单数,
    MAX(16点前到仓包裹数) AS 16点前到仓包裹数,
    MAX(16点后到仓包裹数) AS 16点后到仓包裹数,
    MAX(累计要换的总单数) AS 累计要换的总单数,
    MAX(当天应该换单数) AS 当天应该换单数,
    MAX(换单失败未完结订单) AS 换单失败未完结订单,
    MAX(当日换单失败) AS 当日换单失败,
    MAX(当日换单成功数) AS 当日换单成功数,
    MAX(当日STOP数) AS 当日STOP数,
    MAX(24H内完成数) AS 24H内完成数,
    MAX(当日完成数) AS 当日完成数,
    MAX(当日标签推送数) AS 当日标签推送数,
    MAX(当日扫描数) AS 当日扫描数,
    MAX(数据拉取时间(UTC_5) AS 数据拉取时间(UTC_5,
    MAX(16点前考核通过包裹数) AS 16点前考核通过包裹数,         -- ❌ 删除
    MAX(16点后考核通过包裹数) AS 16点后考核通过包裹数,         -- ❌ 删除
    MAX(低标签率考核通过包裹数) AS 低标签率考核通过包裹数,     -- ❌ 删除
    MAX(低标签率24H完成数) AS 低标签率24H完成数,               -- ❌ 删除
    MAX(高标签率考核通过数) AS 高标签率考核通过数,             -- ❌ 删除
    MAX(高标签率应该换单数) AS 高标签率应该换单数,             -- ❌ 删除
    MAX(低标签率应该换单数) AS 低标签率应该换单数,             -- ❌ 删除
    (MAX(16点前考核通过包裹数) + MAX(16点后考核通过包裹数) + MAX(低标签率考核通过包裹数)) AS 考核通过总数,  -- ❌ 删除
    CASE 
        WHEN MAX(当天应该换单数) = 0 THEN '0.00%'
        ELSE CONCAT(ROUND(
            MAX(当日完成数) / MAX(当天应该换单数) * 100, 2), '%')
    END AS 当天换单完成率,
    CASE 
        WHEN MAX(高标签率应该换单数) = 0 THEN '0.00%'
        ELSE CONCAT(ROUND(
            MAX(高标签率考核通过数) / MAX(高标签率应该换单数) * 100, 2), '%')
    END AS 24H换单率

修改后(精简版):

SELECT 
    日期,
    MAX(当日新增换单数) AS 当日新增换单数,
    MAX(16点前到仓包裹数) AS 16点前到仓包裹数,
    MAX(16点后到仓包裹数) AS 16点后到仓包裹数,
    MAX(累计要换的总单数) AS 累计要换的总单数,
    MAX(当天应该换单数) AS 当天应该换单数,
    MAX(换单失败未完结订单) AS 换单失败未完结订单,
    MAX(当日换单失败) AS 当日换单失败,
    MAX(当日换单成功数) AS 当日换单成功数,
    MAX(当日STOP数) AS 当日STOP数,
    MAX(24H内完成数) AS 24H内完成数,
    MAX(当日完成数) AS 当日完成数,
    MAX(当日标签推送数) AS 当日标签推送数,
    MAX(当日扫描数) AS 当日扫描数,
    MAX(数据拉取时间(UTC_5) AS 数据拉取时间(UTC_5,
    CASE 
        WHEN MAX(当天应该换单数) = 0 THEN '0.00%'
        ELSE CONCAT(ROUND(
            MAX(当日完成数) / MAX(当天应该换单数) * 100, 2), '%')
    END AS 当天换单完成率,
    CASE 
        WHEN MAX(高标签率应该换单数) = 0 THEN '0.00%'
        ELSE CONCAT(ROUND(
            MAX(高标签率考核通过数) / MAX(高标签率应该换单数) * 100, 2), '%')
    END AS 24H换单率

注意

  • 24H换单率的分母高标签率应该换单数和分子高标签率考核通过数虽然不在显示字段中但仍需要在内层SELECT中保留以供外层计算使用
  • 删除的8个字段从外层SELECT中移除但内层SELECT仍需保留用于计算

第3步编译验证

任务:运行编译验证修改后的代码

dotnet build src/DAL/DAL.csproj

预期结果编译成功exit code: 0


实施步骤总结

步骤 操作 状态
1 从外层SELECT删除8个多余字段 待执行
2 保留17个核心字段 待执行
3 编译验证 待执行

关键要点

  1. 只改外层SELECT删除多余字段从显示层面内层仍需保留用于24H换单率计算
  2. 保持逻辑正确24H换单率的两个变量高标签率应该换单数高标签率考核通过数需要在内层继续计算
  3. ONLY_FULL_GROUP_BY兼容所有内层字段都用MAX()包装符合GROUP BY要求