{ "$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 }