mirror of
https://github.com/EZ-Api/ez-api.git
synced 2026-01-13 17:47:51 +00:00
refactor(api): update traffic chart response structure
Change the traffic chart API response from bucket-based to series-based to better support frontend visualization libraries. The new format provides a shared X-axis and aligned data arrays for each model series. - Replace `buckets` with `x` and `series` in response - Implement data alignment and zero-filling for time slots - Update Swagger documentation including pending definitions BREAKING CHANGE: The `GET /admin/logs/stats/traffic-chart` response schema has changed. `buckets` and `models` fields are removed.
This commit is contained in:
@@ -176,17 +176,33 @@
|
||||
"granularity": "hour",
|
||||
"since": 1735689600,
|
||||
"until": 1735776000,
|
||||
"models": ["gpt-4-turbo", "claude-3.5-sonnet", "llama-3-70b", "other"],
|
||||
"buckets": [
|
||||
"x": {
|
||||
"labels": ["2025-01-01T00:00:00Z", "2025-01-01T01:00:00Z"],
|
||||
"timestamps": [1735689600, 1735693200],
|
||||
"totals": {
|
||||
"data": [2050, 1800],
|
||||
"tokens_in": [82000, 70000],
|
||||
"tokens_out": [128000, 110000]
|
||||
}
|
||||
},
|
||||
"series": [
|
||||
{
|
||||
"time": "2025-01-01T00:00:00Z",
|
||||
"timestamp": 1735689600,
|
||||
"breakdown": {
|
||||
"gpt-4-turbo": { "count": 1200, "tokens_in": 50000, "tokens_out": 80000 },
|
||||
"claude-3.5-sonnet": { "count": 800, "tokens_in": 30000, "tokens_out": 45000 },
|
||||
"other": { "count": 50, "tokens_in": 2000, "tokens_out": 3000 }
|
||||
},
|
||||
"total": { "count": 2050, "tokens_in": 82000, "tokens_out": 128000 }
|
||||
"name": "gpt-4-turbo",
|
||||
"data": [1200, 900],
|
||||
"tokens_in": [50000, 38000],
|
||||
"tokens_out": [80000, 62000]
|
||||
},
|
||||
{
|
||||
"name": "claude-3.5-sonnet",
|
||||
"data": [800, 700],
|
||||
"tokens_in": [30000, 26000],
|
||||
"tokens_out": [45000, 40000]
|
||||
},
|
||||
{
|
||||
"name": "other",
|
||||
"data": [50, 200],
|
||||
"tokens_in": [2000, 6000],
|
||||
"tokens_out": [3000, 8000]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -196,11 +212,11 @@
|
||||
|
||||
| 图表类型 | 数据映射 |
|
||||
|----------|----------|
|
||||
| X 轴 | `buckets[i].time` (格式化为 00:00, 04:00 等) |
|
||||
| X 轴 | `x.labels` (格式化为 00:00, 04:00 等) |
|
||||
| Y 轴 | 请求数量 |
|
||||
| 堆叠系列 | `models` 数组,每个模型一个系列 |
|
||||
| 系列数据 | `buckets[i].breakdown[model].count` |
|
||||
| 总量标签 | `buckets[i].total.count` |
|
||||
| 堆叠系列 | `series` 数组,每个模型一个系列 |
|
||||
| 系列数据 | `series[i].data` |
|
||||
| 总量标签 | `x.totals.data` |
|
||||
|
||||
**时间范围选择器映射**:
|
||||
|
||||
@@ -226,7 +242,7 @@
|
||||
|
||||
| 功能点 | 用户操作 | 前端行为 | 后端请求 | 成功反馈 | 异常处理 | 风险/边界 |
|
||||
|--------|----------|----------|----------|----------|----------|-----------|
|
||||
| 图表加载 | 页面加载 | 请求默认 24H 图表 | `GET /admin/logs/stats/traffic-chart` | 渲染堆叠柱状图 | 请求失败 → 显示错误提示 | `buckets` 为空 → 显示 No Data |
|
||||
| 图表加载 | 页面加载 | 请求默认 24H 图表 | `GET /admin/logs/stats/traffic-chart` | 渲染堆叠柱状图 | 请求失败 → 显示错误提示 | `series` 为空或 `x.labels` 为空 → 显示 No Data |
|
||||
| 时间粒度切换 | 选择分钟级范围 | 自动切换 granularity=minute | `GET /admin/logs/stats/traffic-chart` | 图表更细粒度 | 400 → 回退到 hour 并提示 | minute 范围 ≤ 6h |
|
||||
| Top 模型限制 | 修改显示数量 | 约束 top_n ≤ 20 | `GET /admin/logs/stats/traffic-chart` | 图表更新 | 400 → 自动回退到 20 | 模型过多时显示 "other" |
|
||||
|
||||
|
||||
Reference in New Issue
Block a user