signal-batch/frontend/src/i18n/ko.ts
htlee 7852f840e4 feat: 쿼리 메트릭 수집 확장 + 대시보드 성능 차트 추가
- client IP 수집 (REST: X-Forwarded-For 체인, WS: 세션 속성)
- 응답 크기 추정 (uniqueVessels*200 + points*40)
- timeseries API (/api/monitoring/query-metrics/timeseries)
- Dashboard 쿼리 성능 차트 5종 (응답시간, 볼륨, 캐시경로, 응답크기, Top 클라이언트)
2026-03-10 11:15:00 +09:00

211 lines
7.3 KiB
TypeScript

const ko = {
// Navigation
'nav.dashboard': '대시보드',
'nav.jobs': 'Job 모니터',
'nav.pipeline': '파이프라인',
'nav.apiExplorer': 'API 탐색기',
'nav.abnormal': '비정상 항적',
'nav.areaStats': '해구 통계',
'nav.metrics': '메트릭',
// Common
'common.loading': '로딩 중...',
'common.noData': '데이터가 없습니다',
'common.close': '닫기',
'common.prev': '이전',
'common.next': '다음',
'common.items': '건',
'common.of': '중',
'common.day': '일',
'common.min': '분',
'common.sec': '초',
'common.themeToggle': '테마 전환',
'common.langToggle': '언어 전환',
// Dashboard
'dashboard.title': '대시보드',
'dashboard.totalExec': '총 실행',
'dashboard.successRate': '성공률',
'dashboard.avgDuration': '평균 소요시간',
'dashboard.totalProcessed': '총 처리건수',
'dashboard.periodBasis': '일 기준',
'dashboard.avgPerJob': '/job 평균',
'dashboard.runningJobs': '실행 중 Job',
'dashboard.noRunningJobs': '실행 중인 Job 없음',
'dashboard.delay': '처리 지연',
'dashboard.delayMin': '분 지연',
'dashboard.aisLatest': 'AIS 최신',
'dashboard.processLatest': '처리 최신',
'dashboard.aisReceived': 'AIS 수신',
'dashboard.vesselsProcessed': '선박 집계',
'dashboard.systemMetrics': '시스템 메트릭',
'dashboard.memory': '메모리',
'dashboard.threads': '스레드',
'dashboard.dbConn': 'DB 연결',
'dashboard.recordsSec': '초당 처리',
'dashboard.cacheStatus': '캐시 상태',
'dashboard.hitRate': '히트율',
'dashboard.size': '크기',
'dashboard.hits': '히트',
'dashboard.misses': '미스',
'dashboard.dailyVolume': '일별 처리량',
'dashboard.queryPerformance': '쿼리 성능',
'dashboard.responseTimeTrend': '응답시간 추이',
'dashboard.queryVolume': '쿼리 볼륨',
'dashboard.cachePathRatio': '캐시/경로 비율',
'dashboard.responseSizeTrend': '응답 크기 추이',
'dashboard.topClients': 'Top 클라이언트',
'dashboard.avgElapsed': '평균',
'dashboard.maxElapsed': '최대',
'dashboard.queries': '건',
'dashboard.noChartData': '차트 데이터가 없습니다',
// Job Monitor
'jobs.title': 'Job 모니터',
'jobs.all': '전체',
'jobs.track5min': 'Track (5분)',
'jobs.hourly': 'Hourly',
'jobs.daily': 'Daily',
'jobs.status': '상태',
'jobs.job': 'Job',
'jobs.id': 'ID',
'jobs.start': '시작 시간',
'jobs.duration': '소요시간',
'jobs.read': '읽기',
'jobs.write': '쓰기',
'jobs.skip': '건너뜀',
'jobs.stepDetails': 'Step 상세',
'jobs.step': 'Step',
'jobs.commits': '커밋',
'jobs.errors': '에러',
// Pipeline
'pipeline.title': '데이터 파이프라인',
'pipeline.flowTitle': '처리 흐름',
'pipeline.collect1min': '1분 수집',
'pipeline.aggregate5min': '5분 집계',
'pipeline.mergeHourly': '시간 병합',
'pipeline.mergeDaily': '일 병합',
'pipeline.executions': '회 실행',
'pipeline.totalTime': '총 소요',
'pipeline.processingDelay': '처리 지연',
'pipeline.delayMin': '분 지연',
'pipeline.aisLatest': 'AIS 최신',
'pipeline.processLatest': '처리 최신',
'pipeline.cacheOverview': '캐시 현황',
'pipeline.cachedDays': '일 캐시',
'pipeline.totalHitRate': '전체 히트율',
'pipeline.writeByJob': 'Job별 처리 건수',
'pipeline.durationByJob': 'Job별 소요시간',
'pipeline.recentJobs': '최근 실행 이력',
'pipeline.totalExec': '총 실행',
'pipeline.totalRecords': '총 처리건수',
'pipeline.avgDuration': '평균 소요',
'pipeline.successRate': '성공률',
// Area Stats
'area.title': '해구/구역 통계',
'area.activeHaegu': '활성 해구',
'area.activeHaeguDesc': '선박이 있는 해구',
'area.totalVessels': '총 선박수',
'area.dataQuality': '데이터 품질',
'area.avgDensity': '평균 밀도',
'area.haeguStats': '대해구별 현황',
'area.haeguNo': '해구번호',
'area.haeguName': '해구명',
'area.currentVessels': '현재 선박',
'area.avgSpeed': '평균 속력',
'area.avgDensityCol': '평균 밀도',
'area.lastUpdate': '최종 갱신',
'area.throughput': '처리량',
'area.vesselsPerMin': '선박/분',
'area.vesselsPerHour': '선박/시간',
'area.tableSizes': '테이블 크기',
'area.dataQualityTitle': '데이터 품질 검증',
'area.duplicates': '중복 항적',
'area.stalePositions': '갱신 지연 위치',
'area.checkedAt': '검증 시각',
'area.haeguMap': '해구별 선박 분포',
'area.mapLegend': '선박 수',
'area.vessels': '척',
// API Explorer
'explorer.title': 'API 탐색기',
'explorer.apiType': 'API 유형',
'explorer.recentPositions': '최근 위치',
'explorer.vesselTracks': '선박별 항적',
'explorer.viewportReplay': '뷰포트 리플레이',
'explorer.areaSearch': '구역 항적 분석',
'explorer.stsAnalysis': 'STS 접촉 분석',
'explorer.parameters': '파라미터',
'explorer.positionsDesc': '최근 10분 이내 위치 업데이트된 선박 목록을 조회합니다.',
'explorer.vesselDesc': 'MMSI 목록으로 특정 선박의 항적을 조회합니다.',
// Abnormal Tracks
'abnormal.title': '비정상 항적',
'abnormal.totalDetected': '총 검출',
'abnormal.last7days': '최근 7일',
'abnormal.affectedVessels': '영향 선박',
'abnormal.typeCount': '유형 수',
'abnormal.maxSpeed': '최대 속도',
'abnormal.byType': '유형별 통계',
'abnormal.allTypes': '전체',
'abnormal.vessels': '척',
'abnormal.dailyTrend': '일별 추이',
'abnormal.recentList': '최근 검출 목록',
'abnormal.type': '유형',
'abnormal.time': '시간',
'abnormal.distance': '거리',
'abnormal.avgSpeedCol': '평균 속도',
'abnormal.maxSpeedCol': '최대 속도',
'abnormal.points': '포인트',
// Metrics
'metrics.title': '시스템 메트릭',
'metrics.heapMemory': '힙 메모리',
'metrics.threads': '스레드',
'metrics.dbActive': 'DB 활성 연결',
'metrics.recordsPerSec': '초당 처리',
'metrics.cacheDetail': '캐시 상세',
'metrics.cacheLayer': '캐시 계층',
'metrics.size': '크기',
'metrics.maxSize': '최대',
'metrics.utilization': '사용률',
'metrics.hitRate': '히트율',
'metrics.processingDelay': '처리 지연',
'metrics.delayMinutes': '지연 시간',
'metrics.aisCount': 'AIS 수신',
'metrics.processedVessels': '처리 선박',
'metrics.status': '상태',
'metrics.cacheHitSummary': '캐시 히트 요약',
'metrics.hits': '히트',
'metrics.misses': '미스',
'metrics.queryHistory': '쿼리 이력',
'metrics.totalQueries': '총 쿼리',
'metrics.avgElapsed': '평균 응답',
'metrics.p95Elapsed': 'P95 응답',
'metrics.cacheHitRate': '캐시 적중률',
'metrics.queryType': '유형',
'metrics.dataPath': '경로',
'metrics.queryStatus': '상태',
'metrics.queryTime': '시각',
'metrics.vessels': '선박',
'metrics.pointsBefore': '포인트(전)',
'metrics.pointsAfter': '포인트(후)',
'metrics.simplification': '간소화',
'metrics.chunks': '청크',
'metrics.elapsed': '응답시간',
'metrics.allTypes': '전체',
'metrics.allPaths': '전체',
'metrics.resetFilters': '필터 초기화',
// Time Range
'range.1d': '1일',
'range.3d': '3일',
'range.7d': '7일',
'range.14d': '14일',
'range.30d': '30일',
} as const
export default ko