쉬운 설명
이력 기록이 뭔가요?
이력 기록은 공정에서 발생한 모든 상태 변화와 이벤트를 시간순으로 저장하는 기술입니다. 언제, 무엇이, 어떻게 바뀌었는지를 빠짐없이 기록하여 나중에 문제 분석이나 최적화에 활용합니다. StateChangeInfo로 상태 전이를, TraceSession으로 세션을 관리하고, 10가지 이벤트와 14가지 에러 유형을 체계적으로 분류합니다.
💡 쉬운 비유: 비행기의 블랙박스
이력 기록은 비행기의 블랙박스(Flight Recorder)와 같습니다.
비행 중 발생하는 모든 것 - 고도 변화, 엔진 상태, 조종사 명령 등 - 을 초 단위로 기록합니다.
StateChangeInfo가 "고도 10,000ft → 12,000ft"처럼 상태 변화를 기록하고,
TraceSession이 "인천→LA 비행"처럼 전체 세션을 관리합니다.
문제가 생기면 블랙박스를 분석하듯, 공정 이력을 분석하여 원인을 파악합니다.
StateChangeInfo (상태 전이)
Work/Call의 상태가 바뀔 때마다 기록합니다. "Loading이 R→G로 변경됨 (10:23:45.123)"처럼 정확한 시각과 함께 전환 내역을 남깁니다.
TraceSession (세션 관리)
기록의 시작과 끝을 관리하는 단위입니다. "오전 작업 세션", "테스트 #3" 등으로 구분하여 나중에 특정 세션만 조회할 수 있습니다.
SimulationEvents (10종 이벤트)
상태변경, 진행률갱신, I/O변경, MT/WT/TC 업데이트, 시뮬레이션 시작/정지, 사이클 시작/완료 등 10가지 유형으로 분류된 이벤트를 기록합니다.
SimulationErrors (14종 에러)
참조 오류, 구조 오류, 검증 오류, 런타임 오류 4개 카테고리로 분류된 14가지 에러 타입을 기록하여 문제 진단을 돕습니다.
🎯 핵심 효과
완전한 추적 가능성
문제 원인 분석
시뮬레이션 재현
성능 트렌드 분석
JSON 내보내기
StateChangeInfo
노드 상태 전이 정보 기록
| Property | Type | Description |
|---|---|---|
| NodeGuid | Guid | 노드 고유 식별자 |
| NodeName | string | 노드 이름 |
| NodeType | enum | Work | Call |
| PreviousState | NodeState | 이전 상태 (R/G/F/H) |
| NewState | NodeState | 새 상태 (R/G/F/H) |
| Timestamp | DateTime | 전이 발생 시각 |
| IsSkipped | bool | 건너뛰기 여부 |
TraceSession
추적 세션 관리
| Property | Type | Description |
|---|---|---|
| SessionId | string | 세션 고유 ID |
| StartTime | DateTime | 기록 시작 시간 |
| EndTime | DateTime? | 기록 종료 시간 |
| StateTransitions | List<SC> | 상태 전이 목록 |
| EventLog | List<Event> | 이벤트 로그 |
| Snapshots | List<Snap> | 상태 스냅샷 |
SimulationEvents
10가지 시뮬레이션 이벤트
StateChanged
ProgressUpdated
IOValueChanged
FlowMtWtUpdated
WorkMtWtUpdated
TcUpdated
SimulationStarted
SimulationStopped
CycleStarted
CycleCompleted
MetricsState
MT/WT/TC 메트릭스
| Metric | Formula | Description |
|---|---|---|
| MT | Last F - First G | Machine Time (가공 시간) |
| WT | First G - Work G | Wait Time (대기 시간) |
| TC | MT + WT | Total Cycle (전체 사이클) |
| CycleCount | int | 완료 사이클 수 |
SimulationErrors
14가지 에러 타입 (4개 카테고리)
Reference
E001 WorkNotFound
E002 CallNotFound
E003 ApiDefNotFound
E002 CallNotFound
E003 ApiDefNotFound
Structure
E101 CyclicDependency
E102 OrphanedNode
E103 InvalidArrow
E102 OrphanedNode
E103 InvalidArrow
Validation
E201 InvalidCondition
E202 TypeMismatch
E203 OutOfRange
E202 TypeMismatch
E203 OutOfRange
Runtime
E301 Timeout
E302 ApiCallFailed
E303 StateTransitionError
E304 InterruptedByUser
E305 SystemException
E302 ApiCallFailed
E303 StateTransitionError
E304 InterruptedByUser
E305 SystemException