6.8 KiB
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,HNSAnalysisListTableCSS 전환IncidentsView,IncidentsLeftPanel,IncidentsRightPanelCSS 전환OilSpillView,OilSpillTheoryView,BoomDeploymentTheoryView,OilBoomSection,RightPanel,RecalcModal,BacktrackModalCSS 전환RescueScenarioViewCSS 전환
[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)