Files
ga-commission-system/ga-common/src/main/resources/db/migration/V45__위촉계약.sql
T

39 lines
2.2 KiB
SQL
Raw Normal View History

2026-05-14 01:21:27 +09:00
-- V45: 위촉계약 (agent_contract)
-- 보험사-설계사 간 위촉계약서. 보험사별 활동 자격 + 위촉수수료 관리.
CREATE TABLE agent_contract (
contract_id BIGSERIAL PRIMARY KEY,
agent_id BIGINT NOT NULL REFERENCES agent(agent_id),
carrier_id BIGINT NOT NULL REFERENCES insurance_company(company_id),
contract_no VARCHAR(50) NOT NULL,
signed_date DATE NOT NULL,
effective_from DATE NOT NULL,
effective_to DATE,
status VARCHAR(20) NOT NULL DEFAULT 'ACTIVE',
onboarding_bonus_amount NUMERIC(15,2) NOT NULL DEFAULT 0,
-- 위촉수수료 (입사 인센티브 성격)
terminated_at TIMESTAMP,
terminated_reason VARCHAR(500),
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
created_by BIGINT,
updated_at TIMESTAMP,
updated_by BIGINT,
UNIQUE (agent_id, carrier_id, contract_no),
CHECK (status IN ('ACTIVE','TERMINATED','SUSPENDED'))
);
COMMENT ON TABLE agent_contract IS '위촉계약 — 보험사-설계사 위촉계약서 + 효력 기간 + 위촉수수료';
COMMENT ON COLUMN agent_contract.agent_id IS '설계사 FK';
COMMENT ON COLUMN agent_contract.carrier_id IS '보험사 FK (insurance_company)';
COMMENT ON COLUMN agent_contract.contract_no IS '위촉계약 번호';
COMMENT ON COLUMN agent_contract.signed_date IS '위촉계약 서명일';
COMMENT ON COLUMN agent_contract.effective_from IS '위촉 효력 시작일';
COMMENT ON COLUMN agent_contract.effective_to IS '위촉 효력 종료일 (NULL=현재 유효)';
COMMENT ON COLUMN agent_contract.status IS 'ACTIVE=유효/TERMINATED=해촉/SUSPENDED=정지';
COMMENT ON COLUMN agent_contract.onboarding_bonus_amount IS '위촉수수료 (위촉 시 지급하는 인센티브)';
COMMENT ON COLUMN agent_contract.terminated_reason IS '해촉 사유';
CREATE INDEX idx_ac_agent ON agent_contract(agent_id, status);
CREATE INDEX idx_ac_carrier ON agent_contract(carrier_id, status);
CREATE INDEX idx_ac_effective ON agent_contract(effective_from, effective_to);