Merge pull request 'chore: main → develop back-merge (2026-04-09 릴리즈 + PR #21/#22 동기화)' (#25) from main into develop
This commit is contained in:
커밋
13ea475bd7
@ -5,6 +5,8 @@ import lombok.*;
|
||||
import org.hibernate.annotations.JdbcTypeCode;
|
||||
import org.hibernate.type.SqlTypes;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.OffsetDateTime;
|
||||
import java.util.Map;
|
||||
@ -44,6 +46,7 @@ public class PredictionAlert {
|
||||
@Column(columnDefinition = "jsonb")
|
||||
private Map<String, Object> metadata;
|
||||
|
||||
@JsonIgnore
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
@JoinColumn(name = "event_id", insertable = false, updatable = false)
|
||||
private PredictionEvent event;
|
||||
|
||||
@ -4,6 +4,8 @@
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [2026-04-09]
|
||||
|
||||
### 추가
|
||||
- **Dark Vessel 의심 점수화** — 기존 "gap≥30분→dark" 이분법에서 8가지 패턴 기반 0~100점 점수 산출 + CRITICAL/HIGH/WATCH/NONE 등급 분류
|
||||
- P1 이동 중 OFF / P2 민감 수역 / P3 반복 이력(7일) / P4 거리 비정상 / P5 주간 조업 OFF / P6 직전 이상행동 / P7 무허가 / P8 장기 gap
|
||||
|
||||
@ -21,6 +21,7 @@ import { LoginPage } from '@features/auth';
|
||||
/* SFR-17 */ import { AIAlert } from '@features/field-ops';
|
||||
/* SFR-18+19 */ import { MLOpsPage } from '@features/ai-operations';
|
||||
/* SFR-20 */ import { AIAssistant } from '@features/ai-operations';
|
||||
/* SFR-20 LLM운영 */ import { LLMOpsPage } from '@features/ai-operations';
|
||||
/* 기존 */ import { Dashboard } from '@features/dashboard';
|
||||
import { LiveMapView, MapControl } from '@features/surveillance';
|
||||
import { EventList } from '@features/enforcement';
|
||||
@ -104,6 +105,7 @@ export default function App() {
|
||||
<Route path="ai-model" element={<ProtectedRoute resource="ai-operations:ai-model"><AIModelManagement /></ProtectedRoute>} />
|
||||
{/* SFR-18~20 AI 운영 */}
|
||||
<Route path="mlops" element={<ProtectedRoute resource="ai-operations:mlops"><MLOpsPage /></ProtectedRoute>} />
|
||||
<Route path="llm-ops" element={<ProtectedRoute resource="ai-operations:llm-ops"><LLMOpsPage /></ProtectedRoute>} />
|
||||
<Route path="ai-assistant" element={<ProtectedRoute resource="ai-operations:ai-assistant"><AIAssistant /></ProtectedRoute>} />
|
||||
{/* SFR-03 데이터허브 */}
|
||||
<Route path="data-hub" element={<ProtectedRoute resource="admin:system-config"><DataHub /></ProtectedRoute>} />
|
||||
|
||||
@ -55,6 +55,7 @@ const PATH_TO_RESOURCE: Record<string, string> = {
|
||||
'/ai-assistant': 'ai-operations:ai-assistant',
|
||||
'/ai-model': 'ai-operations:ai-model',
|
||||
'/mlops': 'ai-operations:mlops',
|
||||
'/llm-ops': 'ai-operations:llm-ops',
|
||||
'/statistics': 'statistics:statistics',
|
||||
'/external-service': 'statistics:external-service',
|
||||
'/admin/audit-logs': 'admin:audit-logs',
|
||||
|
||||
@ -84,6 +84,7 @@ const NAV_ENTRIES: NavEntry[] = [
|
||||
items: [
|
||||
{ to: '/ai-model', icon: Brain, labelKey: 'nav.aiModel' },
|
||||
{ to: '/mlops', icon: Cpu, labelKey: 'nav.mlops' },
|
||||
{ to: '/llm-ops', icon: Brain, labelKey: 'nav.llmOps' },
|
||||
{ to: '/ai-assistant', icon: MessageSquare, labelKey: 'nav.aiAssistant' },
|
||||
{ to: '/external-service', icon: Globe, labelKey: 'nav.externalService' },
|
||||
{ to: '/data-hub', icon: Wifi, labelKey: 'nav.dataHub' },
|
||||
|
||||
1269
frontend/src/features/ai-operations/LLMOpsPage.tsx
Normal file
1269
frontend/src/features/ai-operations/LLMOpsPage.tsx
Normal file
파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
Load Diff
@ -1,3 +1,4 @@
|
||||
export { AIModelManagement } from './AIModelManagement';
|
||||
export { MLOpsPage } from './MLOpsPage';
|
||||
export { AIAssistant } from './AIAssistant';
|
||||
export { LLMOpsPage } from './LLMOpsPage';
|
||||
|
||||
@ -7,6 +7,10 @@
|
||||
"title": "MLOps / LLMOps",
|
||||
"desc": "SFR-18/19 | ML & LLM experiment, deployment, monitoring"
|
||||
},
|
||||
"llmOps": {
|
||||
"title": "LLM Operations",
|
||||
"desc": "SFR-20 | Qwen3-8B model management, prompts, inference, RAG, evaluation, security & monitoring"
|
||||
},
|
||||
"assistant": {
|
||||
"title": "AI Decision Support (Q&A)",
|
||||
"desc": "SFR-20 | Natural language query with RAG-based law, case & prediction answers"
|
||||
|
||||
@ -20,6 +20,7 @@
|
||||
"reports": "Reports",
|
||||
"aiModel": "AI Model",
|
||||
"mlops": "MLOps",
|
||||
"llmOps": "LLM Ops",
|
||||
"aiAssistant": "AI Q&A",
|
||||
"dataHub": "Data Hub",
|
||||
"systemConfig": "Settings",
|
||||
|
||||
@ -7,6 +7,10 @@
|
||||
"title": "MLOps/LLMOps",
|
||||
"desc": "SFR-18/19 | 기계학습·대규모 언어모델 실험·배포·모니터링 통합"
|
||||
},
|
||||
"llmOps": {
|
||||
"title": "LLM 운영 관리",
|
||||
"desc": "SFR-20 | Qwen3-8B 모델 관리·프롬프트·추론·RAG·평가·보안·모니터링 통합 운영"
|
||||
},
|
||||
"assistant": {
|
||||
"title": "AI 의사결정 지원 (Q&A)",
|
||||
"desc": "SFR-20 | 자연어 질의 → 법령·지침·유사사례·예측결과 통합 답변 · RAG 기반"
|
||||
|
||||
@ -20,6 +20,7 @@
|
||||
"reports": "보고서 관리",
|
||||
"aiModel": "AI 모델관리",
|
||||
"mlops": "MLOps",
|
||||
"llmOps": "LLM 운영",
|
||||
"aiAssistant": "AI 의사결정 지원",
|
||||
"dataHub": "데이터 허브",
|
||||
"systemConfig": "환경설정",
|
||||
|
||||
@ -25,6 +25,9 @@ export default defineConfig({
|
||||
target: process.env.VITE_API_PROXY ?? 'https://kcg-ai-monitoring.gc-si.dev',
|
||||
changeOrigin: true,
|
||||
secure: false,
|
||||
headers: {
|
||||
Origin: process.env.VITE_API_PROXY ?? 'https://kcg-ai-monitoring.gc-si.dev',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
불러오는 중...
Reference in New Issue
Block a user