- better-sqlite3 제거, wingDb.ts (PostgreSQL wing DB Pool) 추가 - layers 라우터: 동기(better-sqlite3) → 비동기(pg) 전환 - LAYER 테이블 마이그레이션 SQL 생성 (database/migration/001_layer_table.sql) - seed 스크립트 PostgreSQL 전환 - 문서 업데이트: CLAUDE.md, README.md, docs/README.md, COMMON-GUIDE.md Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
104 lines
4.4 KiB
Markdown
104 lines
4.4 KiB
Markdown
# WING-OPS (해양 방제 운영 지원 시스템)
|
|
|
|
## 프로젝트 개요
|
|
해양 오염 사고 대응을 위한 방제 운영 지원 시스템.
|
|
유류/HNS 확산 예측, 역추적 분석, 구조 시나리오, 항공 방제, 자산 관리, SCAT 조사, 기상/해상 정보를 통합 제공한다.
|
|
|
|
- **프로젝트 타입**: react-ts (모노레포)
|
|
- **Frontend**: React 19 + Vite 7 + TypeScript 5.9 + Tailwind CSS 3
|
|
- **Backend**: Express 4 + PostgreSQL (pg) + TypeScript
|
|
- **상태관리**: Zustand (클라이언트), TanStack Query (서버)
|
|
- **지도**: Leaflet
|
|
- **실시간**: Socket.IO
|
|
|
|
## 빌드/실행
|
|
|
|
### Frontend
|
|
```bash
|
|
cd frontend
|
|
npm install
|
|
npm run dev # 개발 서버 (Vite, localhost:5173)
|
|
npm run build # 프로덕션 빌드 (tsc -b && vite build)
|
|
npm run lint # ESLint 검증
|
|
npm run preview # 빌드 미리보기
|
|
```
|
|
|
|
### Backend
|
|
```bash
|
|
cd backend
|
|
npm install
|
|
npm run dev # 개발 서버 (tsx watch, localhost:3001)
|
|
npm run build # TypeScript 컴파일 (tsc)
|
|
npm start # 프로덕션 실행
|
|
npm run db:seed # DB 초기 데이터
|
|
```
|
|
|
|
## 테스트
|
|
테스트 프레임워크 미구성. 향후 Vitest + React Testing Library 도입 예정.
|
|
|
|
## Lint/Format
|
|
```bash
|
|
cd frontend && npx eslint . # ESLint (flat config)
|
|
npx prettier --check . # Prettier 검증
|
|
npx prettier --write . # Prettier 자동 수정
|
|
```
|
|
|
|
## 프로젝트 구조
|
|
```
|
|
wing/
|
|
├── frontend/ React 19 + Vite + TypeScript + Tailwind
|
|
│ └── src/
|
|
│ ├── App.tsx 메인 (탭 라우팅, 감사 로그 자동 기록)
|
|
│ ├── components/ UI 컴포넌트
|
|
│ │ ├── auth/ 로그인 페이지
|
|
│ │ ├── views/ 탭별 페이지 뷰 (11개)
|
|
│ │ ├── layout/ MainLayout, TopBar, LeftPanel, RightPanel
|
|
│ │ └── ... analysis, board, incidents, map, weather 등
|
|
│ ├── hooks/ 커스텀 훅
|
|
│ ├── services/ API 서비스 (api, authApi, weatherApi 등)
|
|
│ ├── store/ Zustand (authStore, menuStore)
|
|
│ ├── types/ 타입 정의
|
|
│ └── utils/ 유틸리티
|
|
├── backend/ Express + TypeScript
|
|
│ └── src/
|
|
│ ├── server.ts 진입점 + 라우터 등록
|
|
│ ├── auth/ 인증 (JWT, OAuth, 미들웨어)
|
|
│ ├── users/ 사용자 관리
|
|
│ ├── roles/ 역할/권한 관리
|
|
│ ├── settings/ 시스템 설정
|
|
│ ├── menus/ 메뉴 설정
|
|
│ ├── audit/ 감사 로그
|
|
│ ├── routes/ 레이어, 시뮬레이션
|
|
│ ├── middleware/ 보안 (입력 살균, rate-limit)
|
|
│ └── db/ DB 연결 (PostgreSQL: wing, wing_auth)
|
|
├── database/ SQL 초기화 스크립트
|
|
├── docs/ 개발 문서 (README, 가이드, 변경이력)
|
|
├── .claude/ 팀 워크플로우 (rules, skills, scripts)
|
|
└── .githooks/ Git hooks (pre-commit, commit-msg)
|
|
```
|
|
|
|
## 팀 컨벤션
|
|
`.claude/rules/` 디렉토리 참조:
|
|
- `team-policy.md` — 보안/품질 정책
|
|
- `git-workflow.md` — 브랜치/커밋/MR 규칙
|
|
- `code-style.md` — TypeScript/React 코드 스타일
|
|
- `naming.md` — 네이밍 규칙
|
|
- `testing.md` — 테스트 규칙
|
|
|
|
## 개발 문서 (`docs/`)
|
|
- `docs/README.md` — 프로젝트 개요, 초기 세팅, 워크플로우 요약, 문서 안내
|
|
- `docs/DEVELOPMENT-GUIDE.md` — 개발 워크플로우 전체 흐름 (Plan → Branch → MR → Deploy)
|
|
- `docs/COMMON-GUIDE.md` — 공통 로직 개발 가이드 (인증, 감사로그, 메뉴, API 통신, 상태 관리)
|
|
- `docs/MENU-TAB-GUIDE.md` — 새 메뉴 탭 추가 절차 (5단계)
|
|
- `docs/INSTALL_GUIDE.md` — 설치 매뉴얼 (온라인/오프라인, DB)
|
|
- `docs/CHANGELOG.md` — 변경 이력
|
|
|
|
### 문서 최신화 규칙
|
|
- 공통 기능(인증, 감사로그, 메뉴 시스템, API 통신 등)을 추가/변경할 때 반드시 `docs/COMMON-GUIDE.md`를 최신화할 것
|
|
- 개별 탭 개발자는 이 문서를 참조하여 공통 영역과의 연동을 구현
|
|
|
|
## 환경 설정
|
|
- Node.js 20 (`.node-version`, fnm 사용)
|
|
- npm registry: Nexus proxy (`.npmrc`)
|
|
- Git hooks: `.githooks/` (core.hooksPath 설정됨)
|