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

93 lines
3.1 KiB
Markdown

# WING-GIS - 해양경찰청 통합 GIS 위치정보시스템
모노레포 구조: React 19 TypeScript 프론트엔드 + Spring Boot 3.3 Java 21 백엔드 (MSA)
해양 GIS 시스템으로 선박 물표 추적(AIS/V-Pass/VTS 등 7개 소스), S-100 전자해도, 공간분석 기능 제공.
상세 아키텍처: [ARCHITECTURE.md](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
```bash
cd frontend/wing-gis-web
npm install
npm run build
```
### Backend (wing-gis-map 서비스)
```bash
cd services/wing-gis-map
./gradlew build
```
## 개발 서버
```bash
cd frontend/wing-gis-web
npm run dev # http://localhost:5174
```
## 테스트
```bash
# Frontend (테스트 러너 미설정)
# Backend
cd services/wing-gis-map && ./gradlew test
```
## Lint
```bash
# 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 검증 필수