위젯항목 추가

This commit is contained in:
Macbook
2026-06-14 01:59:54 +09:00
parent 9737767777
commit 7a2f65088c
13 changed files with 485 additions and 3 deletions
+48 -1
View File
@@ -22,6 +22,11 @@ import NotificationListWidgetHost from './hosts/NotificationListWidgetHost';
import StrategyListWidgetHost from './hosts/StrategyListWidgetHost';
import BacktestListWidgetHost from './hosts/BacktestListWidgetHost';
import PaperKpiWidgetHost from './hosts/PaperKpiWidgetHost';
import SignalSummaryWidgetHost from './hosts/SignalSummaryWidgetHost';
import SignalMatchWidgetHost from './hosts/SignalMatchWidgetHost';
import StrategyConditionWidgetHost from './hosts/StrategyConditionWidgetHost';
import BacktestSignalsWidgetHost from './hosts/BacktestSignalsWidgetHost';
import IndicatorStatusWidgetHost from './hosts/IndicatorStatusWidgetHost';
export type WidgetGroupId =
| 'chart'
@@ -29,6 +34,7 @@ export type WidgetGroupId =
| 'trade'
| 'portfolio'
| 'strategy'
| 'analysis'
| 'alert';
export interface WidgetDefinition {
@@ -47,6 +53,7 @@ export const WIDGET_GROUP_LABELS: Record<WidgetGroupId, string> = {
trade: '매매·호가',
portfolio: '계좌·포트폴리오',
strategy: '전략·분석',
analysis: '매매 시그널',
alert: '알림',
};
@@ -227,6 +234,46 @@ export const WIDGET_REGISTRY: WidgetDefinition[] = [
group: 'strategy',
Host: BacktestListWidgetHost,
},
{
type: 'analysis.signalSummary',
label: '매매 시그널 요약',
description: '선택 종목·전략 실시간 신호 카드',
category: 'side',
group: 'analysis',
Host: SignalSummaryWidgetHost,
},
{
type: 'analysis.signalMatch',
label: '조건 일치율',
description: '매수·매도 조건별 지표 충족률',
category: 'side',
group: 'analysis',
Host: SignalMatchWidgetHost,
},
{
type: 'analysis.strategyCondition',
label: '전략 조건',
description: '매수·매도 DSL 조건 트리',
category: 'side',
group: 'analysis',
Host: StrategyConditionWidgetHost,
},
{
type: 'analysis.backtestSignals',
label: '백테스트 시그널',
description: '최근 캔들 구간 매매 시그널 목록',
category: 'side',
group: 'analysis',
Host: BacktestSignalsWidgetHost,
},
{
type: 'analysis.indicatorDetail',
label: '지표별 상태',
description: '조건별 현재값·충족 여부 상세',
category: 'side',
group: 'analysis',
Host: IndicatorStatusWidgetHost,
},
];
const byType = new Map(WIDGET_REGISTRY.map(w => [w.type, w]));
@@ -244,7 +291,7 @@ export function widgetsByGroup(category: WidgetCategory): { group: WidgetGroupId
const items = widgetsForCategory(category);
const order: WidgetGroupId[] = category === 'center'
? ['chart']
: ['market', 'trade', 'portfolio', 'strategy', 'alert'];
: ['market', 'trade', 'portfolio', 'strategy', 'analysis', 'alert'];
return order
.map(group => ({
group,