- OpsGuideModal: 3탭 (실시간탐지/대응절차/조치기준)
- 해경 기지 선택 → 주변 의심선박 자동 탐지
- 선박 클릭 → 업종별 대응 절차 자동 표시 (PT/GN/PS/FC/GEAR)
- 중국어 경고문 16개 (클릭: 복사, 🔊: Google TTS 음성)
- 임검침로 점선 시각화 (해경→선박)
- 드래그 이동 + 크기 조절
- ReportModal: 현재 데이터 기반 자동 보고서 7섹션 + 인쇄/PDF
- KoreaDashboard에 작전가이드 버튼 + 모달 연결
- KoreaMap: externalFlyTo + opsRoute props 추가
- Google TTS: Vite 프록시 /api/gtts (client=webapp)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
131 lines
4.1 KiB
TypeScript
131 lines
4.1 KiB
TypeScript
import { defineConfig, type UserConfig } from 'vite'
|
|
import react from '@vitejs/plugin-react'
|
|
import tailwindcss from '@tailwindcss/vite'
|
|
|
|
// https://vite.dev/config/
|
|
export default defineConfig(({ mode }): UserConfig => ({
|
|
plugins: [tailwindcss(), react()],
|
|
esbuild: mode === 'production' ? { drop: ['console', 'debugger'] } : {},
|
|
server: {
|
|
proxy: {
|
|
'/api/ais': {
|
|
target: 'https://aisapi.maritime.spglobal.com',
|
|
changeOrigin: true,
|
|
rewrite: (path) => path.replace(/^\/api\/ais/, ''),
|
|
secure: true,
|
|
},
|
|
'/api/rss': {
|
|
target: 'https://news.google.com',
|
|
changeOrigin: true,
|
|
rewrite: (path) => path.replace(/^\/api\/rss/, ''),
|
|
secure: true,
|
|
},
|
|
'/api/gdelt': {
|
|
target: 'https://api.gdeltproject.org',
|
|
changeOrigin: true,
|
|
rewrite: (path) => path.replace(/^\/api\/gdelt/, ''),
|
|
secure: true,
|
|
},
|
|
'/api/nitter1': {
|
|
target: 'https://xcancel.com',
|
|
changeOrigin: true,
|
|
rewrite: (path) => path.replace(/^\/api\/nitter1/, ''),
|
|
secure: true,
|
|
},
|
|
'/api/nitter2': {
|
|
target: 'https://nitter.privacydev.net',
|
|
changeOrigin: true,
|
|
rewrite: (path) => path.replace(/^\/api\/nitter2/, ''),
|
|
secure: true,
|
|
},
|
|
'/api/nitter3': {
|
|
target: 'https://nitter.poast.org',
|
|
changeOrigin: true,
|
|
rewrite: (path) => path.replace(/^\/api\/nitter3/, ''),
|
|
secure: true,
|
|
},
|
|
'/api/rsshub': {
|
|
target: 'https://rsshub.app',
|
|
changeOrigin: true,
|
|
rewrite: (path) => path.replace(/^\/api\/rsshub/, ''),
|
|
secure: true,
|
|
},
|
|
'/api/overpass': {
|
|
target: 'https://overpass-api.de',
|
|
changeOrigin: true,
|
|
rewrite: (path) => path.replace(/^\/api\/overpass/, ''),
|
|
secure: true,
|
|
},
|
|
'/api/khoa-hls': {
|
|
target: 'https://www.khoa.go.kr',
|
|
changeOrigin: true,
|
|
rewrite: (path) => path.replace(/^\/api\/khoa-hls/, ''),
|
|
secure: true,
|
|
},
|
|
'/api/kbs-hls': {
|
|
target: 'https://kbsapi.loomex.net',
|
|
changeOrigin: true,
|
|
rewrite: (path) => path.replace(/^\/api\/kbs-hls/, ''),
|
|
secure: true,
|
|
},
|
|
'/api/twsyndication': {
|
|
target: 'https://syndication.twitter.com',
|
|
changeOrigin: true,
|
|
rewrite: (path) => path.replace(/^\/api\/twsyndication/, ''),
|
|
secure: true,
|
|
},
|
|
'/api/publish-twitter': {
|
|
target: 'https://publish.twitter.com',
|
|
changeOrigin: true,
|
|
rewrite: (path) => path.replace(/^\/api\/publish-twitter/, ''),
|
|
secure: true,
|
|
},
|
|
'/api/celestrak': {
|
|
target: 'https://celestrak.org',
|
|
changeOrigin: true,
|
|
rewrite: (path) => path.replace(/^\/api\/celestrak/, ''),
|
|
secure: true,
|
|
headers: {
|
|
'User-Agent': 'Mozilla/5.0 (compatible; KCG-Monitor/1.0)',
|
|
},
|
|
},
|
|
'/api/kcg/cctv': {
|
|
target: 'http://localhost:8080',
|
|
changeOrigin: true,
|
|
rewrite: (path) => path.replace(/^\/api\/kcg/, '/api'),
|
|
},
|
|
'/api/kcg': {
|
|
target: 'https://kcg.gc-si.dev',
|
|
changeOrigin: true,
|
|
rewrite: (path) => path.replace(/^\/api\/kcg/, '/api'),
|
|
secure: true,
|
|
},
|
|
'/signal-batch': {
|
|
target: 'https://wing.gc-si.dev',
|
|
changeOrigin: true,
|
|
secure: false,
|
|
},
|
|
'/shipimg': {
|
|
target: 'https://wing.gc-si.dev',
|
|
changeOrigin: true,
|
|
secure: false,
|
|
},
|
|
'/ollama': {
|
|
target: 'http://localhost:11434',
|
|
changeOrigin: true,
|
|
rewrite: (path) => path.replace(/^\/ollama/, ''),
|
|
},
|
|
'/api/gtts': {
|
|
target: 'https://translate.google.com',
|
|
changeOrigin: true,
|
|
rewrite: (path) => path.replace(/^\/api\/gtts/, '/translate_tts'),
|
|
secure: true,
|
|
headers: {
|
|
'Referer': 'https://translate.google.com/',
|
|
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
|
|
},
|
|
},
|
|
},
|
|
},
|
|
}))
|