# KBX v6 — Reconcile Standard

## 원칙
대사는 사람이 OMS 화면과 WMS 화면을 번갈아 열어 숫자를 비교하는 작업을 시스템이 대신하는 기능이다.

모든 대사 Row는 다음 구조를 갖는다.

`Reference → Expected → Actual → Difference → Reason → Resolution`

## 대표 대사
- OMS 주문수량 ↔ WMS 출고지시수량
- OMS 출고지시 ↔ WMS 피킹/검수수량
- 주문 할당수량 ↔ 재고 Reservation
- WMS 실재고 ↔ ERP 재고 Snapshot
- 외부 송장전송 요청 ↔ 판매채널 반영상태

## 데이터 구조
`kbx.reconcile_items`는 비교 결과 Projection이다. 원천 데이터를 복사해 새로운 진실로 만들지 않는다. `source_id`, `target_id`, `evidence`는 문제 원인을 추적하기 위한 근거다.

## 상태
- `matched`: 일치
- `mismatch`: 불일치
- `pending`: 비동기 처리 중이라 아직 확정할 수 없음
- `resolved`: 이전 불일치가 원천 정상화로 해소됨

## 비동기 시스템 주의
Outbox가 아직 소비되지 않은 순간의 차이를 곧바로 장애로 판단하면 False Positive가 많아진다. 각 대사 유형에 `grace period`를 두고, 정상적인 eventual consistency 시간 안의 건은 `pending`으로 분류한다.

예: OMS가 출고지시 Outbox를 Commit한 직후 WMS Inbox가 아직 수신하지 못한 3초 동안은 `mismatch`가 아니라 `pending`이다.

## Exception 전환
조사가 필요한 mismatch만 `COMMON-OPS-001`로 전환한다. Reconcile 화면에서 원천 데이터를 직접 UPDATE하지 않는다.
