63 lines
2.4 KiB
Markdown
63 lines
2.4 KiB
Markdown
|
|
# Ship GIS - 해양 선박위치정보 GIS 프론트엔드
|
||
|
|
|
||
|
|
## 프로젝트 개요
|
||
|
|
해양 선박위치정보를 지도 위에 실시간으로 시각화하는 GIS 프론트엔드 애플리케이션.
|
||
|
|
민간용 데모 버전으로, OSM + OpenSeaMap 기반 지도와 AIS API 폴링 방식의 선박 데이터를 사용.
|
||
|
|
|
||
|
|
## 기술 스택
|
||
|
|
- **프레임워크**: React 18 + Vite 5
|
||
|
|
- **지도 엔진**: OpenLayers 9 + Deck.gl 9 (MapLibre 전환 예정)
|
||
|
|
- **상태관리**: Zustand 4
|
||
|
|
- **HTTP**: Axios
|
||
|
|
- **스타일**: SASS
|
||
|
|
- **라우팅**: React Router DOM 6
|
||
|
|
|
||
|
|
## 빌드 / 실행
|
||
|
|
```bash
|
||
|
|
yarn install # 의존성 설치
|
||
|
|
yarn dev # 로컬 개발 서버 (port 3000)
|
||
|
|
yarn build # 프로덕션 빌드
|
||
|
|
```
|
||
|
|
|
||
|
|
## 데이터 소스
|
||
|
|
- **선박 위치**: SNP-Batch API (`/api/ais-target/search`) HTTP 폴링
|
||
|
|
- 초기: 최근 60분 전체 로드
|
||
|
|
- 이후: 1분마다 최근 2분 증분 조회
|
||
|
|
- **인증**: 임시 비활성화 (`VITE_DEV_SKIP_AUTH=true`)
|
||
|
|
|
||
|
|
## 환경변수
|
||
|
|
```env
|
||
|
|
VITE_BASE_URL=/ # 배포 경로
|
||
|
|
VITE_API_URL=http://211.208.115.83:8041/snp-api # API 서버
|
||
|
|
VITE_DEV_SKIP_AUTH=true # 인증 우회
|
||
|
|
```
|
||
|
|
|
||
|
|
## 핵심 디렉토리 구조
|
||
|
|
```
|
||
|
|
src/
|
||
|
|
├── api/ # API 클라이언트 (aisTargetApi, signalApi, trackApi)
|
||
|
|
├── areaSearch/ # 항적분석 모듈
|
||
|
|
├── assets/ # 이미지, 아이콘 에셋
|
||
|
|
├── common/ # STOMP 클라이언트 (비활성화)
|
||
|
|
├── components/ # 공통 컴포넌트 (layout, ship, map, auth, common)
|
||
|
|
├── hooks/ # 커스텀 훅 (useShipData, useShipLayer 등)
|
||
|
|
├── map/ # 지도 컨테이너, 레이어, 측정 도구
|
||
|
|
├── pages/ # 페이지 (Home, Replay)
|
||
|
|
├── replay/ # 리플레이 모듈
|
||
|
|
├── scss/ # 글로벌 SCSS
|
||
|
|
├── stores/ # Zustand 스토어 (ship, map, auth, tracking 등)
|
||
|
|
├── tracking/ # 항적조회 모듈
|
||
|
|
├── types/ # 상수 정의
|
||
|
|
├── utils/ # 유틸리티
|
||
|
|
└── workers/ # Web Worker (signalWorker)
|
||
|
|
```
|
||
|
|
|
||
|
|
## Git 저장소
|
||
|
|
- **Remote**: https://gitea.gc-si.dev/gc/ship-gis.git
|
||
|
|
- **브랜치**: main (보호), develop (작업 브랜치)
|
||
|
|
|
||
|
|
## 팀 워크플로우
|
||
|
|
- 버전: v1.2.0
|
||
|
|
- 커밋 형식: Conventional Commits (한/영 혼용)
|
||
|
|
- 브랜치 전략: main ← develop ← feature/*
|