# Release Notes

이 문서는 [Keep a Changelog](https://keepachangelog.com/ko/1.0.0/) 형식을 따릅니다.

## [Unreleased]

### 추가
- SR 민감자원 벡터타일 오버레이 컴포넌트 및 백엔드 프록시 엔드포인트 추가
- 해양 오염물질 배출규정 구역 판별 기능 추가

### 변경
- 지도: 항상 라이트 모드로 고정 (앱 다크 모드와 무관)
- 지도: lightMode prop 제거, useThemeStore 기반 테마 전환 통합
- 레이어 색상 상태를 OilSpillView로 끌어올림
- 대한민국 해리 GeoJSON 데이터 갱신

## [2026-04-02]

### 변경
- 디자인 시스템 폰트 및 시맨틱 토큰 전면 적용
  - HNS 탭: HNSTheoryView, HNSSubstanceView, HNSScenarioView, HNSLeftPanel, HNSRightPanel, HNSRecalcModal, HNSAnalysisListTable, HNSView
  - 예측 탭: OilSpillTheoryView, OilSpillView, BoomDeploymentTheoryView, AnalysisListTable
  - 구조 탭: RescueView
- 하드코딩 색상(#hex, rgba) → CSS 변수 전환, 그라데이션 → 단색, fontFamily/fontSize → Tailwind 토큰

## [2026-04-01]

### 수정
- 지도: S57 ENC 오버레이 스타일 로드 완료 대기 후 레이어 추가
- 지도: S57EncOverlay API URL을 공유 API_BASE_URL로 통합
- 지도: S57 ENC sprite URL에 상대경로일 때 origin 프리픽스 추가
- 지도: S57 ENC 오버레이 타일/sprite/glyphs URL을 절대경로로 변환 (운영환경 상대경로 대응)

## [2026-03-31]

### 추가
- 지도: S-57 전자해도(ENC) 오버레이 레이어 추가
- 지도: 전체 탭 지도 배경 토글 통합 (S-57/3D/밝은테마/기본지도)
- 공통: useBaseMapStyle 훅 및 mapStyles 공유 모듈 추가
- 다크/라이트 테마 전환 기능 (TopBar 퀵메뉴에서 토글)
- themeStore (Zustand) 테마 상태 관리 + localStorage 영속화

### 변경
- 지도: 초기 접속 시 기본지도(CartoDB Dark Matter) 표시로 변경 (S-57 기본 off)
- 디자인 시스템 토큰 시맨틱 네이밍 전환 (하드코딩 색상 → CSS 변수)
- PretendardGOV 폰트 적용
- 라이트 테마 CSS 변수 오버라이드 및 컴포넌트별 스타일 대응

## [2026-03-30]

### 추가
- 지도: VWorld 위성타일 백엔드 프록시 추가 — API 키를 서버에서 관리하고 CORS 우회

## [2026-03-27]

### 추가
- 역추적: 사용자가 유출 추정 시각/분석 범위/탐색 반경을 직접 입력하는 분석 파라미터 UI 구현
- 역추적: AIS 기반 선박 항적 API 연동 및 가중치 위험도 점수 산정 엔진 (backtrackAnalysisService)
- 역추적: 상위 5척 선박 경로 및 충돌 이벤트 리플레이 데이터 생성
- 역추적: 리플레이 바에 실제 분석 시간 범위 동적 표시
- DB: AIS_TRACK 테이블 추가 (선박 항적 이력, GIS 공간 인덱스)
- 역추적: 리플레이에 Python 역방향 시뮬레이션 파티클 표시 (보라색 ScatterplotLayer)
- 역추적: 전체 파티클 이동 경로 외각 폴리곤(컨벡스 헐) 표시
- 역추적: 리플레이 바 — 재생 완료 후 재시작 기능 (↺ 아이콘)
- 역추적: 리플레이 바 — 드래그 시크 기능 추가

### 수정
- 역추적: 선박 항적 API URL을 프로덕션 URL로 변경 및 엔드포인트 경로 추가 (/api/v2/tracks/area-search)

### 변경
- 역추적: 생성 API 응답을 BacktrackResult로 통합 (재조회 불필요)

## [2026-03-26]

### 추가
- 보고서: 조위/기상(oil-tide) 섹션에 실데이터 렌더링 추가 (풍향/풍속·파고·수온·유향 등)

### 수정
- 보고서: HWPX 이미지 내보내기 구조를 HWPX 스펙(hc:img + manifest 방식)으로 수정
- 확산예측: 분석 목록 정렬 기준 변경 (RUN_DTM DESC 우선)

## [2026-03-25]

### 추가
- 예측: 실행 이력 선택 기능 (predRunSn 기반 특정 예측 결과 조회)
- DB: PRED_RUN_SN 마이그레이션 추가 (028_pred_run_sn)
- 관리자: 수치예측자료 연계 모니터링 패널 추가 (HYCOM·GFS·WW3·KOAST POS_WIND/HYDR/WAVE)
- 사고: 분석 패널 실데이터 연동 (확산예측·민감자원 API 연동, 카테고리 색상·이모지 매핑)
- 자산: 인근 기관 조회 API 추가 (/assets/orgs/nearby, PostGIS ST_DWithin)
- DB: PRED_EXEC 테이블 EXEC_USER_ID 컬럼 추가 (029 마이그레이션)

### 변경
- 보고서: 기능 개선 (TemplateEditPage, ReportGenerator, hwpxExport 등)
- 사고: 지도에서 사고 선택 시 FlyTo 애니메이션 적용
- 사고: 선택된 항목 재클릭 시 선택 해제 지원

## [2026-03-24]

### 추가
- Stitch MCP 기반 디자인 시스템 카탈로그 페이지 (/design)
- react-router-dom 도입, BrowserRouter 래핑
- SVG 아이콘 에셋 19종 추가
- @/ path alias 추가
- 디자인: Components 탭 추가 (Button, TextField, Overview 페이지)
- 관리자: 수거인력 패널 및 선박모니터링 패널 추가
- 레이어: 레이어 데이터 테이블 매핑 구현 + 어장 팝업 수정
- 확산예측: 예측 실행 시 기상정보(풍속·풍향·기압·파고·수온·기온·염분 등) ACDNT_WEATHER 테이블에 자동 저장
- DB: ACDNT_WEATHER 테이블에 구조화된 기상 수치 컬럼 19개 추가 (025 마이그레이션)
- DB: 민감자원 데이터 마이그레이션 (026_sensitive_resources)
- DB: 민감자원 평가 마이그레이션 추가 (027_sensitivity_evaluation)
- 보고서: 유류유출 보고서 템플릿 전면 개선 (OilSpillReportTemplate)
- 관리자: 실시간 기상·해상 모니터링 패널 추가 (MonitorRealtimePanel)
- 관리자: 방제선 보유자재 현황 패널 추가 (VesselMaterialsPanel)
- 관리자: 방제장비 현황 패널에 장비 타입 필터 및 조건부 컬럼 강조 스타일 추가

### 변경
- 디자인: 색상 팔레트 컨텐츠 개선 + base.css 확장
- SCAT 지도 하드코딩 제주 해안선 제거, 인접 구간 기반 동적 방향 계산으로 전환
- 예측: 분석 API를 예측 서비스로 통합 (analysisRouter 제거)
- 예측: 예측 API 확장 (predictionRouter/Service, LeftPanel/RightPanel 연동)
- 보고서: 유류유출 보고서 민감자원 지도 섹션 개선 (GeoJSON 자동 필터링, 6개 테이블 자동 채우기, 지도 캡처 기능)

### 문서
- Foundation 탭 디자인 토큰 상세 문서화 (DESIGN-SYSTEM.md)

## [2026-03-20]

### 추가
- 관리자: 지도 베이스 관리 패널, 레이어 패널 추가 및 보고서 기능 개선
- 관리자: 권한 트리 확장 (게시판관리·기준정보·연계관리 섹션 추가)
- 관리자: 유처리제 제한구역 패널, 민감자원 레이어 패널 추가
- 항공 방제: WingAI (AI 탐지/분석) 서브탭 추가
- 항공 방제: UP42 위성 패스 조회 + 궤도 지도 표시
- 항공 방제: 위성 요청 취소 기능 추가
- 항공 방제: 위성 요청 목록/히스토리 지도 탭 분리
- 항공 방제: 위성 히스토리 지도에 캘린더 + 날짜별 촬영 리스트 + 영상 오버레이
- 항공 방제: 완료 촬영 클릭 시 VWorld 위성 영상 오버레이 표시
- 항공 방제: 위성 요청 목록 더보기 → 페이징 처리로 변경
- 보고서: 기능 강화 (HWPX 내보내기, 확산 지도 패널, 보고서 생성기 개선)
- 기상: 날씨 스냅샷 스토어, 유틸리티 모듈 추가
- 사고관리: UI 개선 + 오염물 배출규정 기능 추가
- Pre-SCAT 해안조사 UI 개선
- 거리·면적 측정 도구 (TopBar 퀵메뉴 + deck.gl 시각화)
- Pre-SCAT 관할서 필터링 + 해안조사 데이터 파이프라인 구축

### 수정
- 항공 방제: UP42 모달 지도 크기 탭별 동일하게 고정
- 항공 방제: 촬영 히스토리 지도 리스트 위치 좌하단으로 이동

### 변경
- prediction/scat 파이프라인 제거 + SCAT/사고관리 UI 수정
- 기상: 지역별 기상정보 패널 글자 사이즈 조정 + 시각화 개선
- SCAT 사진을 로컬에서 서버 프록시로 전환 (scat-photos 1,127개 삭제)
- WeatherRightPanel 중복 코드 정리

### 문서
- PREDICTION-GUIDE.md 삭제

## [2026-03-18]

### 추가
- 관리자: 방제장비 현황 패널 (CleanupEquipPanel) — 관할청·유형별 필터, 자산 수량 조회
- 관리자: 자산 현행화 업로드 패널 (AssetUploadPanel) — 엑셀/CSV 드래그 드롭 업로드

### 변경
- trajectory API 모델별 windData/hydrData 분리 반환
- 예측 서비스(predictionService) 개선
- 보고서: 유출유 확산 지도 패널 및 보고서 생성기 개선
- 관리자: 권한/메뉴 구성 업데이트, AdminView 패널 등록
- prediction/image 이미지 분석 서버 분리 (디렉토리 제거)

### 기타
- DB: monitor 권한 트리 마이그레이션(022) 추가, auth_init 갱신

## [2026-03-17]

### 추가
- 다중 모델 시뮬레이션 지원 (OpenDrift + POSEIDON 병렬 실행 및 결과 병합)

## [2026-03-16]

### 추가
- 보고서 확산예측 지도 캡처 기능 (OilSpreadMapPanel, MAP_CAPTURE_IMG DB 컬럼)
- 실시간 드론 지도 뷰 — 드론 위치 아이콘 + 클릭 스트림 연결
- CCTV 지도/리스트 뷰 전환 + CCTV 아이콘 + 다크 팝업 UI
- KBS CCTV HLS 직접 재생 + CCTV 위치 지도 + 좌표 정확도 개선
- 사용자 매뉴얼 팝업 기능 추가
- 확산예측 지도 밝은 해도 스타일 적용 (육지 회색 + 바다 파랑)
- KOSPS/앙상블 준비중 팝업 + 기본 모델 POSEIDON 변경
- 오염분석 원 분석 기능 — 중심점/반경 입력으로 원형 오염 면적 계산
- 오일펜스 배치 가이드 UI 개선
- 다각형/원 오염분석 + 범례 최소화 + Convex Hull 면적 계산

### 수정
- geo.ts 중복 함수 제거 및 null 좌표 참조 오류 수정

### 변경
- 확산 예측 요약 폰트/레이아웃을 오염 종합 상황과 통일
- 오염분석 UI 개선 — HTML 디자인 참고 반영
- 범례 UI 개선 — HTML 참고 디자인 반영
- 드론 아이콘 쿼드콥터 + 함정 MarineTraffic 삼각형 스타일

### 기타
- 프론트엔드 포트 변경(5174) + CORS 허용

## [2026-03-13]

### 추가
- 오염분석 다각형/원 분석 기능 구현
- 시뮬레이션 에러 모달 추가
- 해류 캔버스 파티클 레이어 추가

### 수정
- useSubMenu useEffect import 누락 수정

### 변경
- 보고서 해안부착 현황 개선

### 기타
- 팀 워크플로우 동기화 (v1.6.1)

## [2026-03-11]

### 추가
- KHOA API 엔드포인트 교체 및 해양예측 오버레이 Canvas 렌더링 전환
- 기상 맵 컨트롤 컴포넌트 추가 및 KHOA API 연동 개선
- 기상 정보 기상 레이어 업데이트
- CCTV 안전관리 감지 기능 추가 (선박 출입, 침입 감지)
- 관리자 화면 고도화 — 사용자/권한/게시판/선박신호 패널
- CCTV 오일 감지 GPU 추론 연동 및 HNS 초기 핀 제거
- 유류오염보장계약 시드 데이터 추가 (1391건)
- OpenDrift 유류 확산 시뮬레이션 통합 (비동기 폴링 구조)
- flyTo 완료 후 자동 재생 기능
- 이미지 분석 서버 Docker 패키징 (CPU 전용 환경)
- SPIL_DATA 이미지 분석 결과 컬럼 인라인 통합
- CPU 전용 Docker 환경 구축 (Dockerfile.cpu, docker-compose.cpu.yml)

### 수정
- /orgs 라우트를 /:id 앞에 등록하여 라우트 매칭 수정

### 변경
- 이미지 분석/보고서/항공 UI 개선
- CCTV/관리자 고도화

### 문서
- 프로젝트 문서 최신화 (KHOA API, Vite 프록시)

### 기타
- CLAUDE_BOT_TOKEN 갱신
- 팀 워크플로우 v1.6.1 동기화 (custom_pre_commit 프로젝트 해시 불일치 해결, 적용일 갱신)
- 팀 워크플로우 v1.6.0 동기화 (해시 기반 자동 최신화, push/mr/release 워크플로우 체크, 팀 관리 파일 gitignore 처리)
- 팀 워크플로우 v1.5.0 동기화 (스킬 7종 업데이트, version 스킬 신규, release-notes-guide 추가)

## [2026-03-01]

### 추가
- MapLibre GL JS 5.x + deck.gl 9.x 지도 엔진 전환 (Leaflet 완전 제거) (#47, #53, #55)
- deck.gl 레이어: ScatterplotLayer, IconLayer, PathLayer, TextLayer (한글 폰트)
- 3D 회전 애니메이션, 확산분석 자동 데모, 통합조회 호버 툴팁
- SCAT 우측 패널 구현 (구간 상세/현장 사진/방제 권고 3탭)
- CSS 인프라 구축: base.css, components.css, wing.css (@tailwind @layer 체계)
- cn() 유틸리티 함수 (clsx + tailwind-merge)
- Board/HNS/Prediction/Aerial/Rescue Mock → API 전환 (#43, #45)
- SCAT Mock → API 전환 + PostGIS GEOMETRY 일괄 적용 (#41)
- Incidents 사고관리 탭 Mock → DB/API 전환 (#35)
- Assets 방제자산 탭 Mock → DB/API 전환 (#33)
- Reports 보고서 탭 localStorage → DB/API 전환 (#31)
- RBAC 2차원 권한 시스템: permResolver + AUTH_PERM OPER_CD + RCUD 매트릭스 UI (#29)
- FEATURE_ID 상수 체계 + useFeatureTracking 훅
- 게시판 CRUD API 연동 (boardService/Router)
- HNS 물질정보 DB 이전 (#23)
- 감사 로그 시스템 구현 (sendBeacon + audit 모듈) (#17)
- 메뉴 관리: DB 단일 소스 + 드래그앤드롭 정렬 + 이모지 피커 (#9, #13)
- 역할 CRUD 및 다중 역할 할당 (#7)
- JWT 인증 + Google OAuth 로그인 (#1, #3, #5)
- CI/CD: Gitea Actions 자동 배포

### 변경
- 인라인 style 3,500+ → Tailwind CSS 클래스 변환 (잔여 1,286건) (#57, #59)
- body default 인라인 스타일 1,055건 제거
- 대형 View 컴포넌트 서브탭 단위 분할 (#25)
- common/ + tabs/ 패키지 구조 전환 + path alias (@common/*, @tabs/*) (#21)
- OpenLayers 제거
- SQLite → PostgreSQL 16 + PostGIS 마이그레이션 (#22)
- DB 통합: wing + wing_auth → wing 단일 DB (3개 스키마)
- 하드코딩 URL → 환경변수 전환

### 수정
- CSS 회귀 버그 3건 (className 중복, KOSPS codeBox TypeError, 페놀 데이터)
- Prediction 분석 상세 500 에러 (ACDNT_WEATHER 컬럼명 불일치)
- 시뮬레이션 API CORS (localhost 하드코딩 → api 인스턴스)
- Weather Mixed Content + CI 환경변수 (#39)
- API named export import 수정 (Vite 빌드 오류) (#37)
- InfoLayerSection 구 경로 import → path alias (#27)
- Google OAuth 비자동승인 도메인 PENDING 안내 (#15)
- emoji-mart React 19 peer dependency 충돌 (#11)
- Backend 빌드 devDependencies 누락

### 문서
- Phase 1~4 리팩토링 반영 문서 최신화 (#24)
- 개발 가이드 정비 및 Docker 관련 내용 제거

### 기타
- 팀 워크플로우 v1.4.0 동기화 (서브에이전트 3종 + 활용 정책)
- 기존 코드 ESLint/TypeScript 에러 수정
