{
  "schemaVersion": "1.0",
  "fixtureVersion": "1.4.0",
  "syntheticOnly": true,
  "fixedReferenceClock": "2026-08-08T09:00:00Z",
  "testTenant": {
    "id": "11111111-1111-4111-8111-111111111111",
    "key": "KBX-TEST-TENANT"
  },
  "actors": [
    {
      "id": "actor.operator",
      "displayName": "테스트작업자",
      "userKey": "kbx-test-operator"
    },
    {
      "id": "actor.supervisor",
      "displayName": "테스트관리자",
      "userKey": "kbx-test-supervisor"
    }
  ],
  "fixtureSets": [
    {
      "id": "fixture.oms.orders.bulk-ship",
      "description": "출고 가능 2건 + 이미 완료되어 거부될 1건",
      "refs": [
        "order.ship.ready.1",
        "order.ship.ready.2",
        "order.ship.rejected.1"
      ]
    },
    {
      "id": "fixture.oms.order-register",
      "description": "거래처/창고/품목 Lookup 입력용",
      "refs": [
        "customer.test.1",
        "warehouse.seoul",
        "item.shoe.black270"
      ]
    },
    {
      "id": "fixture.oms.order-conflict",
      "description": "version=7 주문 한 건",
      "refs": [
        "order.conflict.1",
        "idem.oms.order-confirm.001"
      ]
    },
    {
      "id": "fixture.oms.order-import",
      "description": "6행 합성 Excel Import",
      "refs": [
        "file.order-import.6rows"
      ]
    },
    {
      "id": "fixture.wms.picking",
      "description": "A-03-02 위치 피킹 2개 필요",
      "refs": [
        "task.pick.1",
        "scan.location.a0302",
        "scan.item.shoe",
        "scan.item.wrong"
      ]
    },
    {
      "id": "fixture.common.operations",
      "description": "sourceVersion 10→11→10 순서 검증",
      "refs": [
        "event.stock-shortage.v10",
        "event.stock-recovered.v11"
      ]
    },
    {
      "id": "fixture.common.reconcile",
      "description": "OMS 10 / WMS 8 대사",
      "refs": [
        "reconcile.oms-wms.pending"
      ]
    },
    {
      "id": "fixture.erp.inventory-move",
      "description": "정상 이동과 동일창고 오류",
      "refs": [
        "move.valid.1",
        "move.invalid.same-warehouse"
      ]
    },
    {
      "id": "fixture.shell.user",
      "description": "Workspace 미저장 변경 UI 전용",
      "refs": [
        "ui.order.receiver"
      ]
    },
    {
      "id": "fixture.integration.outbox",
      "description": "외부연계 성공/일시/영구실패와 수동 재처리용 합성 메시지",
      "refs": [
        "integration.message.dispatch.1",
        "integration.message.dispatch.2",
        "integration.attempt.failed.1",
        "idem.integration.retry.001"
      ]
    },
    {
      "id": "fixture.integration.inbox",
      "description": "동일 Inbox 메시지 중복 수신 검증",
      "refs": [
        "integration.inbox.message.1"
      ]
    },
    {
      "id": "fixture.external-data.kis",
      "description": "KIS 현재가 fresh→expired strict 정책 검증",
      "refs": [
        "provider.kis.price.success",
        "external-data.kis.cached.expired"
      ]
    },
    {
      "id": "fixture.external-data.opendart",
      "description": "OPENDART 회사개황 stale-while-revalidate 검증",
      "refs": [
        "provider.opendart.company.success",
        "external-data.opendart.cached.stale"
      ]
    },
    {
      "id": "fixture.erp.item-price-fast-entry",
      "refs": [
        "item.shoe.black270",
        "idem.erp.item-price.001"
      ]
    },
    {
      "id": "fixture.erp.inventory-explorer",
      "refs": [
        "item.shoe.black270",
        "warehouse.seoul"
      ]
    },
    {
      "id": "fixture.erp.item-master-lifecycle",
      "description": "T02 품목 수정·충돌·사용중지 Lifecycle",
      "refs": [
        "item.shoe.black270",
        "warehouse.seoul"
      ]
    }
  ],
  "refs": {
    "customer.test.1": {
      "kind": "customer",
      "id": "20000000-0000-4000-8000-000000000001",
      "code": "TEST-C001",
      "name": "테스트거래처A"
    },
    "warehouse.seoul": {
      "kind": "warehouse",
      "id": "30000000-0000-4000-8000-000000000001",
      "code": "TEST-WH01",
      "name": "테스트서울센터"
    },
    "warehouse.busan": {
      "kind": "warehouse",
      "id": "30000000-0000-4000-8000-000000000002",
      "code": "TEST-WH02",
      "name": "테스트부산센터"
    },
    "item.shoe.black270": {
      "kind": "item",
      "id": "40000000-0000-4000-8000-000000000001",
      "code": "TEST-ITEM-001",
      "name": "테스트운동화"
    },
    "item.wrong": {
      "kind": "item",
      "id": "40000000-0000-4000-8000-000000000002",
      "code": "TEST-ITEM-999",
      "name": "테스트오상품"
    },
    "order.ship.ready.1": {
      "kind": "order",
      "id": "50000000-0000-4000-8000-000000000001",
      "orderNo": "TEST-ORD-SHIP-001",
      "status": "READY",
      "version": 1
    },
    "order.ship.ready.2": {
      "kind": "order",
      "id": "50000000-0000-4000-8000-000000000002",
      "orderNo": "TEST-ORD-SHIP-002",
      "status": "DRAFT",
      "version": 3
    },
    "order.ship.rejected.1": {
      "kind": "order",
      "id": "50000000-0000-4000-8000-000000000003",
      "orderNo": "TEST-ORD-SHIP-003",
      "status": "SHIPPED",
      "version": 5
    },
    "order.conflict.1": {
      "kind": "order",
      "id": "50000000-0000-4000-8000-000000000004",
      "orderNo": "TEST-ORD-CONFLICT-001",
      "status": "DRAFT",
      "version": 7
    },
    "task.pick.1": {
      "kind": "picking-task",
      "id": "60000000-0000-4000-8000-000000000001",
      "taskNo": "TEST-PICK-001",
      "status": "READY",
      "version": 1
    },
    "scan.location.a0302": {
      "kind": "barcode",
      "value": "TEST-LOC-A0302",
      "classification": "synthetic"
    },
    "scan.item.shoe": {
      "kind": "barcode",
      "value": "TEST-EAN-000001",
      "classification": "synthetic"
    },
    "scan.item.wrong": {
      "kind": "barcode",
      "value": "TEST-EAN-999999",
      "classification": "synthetic"
    },
    "event.stock-shortage.v10": {
      "kind": "domain-event",
      "sourceId": "TEST-ORD-EXC-001",
      "referenceNo": "TEST-ORD-EXC-001",
      "sourceVersion": 10,
      "code": "STOCK_SHORTAGE"
    },
    "event.stock-recovered.v11": {
      "kind": "domain-event",
      "sourceId": "TEST-ORD-EXC-001",
      "referenceNo": "TEST-ORD-EXC-001",
      "sourceVersion": 11,
      "code": "STOCK_SHORTAGE"
    },
    "reconcile.oms-wms.pending": {
      "kind": "reconcile",
      "referenceNo": "TEST-ORD-REC-001",
      "expected": "10",
      "actual": "8",
      "difference": "-2"
    },
    "move.valid.1": {
      "kind": "inventory-move",
      "id": "70000000-0000-4000-8000-000000000001",
      "moveNo": "TEST-MOVE-001",
      "from": "warehouse.seoul",
      "to": "warehouse.busan"
    },
    "move.invalid.same-warehouse": {
      "kind": "inventory-move",
      "id": "70000000-0000-4000-8000-000000000002",
      "moveNo": "TEST-MOVE-ERR-001",
      "from": "warehouse.seoul",
      "to": "warehouse.seoul"
    },
    "file.order-import.6rows": {
      "kind": "xlsx-fixture",
      "path": "tests/fixtures/files/order-import-6rows.json",
      "rows": 6,
      "classification": "synthetic"
    },
    "ui.order.receiver": {
      "kind": "ui-value",
      "value": "테스트수취인"
    },
    "idem.oms.bulk-ship.001": {
      "kind": "idempotency-key",
      "value": "kbx-test-oms-bulk-ship-001"
    },
    "idem.import.commit.001": {
      "kind": "idempotency-key",
      "value": "kbx-test-import-commit-001"
    },
    "idem.wms.location.001": {
      "kind": "idempotency-key",
      "value": "kbx-test-wms-location-001"
    },
    "idem.wms.item.001": {
      "kind": "idempotency-key",
      "value": "kbx-test-wms-item-001"
    },
    "idem.wms.location.002": {
      "kind": "idempotency-key",
      "value": "kbx-test-wms-location-002"
    },
    "idem.wms.wrong.001": {
      "kind": "idempotency-key",
      "value": "kbx-test-wms-wrong-001"
    },
    "integration.message.dispatch.1": {
      "kind": "integration-message",
      "id": "81000000-0000-4000-8000-000000000001",
      "integrationId": "integration.oms.wms.dispatch",
      "aggregateId": "TEST-ORD-INT-001",
      "messageKey": "TEST-EVENT-INT-001"
    },
    "integration.message.dispatch.2": {
      "kind": "integration-message",
      "id": "81000000-0000-4000-8000-000000000002",
      "integrationId": "integration.oms.wms.dispatch",
      "aggregateId": "TEST-ORD-INT-002",
      "messageKey": "TEST-EVENT-INT-002"
    },
    "integration.inbox.message.1": {
      "kind": "integration-message",
      "id": "81000000-0000-4000-8000-000000000003",
      "integrationId": "integration.wms.oms.picking-result",
      "aggregateId": "TEST-PICK-INT-001",
      "messageKey": "TEST-EVENT-INBOX-001"
    },
    "integration.attempt.failed.1": {
      "kind": "integration-attempt",
      "id": "82000000-0000-4000-8000-000000000001",
      "integrationId": "integration.oms.wms.dispatch",
      "state": "failed"
    },
    "idem.integration.retry.001": {
      "kind": "idempotency-key",
      "value": "kbx-test-integration-retry-001"
    },
    "provider.kis.price.success": {
      "kind": "provider-response",
      "providerId": "provider.kis.market-data",
      "datasetId": "dataset.kis.domestic-stock.current-price",
      "fixturePath": "tests/fixtures/providers/kis-current-price-success.json",
      "classification": "synthetic"
    },
    "external-data.kis.cached.expired": {
      "kind": "external-data-cache",
      "datasetId": "dataset.kis.domestic-stock.current-price",
      "cacheKey": "TEST-KIS-005930",
      "receivedAt": "2026-08-08T08:59:50Z",
      "freshUntil": "2026-08-08T08:59:53Z",
      "usableUntil": "2026-08-08T08:59:53Z"
    },
    "provider.opendart.company.success": {
      "kind": "provider-response",
      "providerId": "provider.opendart",
      "datasetId": "dataset.opendart.company-profile",
      "fixturePath": "tests/fixtures/providers/opendart-company-success.json",
      "classification": "synthetic"
    },
    "external-data.opendart.cached.stale": {
      "kind": "external-data-cache",
      "datasetId": "dataset.opendart.company-profile",
      "cacheKey": "TEST-DART-001",
      "receivedAt": "2026-08-07T08:00:00Z",
      "freshUntil": "2026-08-08T08:00:00Z",
      "usableUntil": "2026-08-15T08:00:00Z"
    },
    "idem.erp.item-price.001": {
      "kind": "idempotency-key",
      "value": "kbx-test-erp-item-price-001"
    },
    "idem.oms.order-confirm.001": {
      "kind": "idempotency-key",
      "value": "KBX-TEST-ORDER-CONFIRM-001"
    }
  }
}
