fix(klineDataCache): 修复 K线类型参数错误导致的 400 错误

**问题描述**
MiniTimelineChart 组件加载时,K线数据请求失败:
- 错误: `HTTP error! status: 400`
- 响应: `{"error":"不支持的类型"}`
- 请求: `GET /api/stock/{code}/kline?type=minute`

**根本原因**
klineDataCache.js 使用了错误的 K线类型参数:
-  使用: `'minute'`
-  应为: `'timeline'`

根据 API 文档 (MOCK_API_DOCS.md),后端支持的类型:
- `'timeline'` - 分时图
- `'daily'` - 日K线
- `'weekly'` - 周K线
- `'monthly'` - 月K线

**修复内容**

### 1. src/views/Community/components/StockDetailPanel/utils/klineDataCache.js

```diff
  const requestPromise = stockService
-   .getKlineData(stockCode, 'minute', normalizedEventTime)
+   .getKlineData(stockCode, 'timeline', normalizedEventTime)
    .then((res) => {
```

### 2. docs/StockDetailPanel_BUSINESS_LOGIC.md

更新文档中的 K线类型说明:
```diff
- **K线类型**: 'minute' (分时), 'day' (日K), 'week' (周K), 'month' (月K)
+ **K线类型**: 'timeline' (分时), 'daily' (日K), 'weekly' (周K), 'monthly' (月K)
```

更新代码示例:
```diff
  const requestPromise = stockService
-   .getKlineData(stockCode, 'minute', eventTime)
+   .getKlineData(stockCode, 'timeline', eventTime)
```

**验证**
-  与 MidjourneyHeroSection.js 中的用法保持一致
-  符合 MOCK_API_DOCS.md 规范
-  消除控制台 400 错误

**影响范围**
- StockDetailPanel 中的 MiniTimelineChart 组件
- 所有使用 fetchKlineData 的地方

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
zdl
2025-10-30 18:32:24 +08:00
parent b470a3184b
commit d57db02c15
2 changed files with 3 additions and 3 deletions

View File

@@ -311,7 +311,7 @@ const fetchKlineData = async (stockCode, eventTime) => {
// 3⃣ 发起新请求 // 3⃣ 发起新请求
const requestPromise = stockService const requestPromise = stockService
.getKlineData(stockCode, 'minute', eventTime) .getKlineData(stockCode, 'timeline', eventTime)
.then((res) => { .then((res) => {
const data = Array.isArray(res?.data) ? res.data : []; const data = Array.isArray(res?.data) ? res.data : [];
// 更新缓存 // 更新缓存
@@ -750,7 +750,7 @@ const [discussionType, setDiscussionType] = useState('事件讨论');
| `stockService.getQuotes(codes[], eventTime)` | GET | 股票代码数组, 事件时间 | `{ [code]: Quote }` | 批量获取行情 | | `stockService.getQuotes(codes[], eventTime)` | GET | 股票代码数组, 事件时间 | `{ [code]: Quote }` | 批量获取行情 |
| `stockService.getKlineData(code, type, eventTime)` | GET | 股票代码, K线类型, 事件时间 | `{ success, data: Kline[] }` | 获取K线数据 | | `stockService.getKlineData(code, type, eventTime)` | GET | 股票代码, K线类型, 事件时间 | `{ success, data: Kline[] }` | 获取K线数据 |
**K线类型**: `'minute'` (分时), `'day'` (日K), `'week'` (周K), `'month'` (月K) **K线类型**: `'timeline'` (分时), `'daily'` (日K), `'weekly'` (周K), `'monthly'` (月K)
### 10.3 自选股 API ### 10.3 自选股 API

View File

@@ -76,7 +76,7 @@ export const fetchKlineData = async (stockCode, eventTime) => {
logger.debug('klineDataCache', '发起新K线数据请求', { cacheKey }); logger.debug('klineDataCache', '发起新K线数据请求', { cacheKey });
const normalizedEventTime = eventTime ? moment(eventTime).format('YYYY-MM-DD HH:mm') : undefined; const normalizedEventTime = eventTime ? moment(eventTime).format('YYYY-MM-DD HH:mm') : undefined;
const requestPromise = stockService const requestPromise = stockService
.getKlineData(stockCode, 'minute', normalizedEventTime) .getKlineData(stockCode, 'timeline', normalizedEventTime)
.then((res) => { .then((res) => {
const data = Array.isArray(res?.data) ? res.data : []; const data = Array.isArray(res?.data) ? res.data : [];
// 更新缓存 // 更新缓存