feat: LayerPanel 트리 + 이란 리플레이 실데이터 + 글꼴 커스텀 #167

병합
htlee feat/iran-replay-realdata 에서 develop 로 6 commits 를 머지했습니다 2026-03-24 09:28:44 +09:00
소유자

변경 사항

LayerPanel 공통 트리 + SVG 전환

  • LayerTreeNode 재귀 렌더러 (한국/이란 공통)
  • 위험시설/해외시설 emoji→SVG IconLayer 전환 (12 SVG, 3 IconLayer)
  • 부모 토글 캐스케이드 + 카운트 합산
  • 대시보드 탭 localStorage 영속화

이란 리플레이 실데이터

  • Backend 시점 조회 API: aircraft/osint/events from/to 파라미터
  • Events CRUD + import API (221건 DB 등록 완료)
  • S&P Global 피격 선박 27척 + sea_attack 이벤트 배지
  • 더미↔API 토글 UI

지도 글꼴 크기 커스텀

  • FontScaleContext: 시설/선박/분석/지역 4그룹 × 0.5~2.0x
  • LAYERS 하단 슬라이더 UI, localStorage 영속화
  • deck.gl TextLayer 26개 + MapLibre text-size 실시간 반영

테스트

  • TypeScript + ESLint 통과
  • Backend mvn compile 통과 + 서버 배포 완료
  • 더미 모드 기존 동작 유지
  • API 모드 Events 221건 조회 확인
  • 글꼴 슬라이더 4개 그룹 실시간 반영 확인
## 변경 사항 ### LayerPanel 공통 트리 + SVG 전환 - LayerTreeNode 재귀 렌더러 (한국/이란 공통) - 위험시설/해외시설 emoji→SVG IconLayer 전환 (12 SVG, 3 IconLayer) - 부모 토글 캐스케이드 + 카운트 합산 - 대시보드 탭 localStorage 영속화 ### 이란 리플레이 실데이터 - Backend 시점 조회 API: aircraft/osint/events from/to 파라미터 - Events CRUD + import API (221건 DB 등록 완료) - S&P Global 피격 선박 27척 + sea_attack 이벤트 배지 - 더미↔API 토글 UI ### 지도 글꼴 크기 커스텀 - FontScaleContext: 시설/선박/분석/지역 4그룹 × 0.5~2.0x - LAYERS 하단 슬라이더 UI, localStorage 영속화 - deck.gl TextLayer 26개 + MapLibre text-size 실시간 반영 ## 테스트 - [x] TypeScript + ESLint 통과 - [x] Backend mvn compile 통과 + 서버 배포 완료 - [x] 더미 모드 기존 동작 유지 - [x] API 모드 Events 221건 조회 확인 - [x] 글꼴 슬라이더 4개 그룹 실시간 반영 확인
htlee added 6 commits 2026-03-24 09:28:27 +09:00
- LayerTreeNode 공통 인터페이스 + LayerTreeRenderer 재귀 컴포넌트
- 한국/이란 양쪽 트리 데이터 정의 + batchToggle 캐스케이드
- 위험시설/해외시설 emoji→SVG IconLayer 전환 (12 SVG 함수, 3 IconLayer)
- 부모 토글→하위 전체 ON/OFF, 카운트 합산 동기화
- 대시보드 탭 localStorage 영속화
- S&P Global Market Intelligence (2026-03-19) 보고서 기반
- 이란 상선 공격 총 30건 중 식별 가능한 27척 데이터 추가
- 선박별: IMO, 국적, 유형, 피격 일시, 위치, 피해 정도
- 유형별: 탱커 52%, 벌크선 21%, 컨테이너 17%, 예인선 7%
- 해역별: UAE 48%, 오만 28%, 쿠웨이트/카타르 등
- 기존 리플레이 이벤트 ID와 연동

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Aircraft/OSINT Controller: from/to Instant 파라미터 추가 (기존 캐시 조회와 공존)
- AircraftService.getByDateRange(): DB에서 icao24별 최신 위치 조회
- OsintService.getByDateRange(): 날짜 범위 OSINT 조회
- Event 패키지 신규: Entity, Dto, Repository, Service, Controller
  - GET /api/events?from=&to= (인증 예외)
  - POST /api/events/import (벌크 import)
- AuthFilter: /api/events 인증 예외 추가
- GeoEvent.type에 'sea_attack' 추가 + SEA ATK 배지 (#0ea5e9)
- damagedShips → GeoEvent 변환, mergedEvents에 합류
- 더미↔API 토글 UI (ReplayControls 배속 우측)
- useIranData: dataSource 분기 (dummy=sampleData, api=Backend DB)
- API 모드: events/aircraft/osint 시점 범위 조회 (3월1일~오늘)
- 중복 방지: API 모드에서 damageEvents 프론트 병합 건너뜀
- fetchAircraftByRange, fetchOsintByRange, fetchEventsByRange 서비스 함수
- FontScaleContext + FontScalePanel: 시설/선박/분석/지역 4그룹 × 0.5~2.0 범위
- LAYERS 패널 하단 슬라이더 UI, localStorage 영속화
- Korea static 14개 + Iran 4개 + 분석 3개 + KoreaMap 5개 TextLayer 적용
- MapLibre 선박 라벨/국가명 실시간 반영
- 모든 useMemo deps + updateTriggers에 fontScale 포함
claude-bot 이 변경사항을 승인하였습니다. 2026-03-24 09:28:43 +09:00
claude-bot left a comment
멤버

MR 승인 (via /mr skill)

MR 승인 (via /mr skill)
htlee merged commit 872cd82cc0 into develop 2026-03-24 09:28:44 +09:00
htlee 삭제된 브랜치 feat/iran-replay-realdata 2026-03-24 09:28:44 +09:00
"로그인하여 이 대화에 참여"
No reviewers
레이블 없음
마일스톤 없음
담당자 없음
참여자 2명
알림
마감일
기한이 올바르지 않거나 범위를 벗어났습니다. 'yyyy-mm-dd'형식을 사용해주십시오.

마감일이 설정되지 않았습니다.

의존성

No dependencies set.

Reference: gc/kcg-monitoring#167
No description provided.