-- ===========================================================================
-- 74-netio.sql : 외부 연동·전문처리 (Wave L)
--   외부 카드망(밴사/VAN) ISO 8583 왕복 로그 + 클리어링 파일 교환 레지스트리 +
--   store-and-forward 큐 확장. 소켓·바이너리 전문처리 계층.
-- ===========================================================================

-- 외부 전문 왕복 로그 (요청 0200 → 응답 0210, 왕복시간·응답코드)
CREATE SEQUENCE IF NOT EXISTS mg_netlog_seq START 600000;
CREATE TABLE IF NOT EXISTS mg_netlog (
    net_id       BIGINT PRIMARY KEY,
    purchase_id  BIGINT,
    channel      TEXT NOT NULL DEFAULT 'CH01',
    peer         TEXT NOT NULL DEFAULT 'BC-NET',  -- 상대망(BC-NET/VISANET/...)
    req_mti      TEXT NOT NULL,
    rsp_mti      TEXT,
    stan         TEXT,
    rrn          TEXT,                             -- 참조번호(DE37)
    resp_code    TEXT,                             -- DE39: 00=승인 05=거절 91=타임아웃
    approval_no  TEXT,                             -- DE38
    amount       BIGINT NOT NULL DEFAULT 0,
    rtt_ms       INTEGER NOT NULL DEFAULT 0,       -- 왕복시간(ms)
    req_wire     TEXT,                             -- 요청 전문(hex)
    rsp_wire     TEXT,                             -- 응답 전문(hex)
    status       TEXT NOT NULL DEFAULT 'OK',       -- OK/TIMEOUT/ERROR
    created_at   TIMESTAMPTZ NOT NULL DEFAULT now()
);
CREATE INDEX IF NOT EXISTS ix_netlog_pid ON mg_netlog(purchase_id);
CREATE INDEX IF NOT EXISTS ix_netlog_rc  ON mg_netlog(resp_code);

-- 클리어링 파일 교환 레지스트리 (아웃바운드 프레젠트먼트 / 인바운드 정산파일)
CREATE SEQUENCE IF NOT EXISTS cl_file_seq START 640000;
CREATE TABLE IF NOT EXISTS cl_clearing_file (
    file_id      BIGINT PRIMARY KEY,
    direction    TEXT NOT NULL,                    -- OUT(프레젠트먼트)/IN(정산)
    filename     TEXT NOT NULL,
    scheme       TEXT NOT NULL DEFAULT 'BC',
    biz_date     DATE NOT NULL,
    rec_count    BIGINT NOT NULL DEFAULT 0,
    total_amount BIGINT NOT NULL DEFAULT 0,
    checksum     TEXT,
    status       TEXT NOT NULL DEFAULT 'GENERATED',-- GENERATED/SENT/ACKED/INGESTED
    created_at   TIMESTAMPTZ NOT NULL DEFAULT now()
);
