Files
tick-stock-panel/frontend/src/components/LastStockChip.tsx
T
shy3130 2015ef0c78 feat: 个股分析(Beta) — 专用日K + 9类关键价位 + AI四维分析
新增个股分析页,以行情与关键价位为视觉主体,与财务分析(财务质量评级)定位互补:

后端:
- indicators/levels.py: 9 类关键价位纯函数计算
  · 压力支撑(布林带)/ 成交密集区(POC)/ 枢轴点(可配档位)/ 前高前低
  · Keltner通道(MA±n×ATR 短/中/长)/ ATR止损(close±nATR)
  · 缺口位(未回补跳空)/ 斐波那契回撤 / 整数关口(自适应步长)
- services/stock_analyzer.py: AI 四维(技术/基本面/财务/消息面)流式分析,NDJSON
- services/stock_reports.py: 报告持久化(最多50条),独立 JSON 存储
- api/stock_analysis.py: levels/analyze/reports 端点

前端:
- AnalysisKChart: 专用 ECharts 日K(主图+成交量+滑块),9 类价位开关
- 蓝色胶囊(Bubble/Host/Dialog),与财务分析紫色主题并存
- stockAnalysisStore: useSyncExternalStore 全局存储,后台流式
- useLastStock + LastStockChip: 记忆最近查看个股(财务/个股分析页)

其他优化:
- AI 设置页:一键清空配置(保留UA) + 保存后乐观更新连接状态/菜单
- MarkdownRenderer: 去除 space-y-0 遮蔽,各块间距与分隔线可见性优化
- 个股分析页 Beta 标识(标题 + 菜单)
- 版本号 0.1.45 → 0.1.50
2026-06-26 15:36:52 +08:00

32 lines
1.1 KiB
TypeScript

import { Clock } from 'lucide-react'
import type { StockRef } from '@/lib/useLastStock'
/**
* "上次查看"个股胶囊 —— 显示在 PageHeader 右侧。
* 上方名称、下方代码,小字体二排;点击恢复该个股的查看。
*/
export function LastStockChip({
stock,
onSelect,
}: {
stock: StockRef | null
onSelect?: (symbol: string, name: string) => void
}) {
if (!stock) return null
return (
<button
onClick={() => onSelect?.(stock.symbol, stock.name)}
title={`继续查看 ${stock.name}`}
className="group inline-flex items-center gap-1.5 rounded-lg border border-border/40 bg-elevated/40 px-2 py-1 hover:border-border hover:bg-elevated transition-colors"
>
<Clock className="h-3 w-3 text-muted shrink-0" />
<span className="flex flex-col items-start leading-tight">
<span className="text-[11px] font-medium text-secondary group-hover:text-foreground transition-colors max-w-[7em] truncate">
{stock.name}
</span>
<span className="text-[9px] font-mono text-muted">{stock.symbol}</span>
</span>
</button>
)
}