/* * 이 트윈이 기대는 **표준들** — 종류에 따라 다르다. * * 적합성 패널이 트윈 종류와 무관하게 ISA-95 하나만 말하고 있었다. 에너지 트윈에서 그것은 거짓은 * 아니지만 부족하다: 계량기·차단기·태양광·축전지의 어휘를 주는 것은 IEC 61850 이고, 무엇이 비었는지도 * 그 목록으로만 셀 수 있다. * * ── 여기 넣지 않는 것 ─────────────────────────────────────────────────────── * ISO 50001·ISO 55000 은 **경영 시스템**이다. 데이터 스키마가 아니라 요구사항에 답해야 하는 대상이라 * 「필드 커버리지」로 말할 수 없다 — 배우기 문서가 같은 구분을 지키고 있고, 화면도 그래야 한다. * * ── 왜 표를 여기서 부르지 않나 ────────────────────────────────────────────── * 이 파일은 **정책**만 담는다(어느 종류가 어느 표준을 기대하나). 표를 직접 불러오면 그 순간 이 규칙을 * 단위 시험이 불러올 수 없게 된다(모듈 사슬이 런타임 해석을 탄다). 조립은 질의가 한 줄로 한다. */ /** 우리가 적합성 표를 가진 표준들. */ export type StandardId = 'isa95' | 'epcis' | 'iec61850' /** * 이 종류의 트윈이 기대는 표준 — **순서 = 화면에 놓이는 순서.** * * ISA-95 는 종류와 상관없이 낸다: 자원과 계층은 어느 도메인에서나 그 표준의 것이다. * 종류가 더하는 표준만 뒤에 붙인다. */ export function standardsForKind(kind?: string): StandardId[] { /* * 물류·제조는 **EPCIS** 로 「무슨 일이 있었나」와 「이 번호가 무엇을 가리키나」를 정한다. * 에너지에는 붙이지 않는다 — 그 트윈에는 오가는 물건이 없고, 계측은 EPCIS 사건이 아니라 표본으로 * 들어온다(사건과 시계열은 다른 층이다). */ if (kind === 'ems') return ['isa95', 'iec61850'] if (kind === 'wms' || kind === 'yms' || kind === 'mes') return ['isa95', 'epcis'] return ['isa95'] }