82 lines
4.2 KiB
Markdown
82 lines
4.2 KiB
Markdown
# Release Notes
|
||
|
||
이 문서는 [Keep a Changelog](https://keepachangelog.com/ko/1.0.0/) 형식을 따릅니다.
|
||
|
||
## [Unreleased]
|
||
|
||
### 추가
|
||
- 지진파 수집기: USGS FDSN API, 이란 bbox(M2+), 5분 주기
|
||
- 기압 수집기: Open-Meteo API, 이란 5개 관측점(테헤란/이스파한/반다르아바스/시라즈/타브리즈), 10분 주기
|
||
- DB 테이블: seismic_events, pressure_readings (마이그레이션 004)
|
||
- REST API: GET /api/sensor/seismic, GET /api/sensor/pressure
|
||
- SensorChart 그래프 순서 변경: 지진파 → 기압 → 소음 → 방사선
|
||
- 소음/방사선 차트에 (DEMO) 라벨 표시
|
||
|
||
### 변경
|
||
- 프론트엔드 패키지 구조 리팩토링: components/ → common/layers/iran/korea/ 분리
|
||
- App.tsx God Component 분해: 1,179줄 → 588줄 (데이터 훅 3개 추출)
|
||
- 선박 모달 사진 탭: signal-batch → 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분
|