Files
vscode-workbench/.trae/specs/air-quality-api/spec.md
T

102 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 空气质量指数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
无移除的功能。