벡테스팅 수정

This commit is contained in:
Macbook
2026-06-03 02:04:30 +09:00
parent 88fe92d8c3
commit 8de3b77479
14 changed files with 156 additions and 86 deletions
+21 -19
View File
@@ -3,7 +3,11 @@ import type { VirtualTargetItem } from './virtualTradingStorage';
/** 종목 전략 셀렉트 — 기본(전역) 전략 옵션 값 */
export const VIRTUAL_DEFAULT_STRATEGY_VALUE = '__default__';
/** 종목에 전략이 지정되지 않았으면 전역(기본) 전략 ID */
/**
* 종목별 실효 전략 ID.
* strategyId 가 있으면 그대로 사용하고, null 이면 globalStrategyId(레거시·미설정)만 참조.
* 상단 기본전략 변경은 기존 null 종목을 freezeTargetsBeforeGlobalStrategyChange 로 고정한 뒤 session 만 갱신.
*/
export function resolveVirtualTargetStrategyId(
target: Pick<VirtualTargetItem, 'strategyId'>,
globalStrategyId: number | null,
@@ -12,6 +16,21 @@ export function resolveVirtualTargetStrategyId(
return globalStrategyId;
}
/** 기본전략 변경 직전 — null(기본 따름) 종목을 이전 기본전략 ID 로 고정 */
export function freezeTargetsBeforeGlobalStrategyChange(
targets: VirtualTargetItem[],
previousGlobalStrategyId: number | null,
): VirtualTargetItem[] {
if (previousGlobalStrategyId == null) return targets;
let changed = false;
const next = targets.map(t => {
if (t.strategyId != null) return t;
changed = true;
return { ...t, strategyId: previousGlobalStrategyId };
});
return changed ? next : targets;
}
export function usesDefaultStrategy(target: Pick<VirtualTargetItem, 'strategyId'>): boolean {
return target.strategyId == null;
}
@@ -26,6 +45,7 @@ export function parseTargetStrategySelectValue(value: string): number | null {
return Number.isFinite(n) ? n : null;
}
/** 종목 셀렉트 — 기본 전략(전역) 옵션 라벨 (신규 추가 시 적용되는 템플릿) */
export function defaultStrategyOptionLabel(
globalStrategyId: number | null,
strategies: Array<{ id?: number; name?: string }>,
@@ -35,21 +55,3 @@ export function defaultStrategyOptionLabel(
return name ? `기본 전략 (${name})` : '기본 전략';
}
/**
* 예전에 전역 전략 ID가 종목에 복사 저장된 항목 → null(기본 전략 따름)로 정규화
*/
export function coalesceTargetsToDefaultStrategy(
targets: VirtualTargetItem[],
globalStrategyId: number | null,
): VirtualTargetItem[] {
if (globalStrategyId == null) return targets;
let changed = false;
const next = targets.map(t => {
if (t.strategyId != null && t.strategyId === globalStrategyId) {
changed = true;
return { ...t, strategyId: null };
}
return t;
});
return changed ? next : targets;
}