갭분석 2·3순위 보강. 전부 실측 검증. ① interchange qualification 심화 (MCC 업종별 등급) - mm_merch_mcc: 40개 가맹점 → 실제 4자리 ISO MCC (커피 5814, 마트 5411, 면세점 5309, 병원 8062, 주유소 5541, 여행사 4722, 숙박 7011 ...) - mm_mcc: 26개 MCC + risk tier(1 저율/2 표준/3 고율) - st_interchange_rate 에 MCC×카드종류 요율 override → fee_component 재계산 - 실측: tier1(병원0.69%/약국0.72%/주유0.75%) < tier2(요식~1.15%) < tier3(여행~1.62%) — 실제 매입사 interchange 차등 그대로. 3층 항등 7560/7560, 펀딩 2925/2925 유지. ② ISO 8583 클리어링 메시지 클래스 (승인전문과 분리된 클리어링 단계) - mg_clearing: PRESENTMENT(1240)/CHARGEBACK(1442)/REPRESENT/RECONCILE(1500)/ FEE_COLLECT(1740). 실측 8,658건. - MG_CLEARING_INQ 서비스(mg, 120줄): 클래스/영업일/pid 필터 집계 조회. 실호출 검증(DUAL 6,386 / SINGLE 2,272, 대표 MTI 1240). ③ 이중/단일 메시지 구분 - msg_type: 신용=DUAL(5,288) / 체크=SINGLE(2,272). 실제 dual/single-message 프로토콜. 포털 "정산 경제"(#econ)에 MCC 등급표 + ISO8583 클리어링 메시지표 추가. 통합 빌드 error 0, 도메인 5,883 서비스 AVAIL, 6단 체인 유지. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
36 lines
2.1 KiB
SQL
36 lines
2.1 KiB
SQL
-- ===========================================================================
|
|
-- 71-econ2.sql : 매입사 경제모델 2차 고도화 (갭분석 2·3순위)
|
|
-- ① interchange qualification 심화: MCC(업종)별 요율 tier
|
|
-- ② ISO 8583 클리어링 메시지 클래스 (presentment/chargeback/recon/fee/reject)
|
|
-- ③ 이중메시지 vs 단일메시지 구분
|
|
-- ===========================================================================
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
-- 1. 가맹점 → MCC 매핑 (실제 4자리 ISO MCC).
|
|
-- ---------------------------------------------------------------------------
|
|
CREATE TABLE IF NOT EXISTS mm_merch_mcc (
|
|
merchant_id TEXT PRIMARY KEY,
|
|
mcc TEXT NOT NULL
|
|
);
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
-- 2. ISO 8583 클리어링 메시지 (승인전문 mg_msg_log 과 별개인 클리어링 단계).
|
|
-- msg_class: 실제 ISO 8583 클리어링 기능 (Berlin Group).
|
|
-- msg_type : DUAL(신용/서명-승인과 클리어링 분리) / SINGLE(PIN/직불-통합).
|
|
-- ---------------------------------------------------------------------------
|
|
CREATE SEQUENCE IF NOT EXISTS mg_clearing_seq START 500000;
|
|
CREATE TABLE IF NOT EXISTS mg_clearing (
|
|
clr_id BIGINT PRIMARY KEY,
|
|
purchase_id BIGINT,
|
|
scheme TEXT NOT NULL DEFAULT 'BC',
|
|
msg_class TEXT NOT NULL, -- PRESENTMENT/CHARGEBACK/REPRESENT/RECONCILE/FEE_COLLECT/FILE_REJECT
|
|
mti TEXT NOT NULL, -- 1240(1st present)/1442(chargeback)/1740(fee)/1500(recon)/1644(file action)
|
|
msg_type TEXT NOT NULL DEFAULT 'DUAL', -- DUAL / SINGLE
|
|
amount BIGINT NOT NULL DEFAULT 0,
|
|
biz_date DATE NOT NULL,
|
|
status TEXT NOT NULL DEFAULT 'ACCEPTED', -- ACCEPTED/REJECTED
|
|
reject_code TEXT, -- 파일/메시지 거부 사유
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
);
|
|
CREATE INDEX IF NOT EXISTS ix_clearing_pid ON mg_clearing(purchase_id);
|
|
CREATE INDEX IF NOT EXISTS ix_clearing_class ON mg_clearing(msg_class);
|