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

71 lines
2.6 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.

# 到货信息统计 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
- [ ] 如何处理既没有提单号也没有主包号的记录
- [ ] 是否需要考虑性能优化的索引策略