다중 시간봉 전략 설정기능 추가

This commit is contained in:
Macbook
2026-05-25 02:49:39 +09:00
parent cc01f311bc
commit 30dedc4abc
17 changed files with 1903 additions and 249 deletions
@@ -1,10 +1,19 @@
import type { LogicNode } from './strategyTypes';
import type { EdgeHandleBinding } from './strategyFlowLayout';
import { defaultStartMeta, type StartCombineOp, type StartNodeMeta } from './strategyStartNodes';
export type SignalFlowLayoutSnapshot = {
positions: Record<string, { x: number; y: number }>;
edgeHandles: Record<string, EdgeHandleBinding>;
orphans?: LogicNode[];
/** START 노드별 조건 판별 시간봉 */
startMeta?: Record<string, StartNodeMeta>;
/** 기본 START 외 추가 START 노드 ID (순서 유지) */
extraStartIds?: string[];
/** 추가 START에 연결된 서브트리 루트 */
extraRoots?: Record<string, LogicNode | null>;
/** START 2개 이상일 때 분기 결합 (AND | OR) */
startCombineOp?: StartCombineOp;
};
export type FlowLayoutChangePayload = Omit<SignalFlowLayoutSnapshot, 'orphans'> & {
@@ -19,7 +28,14 @@ export type StrategyFlowLayoutStore = {
const STORAGE_KEY = 'gc_se_flow_layout_v1';
export function emptySignalFlowLayout(): SignalFlowLayoutSnapshot {
return { positions: {}, edgeHandles: {}, orphans: [] };
return {
positions: {},
edgeHandles: {},
orphans: [],
startMeta: defaultStartMeta(),
extraStartIds: [],
extraRoots: {},
};
}
export function emptyStrategyFlowLayout(): StrategyFlowLayoutStore {