上传源代码版本
This commit is contained in:
71
.trae/specs/arrival_stats_sql/spec.md
Normal file
71
.trae/specs/arrival_stats_sql/spec.md
Normal file
@@ -0,0 +1,71 @@
|
||||
# 到货信息统计 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
|
||||
- [ ] 如何处理既没有提单号也没有主包号的记录?
|
||||
- [ ] 是否需要考虑性能优化的索引策略?
|
||||
Reference in New Issue
Block a user