실시간으로 감지된 표적(드론, 미사일, 항공기)에 대해 RAG(Retrieval-Augmented Generation) 기반 위협 분석을 수행하고, LLM이 전술 상황 보고서(SITREP)를 자동 생성합니다.
<table header-row="true"><tr><td>역할</td><td>기술</td></tr><tr><td>LLM(SITREP 생성)</td><td>Google Gemini (gemini-flash-lite-latest)</td></tr><tr><td>임베딩 모델</td><td>Google gemini-embedding-001 (1536차원)</td></tr><tr><td>벡터 DB</td><td>PostgreSQL + pgvector (HNSW 인덱스)</td></tr><tr><td>AI 프레임워크</td><td>Spring AI 1.1.8</td></tr><tr><td>비동기 처리</td><td>Spring @Async (aiAnalysisExecutor)</td></tr></table>
표적 이벤트 (Kafka)
↓
① 자연어 설명문 구성 — "표적ID=DRONE-001, 유형=DRONE, 고도=45m, 속도=280km/h ..."
↓
② pgvector 유사 위협 패턴 검색 (Top-K=3, 유사도 임계값=0.5) ← 위협 지식 베이스(10개 패턴, 코사인 유사도)
↓
③ LLM 컨텍스트 구성 — [현재 표적] + [유사 패턴 3개] + [규칙 기반 위협 등급]
↓
④ Gemini(gemini-flash-lite-latest) → SITREP 생성 (상황 요약 / 위협 평가 / 권고 조치 3개 이내)
↓
⑤ 결과 로그 / REST API 응답
ThreatKnowledgeInitializer가 앱 시작 시 10가지 위협 패턴을 pgvector에 적재합니다.
<table header-row="true"><tr><td>표적 유형</td><td>패턴</td><td>위협 등급</td></tr><tr><td>DRONE</td><td>저속 저고도 순찰(정찰)</td><td>MEDIUM</td></tr><tr><td>DRONE</td><td>고속 저고도 직선 접근(자폭)</td><td>CRITICAL</td></tr><tr><td>DRONE</td><td>군집 분산 접근(포화)</td><td>HIGH</td></tr><tr><td>DRONE</td><td>지그재그 + GPS 이상(전자전)</td><td>MEDIUM</td></tr><tr><td>MISSILE</td><td>초저고도 지형 따라 비행(순항)</td><td>CRITICAL</td></tr><tr><td>MISSILE</td><td>극초고속 탄도 굤적(탄도)</td><td>CRITICAL</td></tr><tr><td>AIRCRAFT</td><td>고속 고고도 직선 비행(민항/우군)</td><td>LOW</td></tr><tr><td>AIRCRAFT</td><td>급격한 기동(전술 전투기)</td><td>HIGH</td></tr><tr><td>DRONE</td><td>야간 침투, 적외선 신호 약함</td><td>HIGH</td></tr><tr><td>AIRCRAFT</td><td>민항기 위장, 비정상 경로</td><td>HIGH</td></tr></table>
LLM 호출 전에 규칙 기반으로 위협 등급을 먼저 산출합니다. AI 미설정 시에도 단독 동작합니다.
<table header-row="true"><tr><td>조건</td><td>등급</td></tr><tr><td>유형=MISSILE</td><td>CRITICAL</td></tr><tr><td>DRONE + 속도>250 + 고도<100m</td><td>CRITICAL</td></tr><tr><td>DRONE + 고도<50m</td><td>HIGH</td></tr><tr><td>AIRCRAFT + 속도>800 + 고도<500m</td><td>HIGH</td></tr><tr><td>속도>200km/h</td><td>MEDIUM</td></tr><tr><td>그 외</td><td>LOW</td></tr></table>
GET /api/v1/threat-analysis/status
응답(AI 활성화 시): {"aiEnabled": true, "message": "AI 위협 분석 활성화됨 (RAG + pgvector)"}
응답(API 키 미설정 시): {"aiEnabled": false, "message": "AI 비활성화 - export GEMINI_API_KEY=<your-key> 후 재시작 필요"}
POST /api/v1/threat-analysis/analyze
Content-Type: application/json
{
"targetId": "DRONE-001",
"targetType": "DRONE",
"latitude": 37.5,
"longitude": 127.0,
"altitude": 45.0,
"speed": 280.0,
"status": "DETECTED"
}
응답(AI 활성화 시):