3.9 KiB
3.9 KiB
空气质量指数API Spec
Why
当前已有实时天气查询API,空气质量是与天气相关的重要环境数据。需要实现独立的空气质量指数API后端,提供AQI、PM2.5、PM10等关键空气污染物数据,并在前端提供API详情文档和测试页面。
What Changes
后端变更
- 新增
air_quality/Django应用,实现空气质量查询API视图 - 使用 Open-Meteo 免费空气质量API(无需API Key)
- 添加Swagger文档支持,遵循现有
weather应用模式 - 注册URL路由到
api/urls.py - 响应格式与天气API保持一致:
{code, message, data}
前端变更
- 新增
AQIDetails页面(含桌面端和移动端),展示API文档和在线测试功能 - 页面结构复用
ApiDetail组件模式(Hero区域 + Tabs文档/测试) - 添加路由注册
- 添加i18n翻译键
数据变更
- 无数据库表变更(纯第三方API代理,无需持久化)
Impact
- Affected specs:
real-time-weather-api(参考其模式) - Affected code:
chunyu_project/air_quality/(新增Django应用)chunyu_project/api/urls.py(修改,添加路由)chunyu_project/settings.py(修改,注册应用)chunyu_project_react/src/pages/AQIDetails/(新增页面)chunyu_project_react/src/pages/AQIDetails/AQIDetailsMobile.tsx(新增移动端)chunyu_project_react/src/App.tsx(修改,添加路由)chunyu_project_react/src/locales/*.json(修改,添加翻译)chunyu_project_react/src/pages/ApiDocs/ApiDocs.tsx(可选,更新API列表)
ADDED Requirements
Requirement: 空气质量查询API
The system SHALL provide an air quality query API that returns current air quality data for a given city.
Scenario: 成功查询空气质量
- WHEN 用户发送 GET 请求到
/api/air-quality/,携带city参数 - THEN 系统返回 200 状态码及空气质量数据(AQI指数、PM2.5、PM10、O3、NO2、SO2、CO、空气质量等级)
Scenario: 缺少必填参数
- WHEN 用户发送请求但未携带
city参数 - THEN 系统返回 400 状态码及错误提示
Scenario: 城市不存在
- WHEN 用户请求的城市名称无法解析为地理坐标
- THEN 系统返回 404 状态码及友好错误提示
Scenario: 第三方API不可用
- WHEN Open-Meteo 服务暂时不可用或超时
- THEN 系统返回 502/503 状态码及友好错误提示
Scenario: 支持语言参数
- WHEN 用户携带
lang参数(zh_cn 或 en) - THEN 系统返回对应语言的空气质量等级描述
Requirement: API文档集成
The air quality API SHALL be automatically included in the Swagger API documentation.
Scenario: Swagger文档显示
- WHEN 管理员访问
/swagger/ - THEN 空气质量查询API出现在API文档列表中,包含参数说明和响应示例
Requirement: 前端API详情页面
The system SHALL provide a frontend API documentation and testing page for the air quality API.
Scenario: 页面访问
- WHEN 用户访问
/api/air-quality-details - THEN 显示空气质量API详情页面,包含文档标签和测试标签
Scenario: API文档展示
- WHEN 用户切换到"文档"标签
- THEN 显示接口描述、请求参数表、响应示例、错误码说明
Scenario: 在线测试
- WHEN 用户在"测试"标签中输入城市名并点击发送
- THEN 向
/api/air-quality/发起真实请求并显示响应结果
MODIFIED Requirements
Requirement: API路由注册
The main api/urls.py SHALL include the air quality API routes.
Scenario: 路由注册
- WHEN Django启动
- THEN
/api/air-quality/路由正确映射到 AirQualityView
Requirement: Django应用注册
The INSTALLED_APPS SHALL include the new air quality app.
Scenario: 应用注册
- WHEN Django启动
- THEN
air_quality应用被正确加载
REMOVED Requirements
无移除的功能。