- CheckerDefinition 泛型化,HTTP/Command checker 移除 resolved target 断言 - 新增 ProbeStore.getAllRecentSamples 消除 targets 路由 N+1 查询 - 统一 getAllTargetStats 与 getTargetStats 的 availability 精度 - Engine rejected 结果写入 internal error 记录,提升可观测性 - 新增 bootstrap.ts 统一 dev/production 启动序列 - dataDir 相对路径改为基于配置文件目录解析 - validatePagination 增加 pageSize 上限 200 校验 - 修复 ErrorBoundary override 标记 - 更新 README/DEVELOPMENT 文档,新增完整测试覆盖
33 lines
1.4 KiB
Markdown
33 lines
1.4 KiB
Markdown
## MODIFIED Requirements
|
|
|
|
### Requirement: API 错误处理
|
|
系统 SHALL 对不存在的目标 ID、无效参数和超出范围的分页参数返回适当的 HTTP 错误响应。
|
|
|
|
#### Scenario: 查询不存在的目标
|
|
- **WHEN** 客户端请求 `GET /api/targets/999/history`
|
|
- **THEN** 系统 SHALL 返回 404 状态码和错误信息
|
|
|
|
#### Scenario: 无效的 from/to 参数
|
|
- **WHEN** 客户端请求 `GET /api/targets/1/history?from=invalid`
|
|
- **THEN** 系统 SHALL 返回 400 状态码和错误信息
|
|
|
|
#### Scenario: 无效的分页参数
|
|
- **WHEN** 客户端请求 `GET /api/targets/1/history?from=ISO&to=ISO&page=abc`
|
|
- **THEN** 系统 SHALL 返回 400 状态码和错误信息
|
|
|
|
#### Scenario: pageSize 超过上限
|
|
- **WHEN** 客户端请求 `GET /api/targets/1/history?from=ISO&to=ISO&pageSize=201`
|
|
- **THEN** 系统 SHALL 返回 400 状态码和错误信息,提示 pageSize 不能超过 200
|
|
|
|
#### Scenario: pageSize 等于上限
|
|
- **WHEN** 客户端请求 `GET /api/targets/1/history?from=ISO&to=ISO&pageSize=200`
|
|
- **THEN** 系统 SHALL 正常返回数据
|
|
|
|
#### Scenario: from 或 to 参数缺失
|
|
- **WHEN** 客户端请求 `GET /api/targets/1/trend` 未提供 from 或 to 参数
|
|
- **THEN** 系统 SHALL 返回 400 状态码和错误信息
|
|
|
|
#### Scenario: 无效的目标 ID
|
|
- **WHEN** 客户端请求 `GET /api/targets/abc/history`
|
|
- **THEN** 系统 SHALL 返回 400 状态码和错误信息
|