## ADDED Requirements

### Requirement: 网关层代理错误使用应用统一格式

系统 SHALL 对代理接口中由网关自身产生的错误使用应用统一错误响应格式。

#### Scenario: 标准网关错误格式

- **WHEN** 代理接口返回网关层错误
- **THEN** SHALL 使用以下 JSON 格式：
  ```json
  {
    "error": "错误描述",
    "code": "ERROR_CODE"
  }
  ```
- **THEN** `error` 字段 SHALL 包含人类可读的错误描述
- **THEN** `code` 字段 SHALL 包含机器可读的错误码

#### Scenario: 网关错误码集合

- **WHEN** 代理接口返回网关层错误
- **THEN** code SHALL 使用以下枚举之一：`INVALID_JSON`、`INVALID_REQUEST`、`INVALID_MODEL_ID`、`MODEL_NOT_FOUND`、`PROVIDER_NOT_FOUND`、`UNSUPPORTED_INTERFACE`、`UNSUPPORTED_MULTIMODAL`、`CONVERSION_FAILED`、`UPSTREAM_UNAVAILABLE`

### Requirement: 代理接口上游错误透传

系统 SHALL 对代理接口中已经收到的上游 HTTP 错误响应执行透明透传。

#### Scenario: 非流式上游非 2xx 响应

- **WHEN** 非流式代理请求收到上游 HTTP 响应且状态码不是 2xx
- **THEN** SHALL 透传上游 status code
- **THEN** SHALL 透传过滤 hop-by-hop header 后的上游 headers
- **THEN** SHALL 透传上游 body
- **THEN** SHALL NOT 将上游错误包装为应用统一错误
- **THEN** SHALL NOT 将上游错误转换为客户端协议错误格式

#### Scenario: 流式上游非 2xx 响应

- **WHEN** 流式代理请求收到上游 HTTP 响应且状态码不是 2xx
- **THEN** SHALL 透传上游 status code
- **THEN** SHALL 透传过滤 hop-by-hop header 后的上游 headers
- **THEN** SHALL 透传上游 body
- **THEN** SHALL NOT 创建 StreamConverter

### Requirement: 上游不可达错误

系统 SHALL 在没有收到上游 HTTP 响应时返回网关层错误。

#### Scenario: 上游连接失败

- **WHEN** ProviderClient 因 DNS、连接失败、TLS、超时或上下文取消等原因无法获得上游 HTTP 响应
- **THEN** SHALL 返回 HTTP 502 或合适的 5xx 状态码
- **THEN** SHALL 返回应用统一错误格式
- **THEN** code SHALL 为 `UPSTREAM_UNAVAILABLE`

### Requirement: Hop-by-hop header 过滤

系统 SHALL 在透传上游错误响应时过滤 hop-by-hop headers。

#### Scenario: 过滤连接级 header

- **WHEN** 透传上游错误响应 headers
- **THEN** SHALL 过滤 `Connection`、`Transfer-Encoding`、`Keep-Alive`、`Proxy-Authenticate`、`Proxy-Authorization`、`TE`、`Trailer`、`Upgrade`
- **THEN** SHALL 保留 `Content-Type` 等普通响应 header

## MODIFIED Requirements

### Requirement: JSON 格式错误

系统 SHALL 对请求体 JSON 格式错误返回明确的错误信息。

#### Scenario: 请求体 JSON 格式错误

- **WHEN** 代理请求的请求体不是有效的 JSON 格式，且该接口需要网关解析请求体
- **THEN** SHALL 返回 HTTP 400 Bad Request
- **THEN** SHALL 返回以下 JSON 格式：
  ```json
  {
    "error": "请求体 JSON 格式错误",
    "code": "INVALID_JSON"
  }
  ```

#### Scenario: Smart Passthrough 时请求体 JSON 格式错误

- **WHEN** 同协议 Smart Passthrough 场景下，请求体 JSON 格式不正确
- **THEN** SHALL 返回 HTTP 400 Bad Request
- **THEN** SHALL 返回以下 JSON 格式：
  ```json
  {
    "error": "请求体 JSON 格式错误",
    "code": "INVALID_JSON"
  }
  ```
