본문으로 건너뛰기

0002 — 인스턴스 상태는 TPH; 전환이 엔티티를 교체합니다

컨텍스트​

실행/백테스트 인스턴스는 상태를 통해 이동합니다(pending → scheduled → starting → running → terminal). 우리는 상태를 EF Core **Table-Per-Hierarchy (TPH)**로 모델합니다: 각 상태는 서브타입입니다(StartingRunInstance, RunningRunInstance, …). EF의 TPH 판별식 열은 기존 행에서 변경될 수 없습니다.

결정​

상태 전환은 엔티티를 새로운 서브타입 인스턴스로 교체합니다 상태 필드를 변경하기보다는. 행이 교체되기 때문에, 인스턴스 id는 변경됩니다 starting → running → terminal을 통해. 컨테이너 id는 안정적이고 전환을 통해 이월됩니다; HTTP 노드 에이전트는 상태/보고서/중지/로그에 대해 컨테이너 id로 키가 지정됩니다.

결과​

  • 각 상태는 해당 상태에서만 유효한 필드와 메서드가 있는 구별되는 타입입니다 — 불법 전환 및 말이 안 되는 필드 접근은 런타임 확인이 아닌 컴파일 에러입니다.
  • 호출자는 전환 전체에서 인스턴스 id를 캐시해서는 안 됩니다; 상태를 스팬하는 모든 것에 대해 컨테이너 id를 안정적인 핸들로 사용하세요.
  • 전환 로직은 InstanceTransitions에 있습니다; id 변경은 의도적이고, 버그가 아닙니다.