> Discover all available pages from the documentation index: https://mastra.zisheng.pro/ko/llms.txt # 실행.시간여행() 그만큼`.timeTravel()`메서드는 저장된 스냅샷 데이터 또는 사용자가 제공하는 사용자 지정 컨텍스트를 사용하여 특정 단계부터 시작하는 Workflow를 다시 실행합니다. 이를 사용하여 실패한 Workflow를 디버깅하고 다양한 입력으로 개별 단계를 테스트하세요. 또한 전체 Workflow를 다시 실행하지 않고도 오류를 복구할 수 있습니다. ## 사용예 ```typescript const run = await workflow.createRun() const result = await run.timeTravel({ step: 'step2', inputData: { value: 10 }, }) ``` ## 매개변수 **step** (`Step | [...Step[], Step] | string | string[]`): 실행을 시작할 대상 단계입니다. Step 인스턴스, Step 배열(중첩 Workflow용), 단계 ID 문자열 또는 단계 ID 문자열 배열을 사용할 수 있습니다. 중첩 Workflow 단계에는 점 표기법이나 배열을 사용하세요(예: 'nestedWorkflow\.step3' 또는 \['nestedWorkflow', 'step3']) **inputData** (`z.infer`): 대상 단계의 입력 데이터입니다. 단계의 입력 스키마와 일치해야 합니다. 제공하지 않으면 Workflow 스냅샷의 데이터를 사용합니다 **resumeData** (`any`): Workflow가 이전에 일시 중지된 경우 제공할 재개 데이터입니다 **initialState** (`z.infer`): Workflow 실행에 설정할 초기 상태입니다. 실행 전에 Workflow 수준 상태를 설정하는 데 사용합니다 **context** (`TimeTravelContext`): 대상 단계 이전 단계들의 결과를 포함하는 실행 컨텍스트입니다. 각 키는 단계 ID이며, 값은 status, payload, output, startedAt, endedAt, suspendPayload, resumePayload를 포함하는 StepResult 객체입니다 **nestedStepsContext** (`Record>`): 중첩 Workflow 단계의 컨텍스트입니다. 중첩 Workflow ID를 키로 사용하며, 각 항목에는 해당 중첩 Workflow의 단계 결과가 포함됩니다 **requestContext** (`RequestContext`): 시간 이동 실행 중 사용할 Request Context 데이터입니다 **outputWriter** (`(chunk: TOutput) => Promise`): 출력 청크가 생성될 때 처리하는 선택적 비동기 함수입니다 **tracingContext** (`TracingContext`): 자식 span을 생성하고 메타데이터를 추가하기 위한 Tracing 컨텍스트입니다. Mastra의 Tracing 시스템을 사용할 때 자동으로 주입됩니다. **tracingContext.currentSpan** (`Span`): 자식 span을 생성하고 메타데이터를 추가하기 위한 현재 span입니다. 실행 중 사용자 정의 자식 span을 생성하거나 span 속성을 업데이트하는 데 사용합니다. **tracingOptions** (`TracingOptions`): Tracing 구성을 위한 옵션입니다. **tracingOptions.metadata** (`Record`): 루트 Trace span에 추가할 메타데이터입니다. 사용자 ID, 세션 ID 또는 기능 플래그와 같은 사용자 정의 속성을 추가할 때 유용합니다. **tracingOptions.requestContextKeys** (`string[]`): 이 Trace의 메타데이터로 추출할 추가 RequestContext 키입니다. 중첩 값에는 점 표기법을 지원합니다(예: 'user.id'). **tracingOptions.traceId** (`string`): 이 실행에 사용할 Trace ID입니다(1\~32자의 16진수). 제공하면 이 Trace가 지정된 Trace의 일부가 됩니다. **tracingOptions.parentSpanId** (`string`): 이 실행에 사용할 부모 span ID입니다(1\~16자의 16진수). 제공하면 루트 span이 이 span의 자식으로 생성됩니다. **tracingOptions.tags** (`string[]`): 이 Trace에 적용할 태그입니다. Trace를 분류하고 필터링하는 문자열 레이블입니다. **outputOptions** (`OutputOptions`): 출력 구성을 위한 옵션입니다. **outputOptions.includeState** (`boolean`): 결과에 Workflow 실행 상태를 포함할지 여부입니다. **outputOptions.includeResumeLabels** (`boolean`): 결과에 재개 레이블을 포함할지 여부입니다. ## 보고 **result** (`Promise>`): 단계 출력과 상태가 포함된 Workflow 실행 결과로 이행되는 Promise입니다 **traceId** (`string`): Tracing이 활성화된 경우 이 실행과 연결된 Trace ID입니다. 로그를 연결하고 실행 흐름을 디버깅하는 데 사용합니다. **spanId** (`string`): Tracing이 활성화된 경우 이 실행과 연결된 루트 span ID입니다. span 수준 조회와 연결에 사용합니다. ## 확장된 사용 예 ### 맞춤형 컨텍스트를 통한 시간 여행 ```typescript const result = await run.timeTravel({ step: 'step2', context: { step1: { status: 'success', payload: { value: 0 }, output: { step1Result: 2 }, startedAt: Date.now(), endedAt: Date.now(), }, }, }) ``` ### 중첩된 Workflow 단계로의 시간 이동 ```typescript // Using dot notation const result = await run.timeTravel({ step: 'nestedWorkflow.step3', inputData: { value: 10 }, }) // Using array of step IDs const result = await run.timeTravel({ step: ['nestedWorkflow', 'step3'], inputData: { value: 10 }, }) ``` ### 초기 상태의 시간 여행 ```typescript const result = await run.timeTravel({ step: 'step2', inputData: { value: 10 }, initialState: { counter: 5, metadata: { source: 'time-travel' }, }, }) ``` ### 중첩된 Workflow 컨텍스트를 사용한 시간 여행 ```typescript const result = await run.timeTravel({ step: 'nestedWorkflow.step3', context: { step1: { status: 'success', payload: { value: 0 }, output: { step1Result: 2 }, startedAt: Date.now(), endedAt: Date.now(), }, nestedWorkflow: { status: 'running', payload: { step1Result: 2 }, startedAt: Date.now(), }, }, nestedStepsContext: { nestedWorkflow: { step2: { status: 'success', payload: { step1Result: 2 }, output: { step2Result: 3 }, startedAt: Date.now(), endedAt: Date.now(), }, }, }, }) ``` ## 메모 - 시간 여행은 지속적인 Workflow 스냅샷에 의존하므로 스토리지를 구성해야 합니다. - Workflow를 다시 실행할 때 Workflow는 스토리지에서 기존 스냅샷을 로드합니다(사용 가능한 경우). - 대상 단계 이전의 단계 결과는 스냅샷 또는 제공된 컨텍스트에서 재구성됩니다. - 제공된 또는 재구성된 입력 데이터를 사용하여 지정된 단계부터 실행이 시작됩니다. - Workflow는 해당 시점부터 계속 완료됩니다. - 시작하는 단계에 대한 사용자 정의 컨텍스트 또는 입력 데이터를 제공하여 아직 실행되지 않은 Workflow에서 시간 여행을 사용할 수 있습니다. ## 관련된 - [시간여행](https://mastra.zisheng.pro/ko/docs/workflows/time-travel) - [Workflow 개요](https://mastra.zisheng.pro/ko/docs/workflows/overview) - [Workflow.createRun()](https://mastra.zisheng.pro/ko/reference/workflows/workflow-methods/create-run) - [스냅샷](https://mastra.zisheng.pro/ko/docs/workflows/snapshots) - [일시중단 및 재개](https://mastra.zisheng.pro/ko/docs/workflows/suspend-and-resume)