From d57db02c15d8f5f0ebdbb97a0a1cbeba84faa57c Mon Sep 17 00:00:00 2001 From: zdl <3489966805@qq.com> Date: Thu, 30 Oct 2025 18:32:24 +0800 Subject: [PATCH] =?UTF-8?q?fix(klineDataCache):=20=E4=BF=AE=E5=A4=8D=20K?= =?UTF-8?q?=E7=BA=BF=E7=B1=BB=E5=9E=8B=E5=8F=82=E6=95=B0=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=E7=9A=84=20400=20=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit **问题描述** 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 --- docs/StockDetailPanel_BUSINESS_LOGIC.md | 4 ++-- .../components/StockDetailPanel/utils/klineDataCache.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/StockDetailPanel_BUSINESS_LOGIC.md b/docs/StockDetailPanel_BUSINESS_LOGIC.md index e788c7a9..02f71500 100644 --- a/docs/StockDetailPanel_BUSINESS_LOGIC.md +++ b/docs/StockDetailPanel_BUSINESS_LOGIC.md @@ -311,7 +311,7 @@ const fetchKlineData = async (stockCode, eventTime) => { // 3️⃣ 发起新请求 const requestPromise = stockService - .getKlineData(stockCode, 'minute', eventTime) + .getKlineData(stockCode, 'timeline', eventTime) .then((res) => { const data = Array.isArray(res?.data) ? res.data : []; // 更新缓存 @@ -750,7 +750,7 @@ const [discussionType, setDiscussionType] = useState('事件讨论'); | `stockService.getQuotes(codes[], eventTime)` | GET | 股票代码数组, 事件时间 | `{ [code]: Quote }` | 批量获取行情 | | `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 diff --git a/src/views/Community/components/StockDetailPanel/utils/klineDataCache.js b/src/views/Community/components/StockDetailPanel/utils/klineDataCache.js index 640fea26..65afb3f0 100644 --- a/src/views/Community/components/StockDetailPanel/utils/klineDataCache.js +++ b/src/views/Community/components/StockDetailPanel/utils/klineDataCache.js @@ -76,7 +76,7 @@ export const fetchKlineData = async (stockCode, eventTime) => { logger.debug('klineDataCache', '发起新K线数据请求', { cacheKey }); const normalizedEventTime = eventTime ? moment(eventTime).format('YYYY-MM-DD HH:mm') : undefined; const requestPromise = stockService - .getKlineData(stockCode, 'minute', normalizedEventTime) + .getKlineData(stockCode, 'timeline', normalizedEventTime) .then((res) => { const data = Array.isArray(res?.data) ? res.data : []; // 更新缓存