@operato/twin-kernel 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/domain-catalog.d.ts +9 -0
- package/dist/domain-catalog.js +14 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/mes-profile.d.ts +2 -0
- package/dist/mes-profile.js +2 -0
- package/dist/wms-profile.d.ts +5 -0
- package/dist/wms-profile.js +5 -0
- package/dist/yms-profile.d.ts +2 -0
- package/dist/yms-profile.js +2 -0
- package/dist-cjs/index.cjs +53 -32
- package/package.json +1 -1
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type DomainSystem = 'wms' | 'yms' | 'mes';
|
|
2
|
+
export interface DomainProfileInfo {
|
|
3
|
+
system: DomainSystem;
|
|
4
|
+
label: string;
|
|
5
|
+
/** 커널이 키로 쓰는 로케이션 노드 타입(권위 어휘). */
|
|
6
|
+
nodeTypes: readonly string[];
|
|
7
|
+
}
|
|
8
|
+
export declare const DOMAIN_CATALOG: Record<DomainSystem, DomainProfileInfo>;
|
|
9
|
+
export declare const DOMAIN_SYSTEMS: DomainSystem[];
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* 도메인 카탈로그 — 시스템(wms/yms/mes)별 어휘 SSOT. 각 프로파일이 선언한 노드 타입을 취합.
|
|
3
|
+
* 호스트(headless-twin)가 이걸 노출하고, UI 는 소싱한다. 앱/UI 는 도메인 어휘를 재선언하지 않는다(방언 금지).
|
|
4
|
+
* bizStep 등 다른 어휘도 이미 프로파일에서 export — 필요 시 여기에 취합.
|
|
5
|
+
*/
|
|
6
|
+
import { WMS_NODE_TYPES } from "./wms-profile.js";
|
|
7
|
+
import { YMS_NODE_TYPES } from "./yms-profile.js";
|
|
8
|
+
import { MES_NODE_TYPES } from "./mes-profile.js";
|
|
9
|
+
export const DOMAIN_CATALOG = {
|
|
10
|
+
wms: { system: 'wms', label: 'WMS (물류창고)', nodeTypes: WMS_NODE_TYPES },
|
|
11
|
+
yms: { system: 'yms', label: 'YMS (야드)', nodeTypes: YMS_NODE_TYPES },
|
|
12
|
+
mes: { system: 'mes', label: 'MES (제조)', nodeTypes: MES_NODE_TYPES }
|
|
13
|
+
};
|
|
14
|
+
export const DOMAIN_SYSTEMS = ['wms', 'yms', 'mes'];
|
package/dist/index.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export * from './event-journal.ts';
|
|
|
6
6
|
export * from './divergence.ts';
|
|
7
7
|
export * from './epcis.ts';
|
|
8
8
|
export * from './wms-profile.ts';
|
|
9
|
+
export * from './domain-catalog.ts';
|
|
9
10
|
export * from './allocation-policy.ts';
|
|
10
11
|
export * from './duration-estimator.ts';
|
|
11
12
|
export * from './state-projector.ts';
|
package/dist/index.js
CHANGED
|
@@ -6,6 +6,7 @@ export * from "./event-journal.js";
|
|
|
6
6
|
export * from "./divergence.js";
|
|
7
7
|
export * from "./epcis.js";
|
|
8
8
|
export * from "./wms-profile.js";
|
|
9
|
+
export * from "./domain-catalog.js";
|
|
9
10
|
export * from "./allocation-policy.js";
|
|
10
11
|
export * from "./duration-estimator.js";
|
|
11
12
|
export * from "./state-projector.js";
|
package/dist/mes-profile.d.ts
CHANGED
|
@@ -7,3 +7,5 @@ export declare const MES_BIZSTEP: {
|
|
|
7
7
|
export declare const BTT_PRODORDER = "urn:epcglobal:cbv:btt:prodorder";
|
|
8
8
|
/** 직렬 SGTIN URI (원자재 단위·완제품). */
|
|
9
9
|
export declare function sgtinUri(companyPrefix: string, itemRef: string, serial: number): string;
|
|
10
|
+
/** MES 노드 타입 카탈로그 — 커널이 키로 쓰는 제조 로케이션 타입(nodeByType/.type). 도메인 SSOT. */
|
|
11
|
+
export declare const MES_NODE_TYPES: readonly ["raw-store", "cut-station", "weld-station", "fg-store"];
|
package/dist/mes-profile.js
CHANGED
|
@@ -15,3 +15,5 @@ export const BTT_PRODORDER = 'urn:epcglobal:cbv:btt:prodorder';
|
|
|
15
15
|
export function sgtinUri(companyPrefix, itemRef, serial) {
|
|
16
16
|
return `urn:epc:id:sgtin:${companyPrefix}.${itemRef}.${serial}`;
|
|
17
17
|
}
|
|
18
|
+
/** MES 노드 타입 카탈로그 — 커널이 키로 쓰는 제조 로케이션 타입(nodeByType/.type). 도메인 SSOT. */
|
|
19
|
+
export const MES_NODE_TYPES = ['raw-store', 'cut-station', 'weld-station', 'fg-store'];
|
package/dist/wms-profile.d.ts
CHANGED
|
@@ -11,3 +11,8 @@ export declare const BTT: {
|
|
|
11
11
|
readonly po: "urn:epcglobal:cbv:btt:po";
|
|
12
12
|
readonly so: "urn:epcglobal:cbv:btt:so";
|
|
13
13
|
};
|
|
14
|
+
/**
|
|
15
|
+
* WMS 노드 타입 카탈로그 — 커널이 실제로 키로 쓰는 로케이션 타입(nodeByType/slotViews).
|
|
16
|
+
* 도메인 어휘 SSOT: 호스트·UI 는 이걸 소싱하고 재선언하지 않는다(방언 금지).
|
|
17
|
+
*/
|
|
18
|
+
export declare const WMS_NODE_TYPES: readonly ["dock", "storage", "staging", "dock-ship"];
|
package/dist/wms-profile.js
CHANGED
|
@@ -18,3 +18,8 @@ export const BTT = {
|
|
|
18
18
|
po: 'urn:epcglobal:cbv:btt:po',
|
|
19
19
|
so: 'urn:epcglobal:cbv:btt:so'
|
|
20
20
|
};
|
|
21
|
+
/**
|
|
22
|
+
* WMS 노드 타입 카탈로그 — 커널이 실제로 키로 쓰는 로케이션 타입(nodeByType/slotViews).
|
|
23
|
+
* 도메인 어휘 SSOT: 호스트·UI 는 이걸 소싱하고 재선언하지 않는다(방언 금지).
|
|
24
|
+
*/
|
|
25
|
+
export const WMS_NODE_TYPES = ['dock', 'storage', 'staging', 'dock-ship'];
|
package/dist/yms-profile.d.ts
CHANGED
|
@@ -9,3 +9,5 @@ export declare const YARD_BIZSTEP: {
|
|
|
9
9
|
export declare const BTT_DELIVERY = "urn:epcglobal:cbv:btt:deliv";
|
|
10
10
|
/** 트레일러/컨테이너 = GRAI(Global Returnable Asset Identifier, 반납형 자산). */
|
|
11
11
|
export declare function graiUri(companyPrefix: string, assetType: string, serial: number): string;
|
|
12
|
+
/** YMS 노드 타입 카탈로그 — 커널이 키로 쓰는 야드 로케이션 타입(nodeByType/slotViews/.type). 도메인 SSOT. */
|
|
13
|
+
export declare const YMS_NODE_TYPES: readonly ["gate", "yard-slot", "dock-door", "staging"];
|
package/dist/yms-profile.js
CHANGED
|
@@ -20,3 +20,5 @@ export const BTT_DELIVERY = 'urn:epcglobal:cbv:btt:deliv';
|
|
|
20
20
|
export function graiUri(companyPrefix, assetType, serial) {
|
|
21
21
|
return `urn:epc:id:grai:${companyPrefix}.${assetType}.${String(serial).padStart(6, '0')}`;
|
|
22
22
|
}
|
|
23
|
+
/** YMS 노드 타입 카탈로그 — 커널이 키로 쓰는 야드 로케이션 타입(nodeByType/slotViews/.type). 도메인 SSOT. */
|
|
24
|
+
export const YMS_NODE_TYPES = ['gate', 'yard-slot', 'dock-door', 'staging'];
|
package/dist-cjs/index.cjs
CHANGED
|
@@ -25,10 +25,13 @@ __export(index_exports, {
|
|
|
25
25
|
BTT_PRODORDER: () => BTT_PRODORDER,
|
|
26
26
|
CMD: () => CMD,
|
|
27
27
|
DISP: () => DISP,
|
|
28
|
+
DOMAIN_CATALOG: () => DOMAIN_CATALOG,
|
|
29
|
+
DOMAIN_SYSTEMS: () => DOMAIN_SYSTEMS,
|
|
28
30
|
EPCIS_CONTEXT: () => EPCIS_CONTEXT,
|
|
29
31
|
EventJournal: () => EventJournal,
|
|
30
32
|
FlowEngine: () => FlowEngine,
|
|
31
33
|
MES_BIZSTEP: () => MES_BIZSTEP,
|
|
34
|
+
MES_NODE_TYPES: () => MES_NODE_TYPES,
|
|
32
35
|
MES_PART_GTINS: () => MES_PART_GTINS,
|
|
33
36
|
MES_PRODUCT_GTINS: () => MES_PRODUCT_GTINS,
|
|
34
37
|
MesKernel: () => MesKernel,
|
|
@@ -38,8 +41,10 @@ __export(index_exports, {
|
|
|
38
41
|
TwinObserver: () => TwinObserver,
|
|
39
42
|
TwinRuntime: () => TwinRuntime,
|
|
40
43
|
UTC_OFFSET: () => UTC_OFFSET,
|
|
44
|
+
WMS_NODE_TYPES: () => WMS_NODE_TYPES,
|
|
41
45
|
WmsKernel: () => WmsKernel,
|
|
42
46
|
YARD_BIZSTEP: () => YARD_BIZSTEP,
|
|
47
|
+
YMS_NODE_TYPES: () => YMS_NODE_TYPES,
|
|
43
48
|
YmsKernel: () => YmsKernel,
|
|
44
49
|
aggregationEvent: () => aggregationEvent,
|
|
45
50
|
compareStates: () => compareStates,
|
|
@@ -450,6 +455,49 @@ var BTT = {
|
|
|
450
455
|
po: "urn:epcglobal:cbv:btt:po",
|
|
451
456
|
so: "urn:epcglobal:cbv:btt:so"
|
|
452
457
|
};
|
|
458
|
+
var WMS_NODE_TYPES = ["dock", "storage", "staging", "dock-ship"];
|
|
459
|
+
|
|
460
|
+
// src/yms-profile.ts
|
|
461
|
+
var YARD_BIZSTEP = {
|
|
462
|
+
arriving: "urn:epcglobal:cbv:bizstep:arriving",
|
|
463
|
+
// 게이트-인
|
|
464
|
+
staging: "urn:epcglobal:cbv:bizstep:staging",
|
|
465
|
+
// 야드 슬롯 주차·대기
|
|
466
|
+
loading: "urn:epcglobal:cbv:bizstep:loading",
|
|
467
|
+
// 도크 작업(상차: 트레일러←화물)
|
|
468
|
+
unloading: "urn:epcglobal:cbv:bizstep:unloading",
|
|
469
|
+
// 도크 작업(하차: 트레일러→화물)
|
|
470
|
+
departing: "urn:epcglobal:cbv:bizstep:departing"
|
|
471
|
+
// 게이트-아웃
|
|
472
|
+
};
|
|
473
|
+
var BTT_DELIVERY = "urn:epcglobal:cbv:btt:deliv";
|
|
474
|
+
function graiUri(companyPrefix, assetType, serial) {
|
|
475
|
+
return `urn:epc:id:grai:${companyPrefix}.${assetType}.${String(serial).padStart(6, "0")}`;
|
|
476
|
+
}
|
|
477
|
+
var YMS_NODE_TYPES = ["gate", "yard-slot", "dock-door", "staging"];
|
|
478
|
+
|
|
479
|
+
// src/mes-profile.ts
|
|
480
|
+
var MES_BIZSTEP = {
|
|
481
|
+
receiving: "urn:epcglobal:cbv:bizstep:receiving",
|
|
482
|
+
// 원자재 수령
|
|
483
|
+
producing: "urn:epcglobal:cbv:bizstep:commissioning",
|
|
484
|
+
// 생산(제품 최초 생성)
|
|
485
|
+
storing: "urn:epcglobal:cbv:bizstep:storing"
|
|
486
|
+
// 완제품 저장
|
|
487
|
+
};
|
|
488
|
+
var BTT_PRODORDER = "urn:epcglobal:cbv:btt:prodorder";
|
|
489
|
+
function sgtinUri(companyPrefix, itemRef, serial) {
|
|
490
|
+
return `urn:epc:id:sgtin:${companyPrefix}.${itemRef}.${serial}`;
|
|
491
|
+
}
|
|
492
|
+
var MES_NODE_TYPES = ["raw-store", "cut-station", "weld-station", "fg-store"];
|
|
493
|
+
|
|
494
|
+
// src/domain-catalog.ts
|
|
495
|
+
var DOMAIN_CATALOG = {
|
|
496
|
+
wms: { system: "wms", label: "WMS (\uBB3C\uB958\uCC3D\uACE0)", nodeTypes: WMS_NODE_TYPES },
|
|
497
|
+
yms: { system: "yms", label: "YMS (\uC57C\uB4DC)", nodeTypes: YMS_NODE_TYPES },
|
|
498
|
+
mes: { system: "mes", label: "MES (\uC81C\uC870)", nodeTypes: MES_NODE_TYPES }
|
|
499
|
+
};
|
|
500
|
+
var DOMAIN_SYSTEMS = ["wms", "yms", "mes"];
|
|
453
501
|
|
|
454
502
|
// src/allocation-policy.ts
|
|
455
503
|
function freeBinsFirstFit(slots) {
|
|
@@ -583,38 +631,6 @@ var TwinRuntime = class {
|
|
|
583
631
|
}
|
|
584
632
|
};
|
|
585
633
|
|
|
586
|
-
// src/yms-profile.ts
|
|
587
|
-
var YARD_BIZSTEP = {
|
|
588
|
-
arriving: "urn:epcglobal:cbv:bizstep:arriving",
|
|
589
|
-
// 게이트-인
|
|
590
|
-
staging: "urn:epcglobal:cbv:bizstep:staging",
|
|
591
|
-
// 야드 슬롯 주차·대기
|
|
592
|
-
loading: "urn:epcglobal:cbv:bizstep:loading",
|
|
593
|
-
// 도크 작업(상차: 트레일러←화물)
|
|
594
|
-
unloading: "urn:epcglobal:cbv:bizstep:unloading",
|
|
595
|
-
// 도크 작업(하차: 트레일러→화물)
|
|
596
|
-
departing: "urn:epcglobal:cbv:bizstep:departing"
|
|
597
|
-
// 게이트-아웃
|
|
598
|
-
};
|
|
599
|
-
var BTT_DELIVERY = "urn:epcglobal:cbv:btt:deliv";
|
|
600
|
-
function graiUri(companyPrefix, assetType, serial) {
|
|
601
|
-
return `urn:epc:id:grai:${companyPrefix}.${assetType}.${String(serial).padStart(6, "0")}`;
|
|
602
|
-
}
|
|
603
|
-
|
|
604
|
-
// src/mes-profile.ts
|
|
605
|
-
var MES_BIZSTEP = {
|
|
606
|
-
receiving: "urn:epcglobal:cbv:bizstep:receiving",
|
|
607
|
-
// 원자재 수령
|
|
608
|
-
producing: "urn:epcglobal:cbv:bizstep:commissioning",
|
|
609
|
-
// 생산(제품 최초 생성)
|
|
610
|
-
storing: "urn:epcglobal:cbv:bizstep:storing"
|
|
611
|
-
// 완제품 저장
|
|
612
|
-
};
|
|
613
|
-
var BTT_PRODORDER = "urn:epcglobal:cbv:btt:prodorder";
|
|
614
|
-
function sgtinUri(companyPrefix, itemRef, serial) {
|
|
615
|
-
return `urn:epc:id:sgtin:${companyPrefix}.${itemRef}.${serial}`;
|
|
616
|
-
}
|
|
617
|
-
|
|
618
634
|
// src/flow-engine.ts
|
|
619
635
|
var BASE_EPOCH = Date.parse("2026-01-01T00:00:00Z");
|
|
620
636
|
function mulberry32(seed) {
|
|
@@ -1438,10 +1454,13 @@ var MesKernel = class extends FlowEngine {
|
|
|
1438
1454
|
BTT_PRODORDER,
|
|
1439
1455
|
CMD,
|
|
1440
1456
|
DISP,
|
|
1457
|
+
DOMAIN_CATALOG,
|
|
1458
|
+
DOMAIN_SYSTEMS,
|
|
1441
1459
|
EPCIS_CONTEXT,
|
|
1442
1460
|
EventJournal,
|
|
1443
1461
|
FlowEngine,
|
|
1444
1462
|
MES_BIZSTEP,
|
|
1463
|
+
MES_NODE_TYPES,
|
|
1445
1464
|
MES_PART_GTINS,
|
|
1446
1465
|
MES_PRODUCT_GTINS,
|
|
1447
1466
|
MesKernel,
|
|
@@ -1451,8 +1470,10 @@ var MesKernel = class extends FlowEngine {
|
|
|
1451
1470
|
TwinObserver,
|
|
1452
1471
|
TwinRuntime,
|
|
1453
1472
|
UTC_OFFSET,
|
|
1473
|
+
WMS_NODE_TYPES,
|
|
1454
1474
|
WmsKernel,
|
|
1455
1475
|
YARD_BIZSTEP,
|
|
1476
|
+
YMS_NODE_TYPES,
|
|
1456
1477
|
YmsKernel,
|
|
1457
1478
|
aggregationEvent,
|
|
1458
1479
|
compareStates,
|
package/package.json
CHANGED