🏆90

도전 과제: 경영진용 제조 AI 대시보드 + LLM 인사이트 자동 생성

Day 4: 생산 대시보드 & 모니터링

시나리오

중견 제조사의 DX 팀장으로서, 경영진이 아침에 확인할 대시보드를 만듭니다.

시작 재료

Day 1 의 mfg_kpi.py 에서 라인별 일간 집계를 만들어 씁니다. 에너지는 가동시간에 비례한다고 가정한 가상 값입니다. 실제 라인에서는 전력량계 값이 들어갑니다.

from mfg_kpi import build_dataset

daily = (build_dataset()
         .groupby(['date', 'equipment'], as_index=False)
         .agg(oee=('oee', 'mean'),
              total_count=('total_count', 'sum'),
              defect_count=('defect_count', 'sum'),
              run_min=('run_min', 'sum')))
daily['defect_rate'] = daily['defect_count'] / daily['total_count']

KWH_PER_HOUR = {'CNC-001': 18, 'CNC-002': 18, 'CNC-003': 22,
                'PRESS-001': 35, 'PRESS-002': 33}
daily['energy_kwh'] = (daily['run_min'] / 60 *
                       daily['equipment'].map(KWH_PER_HOUR)).round(1)
daily.to_csv('line_daily.csv', index=False)   # 150행 (5라인 x 30일)

걸려 넘어지기 쉬운 자리 셋

  1. 캐시와 날짜. @st.cache_data 로 감싼 적재 함수 밖에서 datetime.now() 로 날짜를 만들면, 위젯을 건드릴 때마다 날짜만 새로 생기고 데이터는 캐시된 옛것이 돌아옵니다. 최신일 행이 비어 KPI 카드가 nan 이 됩니다. 날짜 생성을 적재 함수 안으로 넣으십시오.
  2. delta 의 방향. 불량률이 내려간 것은 좋은 일인데 기본 설정에서는 빨간 하향으로 보입니다. delta_color='inverse' 를 줍니다. p8w12-d4-streamlit-dashboard 의 본보기는 Downtime 에만 주고 불량률에는 빠뜨렸습니다. 베끼지 말고 고쳐 쓰십시오.
  3. 하드코딩 delta. 같은 본보기의 "+5.2%", "-12.3%" 는 계산값이 아닙니다. 전일 값을 실제로 찾아 빼야 합니다.

임계치는 근거와 함께

진동 4.0 / 7.0 mm/s 같은 값을 그대로 쓰지 마십시오. 회전기계 진동은 ISO 20816 계열의 설비 등급별 판정 기준이 있고, 설비 크기와 지지 방식에 따라 기준이 달라집니다. 근거를 찾지 못했으면 "근거 미확인, 잠정값"이라고 적는 것이 값을 그럴듯하게 적는 것보다 낫습니다.

시간 배분과 중간 확인 지점

구간할 일이 시점에 손에 있어야 하는 것
0~10분데이터 생성과 확인line_daily.csv 150행
10~30분KPI 카드 4장 배치새로고침해도 nan 이 안 나오는 화면
30~45분전일 대비 delta 계산카드마다 계산된 증감과 올바른 색
45~65분라인별 추세 차트라인 선택에 따라 바뀌는 차트
65~85분알람 3단계 로직단계별로 실제 발동하는 예시 각 1건
85~90분정리와 스크린샷제출용 화면 캡처

65분 지점에서 세 단계 중 한 번도 발동하지 않는 단계가 있으면 임계치가 데이터와 맞지 않는 것입니다. 임계치를 조정하거나, 발동하지 않는다는 사실 자체를 기록하십시오.

막힐 때 볼 곳

  • Streamlit 구성은 p8w12-d4-streamlit-dashboard
  • 알람 단계 설계는 p8w12-d4-alarm
  • 차트 저장이 안 되면 p8w12-d2-prophet 의 figure 처리 부분

제출물

  1. Streamlit 앱 코드 (.py)
  2. 알람 로직 모듈 (.py). 임계치와 그 근거를 주석으로 적는다
  3. 화면 캡처 3장 (정상, WARNING, CRITICAL)
요구사항

(필수) 아래 코드로 5개 라인의 일별 OEE·불량률·생산량·에너지 사용량 데이터를 만든다

(필수) Streamlit 으로 라인별 KPI 카드와 추세 차트를 배치한다

(필수) st.metric 의 delta 를 전일 대비 실제 계산값으로 채운다. 하드코딩 금지

(필수) 불량률처럼 낮을수록 좋은 지표에는 delta_color='inverse' 를 준다

(필수) 임계치 초과 시 INFO·WARNING·CRITICAL 3단계 알람 로직을 구현하고 임계치의 근거를 적는다

(확장) 수치를 JSON 으로 정리해 LLM 에 넘기고 한국어 요약을 받는다

(확장) matplotlib 차트를 넣은 PDF 리포트를 만든다

평가 기준
  • delta 가 실제 전일 대비 계산이고 방향(색)이 지표 성격과 맞는가 (30점)
  • 정보 위계와 화면 구성의 완성도 (25점)
  • 알람 임계치의 근거를 밝혔는가 (근거 없는 값이면 그렇게 적었는가) (25점)
  • 리런·빈 데이터 같은 예외 상황에서 화면이 깨지지 않는가 (20점)
보너스
  • Grafana + InfluxDB 실시간 모니터링 화면 추가 연동
  • Slack/Teams Webhook으로 CRITICAL 알람 푸시 통합
AI로 학습하기 — 꿀팁
LLM 인사이트 자동 생성 프롬프트 설계AI 학습 팁

경영진용 대시보드에서 LLM이 KPI 데이터를 보고 자동으로 인사이트를 생성하려면 구조화된 시스템 프롬프트가 핵심입니다. 프롬프트 설계를 AI와 함께 검증하세요.

내가 설계한 LLM 인사이트 자동 생성 시스템의 프롬프트 초안:

{시스템 프롬프트 + 데이터 주입 템플릿 붙여넣기}

다음을 기준으로 검토해줘: (1) 경영진이 5분 안에 의사결정할 수 있는 핵심 인사이트가 도출되는가, (2) 환각(Hallucination) 방지를 위한 데이터 기반 서술 제약이 충분한가, (3) 이상 감지 시 경보 문구의 긴급도 표현이 적절한가. 개선된 프롬프트 대안 1개도 함께 제시해줘.
이 팁이 도움이 됐나요?
용어