👍 meeting | 👍 Front-PR | 👍 Back-PR | 👍 Front-Issues | 👍 Back-Issues |
맥주 제조 공정의 생산부터 출하까지 전반적인 과정을 직관적으로 관리할 수 있도록 설계된 ERP 프로젝트입니다.
실제 양조 라인의 작업 흐름을 반영해 생산계획 -> 작업 지시 -> 생산공정 실행 및 실시간 모니터링 -> 생산실적관리 로
이어지는 구조를 구현하였으며, 현장 중심의 실질적인 생산 관리 UX 구현에 초점을 맞추었습니다.
✨ DBA 및 생산 공정 관리 흐름 (10개 공정 구현)
작업지시서(LOT) 를 기반으로 분쇄부터 패키징까지 총 10개 공정의 로직을 구현하였으며,
공정별 특성을 반영해 온도 기반 설비 시뮬레이션, 자동 계산 로직, 공정 완료 후 다음 단계로의 데이터 자동 이관 등
실제 설비 연동을 가정한 사용자 경험 중심의 흐름을 설계했습니다.
또한, 설비 상태 변화와 공정 흐름을 이미지/시각 자료로 직관적으로 표현 하여
작업자가 실시간 상황을 쉽게 인지할 수 있도록 구현했습니다.
💡 본 프로젝트는 실제 ERP 구조를 바탕으로 프론트/백엔드 연동과 UX 시뮬레이션을 중심으로 구현되었으며,
일부 보안 및 인증 기능은 개발 범위 외로 처리되었습니다.
| 구분 | 사용 기술 |
|---|---|
| 프레임워크 & 언어 | Java 17, Spring Boot |
| ORM & DB | Spring Data JPA, Hibernate, OracleDB |
| 쿼리 | QueryDSL |
| 템플릿 엔진 | Thymeleaf |
| API 문서화 | SpringDoc OpenAPI (Swagger) |
| 모델 매핑 | ModelMapper |
| 웹소켓 | Spring Boot WebSocket (STOMP) |
| 로그 & AOP | Lombok (@Slf4j), Spring AOP |
| 배포 환경 | 로컬 개발 환경 (Oracle DB 기준) |
| 기타 도구 | DevTools, ojdbc8 / ojdbc11 드라이버 |
| 구분 | 기술 |
|---|---|
| 프레임워크 | React |
| 기본 기술 | HTML5, CSS3, JavaScript |
| 라우팅 | React Router DOM |
| 상태 관리 | useState, useEffect, useMemo, useCallback |
| HTTP 통신 | fetch API, axios |
| 모달 처리 | react-modal |
| 애니메이션 | Lottie-React, JS-Confetti |
| 마크다운 렌더링 | marked |
| 스타일링 | CSS Modules, Flexbox 기반 레이아웃 |
작업지시서와 자재정보는 공정 진행 중 해당 지시서대로 공정이 정확히 수행되는지 검토할 수 있도록 구성되어 있습니다. 각 공정에 필요한 원재료, 투입량, 작업지시번호를 실시간으로 확인·비교할 수 있어, 현장 작업자나 관리자 모두 손쉽게 대응이 가능합니다
※ 참고: 실제로는 공정별 소요시간이 상이하나, 데모 및 검증 목적상 모든 공정의 타이머를 5초로 통일하여 구현하였습니다.
이를 통해 전체 흐름을 빠르게 확인할 수 있도록 구성했습니다.
작업지시서(LOT 번호)가 생성되면, 분쇄 공정 화면에서 해당 작업지시 번호를 선택할 수 있습니다. 선택한 작업지시 정보에 따라 원재료(보리, 밀, 쌀 등)와 맥아 종류, 투입량이 자동으로 불러와지며, 해당 원재료에 맞는 분쇄 간격(mm), 분쇄 속도(RPM) 도 자동으로 설정됩니다.
작업자는 이 데이터를 기반으로 실제 분쇄 작업을 수행합니다. "등록하기" 버튼을 통해 공정 시작 시점을 기록하면, 설정된 시간에 맞춰 타이머가 작동되며 공정이 진행됩니다. 타이머가 종료되면, 공정 완료 모달이 나타나며 "다음 공정 이동" 버튼을 통해 후속 공정으로 넘어갑니다.
당화공정은 분쇄공정에서 처리된 원재료(주원료 + 맥아) 와 물을 혼합하여 당화 반응을 유도하는 단계입니다.
해당 화면에서는 작업지시 ID를 기준으로 이전 공정에서 설정된 분쇄 원료의 총 투입량을 곡물 기준값 1로 환산하고, 작업지시서에서 지정된 물 투입량을 자동으로 불러와 곡물 대비 물의 비율을 실시간으로 계산하여 확인할 수 있습니다.
이를 통해 작업자는 원료 대비 물 비율이 적정한지 직관적으로 확인할 수 있으며, 혼합이 완료된 시점에서는 설비의 측정값을 기반으로 pH 값을 수동 입력하도록 되어 있습니다.
여과공정은 당화공정에서 생성된 워트를 필터링하여 맑은 맥즙을 분리하는 단계입니다.
해당 화면에서는 작업지시 ID를 기준으로 당화 시 설정된 워트 총량과 곡물 흡수량(1.4L/kg) 을 자동 연산하여, 회수 가능한 워트량을 계산합니다. 이후, 필터링 과정에서 발생하는 손실량은 회수된 워트량의 5% 로 자동 산출되며, 최종 회수 워트량은 손실량을 반영하여 실시간으로 업데이트됩니다.
이를 통해 작업자는 여과 후 실제 수율을 확인 하고, 손실량의 비정상 여부를 직관적으로 판단할 수 있습니다.
끓임공정은 여과된 맥즙에 홉을 투입한 후, 고온에서 끓이는 단계입니다.
공정은 설정된 온도에 도달하면 모달창이 표시되며, 사용자가 확인하면 끓임공정이 시작됩니다.
온도 변화는 타이머 기반 구조로 설계되어, 끓임 설비의 온도 변화를 실시간으로 시각화할 수 있도록 구성했습니다.
초기 워트량은 여과공정에서 최종 회수된 워트량을 기준 으로 자동 설정되며,
홉 투입 정보는 작업지시서에 등록된 자재 정보를 기반 으로 자동 불러옵니다.
첫 번째와 두 번째 홉의 투입량이 자동으로 입력되어, 작업자는 이를 확인할 수 있습니다.
끓임 종료 시, 끓임 손실량(초기 워트량의 5%)이 자동 계산되어 표시되며 ,
최종 끓임 후 워트량은 초기 워트량 - 끓임 손실량으로 실시간 산출되어 업데이트됩니다.
이 과정을 통해 작업자는 홉 투입 시점과 수율 변화 상황을 직관적으로 파악할 수 있습니다.
냉각공정은 끓임공정에서 가열된 맥즙을 설정된 적정 온도까지 빠르게 식히는 단계입니다.
온도가 설정값에 도달하면 모달창이 표시되며, 사용자가 확인하면 냉각공정이 시작됩니다.
냉각수의 온도는 기본값으로 설정되어 있으며, 냉각 설비에 따라 온도 변화가 가능하도록 타이머 기반 구조로 설계되었습니다.
냉각공정 또한 끓임공정과 마찬가지로 타이머 기반으로 구성되어, 냉각 설비의 온도 변화를 실시간으로 시각화할 수 있도록 구현되었습니다.
발효공정은 맥즙에 효모를 투입하여 알코올과 향을 생성하는 핵심 단계입니다.
설정된 온도에 도달하면 모달창이 표시되며, 사용자가 확인하면 발효공정이 시작됩니다.
이때 작업지시에 등록된 자재 정보를 기반으로 효모의 종류와 투입량이 자동으로 입력됩니다.
공정이 완료되면 최종 당도를 입력하게 되며, 이 값은 이후 공정의 품질 기준으로 활용됩니다.
숙성공정은 발효가 완료된 맥주를 일정 온도와 압력에서 안정화시키며,
맛, 향, 탄산 밸런스를 조정하는 최종 조율 단계입니다.
설비의 기본값에 따라 시작 온도, 현재 온도, 압력, CO₂ 농도, 용존 산소량이 자동 설정됩니다.
숙성된 맥주를 최종 여과하여 맑고 깨끗한 품질로 완성하는 공정입니다.
이 과정을 통해 맥주의 청량한 외관과 깔끔한 맛을 유지할 수 있습니다.
여과가 완료되면,탁도(탁한 정도)를 측정하여 품질을 확인하고
기준에 적합한 경우, 다음 공정으로 이동됩니다.
완성된 맥주에 탄산을 주입하여 적절한 탄산감을 부여하는 공정입니다.
이 과정을 통해 맥주의 풍미를 더욱 살리고, 톡 쏘는 청량감을 구현할 수 있습니다.
CO₂ 농도, 탄산 공정 온도, 공정 중 압력은 기본값에 따라 자동 설정되며,
설정값은 제조 기준에 맞춰 최적화되어 있습니다.
탄산 조정이 완료되면 마지막 공정으로 전환됩니다.
패키징 및 출하 공정은 제품 완성 후 마지막 단계로, 충전부터 라벨링, 포장, 출하 등록까지 진행됩니다.
작업지시가 로드되면 충전 상태, 세척 및 살균, 밀봉, 라벨링, 포장 상태를 선택할 수 있으며, 각 항목은 기본적으로 '양호'로 설정됩니다.
제품명과 출하일은 작업지시서에서 자동 연동되며, 수량과 목적지를 입력하면 출하 정보가 등록됩니다.
공정 중 산소 농도나 밀봉 압력 등은 기준에 따라 상태가 자동 표시되어 작업자는 확인만 하면 됩니다.
출하 대기 상태가 완료되면, 작업지시 관리로 공정 상태가 넘어가며 해당 작업의 전체 공정 완료 여부를 한눈에 확인할 수 있습니다.











