목록으로
업무 생산성 개선을 위한 AI 활용
엑셀에서 웹으로, 중소기업용 MES 개발/활용
👤 초록판다343 📅 2026-05-16 👁 조회 25
엑셀로 관리하던 생산진도현황을 Claude와 함께 14,000줄 규모의 자체 MES 웹시스템(웹 대시보드·실적입력·자재 자동조회·APS 스케줄러·모바일)으로 전환하여 21명 작업자가 실시간으로 사용하고 있습니다.
① 어떤 상황에서 AI를 활용했나요?

생산관리 담당자로서 매일 "제품 진도현황" 엑셀 파일로 21명 작업자의 1공정·2공정·시운전 진행 상황과 자재 불출 정보를 관리해 왔습니다. 한 파일에 수백 건의 작업지시(WO)가 쌓이고, 작업자별로 시작/완료/조립자 컬럼이 공정별로 나뉘어 있어 다음과 같은 문제가 누적되고 있었습니다.

① 여러 명이 같은 파일을 열면 잠금이 걸려 실시간 공유가 어려웠고, ② 수기 입력 과정에서 셀 위치를 잘못 짚는 오류가 잦았으며, ③ 결품·불출 정보는 다른 PC의 "EC Downloads" 폴더에 따로 떨어져 있어 매번 사람이 보고 대조해야 했습니다. 또 ④ 일일 작업 스케줄은 머릿속과 메모지에 의존해 작성하다 보니 작업자별 부하·납기를 정확히 맞추기 어려웠고, ⑤ 모바일에서는 사실상 조회가 불가능해 현장 작업자는 사무실에 와서 확인해야 했습니다.

저는 개발 전공자가 아니지만 "엑셀로 운영하던 생산관리 업무를 사내 웹시스템으로 그대로 옮기고 싶다"는 명확한 요구를 가지고 있었습니다. 외주 개발 없이, AI(Claude)를 페어 프로그래머처럼 활용해 직접 만들어 보기로 했습니다.


② 어떤 AI를 어떻게 활용했나요?

Anthropic의 Claude를 코드 작성·검토 파트너로 사용했습니다. 사용한 방식은 크게 4가지입니다.

1) 요구사항을 평문으로 정리해 Claude에게 그대로 전달했습니다. 예: "엑셀의 W~AN 컬럼이 불출·시작1·완료1·조립자1·…·생산완료·이슈사항이다. 이걸 Flask 웹페이지에서 입력·조회할 수 있게 만들고 싶다." 이런 식으로 업무 용어 그대로 요청하면 Claude가 컬럼 매핑 딕셔너리, openpyxl 기반 읽기/쓰기 함수, REST API 엔드포인트까지 한 번에 설계해 주었습니다.

2) 단계별로 모듈을 키워 갔습니다. 처음에는 엑셀 → JSON 변환 한 가지만 만들고, 다음 단계에서 SQLite 백엔드(mes_database.py)로 영속화, 그 다음에 APS 자동 스케줄링 엔진(aps_engine.py), 마지막에 모바일/대시보드 UI 순서로 확장했습니다. 한 번에 큰 코드를 받지 않고 "이번 단계는 이것만"이라고 범위를 좁힌 것이 핵심이었습니다.

3) 문제 상황의 로그·스택트레이스·셀 좌표 등 "현장의 증거"를 그대로 붙여넣고 원인을 같이 분석하게 했습니다. 예: "openpyxl이 datetime(0,0,0)을 빈 셀로 처리해야 하는데 문자열 '00:00:00'으로 들어온다" 같은 상황을 알려주면 Claude가 _safe_cell_value 같은 방어 코드를 제안해 주었고, 그대로 적용했습니다.

4) 백업 폴더를 두고 "버전" 단위로 안전하게 개선했습니다. 변경 전 파일을 백업폴더에 타임스탬프로 보관(예: mes_server_20260301_180000.py)하고, Claude에게 "이전 버전과 비교해 어디가 바뀌었는지" 설명을 받으면서 회귀 위험을 통제했습니다. 약 두 달간 70여 개 버전이 누적될 만큼 빠르게 반복 개선이 가능했습니다.


③ 활용 결과 어떤 변화가 있었나요?

결과적으로 엑셀 한 권에 머물러 있던 업무가 사내 웹 기반 MES V3 시스템으로 전환되었습니다. 규모와 기능을 수치로 정리하면 다음과 같습니다.

· 코드 규모: Python 메인 모듈 7개 약 14,144줄(mes_server 4,336줄 / aps_engine 4,398줄 / mes_processor 3,194줄 / mes_database 763줄 등) + HTML/CSS/JS 대시보드 + 모바일 페이지. REST API 엔드포인트 118개를 갖춘 본격 사내 시스템입니다.

· 사용자: 21명 작업자(조립1직·조립2직·가공) + 관리자. 로그인 시스템과 권한, 7일 세션 유지, 모바일 페이지(/m)로 현장에서 바로 조회·입력이 가능합니다.

· 자동화된 데이터 흐름: 원본 엑셀 파일이 갱신되면 자동으로 감지·재로딩되고, 자재 불출 파일(EC Downloads 폴더)과 결품 정보도 자동 조인·반영됩니다. 사람이 옮겨 적던 작업이 사라졌습니다.

· APS 자동 스케줄링: 작업자별 과거 작업 패턴을 학습해 적합한 작업자에게 자동 배정하고, 표준시간·부하·납기를 고려해 일자별 계획을 제시합니다. 시뮬레이션·순연 처리·스케줄 저장/불러오기까지 지원합니다.

· 안정성: SQLite WAL 모드로 다중 사용자 동시 접속, 미저장 변경 추적, 변경 이력 6개월 보존, 일자별 로테이션 로그(30일 보관)로 "누가 언제 무엇을 바꿨는지" 추적이 가능해졌습니다.

· 체감 효과: 엑셀을 "누가 열고 있는가" 묻던 시간이 사라졌고, 자재·결품을 사람이 대조하던 작업이 자동화되었으며, 매일 수기로 짜던 작업계획이 패턴 기반 추천으로 바뀌었습니다. 현장에서도 모바일로 즉시 실적을 입력할 수 있게 되었습니다.


④ 나만의 방식 또는 개선 포인트는 무엇인가요?

비개발자가 AI와 협업해 4,000줄 단위의 모듈을 안정적으로 유지하기 위해 다음 5가지 원칙을 적용했습니다.

1) "업무 용어로 묻고, 코드로 받는다." Python·Flask·SQLite를 따로 공부하기보다, 현업 용어(공정·불출·결품·우선순위·소요일)를 그대로 던지고 Claude가 코드로 번역하게 했습니다. 대신 컬럼 매핑(A~AN), 비즈니스 규칙(자재완료 판단, 우선순위 정렬)은 제가 직접 정의해 전달했습니다.

2) "한 번에 한 가지만." 매 세션마다 변경 범위를 "이번엔 불출 정보 자동조회만", "이번엔 모바일 페이지만" 식으로 좁혔습니다. 큰 코드를 한 번에 받지 않으니 회귀 버그가 줄고, 리뷰가 가능해졌습니다.

3) "백업 폴더가 곧 깃(Git)." 변경 전 파일을 백업폴더에 타임스탬프로 보관해 언제든 되돌릴 수 있게 했습니다. 70여 개의 버전이 그대로 보존되어 있어 "3월 1일 18시 버전과 비교해 달라"는 식의 요청이 가능했습니다.

4) "증거 기반 디버깅." 에러가 나면 추측하지 않고 logs/mes.log의 실제 로그, 셀 좌표, 데이터 샘플을 Claude에게 그대로 붙여넣어 원인을 같이 좁혔습니다. 결과적으로 _safe_cell_value, _merge_bulchul_data 등 "현장 데이터의 함정"을 방어하는 함수들이 자연스럽게 모듈에 자리 잡았습니다.

5) "배포는 한 줄 배치파일로." deploy.bat / deploy_all.bat 같은 작은 배치파일을 만들어 네트워크 드라이브(\\192.168.0.33\rpa)에 한 번에 복사·배포하도록 했습니다. 비개발 환경에서도 운영 부담을 최소화하는 장치입니다.


⑤ 다른 사람도 따라 할 수 있나요?

충분히 따라 할 수 있습니다. 이 사례의 핵심은 "고급 개발 지식"이 아니라 "업무를 가장 잘 아는 사람이 AI를 도구로 끝까지 끌고 가는 끈기"였습니다. 권장 절차는 다음과 같습니다.

1) 현재 엑셀에서 가장 자주 하는 작업 3가지를 글로 적습니다(예: 진도 입력, 불출 대조, 일일 작업배정). 이 "문제 정의"가 가장 중요합니다.

2) Claude에게 "이 엑셀을 Flask 웹페이지로 옮기고 싶다. 컬럼 의미는 다음과 같다…"라고 평문으로 설명합니다. 첫 결과물은 가능한 한 작게(예: 조회 화면 한 페이지)만 받습니다.

3) 잘 동작하면 다음 기능(입력 → 자동 저장 → 자재 자동 조회 → 모바일)을 한 단계씩 늘려갑니다. 매 단계마다 이전 파일은 "백업폴더"에 타임스탬프로 복사해 둡니다.

4) 에러는 추측하지 말고 "로그·스택트레이스·데이터 샘플"을 그대로 Claude에 붙여 넣어 함께 원인을 좁힙니다.

5) 사용자가 늘어나기 시작하면 SQLite/로그인/백업 같은 운영 요소를 한 번에 한 가지씩 추가합니다.

본 사례는 외주 개발이나 별도 SI 없이, 현업 담당자 1인 + AI 파트너로 사내 운영 가능한 MES를 구축한 사례입니다. 동일한 방식으로 품질, 자재, 출하 등 다른 엑셀 기반 업무도 점진적으로 시스템화할 수 있습니다.


================================================================
[참고] 시스템 규모 요약
- 메인 Python 모듈: 7개 / 약 14,144줄
- mes_server.py: 4,336줄 / REST API 118개
- aps_engine.py: 4,398줄 (자동 스케줄링·패턴 학습·시뮬레이션)
- mes_processor.py: 3,194줄 (엑셀 처리·불출 조인·작업이력)
- mes_database.py: 763줄 (SQLite WAL · 변경이력 6개월 보존)
- UI: 데스크톱 대시보드 + /m 모바일 페이지
- 사용자: 21명 작업자(조립1직·조립2직·가공)
- 공정: 1공정 · 2공정 · 시운전
- 반복 개선: 약 2개월간 70여 버전 백업(타임스탬프 보관)
================================================================
← 목록