wing-gis/CLAUDE.md
htlee 7103dc5c42 fix: CI/CD 워크플로우 개선 및 ESLint 에러 수정
- 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>
2026-03-31 14:07:29 +09:00

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

빌드 명령어

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 검증 필수