S&P Global 선박/해운 Bypass/Custom API 시스템
Go to file
HYOJIN 1783322034
All checks were successful
Build and Deploy SNP Global / build-and-deploy (push) Successful in 29s
Merge pull request 'ci: snp-global 자동 배포 워크플로우 구성' (#2) from feature/ci-cd-setup into develop
2026-04-07 15:55:19 +09:00
.claude chore: 프로젝트 초기 설정 및 팀 워크플로우 구성 2026-04-07 15:42:23 +09:00
.gitea/workflows ci: snp-global 자동 배포 워크플로우 구성 2026-04-07 15:54:07 +09:00
.githooks chore: 프로젝트 초기 설정 및 팀 워크플로우 구성 2026-04-07 15:42:23 +09:00
.mvn chore: 프로젝트 초기 설정 및 팀 워크플로우 구성 2026-04-07 15:42:23 +09:00
docs docs: 릴리즈 노트 업데이트 2026-04-07 15:54:38 +09:00
frontend chore: 프로젝트 초기 설정 및 팀 워크플로우 구성 2026-04-07 15:42:23 +09:00
src/main chore: 프로젝트 초기 설정 및 팀 워크플로우 구성 2026-04-07 15:42:23 +09:00
.editorconfig chore: 프로젝트 초기 설정 및 팀 워크플로우 구성 2026-04-07 15:42:23 +09:00
.gitattributes chore: 프로젝트 초기 설정 및 팀 워크플로우 구성 2026-04-07 15:42:23 +09:00
.gitignore chore: 프로젝트 초기 설정 및 팀 워크플로우 구성 2026-04-07 15:42:23 +09:00
.sdkmanrc chore: 프로젝트 초기 설정 및 팀 워크플로우 구성 2026-04-07 15:42:23 +09:00
CLAUDE.md chore: 프로젝트 초기 설정 및 팀 워크플로우 구성 2026-04-07 15:42:23 +09:00
package-lock.json chore: 프로젝트 초기 설정 및 팀 워크플로우 구성 2026-04-07 15:42:23 +09:00
pom.xml chore: 프로젝트 초기 설정 및 팀 워크플로우 구성 2026-04-07 15:42:23 +09:00
README.md docs: README.md를 snp-global 프로젝트에 맞게 재작성 2026-04-07 15:46:21 +09:00
workflow-version.json chore: 프로젝트 초기 설정 및 팀 워크플로우 구성 2026-04-07 15:42:23 +09:00

SNP-Global (snp-global)

S&P Global Maritime API Gateway 및 Risk & Compliance Screening 시스템. 외부 Maritime API를 인증 기반으로 프록시(Bypass)하고, 선박/회사의 리스크·규정준수 스크리닝 데이터를 서비스합니다.

기술 스택

  • Java 17, Spring Boot 3.2.1
  • Spring Security (Basic Auth)
  • PostgreSQL (스키마: std_snp_data)
  • WebFlux WebClient (외부 Maritime API 호출)
  • Spring Data JPA, JdbcTemplate
  • Thymeleaf (이메일 템플릿)
  • Springdoc OpenAPI 2.3.0 (Swagger)
  • Lombok, Jackson
  • React 19, TypeScript, Vite, Tailwind CSS (프론트엔드)

사전 요구사항

항목 버전 비고
JDK 17 .sdkmanrc 참조 (sdk env)
Maven 3.9+
Node.js 20+ 프론트엔드 빌드용
npm 10+ Node.js에 포함

빌드

참고: frontend-maven-plugin이 Node.js 설치 및 프론트엔드 빌드를 자동으로 수행합니다.

# JDK 설정
sdk use java 17.0.18-amzn

# 전체 빌드 (프론트엔드 포함)
mvn clean package -DskipTests

# 프론트엔드만 별도 빌드
cd frontend && npm install && npm run build

로컬 실행

# Spring Boot 실행 (기본 프로파일)
mvn spring-boot:run

# 프론트엔드 개발 서버
cd frontend && npm run dev

서버 설정

프로파일 포트 Context Path
default (로컬) 8031 /snp-global
dev / prod 8041 /snp-api

접속 정보

항목 URL
관리 UI (로컬) http://localhost:8031/snp-global/
Swagger (로컬) http://localhost:8031/snp-global/swagger-ui/index.html

주요 API

Bypass Account 관리 (/api/bypass-account)

메서드 경로 설명
GET /accounts 계정 목록 (페이징)
GET/PUT/DELETE /accounts/{id} 계정 상세/수정/삭제
POST /accounts/{id}/reset-password 비밀번호 초기화
POST /requests API 접근 요청 (공개)
GET /requests 요청 목록
POST /requests/{id}/approve 승인 (계정 자동 생성)
POST /requests/{id}/reject 거부

Bypass Config 관리 (/api/bypass-config)

메서드 경로 설명
GET/POST / 설정 목록/생성
GET/PUT/DELETE /{id} 설정 상세/수정/삭제
POST /{id}/generate 서비스·컨트롤러 코드 생성

S&P API Bypass (/api/compliance, /api/risk) — Basic Auth 필요

메서드 경로 설명
GET /compliance/CompliancesByImos IMO별 규정준수 데이터
GET /risk/RisksByImos IMO별 리스크 데이터
GET /risk/UpdatedComplianceList 기간별 업데이트 목록

Screening Guide (/api/screening-guide)

메서드 경로 설명
GET /risk-indicators 리스크 지표 (카테고리별)
GET /compliance-indicators 규정준수 지표
GET /methodology-history 방법론 변경 이력
GET /history/ship-risk 선박 리스크 변경 이력
GET /history/ship-compliance 선박 규정준수 변경 이력
GET /history/company-compliance 회사 규정준수 변경 이력
GET /ship-info, /company-info 기본 정보 조회
GET /ship-risk-status 선박 리스크 현황
GET /ship-compliance-status 선박 규정준수 현황
GET /company-compliance-status 회사 규정준수 현황

디렉토리 구조

src/main/java/com/snp/batch/
├── SnpGlobalApplication.java          # 메인 애플리케이션
├── api/logging/                       # API 접근 로깅 필터
├── common/web/                        # 공통 프레임워크
│   ├── ApiResponse.java               # 통합 API 응답 래퍼
│   ├── controller/BaseBypassController # Bypass 컨트롤러 베이스
│   └── service/BaseBypassService       # Bypass 서비스 베이스 (WebClient)
├── global/
│   ├── config/                        # Security, Swagger, WebClient, Auth 설정
│   ├── controller/                    # Bypass 계정/설정 관리, Screening Guide, SPA 라우터
│   ├── dto/                           # bypass/, screening/ DTO
│   ├── model/                         # bypass 엔티티, screening/ 다국어 엔티티
│   └── repository/                    # bypass, screening/ 리포지토리
├── jobs/web/                          # S&P API Bypass 엔드포인트
│   ├── compliance/                    # CompliancesByImos
│   └── risk/                          # RisksByImos, UpdatedComplianceList
└── service/                           # 핵심 비즈니스 서비스
    ├── BypassApiAccountService        # 계정 CRUD
    ├── BypassApiRequestService        # 접근 요청 관리 (승인/거부)
    ├── BypassCodeGenerator            # 서비스/컨트롤러 코드 자동 생성
    ├── BypassConfigService            # Bypass API 설정 CRUD
    ├── EmailService                   # 이메일 발송 (승인/거부 알림)
    └── ScreeningGuideService          # 리스크·규정준수 스크리닝 데이터 조회