커밋 그래프

151 커밋

작성자 SHA1 메시지 날짜
5c75ba8712 docs: 릴리즈 노트 업데이트 2026-03-11 17:54:49 +09:00
b672e9b531 chore(workflow): 팀 워크플로우 v1.6.1 적용일 갱신 2026-03-11 17:52:01 +09:00
54d3a281c6 feat(prediction): CPU 전용 Docker 환경 구축 + 이미지 분석/보고서/항공 UI 개선 2026-03-11 17:30:25 +09:00
4300191000 feat(prediction): SPIL_DATA 이미지 분석 결과 컬럼 인라인 통합
- init.sql, 009_incidents.sql에 IMG_RSLT_DATA JSONB 컬럼 인라인 추가
- 별도 마이그레이션 파일(021_spil_img_rslt.sql) 제거 (인라인으로 통합)
2026-03-10 18:46:26 +09:00
22a473f254 Merge branch 'feature/prediction-image-upload' into feature/prediction-opendrift-integration 2026-03-10 18:38:11 +09:00
3946ff6a25 feat(prediction): 이미지 분석 서버 Docker 패키징 + DB 코드 제거
- prediction/image/ FastAPI 서버 Docker 환경 구성
  - Dockerfile: PyTorch 2.1 + CUDA 12.1 기반 GPU 이미지
  - docker-compose.yml: GPU 할당 + 데이터 볼륨 마운트
  - requirements.txt: 서버 의존성 목록
  - .env.example: 환경변수 템플릿
  - DOCKER_USAGE.md: 빌드/실행/API 사용법 문서
  - Dockerfile에 .dockerignore 제외 폴더 mkdir -p 추가
- .gitignore: prediction/image 결과물 및 모델 가중치(.pth) 제외 추가
- dbInsert_csv.py, dbInsert_shp.py 삭제 (미사용 DB 로직)
- api.py: dbInsert import 및 주석 처리된 DB 호출 코드 제거
- aerialRouter.ts: req.params 타입 오류 수정
2026-03-10 18:37:36 +09:00
b601edd741 feat(prediction): flyTo 완료 후 자동 재생 + OpenDrift Docker 설정 추가
- MapView: flyToIncident/onIncidentFlyEnd props 추가, moveend 이벤트 후 콜백 호출
- OilSpillView: 사고 지점 변경 시 flyTo 완료 후 재생(pendingPlayRef), 동일 지점은 즉시 재생
- opendrift/config.py: STORAGE_BASE 환경변수로 스토리지 경로 설정
- opendrift/dockerfile, .dockerignore 추가
- opendrift/createKmaImage.py 제거

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-09 18:46:15 +09:00
88eb6b121a feat(prediction): OpenDrift 유류 확산 시뮬레이션 통합 + CCTV/관리자 고도화
[예측]
- OpenDrift Python API 서버 및 스크립트 추가 (prediction/opendrift/)
- 시뮬레이션 상태 폴링 훅(useSimulationStatus), 로딩 오버레이 추가
- HydrParticleOverlay: deck.gl 기반 입자 궤적 시각화 레이어
- OilSpillView/LeftPanel/RightPanel: 시뮬레이션 실행·결과 표시 UI 개편
- predictionService/predictionRouter: 시뮬레이션 CRUD 및 상태 관리 API
- simulation.ts: OpenDrift 연동 엔드포인트 확장
- docs/PREDICTION-GUIDE.md: 예측 기능 개발 가이드 추가

[CCTV/항공방제]
- CCTV 오일 감지 GPU 추론 연동 (OilDetectionOverlay, useOilDetection)
- CCTV 안전관리 감지 기능 추가 (선박 출입, 침입 감지)
- oil_inference_server.py: Python GPU 추론 서버

[관리자]
- 관리자 화면 고도화 (사용자/권한/게시판/선박신호 패널)
- AdminSidebar, BoardMgmtPanel, VesselSignalPanel 신규 컴포넌트

[기타]
- DB: 시뮬레이션 결과, 선박보험 시드(1391건), 역할 정리 마이그레이션
- 팀 워크플로우 v1.6.1 동기화

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-09 14:55:46 +09:00
kdn
4d218f9fdd Merge pull request 'chore(workflow): 팀 워크플로우 v1.6.1 동기화' (#77) from feature/sync-workflow-v1.5.0 into develop 2026-03-06 15:55:27 +09:00
yeriyoo
fafaade420 docs: 릴리즈 노트 업데이트 2026-03-06 15:54:27 +09:00
yeriyoo
da51c213c9 chore(workflow): 팀 워크플로우 v1.6.1 동기화
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-06 15:37:57 +09:00
kdn
a9d8a946d2 Merge pull request 'chore(workflow): 팀 워크플로우 v1.6.0 동기화' (#76) from feature/sync-workflow-v1.5.0 into develop 2026-03-06 15:10:50 +09:00
yeriyoo
23d65cdc45 chore(workflow): 팀 워크플로우 v1.6.0 동기화
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-06 15:09:53 +09:00
kdn
b1c1d6e893 Merge pull request 'chore(workflow): 팀 워크플로우 v1.5.0 동기화' (#75) from feature/sync-workflow-v1.5.0 into develop 2026-03-06 12:44:31 +09:00
yeriyoo
32daac843f docs: 릴리즈 노트 업데이트 2026-03-06 12:43:11 +09:00
yeriyoo
c0e0b12b9e chore(workflow): 팀 워크플로우 v1.5.0 동기화
- 스킬 7종 업데이트 (mr, push, release, create-mr, fix-issue, sync-team-workflow, init-project)
- version 스킬 신규 추가
- release-notes-guide.md, subagent-policy.md 규칙 추가
- settings.json env(CLAUDE_BOT_TOKEN) 추가
- agents/reviewer.md 업데이트

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-06 12:39:51 +09:00
27152566a6 Merge pull request 'chore: CLAUDE_BOT_TOKEN 갱신' (#73) from chore/bot-token-fix into develop 2026-03-06 08:02:40 +09:00
e5f47963cc chore: CLAUDE_BOT_TOKEN 갱신 2026-03-06 08:02:29 +09:00
bc3e9d3c59 Merge pull request 'feature/cctv-hns-enhancements' (#70) from feature/cctv-hns-enhancements into develop
Reviewed-on: #70
2026-03-06 07:38:25 +09:00
Nan Kyung Lee
f974162e3a feat(assets): 선박보험 엑셀 다운로드 기능 추가
xlsx 패키지 도입, 필터 조건에 맞는 전체 데이터를 .xlsx로 내보내기

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 14:30:56 +09:00
Nan Kyung Lee
91d0832963 feat(assets): 유류오염보장계약 DB 임포트 + 선박보험 조회 연동
해양수산부 공공데이터(유류오염보장계약관리) 1,391건을 SHIP_INSURANCE 테이블에 임포트하고,
백엔드 API 및 프론트엔드 ShipInsurance 컴포넌트를 실제 DB 데이터 기반으로 전환.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 14:26:56 +09:00
Nan Kyung Lee
c3d3b82b60 feat(scat): 해안평가 서브메뉴 3개 추가 (해안오염 조사 평가, 해양오염분포도, Pre-SCAT)
- useSubMenu에 scat 서브메뉴 설정 추가 (survey, distribution, pre-scat)
- ScatView wrapper 컴포넌트로 서브탭 분기 처리
- SurveyView, DistributionView placeholder 컴포넌트 생성
- hasPermission에 부모 리소스 fallback 로직 추가 (scat:survey → scat)
- App.tsx에서 PreScatView → ScatView 교체

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 13:27:53 +09:00
Nan Kyung Lee
618d898a6c feat(assets): 장비 유형별 필터 + 합계 행 + 컬럼 하이라이트
- 방제선/유회수기/이송펌프/방제차량/살포장치 장비 필터 드롭다운 추가
- 페이지네이션 위 합계 행에 필터된 기관의 장비별 총합 표시
- 장비 필터 선택 시 해당 컬럼 헤더/셀/합계 항목 cyan 하이라이트

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 13:10:51 +09:00
Nan Kyung Lee
29686f9476 feat(assets): 방제자산 엑셀 데이터 임포트 + 연락처 탭 UI 개선
- 152개 기관 방제장비 현황 엑셀 데이터 DB 마이그레이션 (018)
- 연락처 탭에 기관 기본 정보(기관명, 유형, 관할청, 주소, 대표 연락처) 섹션 추가
- 담당자 목록에 직책/담당자명/연락처 표시 및 cyan 색상 강조

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 12:53:12 +09:00
Nan Kyung Lee
8f98f63aa5 feat(aerial): CCTV 실시간 HLS 스트림 + HNS 분석 고도화
CCTV 실시간 영상:
- CCTVPlayer 컴포넌트 (hls.js 기반 HLS/MJPEG/MP4 재생)
- 백엔드 HLS 프록시 엔드포인트 (CORS 우회, m3u8 URL 재작성)
- KHOA 15개 + KBS 6개 실제 해안 CCTV 연동
- Vite dev proxy, 스트림 타입 자동 감지 유틸리티

HNS 분석:
- HNS 시나리오 저장/불러오기/재계산 기능
- 물질 DB 검색 및 상세 정보 연동
- 좌표/파라미터 입력 UI 개선
- Python 확산 모델 스크립트 (hns_dispersion.py)

공통:
- 3D 지도 토글, 보고서 생성 개선
- useSubMenu 훅, mapUtils 확장
- ESLint set-state-in-effect 수정

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 17:21:41 +09:00
9faf928e40 Merge pull request 'release: 2026-03-01 (6건 커밋)' (#69) from develop into main
All checks were successful
Build and Deploy Wing-Demo / build-and-deploy (push) Successful in 31s
2026-03-03 08:51:08 +09:00
ad69d960a2 Merge pull request 'feat(map+reports): 3D 지도 토글 + HWPX 보고서 포맷 구현' (#67) from feature/3d-map-toggle into develop 2026-03-03 08:44:41 +09:00
7bd7797c6d Merge pull request 'release: 2026-03-01.2 (VERSION-HISTORY.md v1.0.0)' (#66) from develop into main
All checks were successful
Build and Deploy Wing-Demo / build-and-deploy (push) Successful in 32s
2026-03-03 08:10:51 +09:00
d0ed18e34b Merge pull request 'docs: v1.0.0 버저닝 릴리즈 노트 작성' (#65) from docs/version-history into develop 2026-03-03 08:09:48 +09:00
0022c53bf7 docs: v1.0.0 버저닝 릴리즈 노트 작성 (VERSION-HISTORY.md)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 08:09:29 +09:00
f68fde9a64 Merge pull request 'release: 2026-03-01 (문서 전면 재작성 + 릴리즈 노트)' (#64) from develop into main
All checks were successful
Build and Deploy Wing-Demo / build-and-deploy (push) Successful in 38s
2026-03-03 07:40:25 +09:00
b3978ed7c0 Merge pull request 'docs: 릴리즈 노트 정리 (2026-03-01)' (#63) from release/2026-03-01 into develop 2026-03-03 07:38:59 +09:00
11337a9d8c docs: 릴리즈 노트 정리 (2026-03-01)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 07:38:24 +09:00
Nan Kyung Lee
ade0b5b509 feat(reports): HWPX 테이블 레이아웃 개선 (테두리 + 라벨 배경색)
borderFill id=3(값 셀: 실선 테두리), id=4(라벨 셀: 실선 테두리 + #f0f4f8 배경)
추가하여 HTML 보고서와 동일한 테이블 스타일 적용.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 10:47:29 +09:00
Nan Kyung Lee
18e93d17d7 Merge branch 'feature/hwpx-export' into feature/3d-map-toggle 2026-03-02 10:39:45 +09:00
Nan Kyung Lee
374a487878 feat(reports): HWP 저장을 실제 HWPX 포맷으로 변경
기존 HTML Blob → .doc 저장 방식을 OWPML 표준 HWPX(ZIP+XML) 포맷으로 교체.
JSZip으로 HWPX 파일을 순수 브라우저에서 생성하여 한글에서 직접 열 수 있도록 구현.

- hwpxExport.ts 신규: HWPX ZIP 패키징 (mimetype, header.xml, section0.xml 등)
- reportUtils.ts: exportAsHWP → dynamic import로 HWPX 위임
- ReportsView.tsx, TemplateFormEditor.tsx: 구조화 데이터 직접 전달

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 10:07:06 +09:00
Nan Kyung Lee
aba58b2227 feat(map): 3D 지도 토글 구현 (VWorld 위성 + OSM 건물 extrusion)
- mapStore.ts(신규): Zustand 기반 mapToggles 전역 상태 (s57/s101/threeD/satellite)
- TopBar.tsx: 로컬 상태 → mapStore 전환 (3D 토글 전역 공유)
- MapView.tsx:
  - SATELLITE_3D_STYLE 추가 (VWorld WMTS 위성 + OpenFreeMap 벡터타일)
  - MapLibre fill-extrusion으로 3D 건물 렌더링 (zoom 13+, render_height 사용)
  - MapPitchController: 3D ON → pitch 45°/bearing -17°, OFF → 0° 복귀
  - mapToggles.threeD 상태에 따라 지도 스타일 전환 (BASE_STYLE ↔ SATELLITE_3D_STYLE)
- deps: @deck.gl/mesh-layers, @deck.gl/extensions 추가 (관련 기능용)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-01 21:28:30 +09:00
Nan Kyung Lee
999e5307c4 chore: origin/main 업데이트 반영 (CSS 리팩토링 + 문서 전면 갱신) 2026-03-01 21:26:30 +09:00
a9294e848c Merge pull request 'refactor(css): CSS 리팩토링 + 문서 전면 갱신' (#61) from feature/css-refactoring into main
All checks were successful
Build and Deploy Wing-Demo / build-and-deploy (push) Successful in 31s
Reviewed-on: #61
2026-03-01 14:07:31 +09:00
a2cfc02b70 chore: 백업 디렉토리 제거 및 gitignore 추가
docs/_backup_*/ 패턴을 .gitignore에 추가하여
문서 백업 디렉토리가 커밋에 포함되지 않도록 설정.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 14:05:42 +09:00
6fbb3fc249 docs: 전체 프로젝트 문서 최신 기준 신규 작성
Phase 6(MapLibre+deck.gl), CSS 리팩토링, RBAC, 10탭 API 전환 등
현재 시스템 상태를 정확히 반영하여 모든 문서를 처음부터 재작성.

- README.md: 기술 스택(MapLibre+deck.gl), 빌드, 구조, 스킬 갱신
- CLAUDE.md: CSS @layer, RBAC, HTTP 정책, 백엔드 모듈 반영
- docs/README.md: 아키텍처 상세 (3-Layer, 인증, 권한, CSS)
- docs/DEVELOPMENT-GUIDE.md: 워크플로우 전체 흐름 + 실전 예시
- docs/INSTALL_GUIDE.md: 온라인/오프라인 설치 매뉴얼
- docs/COMMON-GUIDE.md: 공통 로직 9개 섹션 (인증~CSS)
- docs/MENU-TAB-GUIDE.md: 새 탭 추가 5단계 + 예시
- docs/CRUD-API-GUIDE.md: End-to-End CRUD API 패턴
- docs/MOCK-TO-API-GUIDE.md: Mock→API 전환 10단계 프로세스
- docs/_backup_20260301/: 기존 문서 백업

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 14:03:08 +09:00
a152bb8a36 Merge pull request 'develop' (#60) from develop into main
All checks were successful
Build and Deploy Wing-Demo / build-and-deploy (push) Successful in 32s
Reviewed-on: #60
2026-03-01 13:32:50 +09:00
9b849d6501 Merge pull request 'fix(css): CSS 회귀 버그 수정 + SCAT 우측 패널 구현' (#59) from feature/css-refactoring into develop
Reviewed-on: #59
2026-03-01 13:32:35 +09:00
34cf046787 fix(css): CSS 회귀 버그 3건 수정 + SCAT 우측 패널 구현
- className 중복 속성 31건 수정 (12파일)
- KOSPS codeBox spread TypeError 해결
- HNS 페놀(C₆H₅OH) 물질 데이터 추가
- ScatRightPanel 280px 우측 패널 신규 구현 (3탭+액션버튼)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 13:11:21 +09:00
5150e74a07 Merge pull request 'develop' (#58) from develop into main
All checks were successful
Build and Deploy Wing-Demo / build-and-deploy (push) Successful in 31s
Reviewed-on: #58
2026-03-01 12:32:01 +09:00
ec195c9e79 Merge pull request 'refactor(css): 인라인 스타일 → Tailwind CSS 리팩토링 (3,500+ → 1,286건)' (#57) from feature/css-refactoring into develop
Reviewed-on: #57
2026-03-01 12:31:17 +09:00
b00bb56af3 refactor(css): Phase 3 인라인 스타일 → Tailwind 대규모 변환 (486건)
대형 파일 집중 변환:
- SatelliteRequest: 134→66 (hex 색상 일괄 변환)
- IncidentsView: 141→90, MediaModal: 97→38
- HNSScenarioView: 78→38, HNSView: 49→31
- LoginPage, MapView, PredictionInputSection 등 중소 파일 8개

변환 패턴: hex 색상→text-[#hex], CSS 변수→Tailwind 유틸리티,
flex/grid/padding/fontSize/fontWeight/overflow 등 정적 속성 className 이동

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 12:06:15 +09:00
628c07f4fb refactor(css): 인라인 style → Tailwind className 일괄 변환 (229건)
안전한 패턴 매칭으로 단독 color/background/fontWeight/fontSize/flex 스타일을
Tailwind 유틸리티 클래스로 변환. 혼합 style에서 개별 속성 추출은 제외하여
시각적 회귀 방지.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 11:38:59 +09:00
1dacb22487 refactor(css): 인라인 스타일 → Tailwind 추가 변환 (Phase 2 계속)
대형 파일 추가 변환:
- HNSSubstanceView: 275→209건 (66건 변환)
- OilSpillTheoryView: 435→417건 (18건 변환)
- IncidentsLeftPanel: 61→34건 (27건 변환)
- RescueView: 54→47건 (7건 변환)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 11:31:41 +09:00
3fc8f03238 refactor(css): 인라인 스타일 → Tailwind 유틸리티 클래스 변환 (Phase 2, ~990건)
Phase 2: 정적 인라인 스타일을 Tailwind className으로 변환
- common/: MapView, BacktrackReplayBar, LoginPage, LayerTree, ComboBox, SubMenuBar
- hns/: HNSSubstanceView, HNSScenarioView, HNSView, HNSLeftPanel 등 8파일
- prediction/: BoomDeploymentTheoryView, OilBoomSection, RecalcModal, RightPanel 등 8파일
- incidents/: IncidentsView, IncidentsLeftPanel, IncidentsRightPanel
- rescue/: RescueScenarioView
- aerial/: SatelliteRequest, AerialTheoryView
- assets/: ShipInsurance, AssetTheory, AssetManagement 등 5파일
- board/: BoardView
- reports/: ReportsView, OilSpillReportTemplate, ReportGenerator
- weather/: WeatherMapOverlay, WeatherView, WeatherRightPanel

변환 패턴: color/background/border/borderRadius/display/flex/gap/fontSize/fontWeight → Tailwind
동적 스타일(rgba, gradient, 삼항 조건부, 런타임 변수)은 style prop에 유지
JS 번들: 2,921KB → 2,897KB (-24KB)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 11:24:13 +09:00