# API 文档

本文档描述了 QDII Tools 对外提供的 API 接口。

## 认证方式

API 支持两种认证方式：

1. **JWT Token**: 在请求头中添加 `Authorization: Bearer <token>`
2. **Logto Session**: 使用 Logto 登录后的会话认证

---

## 健康检查

### GET /api/health

检查服务是否正常运行。

**响应**：
- `200`: 服务正常，返回 "ok"

---

## 净值数据 API

### GET /api/nav

获取基金净值数据列表。

**查询参数**：

| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| page | number | 否 | 页码，默认 1 |
| pageSize | number | 否 | 每页条数，默认 10 |
| symbol | string | 否 | 基金代码筛选 |
| startDate | string | 否 | 开始日期 (YYYY-MM-DD) |
| endDate | string | 否 | 结束日期 (YYYY-MM-DD) |

**响应示例**：
```json
{
  "total": 100,
  "data": [
    {
      "id": 1,
      "symbol": "513100",
      "date": "2024-01-01T00:00:00.000Z",
      "netAssetValue": 4.5678
    }
  ],
  "page": 1,
  "pageSize": 10,
  "totalPages": 10
}
```

---

## K 线数据 API

### GET /api/kline

获取 K 线数据列表。

**查询参数**：

| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| page | number | 否 | 页码，默认 1 |
| pageSize | number | 否 | 每页条数，默认 10 |
| symbol | string | 否 | 基金代码筛选 |
| startDate | string | 否 | 开始日期 (YYYY-MM-DD) |
| endDate | string | 否 | 结束日期 (YYYY-MM-DD) |

**响应示例**：
```json
{
  "total": 100,
  "data": [
    {
      "id": 1,
      "symbol": "513100",
      "date": "2024-01-01T00:00:00.000Z",
      "close": 5.1234,
      "normalClose": 5.1234
    }
  ],
  "page": 1,
  "pageSize": 10,
  "totalPages": 10
}
```

---

## 折价率数据 API

### GET /api/discount

获取折价率计算结果列表。

**查询参数**：

| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| page | number | 否 | 页码，默认 1 |
| pageSize | number | 否 | 每页条数，默认 10 |
| symbol | string | 否 | 基金代码筛选 |
| startDate | string | 否 | 开始日期 (YYYY-MM-DD) |
| endDate | string | 否 | 结束日期 (YYYY-MM-DD) |

**响应示例**：
```json
{
  "total": 100,
  "data": [
    {
      "id": 1,
      "symbol": "513100",
      "date": "2024-01-01T00:00:00.000Z",
      "close": 5.1234,
      "prevNavValue": 4.5678,
      "prevNavDate": "2023-12-31T00:00:00.000Z",
      "discountRate": 0.1215
    }
  ],
  "page": 1,
  "pageSize": 10,
  "totalPages": 10
}
```
