// 核心股历史数据获取工具 import { getApiBaseUrl } from "@/lib/api-client"; export interface ActiveCoreStock { stockCode: string; stockName: string; coverCount: number | null; // 覆盖题材数 dailyGains: Record; // 日期 -> 当日涨幅(可空) appearCount: number; lastAppear: string | null; daysSinceLastAppear: number; // 最近上榜距窗口最新交易日的自然日差 themes: { theme_code: string; theme_name: string }[]; // 所属题材列表 } export interface ActiveCoreStocksResponse { dates: string[]; stocks: ActiveCoreStock[]; } export interface CoreStockHistoryItem { id: number; trade_date: string; stock_code: string; stock_name: string; f3: number | null; cover_count: number | null; rank: number; themes: { theme_code: string; theme_name: string }[]; } export interface CoreStockHistoryResponse { date: string; items: CoreStockHistoryItem[]; } /** 获取活跃核心股 + 最近N日涨幅矩阵 */ export async function fetchActiveCoreStocks(days: number = 10): Promise { const baseUrl = getApiBaseUrl(); try { const resp = await fetch(`${baseUrl}/api/core-stocks/active?days=${days}`, { method: "GET", cache: "no-store" }); if (!resp.ok) return { dates: [], stocks: [] }; return resp.json(); } catch (err) { console.error("[core-stock-api] 获取活跃核心股失败:", err); return { dates: [], stocks: [] }; } } /** 获取指定交易日核心股(含所属题材) */ export async function fetchCoreStockHistory(date: string): Promise { const baseUrl = getApiBaseUrl(); try { const resp = await fetch(`${baseUrl}/api/core-stocks/history?date=${date}`, { method: "GET", cache: "no-store" }); if (!resp.ok) return null; return resp.json(); } catch (err) { console.error("[core-stock-api] 获取核心股历史失败:", err); return null; } }