kcg-monitoring/docs/RELEASE-NOTES.md

119 lines
5.8 KiB
Markdown
Raw Blame 히스토리

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Release Notes
이 문서는 [Keep a Changelog](https://keepachangelog.com/ko/1.0.0/) 형식을 따릅니다.
## [Unreleased]
## [2026-03-18.4]
### 추가
- 한국 선박 현황 헤더 ON/OFF 토글 → 지도 강조 링+라벨 표시 (기본 ON)
- 우측 패널 한국 선박 목록: hover 시 지도 강조 링, 클릭 시 선박 모달 호출
### 변경
- 지진파 그래프: LineChart → ScatterChart (진도별 색상/크기, 이벤트 점 표시)
- 기압 그래프: 버킷 평균 → 관측소별 개별 라인 (데이터 없는 구간 0 제거)
## [2026-03-18.3]
### 추가
- 센서 API 서비스(sensorApi.ts): 백엔드 지진/기압 실데이터 연동
- 선박 모달 S&P Global 다중 사진 슬라이드 (좌우 화살표 + 인디케이터)
- 선박 모달 드래그 이동 (헤더 영역 grab)
- LiveControls KST/UTC 라디오 버튼 그룹
### 변경
- SensorChart: 더미 → 실데이터(지진/기압), x축 동적 시간 표시
- 히스토리 프리셋: 30M/1H/3H/6H/12H/24H → 10M/30M/1H/3H/6H (8칸 구조)
- 센서 API 파라미터: hours → min (기본 2880=48h)
- 센서 데이터 polling: 초기 48h 전체 → 10분마다 incremental merge
- 선박 데이터 polling: 초기 60분 → 5분마다 6분 윈도우 merge + 60분 stale 제거
- 선박 모달 고정 크기(300px) + 사진 영역 고정(160px, object-contain)
- 선박 모달 데이터 레이아웃: 2컬럼 그리드 + 연관 정보 쌍 배치 + 긴 값 단독행
- 선박 모달 CSS 통일 (태그 패딩/배경, 컬럼 간격 12px)
### 수정
- 센서 API(/api/sensor/*) 인증 예외 처리 (공개 데이터)
- 선박 모달 열 때마다 S&P Global 우선 탭 리셋 (MarineTraffic 포커스 유지 버그)
- S&P Global 사진 URL: IMO 기반 이미지 목록 API 연동 (잘못된 번호 패턴 제거)
### 기타
- 로그인 화면 KCG 로고에 DEMO 문구 오버레이
## [2026-03-18.2]
### 추가
- 지진파 수집기: USGS FDSN API, 이란 bbox(M2+), 5분 주기
- 기압 수집기: Open-Meteo API, 이란 5개 관측점, 10분 주기
- DB: seismic_events, pressure_readings 테이블 (마이그레이션 004)
- REST: GET /api/sensor/seismic, GET /api/sensor/pressure
### 변경
- 프론트엔드 패키지 구조 리팩토링: components/ → common/layers/iran/korea/ 분리
- App.tsx 분해: 1,179줄 → 588줄 (useIranData, useKoreaData, useKoreaFilters 훅 추출)
- SensorChart 그래프 순서: 지진파 → 기압 → 소음(DEMO) → 방사선(DEMO)
- 선박 모달 사진 탭: S&P Global 명칭, 고화질(_2) 기본 표시
- Overpass API 외부 호출 제거 → 정적 인프라 데이터
### 수정
- LiveControls KST 시간 이중 오프셋(+9h×2) 수정 + KST/UTC 토글
- nginx /shipimg/ 프록시: ^~ 추가 (정적파일 regex 우선매칭 방지)
## [2026-03-18]
### 추가
- OSINT 수집기: GDELT + Google News RSS 백엔드 수집 (@Scheduled 2분)
- Satellite 수집기: CelesTrak TLE 백엔드 수집 (@Scheduled 10분)
- `GET /api/osint?region=iran|korea`, `GET /api/satellites?region=iran|korea` REST API
- Caffeine 캐시 TTL 2일 (Aircraft 포함 전체 통일)
- DB 마이그레이션: `ship_positions`, `osint_feeds`, `satellite_tle` 테이블 + 샘플 데이터
- 프론트엔드 OSINT/위성 데이터 백엔드 API 우선 호출 + 직접 호출 fallback
### 수정
- 002 마이그레이션 search_path에 public 추가 (PostGIS 타입 참조)
## [2026-03-17]
### 추가
- 프론트엔드 모노레포 이관 (`frontend/` 폴더 구조)
- signal-batch API 연동 (한국 선박 실시간 위치 데이터)
- Tailwind CSS 4 + CSS 변수 테마 시스템 (dark/light)
- i18next 다국어 지원 (ko/en) — 28개 컴포넌트 적용
- 레이어 패널 트리 구조 재설계 (카테고리별 온/오프, 접이식 범례)
- Google OAuth 로그인 + DEV LOGIN 인증 우회 (개발 모드)
- 선박 이미지 탭 전환 UI (signal-batch / MarineTraffic)
- 백엔드 Spring Boot 3.2 스켈레톤 (JDK 21)
- Google OAuth + JWT 인증 API (`@gcsc.co.kr` 도메인 제한)
- 백엔드 항공기 수집기 (Airplanes.live + OpenSky, @Scheduled 60초 주기)
- 인메모리 캐시 + PostGIS DB 적재 (향후 리플레이 지원)
- `GET /api/aircraft?region=iran|korea` REST API
- DB 마이그레이션: `aircraft_positions` 테이블 (geometry + GiST 인덱스)
- 헤더 우측 사용자 프로필/이름 + 로그아웃 버튼
- 로그인 화면 KCG 로고 적용 (kcg.svg)
- 브라우저 탭 favicon/제목 변경 (kcg-dashboard-demo)
- PostgreSQL 스키마 (events, news, osint, users, login_history)
- Python FastAPI 분석서버 placeholder
- Gitea Actions CI/CD 파이프라인 (main merge 시 자동 배포)
- nginx 설정 (SPA + API 프록시 + 외부 API CORS 프록시)
- systemd 서비스 (kcg-backend, JDK 21, 2~4GB 힙)
### 수정
- 항공기 API 폴링 주기 15초/25초 → 60초 (Rate Limit 대응)
- CORS: CorsFilter 최우선 순위 등록 (프로덕션 도메인 허용)
- 프로덕션 빌드 시 console/debugger 자동 제거
- CI/CD 워크플로우 전면 재구성: act 컨테이너(node:24) 환경 대응
- CI 빌드 실패 해결: `@rollup/rollup-darwin-arm64` 직접 의존성 제거
- 모노레포 pre-commit hook `frontend/` 디렉토리 기준 실행
### 변경
- JDK 17 → 21 업그레이드 (pom.xml, sdkmanrc, CI/CD, systemd)
- 프론트엔드 REPLAY 모드: 외부 API 호출 제거, 샘플 데이터 전용
- 프론트엔드 airplaneslive.ts / opensky.ts 삭제 (백엔드로 대체)
- Vite 프록시에서 airplaneslive / opensky 항목 제거
- deploy.yml: Gitea secrets → .env 파일로 백엔드 환경변수 배포
- systemd/nginx: 배포 경로 /devdata/services/kcg/ 반영
- 외부 API 호출 CORS 프록시 전환 (Airplanes.live, OpenSky, CelesTrak)
- App.css 하드코딩 색상 → CSS 변수 토큰 전환 (테마 반응)
- 선박 분류 체계 AIS shipTy 파싱 개선
- 한국 선박 데이터 폴링 주기 15초 → 4분