kcg-ai-monitoring/database/migration
htlee 883b347359 feat: S1 마스터 데이터 + prediction 기반 DB 스키마 (V008~V013)
prediction 모노레포 이관을 위한 DB 기반 구축:
- V008: 계층형 code_master (12그룹 72코드, 위반유형/이벤트/단속/허가/함정 등)
- V009: gear_type_master 어구 유형 6종 (분류 룰 + 합법성 기준)
- V010: zone_polygon_master PostGIS 해역 폴리곤 (8개 주요 해역)
- V011: vessel_permit_master + patrol_ship_master + fleet_companies 시드
- V012: vessel_analysis_results(파티션) + prediction_events 허브 + 알림 + 통계 + KPI
- V013: enforcement_records/plans + patrol_assignments + ai_model 메타
- Hibernate Spatial 의존성 추가 (PostGIS 지원)
- 프론트엔드 더미 데이터 기반 시드 (이벤트 15건, 단속 6건, 계획 5건, 월별통계 7개월)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 11:49:26 +09:00
..
README.md feat: S1 마스터 데이터 + prediction 기반 DB 스키마 (V008~V013) 2026-04-07 11:49:26 +09:00

Database Migrations

⚠️ 실제 SQL 파일 위치: backend/src/main/resources/db/migration/

Spring Boot Flyway 표준 위치를 따르므로 SQL 파일은 백엔드 모듈 안에 있습니다. Spring Boot 기동 시 Flyway가 자동으로 적용합니다.

DB 정보

  • DB Name: kcgaidb
  • User: kcg-app
  • Schema: kcg
  • Host: 211.208.115.83:5432

적용된 마이그레이션 (V001~V013)

Phase 1~8: 인증/권한/감사 (V001~V007)

파일 내용
V001__auth_init.sql 인증/조직/역할/사용자-역할/로그인 이력
V002__perm_tree.sql 권한 트리 + 권한 매트릭스
V003__perm_seed.sql 초기 역할 5종 + 트리 노드 45개 + 권한 매트릭스 시드
V004__access_logs.sql 감사로그/접근이력
V005__parent_workflow.sql 모선 워크플로우 (resolution/review_log/exclusions/label_sessions)
V006__demo_accounts.sql 데모 계정 5종
V007__perm_tree_label_align.sql 트리 노드 명칭을 사이드바 i18n 라벨과 일치

S1: 마스터 데이터 + Prediction 기반 (V008~V013)

파일 내용
V008__code_master.sql 계층형 코드 마스터 (12그룹, 72코드: 위반유형/이벤트/단속/허가/함정 등)
V009__gear_type_master.sql 어구 유형 마스터 6종 (분류 룰 + 합법성 기준)
V010__zone_polygon_master.sql 해역 폴리곤 마스터 (PostGIS GEOMETRY, 8개 해역 시드)
V011__vessel_permit_patrol.sql 어선 허가 마스터 + 함정 마스터 + fleet_companies (선박 9척, 함정 6척)
V012__prediction_events_stats.sql vessel_analysis_results(파티션) + 이벤트 허브 + 알림 + 통계(시/일/월) + KPI + 위험격자 + 학습피드백
V013__enforcement_operations.sql 단속 이력/계획 + 함정 배치 + AI모델 버전/메트릭 (시드 포함)

실행 방법

최초 1회 - DB/사용자 생성 (관리자 권한 필요)

-- snp 관리자 계정으로 접속
psql -h 211.208.115.83 -U snp -d postgres

CREATE DATABASE kcgaidb;
CREATE USER "kcg-app" WITH PASSWORD 'Kcg2026ai';
GRANT ALL PRIVILEGES ON DATABASE kcgaidb TO "kcg-app";

\c kcgaidb
CREATE SCHEMA IF NOT EXISTS kcg AUTHORIZATION "kcg-app";
GRANT ALL ON SCHEMA kcg TO "kcg-app";
ALTER DATABASE kcgaidb OWNER TO "kcg-app";

마이그레이션 실행 (자동)

백엔드 기동 시 Flyway가 자동 적용:

cd backend && ./mvnw spring-boot:run

수동 적용

cd backend && ./mvnw flyway:migrate -Dflyway.url=jdbc:postgresql://211.208.115.83:5432/kcgaidb -Dflyway.user=kcg-app -Dflyway.password=Kcg2026ai -Dflyway.schemas=kcg

Checksum 불일치 시 (마이그레이션 파일 수정 후)

cd backend && ./mvnw flyway:repair -Dflyway.url=... (위와 동일)

신규 마이그레이션 추가

backend/src/main/resources/db/migration/V00N__설명.sql 형식으로 추가하면 다음 기동 시 자동 적용됩니다.