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
110
db/schema.d/25-py.sql
Normal file
110
db/schema.d/25-py.sql
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
-- py 모듈 (지급) 스키마 - 지급 원장 / 지급계좌 / 지급파일 / 예약 / 조정 / 집계
|
||||
-- Loaded into PostgreSQL on first boot (docker-entrypoint-initdb.d). Prefix 25.
|
||||
|
||||
-- ---------------------------------------------------------------------------
|
||||
-- 지급 원장 (payout)
|
||||
-- status: R=요청, H=보류, A=승인, J=반려, F=파일편성, P=지급완료,
|
||||
-- C=취소, V=역분개, X=마감
|
||||
-- ---------------------------------------------------------------------------
|
||||
CREATE SEQUENCE IF NOT EXISTS py_payout_seq;
|
||||
CREATE TABLE IF NOT EXISTS py_payout (
|
||||
payout_id BIGINT PRIMARY KEY,
|
||||
merchant_id TEXT NOT NULL DEFAULT '',
|
||||
account_no TEXT NOT NULL DEFAULT '',
|
||||
amount BIGINT NOT NULL,
|
||||
fee BIGINT NOT NULL DEFAULT 0,
|
||||
net BIGINT NOT NULL,
|
||||
status TEXT NOT NULL,
|
||||
channel TEXT NOT NULL DEFAULT 'STD', -- STD/SPLIT/BULK/ADVANCE
|
||||
file_id BIGINT NOT NULL DEFAULT 0,
|
||||
retry_count INTEGER NOT NULL DEFAULT 0,
|
||||
reject_reason TEXT NOT NULL DEFAULT '',
|
||||
biz_date DATE NOT NULL,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
-- ---------------------------------------------------------------------------
|
||||
-- 지급계좌 (py_account)
|
||||
-- ---------------------------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS py_account (
|
||||
account_no TEXT PRIMARY KEY,
|
||||
merchant_id TEXT NOT NULL DEFAULT '',
|
||||
bank_code TEXT NOT NULL DEFAULT '',
|
||||
holder TEXT NOT NULL DEFAULT '',
|
||||
balance BIGINT NOT NULL DEFAULT 0,
|
||||
status TEXT NOT NULL DEFAULT 'ACTIVE',
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
-- ---------------------------------------------------------------------------
|
||||
-- 지급 파일 (py_file) - status: G=생성, C=확정
|
||||
-- ---------------------------------------------------------------------------
|
||||
CREATE SEQUENCE IF NOT EXISTS py_file_seq;
|
||||
CREATE TABLE IF NOT EXISTS py_file (
|
||||
file_id BIGINT PRIMARY KEY,
|
||||
biz_date DATE NOT NULL,
|
||||
file_name TEXT NOT NULL,
|
||||
record_count BIGINT NOT NULL DEFAULT 0,
|
||||
total_amount BIGINT NOT NULL DEFAULT 0,
|
||||
status TEXT NOT NULL DEFAULT 'G',
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
confirmed_at TIMESTAMPTZ
|
||||
);
|
||||
|
||||
-- ---------------------------------------------------------------------------
|
||||
-- 지급 예약 (py_schedule) - status: S=예약, D=실행
|
||||
-- ---------------------------------------------------------------------------
|
||||
CREATE SEQUENCE IF NOT EXISTS py_schedule_seq;
|
||||
CREATE TABLE IF NOT EXISTS py_schedule (
|
||||
schedule_id BIGINT PRIMARY KEY,
|
||||
payout_id BIGINT NOT NULL,
|
||||
run_date DATE NOT NULL,
|
||||
status TEXT NOT NULL DEFAULT 'S',
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
-- ---------------------------------------------------------------------------
|
||||
-- 지급 조정 (py_adjust)
|
||||
-- ---------------------------------------------------------------------------
|
||||
CREATE SEQUENCE IF NOT EXISTS py_adjust_seq;
|
||||
CREATE TABLE IF NOT EXISTS py_adjust (
|
||||
adj_id BIGINT PRIMARY KEY,
|
||||
payout_id BIGINT NOT NULL,
|
||||
delta BIGINT NOT NULL,
|
||||
reason TEXT NOT NULL DEFAULT '',
|
||||
biz_date DATE NOT NULL,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
-- ---------------------------------------------------------------------------
|
||||
-- 지급 원장 상세 (py_ledger) - 이체/연계 원장
|
||||
-- ---------------------------------------------------------------------------
|
||||
CREATE SEQUENCE IF NOT EXISTS py_ledger_seq;
|
||||
CREATE TABLE IF NOT EXISTS py_ledger (
|
||||
ledger_id BIGINT PRIMARY KEY,
|
||||
payout_id BIGINT NOT NULL,
|
||||
entry_type TEXT NOT NULL,
|
||||
amount BIGINT NOT NULL,
|
||||
biz_date DATE NOT NULL,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
-- ---------------------------------------------------------------------------
|
||||
-- 가맹점 일별 지급 집계 (py_summary) - 배치/서비스가 채움
|
||||
-- ---------------------------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS py_summary (
|
||||
merchant_id TEXT NOT NULL,
|
||||
biz_date DATE NOT NULL,
|
||||
payout_count BIGINT NOT NULL DEFAULT 0,
|
||||
payout_amount BIGINT NOT NULL DEFAULT 0,
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
PRIMARY KEY (merchant_id, biz_date)
|
||||
);
|
||||
|
||||
-- Seed payout accounts so PAY_REMIT/PAY_ACCTCHK have counterparties.
|
||||
INSERT INTO py_account (account_no, merchant_id, bank_code, holder, balance, status) VALUES
|
||||
('110-1234-567890', 'M0001', '020', '클라로 커피', 500000000, 'ACTIVE'),
|
||||
('333-9876-543210', 'M0002', '088', '포지 마트', 500000000, 'ACTIVE'),
|
||||
('456-0000-111222', 'M0003', '004', '클라로 면세점', 900000000, 'ACTIVE')
|
||||
ON CONFLICT (account_no) DO NOTHING;
|
||||
Loading…
Add table
Add a link
Reference in a new issue