wing-ops/docs/RELEASE-NOTES.md
htlee ebbb074866 docs: CHANGELOG.md → RELEASE-NOTES.md 이름 변경 (git exclude 회피)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 16:08:11 +09:00

6.8 KiB

CHANGELOG

WING-OPS 프로젝트의 전체 변경 이력. Keep a Changelog 형식 기반, Phase 단위로 기록.


DB DDL 현행화 (2026-03-01)

database/ 디렉토리를 운영 DB 기준으로 전면 재정리하고, wing_auth → auth 스키마 문서 수정.

Added

  • database/schema/ ERD용 순수 DDL 14파일 (운영 DB pg_dump 기반)
    • 00_extensions.sql ~ 13_indexes.sql (FK 의존성 순서)
  • database/seed/ 초기 데이터 INSERT 14파일
  • database/README.md (DB 아키텍처, 설치 절차, PostGIS 컬럼 참조)

Changed

  • wing_auth → auth 스키마 표기 전면 수정 (docs/ 6개 + README + CLAUDE.md)
  • AUTH_DB_* 환경변수 참조 → DB_* 단일 구조로 통일
  • DB 아키텍처 설명: wing 단일 DB + 3개 스키마 (public/auth/wing)

Deprecated

  • database/init.sql, database/auth_init.sql_deprecated/로 이동

PR

  • PR#62 (feature/css-refactoring → main)

[Phase 7] CSS 리팩토링 (2026-03)

인라인 style을 Tailwind CSS 유틸리티 클래스로 전환하고, CSS 인프라를 구축.

Added

  • CSS 인프라 구축: index.css 엔트리, base.css, components.css, wing.css (@tailwind @layer 체계)
  • cn() 유틸리티 함수 (clsx + tailwind-merge)

Changed

  • 인라인 style 3,500건 이상 → Tailwind 클래스로 변환 (잔여 1,286건)
  • body default 인라인 스타일 1,055건 제거
  • SCAT 우측 패널 CSS 회귀 수정

Refactored

  • LoginPage, LayerTree, SubMenuBar, BacktrackReplayBar, MapView, ComboBox 등 공통 컴포넌트 CSS 전환
  • HNSView, HNSLeftPanel, HNSRightPanel, HNSScenarioView, HNSSubstanceView, HNSRecalcModal, HNSAnalysisListTable CSS 전환
  • IncidentsView, IncidentsLeftPanel, IncidentsRightPanel CSS 전환
  • OilSpillView, OilSpillTheoryView, BoomDeploymentTheoryView, OilBoomSection, RightPanel, RecalcModal, BacktrackModal CSS 전환
  • RescueScenarioView CSS 전환

[Phase 6] MapLibre GL JS + deck.gl 전환 (2026-03)

Leaflet을 MapLibre GL JS 5.x + deck.gl 9.x로 전환하여 GPU 기반 렌더링 체계 구축.

Added

  • MapLibre GL JS 5.x + @vis.gl/react-maplibre 8.1 + deck.gl 9.x 통합
  • deck.gl 레이어: ScatterplotLayer, IconLayer, PathLayer, TextLayer
  • TextLayer 한글 폰트 지원
  • 3D 회전 애니메이션
  • 확산분석 자동 데모 모드
  • 통합조회 호버 툴팁
  • 확산 방향 SSW 수정
  • 선박 아이콘 개선

Removed

  • Leaflet + react-leaflet 완전 제거

Merged

  • MR#47, MR#53, MR#55 → develop

[Phase 5] View 분할 + RBAC 2차원 권한 (2026-02)

대형 View 컴포넌트를 서브탭으로 분할하고, FEATURE_ID 기반 2차원 권한 체계 도입.

Added

  • FEATURE_ID 상수 체계 (featureIds.ts)
  • RBAC 2차원 권한 시스템: 리소스(FEATURE_ID) x 오퍼레이션(RCUD)
  • permResolver 권한 해석 엔진
  • AUTH_PERM 테이블 OPER_CD 컬럼
  • RCUD 매트릭스 관리 UI (admin 탭)
  • 게시판 CRUD API (boardService/Router) + 프론트 연동

Changed

  • 대형 View 컴포넌트를 서브탭 단위로 분할

Merged

  • MR#29 → develop

[Phase 4] Mock → API 전환 (2026-02 ~ 2026-03)

10개 탭의 Mock 데이터를 실제 PostgreSQL 기반 API로 전환. 5차에 걸쳐 순차 진행.

Round 1 — Reports, Assets (2026-02-28)

  • Reports: 보고서 템플릿/생성/조회 CRUD API
    • DB 7개 테이블 (REPORT_TMPL, REPORT_TMPL_SECT, REPORT_ANALYSIS_CTGR 등)
    • 프론트 4개 컴포넌트 API 연동 (localStorage 제거)
  • Assets: 자산(장비/기관/담당자/선박보험) 관리 API
    • migration 008_assets.sql

Round 2 — Incidents (2026-02-28)

  • Incidents: 사건/사고 이력 관리 API
    • migration 009_incidents.sql, 010_incidents_media.sql
    • 미디어 첨부파일 지원

Round 3 — SCAT, Board (2026-03-01)

  • SCAT: 구역/구간 조회 3 API + PostGIS
    • migration 011_scat.sql
  • Board: 매뉴얼 CRUD + 첨부파일 API
    • migration 012_board_ext.sql

Round 4 — HNS, Prediction (2026-03-01)

  • HNS: 분석 CRUD 5 API
    • migration 013_hns_analysis.sql
  • Prediction: 분석/역추적/오일펜스 7 API
    • migration 014_prediction.sql

Round 5 — Aerial, Rescue (2026-03-01)

  • Aerial: 미디어/CCTV/위성 6 API + PostGIS
    • migration 015_aerial.sql
  • Rescue: 구난 작전/시나리오 3 API + JSONB
    • migration 016_rescue.sql

Fixed

  • Prediction 분석 상세 500 에러 (ACDNT_WEATHER 컬럼명 불일치)
  • 시뮬레이션 API CORS 에러 (localhost 하드코딩 → api 인스턴스)

Changed

  • 하드코딩 URL → 환경변수 전환 (GeoServer, CORS, CSP 등)
  • backtrackMockData.ts 삭제
  • HTTP 메소드 제한 결정 (GET/POST only)

Merged

  • MR#31 (Reports) → develop
  • 이후 Round 2~5 순차 머지

[Phase 3] SQLite → PostgreSQL 전환 (2026-02)

로컬 SQLite를 원격 PostgreSQL 16 + PostGIS로 전환.

Changed

  • wingDb: SQLite → PostgreSQL (pg Pool)
  • authDb: 초기 별도 DB → 이후 migration 005에서 wing 단일 DB로 통합 (authPool = wingPool re-export)
  • DB 연결 모듈 리팩토링 (wingDb.ts, authDb.ts)

Removed

  • SQLite 관련 의존성 완전 제거

Merged

  • MR#22 → develop

[Phase 1~2] 프로젝트 구조 전환 (2026-02)

모놀리식 구조를 common/ + tabs/ 패키지 구조로 전환하고, 지도 엔진을 교체.

Added

  • common/ 공통 모듈 분리 (components, hooks, services, store, types, utils)
  • tabs/ 탭 단위 패키지 구조 (11개 탭)
  • Path alias: @common/*, @tabs/*

Removed

  • OpenLayers 제거

Changed

  • 단일 src/ 구조 → common/ + tabs/ 이중 구조로 전환
  • 컴포넌트 재배치 및 import 경로 정리

Merged

  • MR#21 → develop

기반 인프라 (전체 기간)

프로젝트 전반에 걸쳐 구축된 기반 기능.

인증 시스템

  • JWT HttpOnly Cookie (WING_SESSION) 기반 인증
  • Google OAuth 연동
  • requireAuth, requireRole, requirePermission 미들웨어 체인

보안

  • Helmet (CSP, CORP cross-origin)
  • CORS 설정
  • Rate-limit
  • 입력 살균 (sanitize 미들웨어)

CI/CD

  • Gitea Actions 자동 배포 (.gitea/workflows/deploy.yml)
  • main 브랜치 push 시 자동 빌드/배포

개발 도구

  • .githooks/ (pre-commit, commit-msg 자동 검증)
  • .claude/ 팀 워크플로우 (rules, skills, scripts, agents)
  • Claude Code 스킬: /push, /mr, /release, /create-mr, /fix-issue

감사 로그

  • 탭 이동 자동 기록 (sendBeacon)
  • 백엔드 audit 모듈

메뉴 시스템

  • 동적 메뉴 설정 (menuStore + menus API)
  • 드래그앤드롭 메뉴 정렬 (@dnd-kit)

DB 마이그레이션

  • database/migration/001~016 (16개 마이그레이션 파일)
    • 001: 레이어 설정
    • 002: HNS 물질 DB
    • 003~006: 인증/권한/설정
    • 007~016: 업무 도메인 (Reports, Assets, Incidents, SCAT, Board, HNS, Prediction, Aerial, Rescue)