/** * 전략 평가 — 전략에 포함된 지표 파라미터 맵 */ import type { StrategyDto } from './backendApi'; import { collectStrategyRegistryTypes } from './strategyToChartIndicators'; export type EvalIndicatorParams = Record>; export function buildEvalParamsFromStrategy( strategy: StrategyDto | null | undefined, getParams: (type: string) => Record, ): EvalIndicatorParams { const types = collectStrategyRegistryTypes(strategy); const out: EvalIndicatorParams = {}; for (const type of types) { out[type] = { ...getParams(type) }; } return out; } export function mergeEvalGetParams( baseGetParams: (type: string, defaults?: Record) => Record, applied: EvalIndicatorParams | null | undefined, ) { return (type: string, defaults?: Record) => { const base = baseGetParams(type, defaults); const override = applied?.[type]; return override ? { ...base, ...override } : base; }; } export function hasEvalParamsDiff( draft: EvalIndicatorParams, applied: EvalIndicatorParams | null | undefined, ): boolean { return JSON.stringify(draft) !== JSON.stringify(applied ?? {}); }