Files
Aether/tests/services/usage/test_error_classifier.py
fawney19 f3e2f84b38 feat: 统计数据优化 - 支持细粒度时间范围和多维度分析
- 新增 StatsHourly/StatsDaily 预聚合表,支持任意时区的精确统计
- 实现 UTC datetime 范围查询策略,边界数据实时聚合
- 新增统计 API:用户/API Key 维度、成本分析、性能百分位、错误分类
- 新增前端页面:成本分析、性能分析、用户统计
- 新增 TimeRangePicker 组件和统计可视化组件
- 优化 Dashboard 和 Usage 页面支持时间范围筛选

Close #135
2026-02-04 02:04:54 +08:00

28 lines
1.1 KiB
Python

import pytest
from src.core.enums import ErrorCategory
from src.services.usage.error_classifier import classify_error
@pytest.mark.parametrize(
"status_code,error_message,status,expected",
[
(429, None, None, ErrorCategory.RATE_LIMIT),
(401, None, None, ErrorCategory.AUTH),
(404, None, None, ErrorCategory.NOT_FOUND),
(None, "maximum context length exceeded", None, ErrorCategory.CONTEXT_LENGTH),
(None, "content_filter triggered", None, ErrorCategory.CONTENT_FILTER),
(None, "rate limit reached", None, ErrorCategory.RATE_LIMIT),
(None, "request timeout", None, ErrorCategory.TIMEOUT),
(None, "connection reset by peer", None, ErrorCategory.NETWORK),
(500, None, None, ErrorCategory.SERVER_ERROR),
(400, None, None, ErrorCategory.INVALID_REQUEST),
(200, None, "cancelled", ErrorCategory.CANCELLED),
(None, None, None, ErrorCategory.UNKNOWN),
],
)
def test_classify_error(
status_code: int | None, error_message: str | None, status: str | None, expected: ErrorCategory
) -> None:
assert classify_error(status_code, error_message, status) == expected