acquire-core-x/db/schema.d/40-lg.sql
forge-bot bec83c721e 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>
2026-07-19 09:58:39 +00:00

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)
);