- 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>
67 lines
3.1 KiB
SQL
67 lines
3.1 KiB
SQL
-- ---------------------------------------------------------------------------
|
|
-- lg 모듈 (원장/ledger) - 복식부기 전표/원장/계정잔액 스키마 (prefix 40)
|
|
-- Loaded after 00-base.sql by docker-entrypoint-initdb.d.
|
|
-- lg 서비스/배치가 채우는 전표(voucher) + 원장 라인(ledger_line) + 계정잔액 테이블.
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
-- 전표 (voucher) - 하나의 회계 이벤트(매입전기/정산전기/조정/대체 등)의 헤더
|
|
CREATE SEQUENCE IF NOT EXISTS lg_voucher_seq;
|
|
CREATE TABLE IF NOT EXISTS lg_voucher (
|
|
voucher_id BIGINT PRIMARY KEY,
|
|
voucher_type TEXT NOT NULL, -- POST/DOUBLE/ADJ/REVERSE/TRANSFER/SETTLE/ACQ/FEE
|
|
ref_id BIGINT NOT NULL DEFAULT 0, -- 연계 매입/정산 ID
|
|
biz_date DATE NOT NULL,
|
|
status TEXT NOT NULL DEFAULT 'D', -- D=작성, P=전기, M=대사, S=마감연계, X=취소
|
|
memo TEXT NOT NULL DEFAULT '',
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
);
|
|
|
|
-- 원장 라인 (ledger_line) - 복식부기 차변(D)/대변(C) 개별 분개
|
|
CREATE SEQUENCE IF NOT EXISTS lg_line_seq;
|
|
CREATE TABLE IF NOT EXISTS lg_ledger_line (
|
|
line_id BIGINT PRIMARY KEY,
|
|
voucher_id BIGINT NOT NULL,
|
|
acct TEXT NOT NULL, -- 계정과목: RECV/MERCH_PAY/FEE_INC/CASH/ADJ ...
|
|
dc TEXT NOT NULL, -- D=차변(debit), C=대변(credit)
|
|
amount BIGINT NOT NULL,
|
|
merchant_id TEXT NOT NULL DEFAULT '',
|
|
biz_date DATE NOT NULL,
|
|
status TEXT NOT NULL DEFAULT 'posted', -- posted / closed
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
);
|
|
CREATE INDEX IF NOT EXISTS ix_lg_line_voucher ON lg_ledger_line(voucher_id);
|
|
CREATE INDEX IF NOT EXISTS ix_lg_line_acct ON lg_ledger_line(acct, biz_date);
|
|
|
|
-- 계정잔액 (account balance) - 계정과목 x 영업일 누계
|
|
CREATE TABLE IF NOT EXISTS lg_account_bal (
|
|
acct TEXT NOT NULL,
|
|
biz_date DATE NOT NULL,
|
|
debit_total BIGINT NOT NULL DEFAULT 0,
|
|
credit_total BIGINT NOT NULL DEFAULT 0,
|
|
balance BIGINT NOT NULL DEFAULT 0, -- 차변 - 대변
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
PRIMARY KEY (acct, biz_date)
|
|
);
|
|
|
|
-- 가맹점 잔액 (merchant balance) - 가맹점 x 영업일 미지급/미수 누계
|
|
CREATE TABLE IF NOT EXISTS lg_merch_bal (
|
|
merchant_id TEXT NOT NULL,
|
|
biz_date DATE NOT NULL,
|
|
debit_total BIGINT NOT NULL DEFAULT 0,
|
|
credit_total BIGINT NOT NULL DEFAULT 0,
|
|
balance BIGINT NOT NULL DEFAULT 0,
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
PRIMARY KEY (merchant_id, biz_date)
|
|
);
|
|
|
|
-- 시산표 (trial balance) - 배치가 계정별로 채움
|
|
CREATE TABLE IF NOT EXISTS lg_trial_bal (
|
|
acct TEXT NOT NULL,
|
|
biz_date DATE NOT NULL,
|
|
debit_total BIGINT NOT NULL DEFAULT 0,
|
|
credit_total BIGINT NOT NULL DEFAULT 0,
|
|
diff BIGINT NOT NULL DEFAULT 0, -- 차변 - 대변 (0 이어야 정상)
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
PRIMARY KEY (acct, biz_date)
|
|
);
|