Files
DAT10/data/schema/dat10_input_schema.json
T
2026-10-06 13:37:13 +09:00

137 lines
3.6 KiB
JSON

{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "DAT10_Tactical_SupplyChain_Inventory_Schema",
"description": "전술 통신 두절 환경 야전 군수 재고 및 방산 공급망 트랜잭션 표준 입력 스키마",
"type": "object",
"properties": {
"transaction_id": {
"type": "string",
"pattern": "^TX-[A-Z0-9]{8,16}$",
"description": "고유 트랜잭션 식별자 (UUID 또는 해시 기반)"
},
"terminal_id": {
"type": "string",
"pattern": "^TERM-[A-Z0-9]{4,8}$",
"description": "작전 단말기 ID"
},
"unit_id": {
"type": "string",
"pattern": "^(DIV|BDE|BN|CO)-[0-9]{2,4}$",
"description": "부대 제대 식별자"
},
"nsn_code": {
"type": "string",
"pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{3}-[0-9]{4}$",
"description": "국가재고번호 (NATO Stock Number)"
},
"item_name": {
"type": "string",
"minLength": 2,
"maxLength": 100,
"description": "품목명"
},
"supply_class": {
"type": "string",
"enum": [
"Class_I",
"Class_II",
"Class_III",
"Class_IV",
"Class_V",
"Class_IX"
],
"description": "군수 보급 분류 (I:식량, II:피복장구, III:유류, IV:건설자재, V:탄약, IX:수리부속)"
},
"tx_type": {
"type": "string",
"enum": [
"RECEIPT",
"ISSUE",
"TRANSFER",
"DISPOSAL",
"ADJUSTMENT",
"FIELD_CONSUME"
],
"description": "트랜잭션 유형 (입고, 불출, 이관, 폐기, 재고조정, 야전소모)"
},
"quantity": {
"type": "integer",
"minimum": 1,
"maximum": 1000000,
"description": "변동 수량"
},
"current_stock": {
"type": "integer",
"minimum": 0,
"description": "트랜잭션 발생 직후 로컬 잔여 재고"
},
"unit_cost": {
"type": "number",
"minimum": 0.0,
"description": "단위당 조달 단가 (USD / KRW)"
},
"comms_status": {
"type": "string",
"enum": [
"ONLINE",
"OFFLINE_LOCAL",
"OFFLINE_P2P",
"DEGRADED_EW"
],
"description": "트랜잭션 기록 당시 통신 상태"
},
"grid_coords": {
"type": "string",
"pattern": "^[0-9]{2}[A-Z]{3}[0-9]{8}$",
"description": "MGRS 군사격자 좌표 (예: 52SDJ12345678)"
},
"weather_condition": {
"type": "string",
"enum": [
"CLEAR",
"HEAVY_RAIN",
"SNOW_STORM",
"DESERT_HEAT",
"FOG"
],
"description": "야전 기상 환경"
},
"lamport_timestamp": {
"type": "integer",
"minimum": 0,
"description": "분산 인과율 추적을 위한 램포트 논리 시계 (Lamport Logical Clock)"
},
"timestamp_utc": {
"type": "string",
"format": "date-time",
"description": "ISO 8601 UTC 생성 일시"
},
"prev_hash": {
"type": "string",
"pattern": "^[a-f0-9]{64}$",
"description": "이전 로컬 트랜잭션 레코드의 SHA-256 해시"
},
"record_hash": {
"type": "string",
"pattern": "^[a-f0-9]{64}$",
"description": "무결성 보증을 위한 본 트랜잭션의 SHA-256 해시"
}
},
"required": [
"transaction_id",
"terminal_id",
"unit_id",
"nsn_code",
"item_name",
"supply_class",
"tx_type",
"quantity",
"current_stock",
"comms_status",
"lamport_timestamp",
"timestamp_utc",
"prev_hash",
"record_hash"
],
"additionalProperties": false
}