- deploy.yml: mkdir -p 추가로 배포 디렉토리 미존재 시 실패 방지 - deploy.yml: lint 단계 추가로 빌드 전 코드 품질 검증 - useVesselDeckLayer: useEffect 내 직접 setState 호출 제거 - useAisPolling: 렌더 중 ref 업데이트를 useEffect 내부로 이동 - CLAUDE.md, .sdkmanrc, .node-version 등 팀 워크플로우 초기 구성 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
3.1 KiB
3.1 KiB
WING-GIS - 해양경찰청 통합 GIS 위치정보시스템
모노레포 구조: React 19 TypeScript 프론트엔드 + Spring Boot 3.3 Java 21 백엔드 (MSA) 해양 GIS 시스템으로 선박 물표 추적(AIS/V-Pass/VTS 등 7개 소스), S-100 전자해도, 공간분석 기능 제공.
상세 아키텍처: ARCHITECTURE.md 참조
기술 스택
Frontend
- React 19 + TypeScript 5.9 + Vite 8
- MapLibre GL JS 5.18 + deck.gl 9.2 (해양 지도 렌더링)
- Zustand 5 (상태 관리), Ant Design 6 (UI), STOMP.js (WebSocket)
- ENC: Martin 타일 서버 연동, S-52 day/dusk/night 테마
Backend
- Spring Boot 3.3.6 + Java 21 + Gradle 9.3.1
- PostgreSQL 16/PostGIS 3.4, Hibernate Spatial
- Redis (캐시), Kafka (선박 스트리밍), Keycloak (SSO)
- MapStruct (DTO 매핑), SpringDoc OpenAPI 2.3 (API 문서)
Infrastructure
- Docker Compose (PostgreSQL, Redis, Kafka, MinIO, pg_tileserv, Keycloak)
- npm 레지스트리: https://nexus.gc-si.dev/repository/npm-public/
빌드 명령어
Frontend
cd frontend/wing-gis-web
npm install
npm run build
Backend (wing-gis-map 서비스)
cd services/wing-gis-map
./gradlew build
개발 서버
cd frontend/wing-gis-web
npm run dev # http://localhost:5174
테스트
# Frontend (테스트 러너 미설정)
# Backend
cd services/wing-gis-map && ./gradlew test
Lint
# Frontend (ESLint 9, flat config)
cd frontend/wing-gis-web && npm run lint
# Prettier: 미설정
# Backend: checkstyle/spotless 미설정
디렉토리 구조
wing-gis/
├── frontend/wing-gis-web/ # React SPA
│ └── src/
│ ├── components/ # layout, map, vessel UI
│ ├── features/ # vesselLayer, nauticalChart
│ ├── hooks/ # useStore, useMap, useDeckLayers, useVesselStream
│ ├── lib/map/ # mapCore, MaplibreDeckCustomLayer
│ ├── services/ # api.ts, vesselApi.ts
│ ├── types/ # ais.ts, vessel.ts, layer.ts
│ └── utils/ # coordinate, s52Colors, vesselIcon
├── services/ # Spring Boot MSA (10개)
│ ├── wing-gis-map/ # GIS API (구현 완료)
│ ├── wing-gis-vessel/ # 선박/신호 (stub)
│ ├── wing-gis-gateway/ # API Gateway (stub)
│ ├── wing-gis-auth/ # 인증 (stub)
│ ├── wing-gis-layer/ # 레이어 관리 (stub)
│ ├── wing-gis-analysis/ # 분석 (stub)
│ ├── wing-gis-integration/ # 연계 (stub)
│ ├── wing-gis-admin/ # 관리 (stub)
│ └── wing-gis-mcp/ # MCP Agent (stub)
├── infra/ # Docker Compose, K8s, SQL
├── docs/ # 문서
└── .claude/ # Claude Code 설정
팀 컨벤션
.claude/rules/팀 코딩 표준 참조 (/sync-team-workflow로 다운로드)- 커밋 메시지: Conventional Commits (한국어),
.githooks/commit-msg로 검증 - 커밋 전 lint 검증 필수