KCG 모니터링 대시보드
Go to file
htlee 6f4044ce39 feat: MapLibre → deck.gl 전면 전환 + 어구 서브클러스터 구조 개선
- 실시간 선박 13K: MapLibre symbol → deck.gl IconLayer (useShipDeckLayers + shipDeckStore)
- 선단/어구 폴리곤: MapLibre Source/Layer → deck.gl GeoJsonLayer (useFleetClusterDeckLayers)
- 선박 팝업: MapLibre Popup → React 오버레이 (ShipPopupOverlay + ShipHoverTooltip)
- 리플레이 집중 모드 (focusMode), 라벨 클러스터링, fontScale 연동
- Python: group_key 고정 + sub_cluster_id 분리, 한국 국적 어구 오탐 제외
- DB: sub_cluster_id 컬럼 추가 + 기존 '#N' 데이터 마이그레이션
- Backend: DISTINCT ON CTE로 서브클러스터 중복 제거, subClusterId DTO 추가

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 15:44:09 +09:00
.claude feat: MapLibre → deck.gl 전면 전환 + 어구 서브클러스터 구조 개선 2026-03-31 15:44:09 +09:00
.gitea/workflows ci: Prediction 자동 배포 제거 — 수동 배포로 전환 2026-03-31 09:59:33 +09:00
.githooks feat(backend): OSINT/Satellite 수집기 + Caffeine 캐시 통일 + REST API 2026-03-18 04:04:18 +09:00
backend feat: MapLibre → deck.gl 전면 전환 + 어구 서브클러스터 구조 개선 2026-03-31 15:44:09 +09:00
database feat: 어구 연관성 멀티모델 패턴 추적 시스템 (Phase 1 Core) 2026-03-30 10:36:43 +09:00
deploy feat(chat): Ollama Qwen3 기반 AI 해양분석 채팅 구축 2026-03-26 09:03:05 +09:00
docs docs: 릴리즈 노트 정리 (2026-03-31) 2026-03-31 10:11:05 +09:00
frontend feat: MapLibre → deck.gl 전면 전환 + 어구 서브클러스터 구조 개선 2026-03-31 15:44:09 +09:00
prediction feat: MapLibre → deck.gl 전면 전환 + 어구 서브클러스터 구조 개선 2026-03-31 15:44:09 +09:00
.editorconfig chore: 팀 워크플로우 초기 구성 (react-ts) 2026-03-17 08:42:46 +09:00
.gitignore fix(deploy): 배포 자동화 + 수집기 모니터링 + 이란 signal-batch 연동 (#32) 2026-03-18 05:46:55 +09:00
.node-version chore: 팀 워크플로우 초기 구성 (react-ts) 2026-03-17 08:42:46 +09:00
.npmrc chore: 팀 워크플로우 초기 구성 (react-ts) 2026-03-17 08:42:46 +09:00
.prettierrc chore: 팀 워크플로우 초기 구성 (react-ts) 2026-03-17 08:42:46 +09:00
CLAUDE.md feat(debug): Ctrl+Click 좌표 디버그 도구 + DEV 가드 체계 구축 2026-03-26 10:17:04 +09:00
README.md feat: KCG 모니터링 대시보드 초기 프로젝트 구성 2026-03-17 09:01:18 +09:00
workflow-version.json chore: 팀 워크플로우 초기 구성 (react-ts) 2026-03-17 08:42:46 +09:00

React + TypeScript + Vite

This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.

Currently, two official plugins are available:

React Compiler

The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see this documentation.

Expanding the ESLint configuration

If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules:

export default defineConfig([
  globalIgnores(['dist']),
  {
    files: ['**/*.{ts,tsx}'],
    extends: [
      // Other configs...

      // Remove tseslint.configs.recommended and replace with this
      tseslint.configs.recommendedTypeChecked,
      // Alternatively, use this for stricter rules
      tseslint.configs.strictTypeChecked,
      // Optionally, add this for stylistic rules
      tseslint.configs.stylisticTypeChecked,

      // Other configs...
    ],
    languageOptions: {
      parserOptions: {
        project: ['./tsconfig.node.json', './tsconfig.app.json'],
        tsconfigRootDir: import.meta.dirname,
      },
      // other options...
    },
  },
])

You can also install eslint-plugin-react-x and eslint-plugin-react-dom for React-specific lint rules:

// eslint.config.js
import reactX from 'eslint-plugin-react-x'
import reactDom from 'eslint-plugin-react-dom'

export default defineConfig([
  globalIgnores(['dist']),
  {
    files: ['**/*.{ts,tsx}'],
    extends: [
      // Other configs...
      // Enable lint rules for React
      reactX.configs['recommended-typescript'],
      // Enable lint rules for React DOM
      reactDom.configs.recommended,
    ],
    languageOptions: {
      parserOptions: {
        project: ['./tsconfig.node.json', './tsconfig.app.json'],
        tsconfigRootDir: import.meta.dirname,
      },
      // other options...
    },
  },
])