Ship GIS Frontend
Go to file
htlee ac3c204843 refactor: 민간화 + 팀 프로젝트 구조 전환
- 해경 관련 코드/에셋 정리 (KCGV, 해경관할구역 FGB, PatrolShipSelector)
- 위성/기상/퍼블리시/레거시 모듈 전체 삭제
- STOMP WebSocket → AIS Target API HTTP 폴링 방식 전환
- 세션 인증 임시 비활성화 (VITE_DEV_SKIP_AUTH)
- 환경변수 민간 데모용으로 재구성
- 팀 워크플로우 v1.2.0 구조 적용 (.claude/rules, skills, settings)
- .githooks, .editorconfig, .node-version 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 06:13:08 +09:00
.claude refactor: 민간화 + 팀 프로젝트 구조 전환 2026-02-15 06:13:08 +09:00
.githooks refactor: 민간화 + 팀 프로젝트 구조 전환 2026-02-15 06:13:08 +09:00
.yarn-offline-cache feat: 해경관할구역 FGB 레이어 + 필터 개인설정 영속화 (AI모드/위험물) 2026-02-12 13:54:46 +09:00
public refactor: 민간화 + 팀 프로젝트 구조 전환 2026-02-15 06:13:08 +09:00
src refactor: 민간화 + 팀 프로젝트 구조 전환 2026-02-15 06:13:08 +09:00
.editorconfig refactor: 민간화 + 팀 프로젝트 구조 전환 2026-02-15 06:13:08 +09:00
.env refactor: 민간화 + 팀 프로젝트 구조 전환 2026-02-15 06:13:08 +09:00
.env.development refactor: 민간화 + 팀 프로젝트 구조 전환 2026-02-15 06:13:08 +09:00
.gitattributes refactor: 민간화 + 팀 프로젝트 구조 전환 2026-02-15 06:13:08 +09:00
.gitignore refactor: 민간화 + 팀 프로젝트 구조 전환 2026-02-15 06:13:08 +09:00
.node-version refactor: 민간화 + 팀 프로젝트 구조 전환 2026-02-15 06:13:08 +09:00
.nvmrc refactor: 민간화 + 팀 프로젝트 구조 전환 2026-02-15 06:13:08 +09:00
.yarnrc chore: 폐쇄망 배포 환경 구성 및 불필요 파일 정리 2026-02-09 14:14:27 +09:00
CLAUDE.md refactor: 민간화 + 팀 프로젝트 구조 전환 2026-02-15 06:13:08 +09:00
index.html chore: Vite 빌드 설정 및 프로젝트 구조 개선 2026-02-05 06:35:31 +09:00
package.json feat: 해경관할구역 FGB 레이어 + 필터 개인설정 영속화 (AI모드/위험물) 2026-02-12 13:54:46 +09:00
README.md chore: 폐쇄망 배포 환경 구성 및 불필요 파일 정리 2026-02-09 14:14:27 +09:00
vite.config.js feat: 로그인 세션 통합 (인증 가드, fetchWithAuth, 환경변수) 2026-02-12 13:54:21 +09:00
yarn.lock feat: 해경관할구역 FGB 레이어 + 필터 개인설정 영속화 (AI모드/위험물) 2026-02-12 13:54:46 +09:00

함정용 GIS (Dark)

선박위치정보 전시 및 조회 기능을 제공하는 해양 GIS 프론트엔드 프로젝트입니다.

기술 스택

항목 기술
지도 엔진 OpenLayers 9.2.4
실시간 렌더링 Deck.gl 9.2.6 (GPU)
UI 프레임워크 React 18.2.0
상태 관리 Zustand 4.5.2
라우팅 React Router 6.30.3
실시간 통신 STOMP WebSocket
번들러 Vite 5.2.10
스타일 SCSS

구현 완료 기능

지도

  • 야간지도 렌더링 (OpenLayers + Deck.gl)
  • 줌 레벨 5~15, 타일 로딩 6~11

실시간 선박 표시

  • 선종별 아이콘/색상 표시
  • 호버 툴팁
  • 선종별 카운트
  • 통합 모드 지원

선박 필터

  • 선종별 ON/OFF
  • 범례 표시

항적 조회

  • 우클릭 메뉴 → 항적조회
  • 조회 기간 설정 (최대 7일)
  • 프로그레스 바
  • 표시 옵션 (점/선/레이블)
  • 통합선박 장비 필터: A/V/E/T/D
  • 호버 하이라이트

리플레이

  • WebSocket 실시간 데이터 수신
  • 재생/일시정지
  • 배속 조절: 1x ~ 1000x
  • 선박 분류 관리
  • Insert/Delete 단축키 지원

추적 모드

  • 경비함정 반경 설정: 10/25/50/100/200 NM
  • TopBar 정보 표시

UI/UX

  • 다크/라이트 테마 전환
  • 토스트 알림
  • 드래그 가능 패널

개발 환경 설정

사전 요구사항

  • Node.js 18 이상
  • Yarn Classic 1.x (npm install -g yarn)

환경 변수 파일

파일 용도 빌드 명령어
.env.development 로컬 개발 yarn dev
.env.dev 개발서버 배포 yarn build:dev
.env.qa QA 배포 yarn build:qa
.env.production 운영 배포 yarn build

인터넷 환경 (일반)

yarn install
yarn dev

폐쇄망 환경 (오프라인)

이 프로젝트는 Yarn Offline Mirror를 통해 폐쇄망에서도 빌드가 가능합니다. .yarn-offline-cache/ 폴더에 모든 의존성 패키지의 tgz 아카이브가 포함되어 있습니다.

Windows 폐쇄망 초기 세팅

# 방법 1: 배치 스크립트 실행
setup-windows.bat

# 방법 2: 수동 실행
yarn install --offline

yarn install --offline 실행 시 네트워크 접근 없이 .yarn-offline-cache/에서 패키지를 설치하며, 실행 환경(Windows/macOS/Linux)에 맞는 네이티브 바이너리가 자동으로 선택됩니다.

오프라인 캐시 갱신 (패키지 추가/업데이트 시)

인터넷이 가능한 환경에서 다음을 실행하면 캐시가 자동 갱신됩니다:

yarn add <패키지명>          # 캐시에 자동 추가
yarn install                 # 전체 캐시 동기화

개발 명령어

# 로컬 개발 서버 실행 (port 3000)
yarn dev

# 개발서버 배포용 빌드
yarn build:dev

# QA 배포용 빌드
yarn build:qa

# 운영 배포용 빌드
yarn build

# 빌드 결과 미리보기
yarn preview

배포 가이드

개발서버 배포 (/kcgnv/)

  1. 빌드 실행:

    yarn build:dev
    
  2. dist 폴더 내용을 서버의 /kcgnv/ 경로에 배포:

    # 기존 파일 백업 후 교체
    cp -r dist/* /var/www/html/kcgnv/
    
  3. Apache 설정 확인 (httpd.conf):

    Alias /kcgnv /var/www/html/kcgnv
    <Directory "/var/www/html/kcgnv">
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
        FallbackResource /kcgnv/index.html
    </Directory>
    

환경별 BASE_URL 설정

  • 로컬 개발: / (자동)
  • 개발서버: /kcgnv/ (.env.dev)
  • 운영서버: 환경에 맞게 설정

프로젝트 구조

src/
├── api/           # API 클라이언트
├── components/    # 공통 컴포넌트
├── hooks/         # 커스텀 훅
├── map/           # OpenLayers 지도 모듈
├── pages/         # 페이지 컴포넌트
├── publish/       # 퍼블리싱 미리보기 (개발용)
├── replay/        # 리플레이 모듈
├── stores/        # Zustand 스토어
├── tracking/      # 항적 추적 모듈
├── types/         # 타입/상수 정의
└── scss/          # 스타일시트

참조 프로젝트

  • mda-react-front (메인 프로젝트)