Phase 2b: 11개 모듈 전량 실동작 (333 서비스, 전서버 부팅)
- 10개 모듈 추가/확장(au py rc st lg cl mm vl mg cm), 각 30 서비스 = 330 + tmsrv - build.sh 자동발견으로 11 모듈서버 + dbio 라이브러리 23 + 배치 22 빌드 - schema.d 11파일 → 75 테이블, 모듈별 disjoint - 부팅 리소스 규명: fs.mqueue.queues_max=8192(330큐>256), NDRX_MSGSIZEMAX 16000· MSGMAX 50(큐당 5.6MB→0.8MB), msgqueue ulimit 2GB → 전 12서버 runok - 검증: xadmin psc 333 AVAIL, 매입체인 XA 커밋, prepared_xacts=0 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
8219b85f14
commit
bec83c721e
73 changed files with 10705 additions and 35 deletions
162
db/schema.d/50-mm.sql
Normal file
162
db/schema.d/50-mm.sql
Normal file
|
|
@ -0,0 +1,162 @@
|
|||
-- mm 모듈 (마스터/master) 상세 스키마
|
||||
-- 가맹점 확장원장 / 수수료율 / BIN / 공통코드 / 한도 / 발급사 / 단말 / MCC /
|
||||
-- 공휴일 / 환율 마스터 + 이력. Loaded on first boot (docker-entrypoint-initdb.d).
|
||||
|
||||
-- ---------------------------------------------------------------------------
|
||||
-- 가맹점 확장 마스터 (mm_merchant_ext) - base merchant를 보강하는 마스터 원장
|
||||
-- ---------------------------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS mm_merchant_ext (
|
||||
merchant_id TEXT PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
biz_reg_no TEXT NOT NULL DEFAULT '', -- 사업자등록번호
|
||||
grade TEXT NOT NULL DEFAULT 'C', -- 가맹점 등급 (S/A/B/C)
|
||||
settle_acct TEXT NOT NULL DEFAULT '', -- 정산 계좌
|
||||
mcc TEXT NOT NULL DEFAULT '0000', -- 업종코드
|
||||
status TEXT NOT NULL DEFAULT 'ACTIVE',-- ACTIVE / HOLD / DELETED
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
-- 가맹점 마스터 변경 이력
|
||||
CREATE SEQUENCE IF NOT EXISTS mm_merch_hist_seq;
|
||||
CREATE TABLE IF NOT EXISTS mm_merch_hist (
|
||||
hist_id BIGINT PRIMARY KEY,
|
||||
merchant_id TEXT NOT NULL,
|
||||
action TEXT NOT NULL, -- REG / UPD / DEL / STATUS / GRADE / ACCT
|
||||
before_val TEXT NOT NULL DEFAULT '',
|
||||
after_val TEXT NOT NULL DEFAULT '',
|
||||
memo TEXT NOT NULL DEFAULT '',
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
-- ---------------------------------------------------------------------------
|
||||
-- 수수료율 마스터 (mm_fee_rate) + 이력
|
||||
-- ---------------------------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS mm_fee_rate (
|
||||
merchant_id TEXT NOT NULL,
|
||||
card_type TEXT NOT NULL DEFAULT 'CREDIT',-- CREDIT / CHECK / PREPAID
|
||||
rate_bps BIGINT NOT NULL DEFAULT 25, -- basis points
|
||||
eff_date DATE NOT NULL DEFAULT current_date,
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
PRIMARY KEY (merchant_id, card_type)
|
||||
);
|
||||
|
||||
CREATE SEQUENCE IF NOT EXISTS mm_feerate_hist_seq;
|
||||
CREATE TABLE IF NOT EXISTS mm_fee_rate_hist (
|
||||
hist_id BIGINT PRIMARY KEY,
|
||||
merchant_id TEXT NOT NULL,
|
||||
card_type TEXT NOT NULL,
|
||||
rate_bps BIGINT NOT NULL,
|
||||
eff_date DATE NOT NULL,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
-- ---------------------------------------------------------------------------
|
||||
-- BIN 마스터 (mm_bin)
|
||||
-- ---------------------------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS mm_bin (
|
||||
bin TEXT PRIMARY KEY, -- 6-8 digit BIN
|
||||
issuer_cd TEXT NOT NULL DEFAULT 'UNKNOWN',
|
||||
card_brand TEXT NOT NULL DEFAULT 'LOCAL', -- VISA / MASTER / LOCAL
|
||||
card_type TEXT NOT NULL DEFAULT 'CREDIT',
|
||||
status TEXT NOT NULL DEFAULT 'ACTIVE',
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
-- ---------------------------------------------------------------------------
|
||||
-- 공통코드 마스터 (mm_code)
|
||||
-- ---------------------------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS mm_code (
|
||||
code_group TEXT NOT NULL,
|
||||
code TEXT NOT NULL,
|
||||
code_name TEXT NOT NULL DEFAULT '',
|
||||
sort_order INTEGER NOT NULL DEFAULT 0,
|
||||
status TEXT NOT NULL DEFAULT 'ACTIVE',
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
PRIMARY KEY (code_group, code)
|
||||
);
|
||||
|
||||
-- ---------------------------------------------------------------------------
|
||||
-- 가맹점 한도 마스터 (mm_limit)
|
||||
-- ---------------------------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS mm_limit (
|
||||
merchant_id TEXT PRIMARY KEY,
|
||||
daily_limit BIGINT NOT NULL DEFAULT 100000000,
|
||||
monthly_limit BIGINT NOT NULL DEFAULT 3000000000,
|
||||
per_txn_limit BIGINT NOT NULL DEFAULT 10000000,
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
-- ---------------------------------------------------------------------------
|
||||
-- 발급사 마스터 (mm_issuer)
|
||||
-- ---------------------------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS mm_issuer (
|
||||
issuer_cd TEXT PRIMARY KEY,
|
||||
issuer_name TEXT NOT NULL DEFAULT '',
|
||||
country TEXT NOT NULL DEFAULT 'KR',
|
||||
status TEXT NOT NULL DEFAULT 'ACTIVE',
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
-- ---------------------------------------------------------------------------
|
||||
-- 단말 마스터 (mm_terminal)
|
||||
-- ---------------------------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS mm_terminal (
|
||||
terminal_id TEXT PRIMARY KEY,
|
||||
merchant_id TEXT NOT NULL,
|
||||
model TEXT NOT NULL DEFAULT 'STD',
|
||||
status TEXT NOT NULL DEFAULT 'ACTIVE',
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
-- ---------------------------------------------------------------------------
|
||||
-- MCC 업종 마스터 (mm_mcc)
|
||||
-- ---------------------------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS mm_mcc (
|
||||
mcc TEXT PRIMARY KEY,
|
||||
mcc_name TEXT NOT NULL DEFAULT '',
|
||||
risk_level INTEGER NOT NULL DEFAULT 1
|
||||
);
|
||||
|
||||
-- ---------------------------------------------------------------------------
|
||||
-- 공휴일 마스터 (mm_holiday)
|
||||
-- ---------------------------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS mm_holiday (
|
||||
holiday_date DATE PRIMARY KEY,
|
||||
holiday_name TEXT NOT NULL DEFAULT '',
|
||||
nation TEXT NOT NULL DEFAULT 'KR'
|
||||
);
|
||||
|
||||
-- ---------------------------------------------------------------------------
|
||||
-- 환율 마스터 (mm_fx_rate)
|
||||
-- ---------------------------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS mm_fx_rate (
|
||||
ccy TEXT PRIMARY KEY,
|
||||
rate_bps BIGINT NOT NULL DEFAULT 100, -- KRW per unit, in bps of 100
|
||||
base_date DATE NOT NULL DEFAULT current_date,
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
-- ---------------------------------------------------------------------------
|
||||
-- 등급 통계 (mm_grade_stat) - mm_stat_batch가 채움
|
||||
-- ---------------------------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS mm_grade_stat (
|
||||
stat_date DATE NOT NULL,
|
||||
grade TEXT NOT NULL,
|
||||
merch_cnt BIGINT NOT NULL DEFAULT 0,
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
PRIMARY KEY (stat_date, grade)
|
||||
);
|
||||
|
||||
-- Seed 몇 개 마스터 (테스트/데모용)
|
||||
INSERT INTO mm_code (code_group, code, code_name, sort_order) VALUES
|
||||
('CARD_TYPE', 'CREDIT', '신용카드', 1),
|
||||
('CARD_TYPE', 'CHECK', '체크카드', 2),
|
||||
('GRADE', 'S', '최우수', 1),
|
||||
('GRADE', 'A', '우수', 2)
|
||||
ON CONFLICT (code_group, code) DO NOTHING;
|
||||
|
||||
INSERT INTO mm_issuer (issuer_cd, issuer_name, country) VALUES
|
||||
('BC', 'BC카드', 'KR'),
|
||||
('SHC', '신한카드', 'KR')
|
||||
ON CONFLICT (issuer_cd) DO NOTHING;
|
||||
Loading…
Add table
Add a link
Reference in a new issue