Files
LabelChange-server/.trae/specs/arrival_stats_sql/spec.md
2026-06-01 16:30:29 +08:00

2.6 KiB
Raw Blame History

到货信息统计 MySQL 语句分析

Overview

  • Summary: 分析如何编写 MySQL 语句,在有提单号的情况下以提单号统计到货信息,无提单号的情况下以主包号统计到货信息
  • Purpose: 提供一个统一的 SQL 语句,根据数据情况自动选择合适的分组依据
  • Target Users: 开发人员、数据库管理员

Goals

  • 分析到货信息统计的业务逻辑
  • 提供统一的 MySQL 语句实现
  • 确保统计结果的准确性
  • 优化查询性能

Non-Goals (Out of Scope)

  • 不修改现有代码
  • 不涉及前端实现细节
  • 不处理权限和安全问题

Background & Context

在物流系统中,到货信息统计是一个常见需求。通常情况下,我们会按提单号进行统计,但在某些情况下(如没有提单号时),需要按主包号进行统计。当前实现可能需要编写多个 SQL 语句来处理不同情况,我们需要一个统一的解决方案。

Functional Requirements

  • FR-1: 当记录有提单号时,按提单号分组统计
  • FR-2: 当记录没有提单号时,按主包号分组统计
  • FR-3: 计算到货订单数量、无标签数据数量、已有标签率等统计数据
  • FR-4: 支持按客户ID、日期范围等条件过滤

Non-Functional Requirements

  • NFR-1: 性能优化,避免全表扫描
  • NFR-2: 代码可读性和可维护性
  • NFR-3: 数据准确性

Constraints

  • Technical: 使用MySQL数据库
  • Business: 无特殊业务约束
  • Dependencies: 依赖 label_replace_requests

Assumptions

  • 数据库表结构已正确创建
  • 所有必要的索引已添加
  • 数据量在合理范围内

Acceptance Criteria

AC-1: 基本统计功能

  • Given: 存在带有提单号的记录
  • When: 执行统计查询
  • Then: 按提单号分组统计
  • Verification: programmatic

AC-2: 无提单号情况

  • Given: 存在没有提单号但有主包号的记录
  • When: 执行统计查询
  • Then: 按主包号分组统计
  • Verification: programmatic

AC-3: 性能优化

  • Given: 数据量较大如10万条记录
  • When: 执行查询
  • Then: 查询响应时间在可接受范围内(<5秒
  • Verification: programmatic

AC-4: 数据准确性

  • Given: 存在测试数据
  • When: 执行查询并与手动计算结果比较
  • Then: 统计数据与手动计算一致
  • Verification: human-judgment

Open Questions

  • 如何处理既没有提单号也没有主包号的记录?
  • 是否需要考虑性能优化的索引策略?