1
0
Files
DiAL/openspec/changes/backend-architecture-hardening/specs/probe-api/spec.md
lanyuanxiaoyao 147a2559ae refactor: 后端架构加固 — 泛型化、批量查询、bootstrap 统一、路径修复与 pageSize 上限
- 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 文档,新增完整测试覆盖
2026-05-13 18:15:46 +08:00

1.4 KiB

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 状态码和错误信息