Manufacturing Data · Agentic Automation · 2026

센서 숫자는 정의부터 맞추고,
AI 작업은 승인을 거치게 합니다.

제조 현장 센서 대시보드를 만들고 고치면서, 그리고 AI 에이전트로 기획·요약 작업을 자동화하면서 해 온 일을 다섯 가지 사례로 모았습니다. 고친 것은 숫자로, 아직 못 정한 것은 못 정했다고 적었습니다.

01 · 현장 데이터
지표 정의를 맞춘다
가동 1.2시간 · 0회 모순을 1.2시간 · 6회로 정합. 36일치 화면을 '항상 맞아야 할 규칙'으로 검증
02 · 판단 근거
정할 수 없는 건 남긴다
같은 센서 값이 화면 세 곳에서 다르게 판정되는 이유를 코드 세 지점으로 설명
03 · AI 자동화
승인 게이트로 통제한다
AI 기획 루프 · 회의록 요약 API · 제조 Agentic AI 샘플. 사람 승인 전에는 외부 작업도 명령도 하지 않게 설계
Case 01 · 가이드롤 생산 모니터링 (evol) 해결 · 검증 완료

제조 지표 정의 재합의와 '항상 맞아야 할 규칙' 검증

광학필름 생산 라인의 가이드롤(동력 없이 필름 장력으로 도는 롤)에 붙은 센서 노드 4대가 10분마다 11초씩 속도·진동을 측정하고, 이를 FastAPI·React 대시보드로 보여 주는 시스템입니다. 통계 화면에 가동 1.2시간 · 가동 0회가 함께 표시되는 모순이 있었습니다. 원인은 두 지표의 판정 기준 차이였습니다. 가동 횟수는 30분 이상 이어진 구간만 세고, 가동 시간은 길이와 무관하게 합산해, 10분 가동 6회가 횟수에서는 빠지고 시간에는 1.2시간으로 들어갔습니다.

"가동 1회"의 정의를 현장과 다시 합의하고, 합산 함수를 단일화해 일간·주별·월별 화면이 같은 함수를 사용하도록 했습니다.

Before · 같은 주
1.2h가동 시간
0회가동 횟수
가동 0회와 가동 1.2시간이 동시에 표시됨
→정의 통일
함수 한 곳
After · 같은 데이터
1.2h가동 시간
6회가동 횟수
10분 가동 6회 — 두 지표가 일치
36일 규칙 위반 0건5일 → 0일 모순26건 계약 테스트95% 단축 첫 조회 18.0초 → 0.89초 · DB 연결 1회화 + Parquet 병합 사본
기간 통계 월 화면, 2026년 7월. 둘째 주 카드에 가동 1.2시간 6회
기간 통계 · 2026-07 · W28 카드 1.2시간 · 6회
일간 관제 화면, 2026-07-06. 짧은 가동 여섯 개
일간 관제 · 2026-07-06 · 10분짜리 가동 여섯 덩어리
Case Study 전체 보기 → 데모 보기 ↗ 공개 샘플 데이터 · 데모는 임시 주소라 바뀔 수 있음
Case 02 · 같은 프로젝트, 다음 질문 정의 미확정 · 현장 확인 필요

"움직인 시간"과 "생산 가동"은 다른 지표다

같은 센서 사이클 한 행이 화면 세 곳에서 세 가지 규칙으로 "가동"인지 판정됩니다. 노드 카드는 속도가 0만 아니면 가동, 기간 통계는 모든 노드가 함께 1 MPM 이상으로 돌아야 가동, 공정 분류는 0~1 MPM을 판정 보류로 둡니다. 어느 쪽이 현장의 "가동"인지는 생산 라벨이 없어 아직 정하지 않았습니다.

입력 (합성 · 노드 4대, 10분 간격)① 노드 카드② 기간 통계③ 공정 후보 분류
A 정상 — 전부 33 MPM가동가동생산 후보
B 정지 — 전부 0정지제외정지·잡음 후보
C 누락 — 한 노드 값 없음집계에서 빠짐제외판정 불가 (값 없음)
D 음수 — 한 노드 −2정지제외데이터 품질 확인
E 저속 — 전부 0.5 MPM가동가동 아님판정 보류
합성 값입니다. 현장 ID·운영 수치가 아니며, 결과는 코드를 따라가 계산한 기대값입니다.
한 것
  • 세 규칙의 분자·분모·예외를 한 표로 정리
  • 음수와 0~1 MPM 구간을 세 곳이 다르게 다룬다는 것을 코드 세 지점으로 설명
  • 결정이 필요한 질문을 이슈로 남김
아직 안 한 것
  • 현장 평균에 맞춰 문턱을 고르지 않았습니다
  • 다음: 위 표의 다섯 경우를 테스트로 고정하고, 현장에서 확인한 뒤 판정 기준값 한 곳만 고친다
Case 03 · Planning Harness 동작 · 데모 공개

AI가 마음대로 반영하지 못하게 — 승인 게이트 기획 루프

기획자가 명령어 한 줄로 상세기획 산출물을 만들고, 승인된 기획만 개발 저장소 이슈·PR로 넘기는 Claude Code 플러그인입니다. 프롬프트마다 결과가 달라지는 문제를 고정된 스킬 8개와 가드레일로 묶었고, GitHub에 쓰는 작업은 dry-run과 사람 승인을 거치게 했습니다.

요구사항spec.md (기준 문서)
→
분해 · 다이어그램시퀀스 · 사용자 흐름
→
테스트 케이스단계별 산출물
→
dry-run + 사람 승인여기서 멈춘다
→
Issue · PR 핸드오프GitHub

제조 현장에 맞춰 바꾸면 같은 구조가 "원인 확인 → 수정안 → 승인 → 배포 → 보고"가 됩니다. evol 작업에서도 이 순서를 스킬로 만들어 씁니다.

Case 04 · work-cycle 회의록 요약 구현 · 코드 기준 정리

회의록 AI 요약 API — 실패해도 흔적이 남지 않게

사용자가 확인한 회의 텍스트 한 덩어리가 인증 → 입력·사용량 검사 → 프롬프트 조립 → 모델 호출 → 저장 순서로 처리됩니다. 모델은 Workers AI를 먼저 부르고, 실패하면 Gemini로 넘어갑니다. 둘 다 실패하면 저장 전에 멈추므로 회의록도 사용량 기록도 생기지 않습니다.

텍스트 확인사용자가 고친 뒤 전송
→
인증없으면 401
→
입력 · 하루 한도400 · 429 (하루 20회)
→
모델 호출Workers AI → Gemini · 둘 다 실패 502
→
저장생성된 회의록만
설계에서 지킨 것
  • 요청 원문은 DB에 저장하지 않고 생성된 회의록만 저장
  • 하루 호출 한도로 비용 상한
  • 모델 2단 폴백, 실패 시 쓰기 0건
정확히 말하면
  • 임베딩·벡터 검색은 쓰지 않습니다 — 회의 한 건 요약이라 검색 대상이 없음
  • 원문은 최대 60,000자까지 모델 제공자에게 전송됩니다
  • 위 순서는 코드 읽기로 정리했고, 실패 경로 실행 테스트는 다음 작업입니다
Live Demo ↗ GitHub ↗ 데모는 허구 예시 데이터 · 로그인 없이 체험
Case 05 · Factory AI Copilot 라이브 · 허구 데이터 샘플

승인 없이는 명령이 안 나간다 — 제조 Agentic AI 샘플

허구 센서 사이클 30건(노드 4개 · 속도 · 진동) 위에서 공정 판단 → 원인 추적 → 행동 제안 → 사람 승인 → 모의 명령을 한 화면에 구현한 샘플입니다. 메일 승인 에이전트(Javis)가 "초안은 사람이 승인해야만 저장된다"를 지키던 승인 구조를 제조 데이터로 옮겼습니다. Monitor는 결정대장 규칙 2개만 쓰고(LLM 없음), Root Cause는 Tool로 앞 5사이클을 거슬러 시작 노드·사이클·이벤트를 ID로 찍습니다. 행동 제안은 승인 8조건을 통과해야만 모의 명령 1회가 되고, 자동으로 넘어가는 전이는 0개입니다.

Monitor규칙 2개 · 속도 급변 · 노드 불일치
→
Root CauseTool 호출 · 앞 5사이클 추적
→
행동 제안STOP · SLOW · INSPECT · NO_ACTION
→
사람 승인 8조건여기서 멈춘다 · 24h 만료
→
모의 명령 1회simulated · 재시도 없음
설계에서 지킨 것
  • 근거 ID는 Monitor → 추적 → 제안 → 명령으로 그대로 상속, 중간에 새 ID 없음
  • 데이터 지문이 바뀌면 승인 무효, 두 번 눌러도 명령 1건
  • 못 찾으면 추측하지 않고 "사람 확인 필요" 큐에 쌓임 (자동 재실행 없음)
  • 테스트 30개 — 승인 전 명령 0건, 질문 10개의 답 ID가 원본 데이터와 일치
정확히 말하면
  • 데이터 30건은 전부 허구이며 실제 PLC · 로봇 · LLM · DB 연결은 없습니다
  • 노드 불일치 허용폭 2.0 m/min과 행동 선택 기준은 결정대장에 없는 AI 제안이라 화면에 그렇게 표시합니다
  • 진동은 관측만 기록하고 판단에 쓰지 않습니다 — 상한이 정해진 적이 없기 때문
Live Demo ↗ GitHub ↗ 승인·명령은 브라우저 안에서만 기록 · 로그인 없이 체험

다섯 사례에서 반복한 일하는 방식

정의 먼저
분자·분모·예외를 한 줄로 적고 현장과 합의한 뒤에 코드를 고친다
Case 01 · 02
항상 맞아야 할 규칙으로 잠근다
"맞는 화면이면 반드시 성립하는 것"(예: 가동 시간이 0보다 크면 가동 횟수도 0이 아니다)을 먼저 쓰고 전수 대조, 테스트로 고정
Case 01
승인 게이트
AI가 만든 결과는 사람이 승인하기 전까지 외부에 반영하지 않는다
Case 03 · 04 · 05
한계를 적는다
측정 안 한 것, 정하지 못한 것은 그렇다고 쓰고 다음 작업으로 남긴다
Case 02 · 04 · 05
FastAPIReactDuckDB · ParquetpytestDocker · NginxCloudflare Workers · D1Claude Code 스킬Workers AI · GeminiJSON 계약 · node:test · Playwright
+이 페이지의 숫자 출처
  • Case 02 — evol 현장 지표 사례 문서 (2026-10-04, 코드 읽기와 열린 이슈 대조, 새 실행 없음)
  • Case 03 — Planning Harness 저장소 README·플러그인 문서
  • Case 04 — work-cycle 회의록 요약 API 흐름 문서 (2026-10-04, 코드 읽기 기준)
  • Case 05 — jarvis-factory-copilot-portfolio samples/factory-copilot README · 테스트 30개(npm test) · 설계 문서 ME Phase 3.5 D08~D19 (2026-10-05)
  • 화면 캡처는 공개 샘플 데이터이며 고객사명·운영 원자료는 싣지 않았습니다