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>
74 lines
3.0 KiB
Markdown
74 lines
3.0 KiB
Markdown
# Database Migrations
|
|
|
|
> ⚠️ **실제 SQL 파일 위치**: [`backend/src/main/resources/db/migration/`](../../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/사용자 생성 (관리자 권한 필요)
|
|
```sql
|
|
-- 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가 자동 적용:
|
|
```bash
|
|
cd backend && ./mvnw spring-boot:run
|
|
```
|
|
|
|
### 수동 적용
|
|
```bash
|
|
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 불일치 시 (마이그레이션 파일 수정 후)
|
|
```bash
|
|
cd backend && ./mvnw flyway:repair -Dflyway.url=... (위와 동일)
|
|
```
|
|
|
|
## 신규 마이그레이션 추가
|
|
[`backend/src/main/resources/db/migration/`](../../backend/src/main/resources/db/migration/)에 `V00N__설명.sql` 형식으로 추가하면 다음 기동 시 자동 적용됩니다.
|