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:
forge-bot 2026-07-19 09:58:39 +00:00
parent 8219b85f14
commit bec83c721e
73 changed files with 10705 additions and 35 deletions

112
db/schema.d/65-cm.sql Normal file
View file

@ -0,0 +1,112 @@
-- cm 모듈 (공통 / common) 스키마
-- 공통코드/파라미터/휴일/환율/채번/공통로그 + seed 데이터. Prefix 65.
-- Loaded into PostgreSQL on first boot (docker-entrypoint-initdb.d).
-- ---------------------------------------------------------------------------
-- 공통코드 (cm_code)
-- ---------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS cm_code (
code_grp TEXT NOT NULL, -- 코드 그룹 (예: CCY, CHANNEL)
code TEXT NOT NULL, -- 코드 값
code_name TEXT NOT NULL, -- 코드 명
sort_ord INTEGER NOT NULL DEFAULT 0,
use_yn TEXT NOT NULL DEFAULT 'Y',
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
PRIMARY KEY (code_grp, code)
);
-- ---------------------------------------------------------------------------
-- 공통 파라미터 (cm_param) - 시스템 운영 파라미터 (BIZ_DATE 포함)
-- ---------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS cm_param (
param_key TEXT PRIMARY KEY,
param_val TEXT NOT NULL,
descr TEXT NOT NULL DEFAULT '',
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
-- ---------------------------------------------------------------------------
-- 휴일 (cm_holiday) - 영업일 계산에 사용
-- ---------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS cm_holiday (
holi_date DATE PRIMARY KEY,
holi_name TEXT NOT NULL,
nation TEXT NOT NULL DEFAULT 'KR'
);
-- ---------------------------------------------------------------------------
-- 환율 (cm_fx_rate) - 통화별 기준일 환율 (bps of 100 = KRW*100/unit)
-- ---------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS cm_fx_rate (
ccy TEXT NOT NULL,
base_date DATE NOT NULL,
rate_bps BIGINT NOT NULL, -- KRW per unit * 100
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
PRIMARY KEY (ccy, base_date)
);
-- ---------------------------------------------------------------------------
-- 채번 (cm_seq) - 이름있는 공통 시퀀스 (CM_SEQ 서비스)
-- ---------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS cm_seq (
seq_name TEXT PRIMARY KEY,
seq_val BIGINT NOT NULL DEFAULT 0,
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
-- ---------------------------------------------------------------------------
-- 공통 로그 (cm_log) - CM_LOG 서비스 + cm_purge_batch 대상
-- ---------------------------------------------------------------------------
CREATE SEQUENCE IF NOT EXISTS cm_log_seq;
CREATE TABLE IF NOT EXISTS cm_log (
log_id BIGINT PRIMARY KEY,
svc_name TEXT NOT NULL DEFAULT '',
log_level TEXT NOT NULL DEFAULT 'I', -- I/W/E
msg TEXT NOT NULL DEFAULT '',
biz_date DATE NOT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
CREATE INDEX IF NOT EXISTS ix_cm_log_date ON cm_log (biz_date);
-- ---------------------------------------------------------------------------
-- Seed rows
-- ---------------------------------------------------------------------------
INSERT INTO cm_code (code_grp, code, code_name, sort_ord) VALUES
('CCY', 'KRW', '원화', 1),
('CCY', 'USD', '미국 달러', 2),
('CCY', 'JPY', '일본 엔', 3),
('CCY', 'EUR', '유로', 4),
('CHANNEL', 'POS', 'POS 단말', 1),
('CHANNEL', 'EDC', 'EDC 단말', 2),
('CHANNEL', 'EDI', 'EDI 청구', 3),
('CHANNEL', 'FOREIGN', '해외 매입', 4),
('STATUS', 'A', '접수', 1),
('STATUS', 'S', '정산완료', 2),
('STATUS', 'C', '취소', 3)
ON CONFLICT (code_grp, code) DO NOTHING;
INSERT INTO cm_param (param_key, param_val, descr) VALUES
('BIZ_DATE', '2026-07-19', '현재 영업일'),
('VAT_RATE', '10', '부가세율(%)'),
('WHT_BPS', '2200', '원천징수율(bps)'),
('LOG_KEEP_DAYS','90', '공통로그 보존일수'),
('SETTLE_CYCLE','1', '정산주기(일)')
ON CONFLICT (param_key) DO NOTHING;
INSERT INTO cm_holiday (holi_date, holi_name, nation) VALUES
('2026-01-01', '신정', 'KR'),
('2026-03-01', '삼일절', 'KR'),
('2026-05-05', '어린이날', 'KR'),
('2026-08-15', '광복절', 'KR'),
('2026-12-25', '성탄절', 'KR')
ON CONFLICT (holi_date) DO NOTHING;
INSERT INTO cm_fx_rate (ccy, base_date, rate_bps) VALUES
('USD', '2026-07-19', 135000), -- 1350.00 KRW
('JPY', '2026-07-19', 900), -- 9.00 KRW
('EUR', '2026-07-19', 147000) -- 1470.00 KRW
ON CONFLICT (ccy, base_date) DO NOTHING;
INSERT INTO cm_seq (seq_name, seq_val) VALUES
('BATCH', 0), ('SLIP', 0), ('TICKET', 0)
ON CONFLICT (seq_name) DO NOTHING;