acquire-core-x/db/schema.d/55-vl.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

53 lines
2.6 KiB
SQL

-- vl 모듈 (정합성검증/validation) 상세 스키마
-- 검증 규칙 / 의심거래(suspect) / 검증 로그. Loaded on first boot.
-- ---------------------------------------------------------------------------
-- 검증 규칙 마스터 (vl_rule)
-- ---------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS vl_rule (
rule_code TEXT PRIMARY KEY,
rule_name TEXT NOT NULL DEFAULT '',
threshold BIGINT NOT NULL DEFAULT 0, -- 규칙별 임계값 (금액/건수 등)
severity TEXT NOT NULL DEFAULT 'WARN', -- INFO / WARN / ERROR / CRIT
status TEXT NOT NULL DEFAULT 'ACTIVE',
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
-- ---------------------------------------------------------------------------
-- 의심거래 (vl_suspect) - 검증 실패/이상 거래 적재
-- ---------------------------------------------------------------------------
CREATE SEQUENCE IF NOT EXISTS vl_suspect_seq;
CREATE TABLE IF NOT EXISTS vl_suspect (
suspect_id BIGINT PRIMARY KEY,
purchase_id BIGINT NOT NULL DEFAULT 0,
rule_code TEXT NOT NULL,
severity TEXT NOT NULL DEFAULT 'WARN',
detail TEXT NOT NULL DEFAULT '',
status TEXT NOT NULL DEFAULT 'OPEN', -- OPEN / CONFIRMED / CLOSED
biz_date DATE NOT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
-- ---------------------------------------------------------------------------
-- 검증 로그 (vl_check_log) - 모든 검증 서비스 호출 기록
-- ---------------------------------------------------------------------------
CREATE SEQUENCE IF NOT EXISTS vl_checklog_seq;
CREATE TABLE IF NOT EXISTS vl_check_log (
log_id BIGINT PRIMARY KEY,
check_type TEXT NOT NULL, -- 서비스명 (VL_SALES 등)
target_id BIGINT NOT NULL DEFAULT 0, -- 검증 대상 (purchase_id 등)
result_code BIGINT NOT NULL DEFAULT 0, -- 0=정상, >0=검증 실패코드
detail TEXT NOT NULL DEFAULT '',
biz_date DATE NOT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
-- Seed 기본 검증 규칙
INSERT INTO vl_rule (rule_code, rule_name, threshold, severity) VALUES
('AMT_MAX', '최대금액 초과', 50000000, 'ERROR'),
('AMT_ZERO', '0원/음수 금액', 0, 'ERROR'),
('DUP_TXN', '중복 매입', 1, 'WARN'),
('LIMIT_OVR', '일한도 초과', 0, 'WARN'),
('LEDGER_MIS','원장 불일치', 0, 'CRIT')
ON CONFLICT (rule_code) DO NOTHING;