report_problem Problem: 수동 분석의 한계

error
현재 상태: 이상 감지(Detection) 후 근본원인분석(RCA)까지 사람이 직접 "딥 RCA 시작" 버튼을 눌러야 한다. 야간/주말에 발생한 이상은 다음 근무일까지 분석이 지연되고, 반복적인 이상에 대해 매번 동일한 분석을 수동으로 수행해야 한다.
timer_off
현재 흐름 — 끊어진 파이프라인
Detection → (수동 대기) → Deep RCA
Detection Cycle (60초 tick) ├── 규칙 평가 (threshold / delta / absence / llm) ├── 위반 시 → analyze_and_save() ├── anomalies 테이블 INSERT (status: "detected") └── 🛑 여기서 끝 — RCA는 수동으로만 가능 └── 사용자가 UI에서 "딥 RCA 시작" 클릭해야 분석 시작

핵심 문제 3가지:

visibility Vision: 이상 감지부터 분석까지 자동화

auto_fix_high
목표: 이상이 감지되면 규칙별로 지정된 RCA 전략에 따라 AI 에이전트가 자동으로 근본원인분석을 수행하고, 결과를 저장하여 엔지니어가 출근 시 이미 분석된 리포트를 확인할 수 있게 한다.
auto_awesome
목표 흐름 — 완전 자동 파이프라인
Detection → Auto RCA → Report
Detection Cycle (60초 tick) ├── 규칙 위반 감지 ├── anomaly INSERT (rca_status: 'pending') Auto RCA Scheduler (30초 간격 폴링) ├── pending anomaly 조회 ├── 규칙별 RCA 설정 확인 (auto_rca? severity 조건?) ├── RCA 에이전트 실행 (ReAct + 지정 툴셋) │ ├── rca_prompt 또는 카테고리 기본 템플릿 │ ├── rca_tools 또는 카테고리 기본 툴셋 │ └── 다중 라운드 분석 (최대 5회 도구 호출) ├── rca_analyses 테이블에 결과 저장 ├── anomaly.rca_status = 'done' └── (옵션) 텔레그램/워크플로우 알림

architecture Architecture

기존 FLOPI 아키텍처에 Auto RCA Scheduler를 추가한다. Detection 엔진과 완전히 분리된 별도 스케줄러로 동작하여, 감지 성능에 영향을 주지 않는다.

hub
시스템 아키텍처 — Auto RCA 추가
기존 모듈과의 관계
┌─────────────────────────────────────────────────────────────────┐ │ FLOPI v1.7.0 │ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌────────────────┐ │ │ │ Detection │ │ RCA │ │ Workflow │ │ Tool Studio │ │ │ │ Engine │ │Studio │ │ Converter│ │ + AI Chat │ │ │ └────┬──────┘ └────┬─────┘ └────┬─────┘ └────────────────┘ │ │ │ │ │ │ │ │ anomalyscenarioworkflow │ │ │ INSERTnodes/edgesgraph_data │ │ │ │ │ │ │ ┌────┴──────────────┴──────────────┴───────────────────────┐ │ │ │ Database (Oracle/SQLite) │ │ │ │ anomalies │ rca_scenarios │ workflows │ tools ... │ │ │ └──────────────────────────────────────────────────────────┘ │ │ │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ Sample Data (FDC + SPC + Alarms) — 시뮬레이터/데모 환경 │ │ └──────────────────────────────────────────────────────────┘ │ │ │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ Tool Registry (built-in + Tool Studio 도구) │ │ │ └──────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────┘

설계 원칙

원칙설명이유
Detection과 분리 별도 APScheduler 잡으로 동작 RCA의 LLM 호출이 Detection tick을 블로킹하지 않음
DB 기반 큐 anomalies.rca_status 컬럼으로 상태 관리 서버 재시작해도 pending 작업 유실 없음
규칙별 RCA 설정 detection_rules에 rca 관련 필드 추가 이상 유형마다 다른 분석 전략 적용
카테고리 기본값 설정 없는 규칙은 카테고리 기본 템플릿 사용 모든 규칙에 개별 설정하는 번거로움 제거
동시성 제어 한 번에 최대 2개 RCA만 병렬 실행 LLM API 부하 관리 + 분석 품질 보장

psychology RCA Studio — AI Analyst

check_circle
구현 완료 (v1.7.0): RCA Studio는 엔지니어와 AI 분석가의 대화형 분석으로 암묵지를 플로차트 노드/엣지로 구조화합니다. 직접 분석이 아니라 엔지니어의 지식을 끌어내는 가이드 역할입니다.
hub
RCA Studio 모듈 구조
rca/ 디렉토리
rca/ ├── analyst.py Analyst 클래스 — 스트리밍 대화 + 구조 추출 ├── structurer.py 응답 파싱 → 플로차트 노드/엣지 구조화 ├── workflow_converter.py RCA → AI 워크플로우 LLM 변환 ├── prompts.py 시스템 프롬프트 (ANALYST_SYSTEM, STRUCTURER_SYSTEM, ...) ├── models.py 데이터 모델 ├── queries.py DB CRUD (시나리오 저장/조회) └── sample_data/ FDC + SPC + Alarm 샘플 데이터

Analyst 클래스 — 대화형 분석

rca/analyst.pyAnalyst 클래스는 LLM과의 대화를 관리하며, 엔지니어가 설명하는 분석 과정을 실시간으로 플로차트 노드로 추출합니다.

class Analyst:
    """대화를 통해 엔지니어의 암묵지를 추출하는 AI 분석가."""

    def _build_context(self, scenarios_context, tools_context, existing_nodes):
        # 시스템 프롬프트 + 사용 가능한 도구 + 참고 시나리오 + 현재 노드
        context = ANALYST_SYSTEM
        if tools_context:
            context += f"\n\n## 사용 가능한 도구\n{tools_context}"
        if scenarios_context:
            context += f"\n\n## 참고 시나리오\n{scenarios_context}"
        if existing_nodes:
            context += f"\n\n## 현재 추출된 노드\n{json.dumps(existing_nodes)}"
        return context

    async def analyze_stream(self, messages, existing_nodes, ...):
        """스트리밍 응답 — 토큰 단위로 yield."""
        set_llm_module("deep_rca")
        ...

    async def validate_graph(self, nodes, edges):
        """플로우차트 전체 검증 — 빠진 분기, 고립 노드, 불일치 탐지."""

대화 규칙 (ANALYST_SYSTEM 프롬프트)

원칙설명
경청 → 질문 → 조언 엔지니어 설명 → 간단 요약 → 빠진 부분 1~2개 질문 → 필요 시 제안
동의 후 노드 생성 노드를 바로 만들지 않음. "추가해드릴까요?" → 동의 시 extracted_nodes에 반영
도구 활용 유도 Tool Studio 도구를 구체적으로 언급하며 질문. 노드의 data_sources에 도구명 연결
기존 시나리오 참조 축적된 시나리오와 관련 있으면 확인 질문. 차이가 있으면 knowledge_gaps에 기록

노드 타입 (RCA 플로차트)

타입역할예시
check 데이터 확인 단계 "FDC 파라미터 확인", "SPC Cpk 값 조회"
decision 판단 분기점 "Cpk < 1.0?", "알람 발생 여부?"
action 조치 수행 "PM 요청", "공정 파라미터 보정"
end 분석 종료 "정상 확인", "설비 정지 필요"

transform RCA → Workflow Converter

rca/workflow_converter.pyRCAWorkflowConverter 클래스는 RCA Studio에서 생성된 분석 시나리오(check/decision/action/end 노드)를 AI 워크플로우 빌더의 12종 노드로 LLM 기반 지능 변환합니다.

swap_horiz
RCA → Workflow 노드 매핑
LLM이 컨텍스트에 따라 최적 노드 타입을 결정
RCA 노드워크플로우 노드매핑 로직
check data_query Tool Studio 도구로 데이터 조회. data_sources에서 도구 자동 매칭
decision condition 조건 분기 (Python 식). threshold 정보를 조건식으로 변환
action (알림) notification 알림 메시지 출력
action (외부 호출) http_request 외부 시스템 API 호출
end end 워크플로우 종료
class RCAWorkflowConverter:
    """LLM 기반 RCA → 워크플로우 변환기."""

    async def convert(self, nodes, edges, tools,
                       trigger_type="manual", scenario_title="", process_type=""):
        """RCA 시나리오를 워크플로우로 변환."""
        # 1. LLM에 RCA 노드/엣지 + 사용 가능한 도구 전달
        # 2. LLM이 워크플로우 graph_data (12종 노드) 생성
        # 3. 후처리 검증 + ConversionResult 반환

ConversionResult 구조

{
  "graph_data": {"nodes": [...], "edges": [...]},  // 워크플로우 그래프
  "warnings": [...],          // 변환 경고 (매핑 불확실한 노드)
  "mapping_log": [...],       // RCA → WF 매핑 추적 로그
  "suggested_name": "...",    // 워크플로우 제안 이름
  "suggested_description": "..."  // 워크플로우 제안 설명
}

UI 진입점

science Sample Data (FDC / SPC / Alarm)

RCA Studio는 시뮬레이터/데모 환경에서 반도체 FAB 공정별 샘플 데이터를 제공합니다. rca/sample_data/ 디렉토리에 3종의 데이터가 구현되어 있습니다.

analytics
FDC — Fault Detection & Classification
rca/sample_data/fdc.py
항목내용
데이터 구조공정별 FDC 파라미터 (정상 스펙 + 실시간 센서값)
이상 시나리오FDC 값 이탈 패턴 — get_fdc_anomaly_scenarios()
조회 함수get_sample_fdc_data(process, equipment, scenario)
활용Data Panel UI에서 FDC 현황 테이블 표시, RCA 분석 컨텍스트
ssid_chart
SPC — Statistical Process Control
rca/sample_data/spc.py
항목내용
데이터 구조Xbar-R Chart 데이터, Cpk, OOC 판정 (Western Electric Rules)
이상 시나리오OOC 패턴 주입 — get_spc_ooc_scenarios()
조회 함수get_sample_spc_data(item, scenario)
활용Data Panel UI에서 SPC 현황 표시, 품질 이상 RCA 분석
notifications_active
Alarm — 설비 알람 데이터
rca/sample_data/alarms.py
항목내용
데이터 구조알람 코드 마스터 + 알람 이력 + 심각도 분류
분석 함수get_alarm_correlations(), get_alarm_summary()
조회 함수get_sample_alarm_data(equipment, severity, time_range)
활용설비 알람 연관 분석, RCA 시 알람 이력 컨텍스트 제공
info
시뮬레이터 모드: --sqlite simulator.db로 실행하면 샘플 데이터가 자동 활성화됩니다. 운영(Oracle) 모드에서는 실제 MES/EAP 데이터가 사용됩니다.

link Rule-RCA Mapping

핵심 아이디어: 규칙(Rule)마다 "이 이상이 발생하면 어떤 방식으로 RCA를 할 것인가"를 설정한다. 이를 통해 물류 이상에는 물류 전문 분석을, 설비 이상에는 설비 전문 분석을 자동으로 적용할 수 있다.

2계층 설정 구조

layers
계층 1: 규칙(Rule) 레벨 설정
규칙별로 세밀하게 RCA 전략 지정 (최우선)
필드타입설명기본값
auto_rca boolean 자동 RCA 활성화 여부 false
rca_severity string 트리거 조건: critical / warning / all critical
rca_prompt text RCA 에이전트에게 줄 분석 지시 프롬프트 null (카테고리 기본값)
rca_tools JSON array RCA 시 사용할 도구 목록 null (카테고리 기본값)
rca_max_rounds integer ReAct 최대 라운드 수 5
category
계층 2: 카테고리 기본값
규칙에 개별 설정이 없으면 카테고리 기본 템플릿 적용

규칙에 rca_prompt/rca_tools가 null이면, 해당 규칙의 category에 따라 미리 정의된 기본 템플릿이 자동으로 적용된다.

규칙 위반 감지 ├── auto_rca = true? ──NO──→ 수동 대기 (기존대로) YES ├── severity >= rca_severity? ──NO──→ 수동 대기 YES ├── rca_prompt 있으면 → 규칙 전용 프롬프트 사용 없으면 → 카테고리 기본 템플릿 사용 ├── rca_tools 있으면 → 지정 도구만 등록 없으면 → 카테고리 기본 도구셋 └── RCA 에이전트 실행

schedule RCA Scheduler

Detection 엔진과 독립적으로 동작하는 별도 APScheduler 잡. DB를 폴링하여 rca_status = 'pending'인 이상을 찾아 분석을 실행한다.

settings_suggest
스케줄러 동작 사양
항목비고
폴링 간격 30초 환경변수 RCA_POLL_SEC로 조절 가능
동시 실행 제한 최대 2개 asyncio.Semaphore(2)
타임아웃 분석당 120초 초과 시 rca_status = 'failed'
재시도 최대 2회 LLM 오류 시 자동 재시도
쿨다운 같은 rule_id 5분 이내 중복 방지 반복 감지 시 RCA 폭주 방지

스케줄러 의사코드

# detection/auto_rca.py (신규)

async def poll_and_analyze():
    """30초마다 실행되는 Auto RCA 폴링 잡"""

    # 1. pending 이상 조회 (오래된 것부터)
    anomalies = await queries.get_pending_rca_anomalies(limit=5)

    for anomaly in anomalies:
        # 2. 규칙의 RCA 설정 확인
        rule = await queries.get_rule(anomaly["rule_id"])

        if not rule["auto_rca"]:
            continue

        # 3. severity 조건 확인
        if not _severity_matches(anomaly, rule):
            continue

        # 4. 쿨다운 확인 (같은 rule_id 5분 이내 중복 방지)
        if _in_cooldown(rule["rule_id"]):
            continue

        # 5. RCA 에이전트 실행 (비동기)
        await sem.acquire()
        asyncio.create_task(_run_rca(anomaly, rule, sem))


async def _run_rca(anomaly, rule, sem):
    try:
        # rca_status → 'running'
        await queries.update_rca_status(anomaly["anomaly_id"], "running")

        # 프롬프트/도구 결정 (규칙 → 카테고리 기본값 fallback)
        prompt = rule["rca_prompt"] or CATEGORY_DEFAULTS[rule["category"]]["prompt"]
        tools  = rule["rca_tools"]  or CATEGORY_DEFAULTS[rule["category"]]["tools"]

        # ReAct RCA 에이전트 실행
        result = await run_rca_agent(anomaly, prompt, tools,
                                      max_rounds=rule.get("rca_max_rounds", 5))

        # rca_analyses 테이블에 저장
        await queries.insert_rca_analysis(anomaly["anomaly_id"], result)

        # rca_status → 'done'
        await queries.update_rca_status(anomaly["anomaly_id"], "done")

    except Exception:
        await queries.update_rca_status(anomaly["anomaly_id"], "failed")
    finally:
        sem.release()

smart_toy RCA Agent

기존 Detection Agent(detection/agents.py)의 ReAct 루프를 재활용하되, RCA 전용 시스템 프롬프트규칙별 도구셋으로 동작한다.

psychology
RCA Agent 출력 스키마
JSON structured output
{
  "root_cause":       "컨베이어 C3 → EQ-PHO-02 구간 캐리어 적체",
  "confidence":       0.85,
  "severity":         "critical",
  "evidence": [
    "C3 부하율 97% (정상 대비 +42%)",
    "EQ-PHO-02 DOWN 상태 40분 지속",
    "상류 큐 대기 12건 (평균 3건)"
  ],
  "affected_scope":   "LINE-B / PHOTO 공정",
  "recommendation": [
    "EQ-PHO-02 즉시 PM 점검",
    "C3 → C4 우회 반송 경로 활성화",
    "WIP 유입 속도 일시 조절 (30% 감속)"
  ],
  "tool_calls_used": [
    "get_conveyor_load",
    "get_equipment_status",
    "get_queue_length"
  ]
}

storage DB Schema Changes

1. detection_rules 테이블 (ALTER)

-- 규칙별 Auto RCA 설정 필드 추가
ALTER TABLE detection_rules ADD (
  auto_rca          NUMBER(1)    DEFAULT 0,         -- 자동 RCA 활성화
  rca_severity      VARCHAR2(20) DEFAULT 'critical', -- 트리거 조건
  rca_prompt        CLOB,                               -- RCA 분석 프롬프트
  rca_tools         CLOB,                               -- 도구 목록 (JSON)
  rca_max_rounds    NUMBER       DEFAULT 5           -- ReAct 최대 라운드
);

2. anomalies 테이블 (ALTER)

-- RCA 상태 추적 컬럼 추가
ALTER TABLE anomalies ADD (
  rca_status        VARCHAR2(20) DEFAULT 'none',    -- none/pending/running/done/failed
  rca_started_at    TIMESTAMP,                        -- RCA 시작 시각
  rca_completed_at  TIMESTAMP                         -- RCA 완료 시각
);

3. rca_analyses 테이블 (기존 — 활성화)

-- 이미 schema.sql에 정의됨, 미사용 상태 → 활성화
CREATE TABLE rca_analyses (
  rca_id            NUMBER PRIMARY KEY,
  anomaly_id        NUMBER REFERENCES anomalies,
  root_cause        CLOB,                               -- 근본 원인 요약
  confidence        NUMBER(3,2),                        -- 0.00 ~ 1.00
  evidence          CLOB,                               -- 근거 목록 (JSON)
  recommendation    CLOB,                               -- 조치 제안 (JSON)
  affected_scope    VARCHAR2(200),                     -- 영향 범위
  tool_calls_used   CLOB,                               -- 사용된 도구 (JSON)
  duration_ms       NUMBER,                             -- 분석 소요 시간
  created_at        TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

description Rule YAML Spec

rules.yaml에 Auto RCA 필드를 추가한 전체 예시. 기존 필드는 그대로 유지하고, RCA 관련 필드만 하단에 추가된다.

# rules.yaml — Auto RCA 설정 포함 rules: # ── 예시 1: 규칙별 커스텀 RCA 설정 ── - name: 컨베이어 부하율 과부하 category: logistics check_type: threshold source_type: tool tool: get_conveyor_load tool_column: load_pct threshold_op: '>' warning_value: 85 critical_value: 95 eval_interval: 300 llm_enabled: true llm_prompt: > 컨베이어 부하율이 높습니다. 해당 존의 반송 이력과 병목 여부를 확인하세요. # ▼ Auto RCA 설정 (신규) auto_rca: true rca_severity: critical # critical일 때만 자동 분석 rca_prompt: | 컨베이어 부하율 과부하의 근본 원인을 분석하세요. 1. 해당 존의 반송 이력 확인 (최근 1시간) 2. 상류/하류 설비 상태 확인 (DOWN/PM 여부) 3. WIP 적체 여부 확인 (큐 대기 길이) 4. AGV/OHT 가동률 확인 rca_tools: - get_conveyor_load - get_bottleneck_zones - get_equipment_status - get_queue_length - get_agv_utilization rca_max_rounds: 5 # ── 예시 2: 카테고리 기본값 사용 (설정 최소화) ── - name: 설비 비계획정지 빈발 category: equipment check_type: threshold source_type: tool tool: get_unscheduled_downs tool_column: _count threshold_op: '>' warning_value: 3 critical_value: 5 eval_interval: 600 llm_enabled: true # ▼ auto_rca만 켜면 나머지는 equipment 카테고리 기본값 적용 auto_rca: true rca_severity: all # warning도 자동 분석 # ── 예시 3: Auto RCA 비활성 (기존과 동일) ── - name: WIP 흐름 불균형 category: wip check_type: delta source_type: tool tool: get_flow_balance tool_column: net_wip warning_value: 30 eval_interval: 300 llm_enabled: false # auto_rca 미설정 → 기본 false → 수동 RCA만 가능

category Category Defaults

규칙에 rca_prompt/rca_tools가 없으면, 카테고리별 기본 템플릿이 자동 적용된다.

local_shipping
Logistics (물류)
반송 이력 + 병목 존 + AGV 가동률 중심 분석
항목기본값
기본 프롬프트 물류 이상의 근본 원인을 분석하세요. 반송 처리량, 병목 존, AGV 가동률, 컨베이어 부하를 종합 확인하세요.
기본 도구 get_conveyor_load, get_transfer_throughput, get_bottleneck_zones, get_agv_utilization, get_queue_length
precision_manufacturing
Equipment (설비)
설비 상태 + 알람 이력 + PM 일정 + 비계획정지 중심 분석
항목기본값
기본 프롬프트 설비 이상의 근본 원인을 분석하세요. 설비 상태, 알람 이력, PM 일정, 비계획정지 기록을 종합 확인하세요.
기본 도구 get_equipment_status, get_equipment_utilization, get_unscheduled_downs, get_pm_schedule, get_equipment_alarms
inventory_2
WIP (재공)
WIP 트렌드 + 흐름 밸런스 + 큐 길이 + 에이징 LOT 중심 분석
항목기본값
기본 프롬프트 WIP 이상의 근본 원인을 분석하세요. WIP 추이, 유입/유출 밸런스, 큐 대기 상황, 에이징 LOT을 종합 확인하세요.
기본 도구 get_wip_levels, get_wip_trend, get_flow_balance, get_queue_length, get_aging_lots

dashboard UI Changes

1. 규칙 관리 페이지 — "자동 RCA" 탭 추가

기존 2탭(조건감시 / AI판단) 구조에 3번째 탭 "자동 RCA"를 추가한다.

tab
규칙 편집 다이얼로그 — 자동 RCA 탭
ui/pages/rules.py
┌──────────────────────────────────────────────────┐
│  [조건 감시]  [AI 판단]  [자동 RCA]                │
├──────────────────────────────────────────────────┤
│                                                  │
│  자동 RCA 활성화    [● ON]                       │
│                                                  │
│  트리거 조건         [Critical ▾]                │
│                      Critical / Warning / All    │
│                                                  │
│  RCA 프롬프트       ┌────────────────────────┐   │
│  (비워두면 카테고리  │ 컨베이어 부하율 과부하의│   │
│   기본값 적용)      │ 근본 원인을 분석하세요. │   │
│                     │ 1. 반송 이력 확인      │   │
│                     │ 2. 설비 상태 확인      │   │
│                     └────────────────────────┘   │
│                                                  │
│  RCA 도구            ☑ get_conveyor_load         │
│  (비워두면 카테고리   ☑ get_bottleneck_zones      │
│   기본값 적용)       ☑ get_equipment_status       │
│                      ☐ get_wip_levels            │
│                      ☐ get_aging_lots             │
│                                                  │
│  최대 분석 라운드     [5]                        │
│                                                  │
└──────────────────────────────────────────────────┘

2. 이상 목록 페이지 — RCA 상태 표시

이상 목록 테이블에 RCA 상태 뱃지를 추가한다.

상태뱃지설명
none미설정Auto RCA 비활성 규칙
pending대기중분석 대기열에 있음
running분석중RCA 에이전트 실행 중
done완료분석 완료 → 클릭 시 결과 보기
failed실패분석 실패 → 수동 RCA 유도

3. 이상 상세 다이얼로그 — RCA 결과 섹션

Auto RCA 완료 시, 이상 상세 다이얼로그에 "AI 자동 분석 결과" 카드가 추가된다. 근본 원인 + 근거 + 조치 제안 + 사용된 도구 + 소요 시간 표시.

api API Endpoints

MethodEndpoint설명
GET /api/anomalies/{id}/rca Auto RCA 결과 조회
POST /api/anomalies/{id}/rca/retry 실패한 RCA 재시도
GET /api/rca/stats Auto RCA 통계 (성공률, 평균 소요시간)
GET /api/rca/queue 현재 RCA 대기열 조회
POST /api/system/settings RCA 스케줄러 설정 변경 (폴링 간격, 동시 실행 수)

timeline Implementation Phases

Phase 1 — Foundation
DB 스키마 + 규칙 설정 + 스케줄러 뼈대
  • detection_rules ALTER — auto_rca 관련 5개 컬럼 추가
  • anomalies ALTER — rca_status, rca_started_at, rca_completed_at 추가
  • rca_analyses 테이블 활성화 (기존 스키마 활용)
  • rules.yaml 로더에 새 필드 매핑 추가
  • detection/auto_rca.py — 폴링 스케줄러 구현
  • main.py lifespan에 Auto RCA 스케줄러 등록
Phase 2 — Agent & UI
RCA 에이전트 + UI 통합
  • RCA 전용 시스템 프롬프트 + 카테고리 기본 템플릿 구현
  • 규칙 편집 UI — "자동 RCA" 3번째 탭 추가
  • 이상 목록 — RCA 상태 뱃지 표시
  • 이상 상세 — RCA 결과 카드 표시
  • API 엔드포인트 구현 (결과 조회, 재시도, 통계)
Phase 3 — Extension
알림 연동 + 워크플로우 트리거 + 대시보드 KPI
  • RCA 완료 시 텔레그램/이메일 알림 (선택적)
  • 워크플로우 이벤트 트리거 — "RCA 완료" 이벤트로 후속 워크플로우 자동 실행
  • 대시보드 KPI에 "Auto RCA 성공률", "평균 분석 시간" 추가
  • RCA 결과 기반 Knowledge Base 자동 등록 (학습 루프)

shield Risks & Mitigations

리스크영향완화 전략
LLM API 비용 폭증 높음 동시 실행 제한 (2개) + 쿨다운 (같은 규칙 5분) + rca_severity로 트리거 범위 제한. 월간 RCA 호출 상한 설정 (시스템 설정).
Detection 성능 저하 높음 RCA는 별도 스케줄러로 완전 분리. Detection tick과 LLM 호출을 공유하지 않음.
RCA 품질 불균일 중간 카테고리별 기본 프롬프트를 FAB 전문가와 함께 튜닝. RCA 결과에 confidence 점수 포함 → 저신뢰 결과 플래깅.
반복 이상에 의한 RCA 폭주 중간 같은 rule_id 5분 쿨다운 + anomaly occurrence_count 증가 시 RCA 스킵 옵션.
서버 재시작 시 진행 중 분석 유실 낮음 DB 기반 상태 관리 — 'running' 상태로 남은 건은 재시작 시 'pending'으로 리셋하여 재분석.
check_circle
현재 상태 (v1.7.0): RCA Studio(AI Analyst + 플로차트 + 워크플로우 변환)와 FDC/SPC/Alarm 샘플 데이터는 구현 완료되었습니다. Auto RCA Scheduler(이상 감지 → 자동 RCA 실행)는 설계 단계이며 Phase별 구현이 진행됩니다.