# FEMS(Factory Energy Management System) ## 1. 개요 FEMS는 공장 내에 공급, 소비되는 에너지를 최적화 시켜주는 에너지관리시스템입니다. ## 2. 프로젝트 아키텍처 ### 2.1 시스템 구조 ```bash wacefems/ ├── fems-admin/ # 공급업체 슈퍼 관리자 시스템 │ ├── src/ │ │ ├── app/ │ │ │ ├── (auth)/ # 관리자 인증 │ │ │ ├── dashboard/ # 전체 현황 대시보드 │ │ │ ├── companies/ # 기업 관리 │ │ │ │ ├── list/ # 기업 목록 │ │ │ │ ├── registration/ # 기업 등록 │ │ │ │ └── [id]/ # 기업 상세 │ │ │ ├── contracts/ # 계약 관리 │ │ │ ├── billing/ # 과금/결제 관리 │ │ │ ├── support/ # 기술 지원 │ │ │ └── settings/ # 시스템 설정 │ │ ├── components/ │ │ ├── lib/ # 라이브러리 │ │ ├── services/ │ │ └── types/ │ ├── fems-app/ # 사용 기업용 FEMS 시스템 │ ├── src/ │ │ ├── app/ │ │ │ ├── (auth)/ # 인증 시스템 │ │ │ │ ├── login/ │ │ │ │ └── register/ │ │ │ ├── (admin)/ # 기업 관리자용 기능 │ │ │ │ ├── company/ # 회사 설정 │ │ │ │ │ ├── profile/ # 회사 프로필 │ │ │ │ │ ├── branches/ # 지점/공장 관리 │ │ │ │ │ └── billing/ # 결제 관리 │ │ │ │ ├── user/ # 사용자 관리 │ │ │ │ │ ├── departments/ # 부서 관리 │ │ │ │ │ ├── roles/ # 권한 관리 │ │ │ │ │ └── accounts/ # 계정 관리 │ │ │ │ └── system/ # 시스템 설정 │ │ │ │ │ │ │ ├── (general)/ # 일반 사용자용 기능 │ │ │ │ ├── layout.tsx │ │ │ │ ├── dashboard/ # 대시보드 │ │ │ │ │ ├── overview/ # 전체 현황 │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── kpi/ # KPI 지표 │ │ │ │ │ │ └── page.tsx │ │ │ │ │ └── costs/ # 비용 현황 │ │ │ │ │ └── page.tsx │ │ │ │ │ │ │ │ │ └── settings/ # 개인 설정 │ │ │ │ └── page.tsx │ │ │ │ │ │ │ ├── (monitoring)/ # 에너지 모니터링 │ │ │ │ ├── electricity/ # 전력 │ │ │ │ ├── gas/ # 가스 │ │ │ │ ├── water/ # 용수 │ │ │ │ └── steam/ # 스팀 │ │ │ │ │ │ │ ├── (equipment)/ # 설비 관리 │ │ │ │ ├── inventory/ # 설비 목록 │ │ │ │ ├── monitoring/ # 상태 모니터링 │ │ │ │ └── maintenance/ # 정비 관리 │ │ │ │ │ │ │ ├── (analysis)/ # 분석/리포트 │ │ │ │ ├── energy/ # 에너지 분석 │ │ │ │ ├── efficiency/ # 원단위 분석 │ │ │ │ └── reports/ # 보고서 │ │ │ │ │ │ │ ├── (alarm)/ # 알람/이벤트 │ │ │ │ ├── realtime/ # 실시간 알람 │ │ │ │ ├── history/ # 이력 관리 │ │ │ │ └── settings/ # 알람 설정 │ │ │ │ │ │ │ ├── (planning)/ # 에너지 계획 │ │ │ │ ├── targets/ # 절감 목표 │ │ │ │ ├── forecast/ # 수요 예측 │ │ │ │ └── optimization/# 최적화 │ │ │ │ │ │ │ ├── (support)/ # 도움말/지원 │ │ │ │ ├── manual/ # 사용자 가이드 │ │ │ │ ├── faq/ # FAQ │ │ │ │ └── contact/ # 문의하기 │ │ │ │ │ │ │ └── (community)/ # 커뮤니티 │ │ │ ├── notice/ # 공지사항 │ │ │ ├── forum/ # 게시판 │ │ │ └── news/ # 뉴스 │ │ │ │ │ ├── components/ # 공통 컴포넌트 │ │ │ ├── ui/ # UI 컴포넌트 │ │ │ ├── charts/ # 차트 컴포넌트 │ │ │ └── forms/ # 폼 컴포넌트 │ │ │ │ │ ├── lib/ # 라이브러리 │ │ ├── hooks/ # 커스텀 훅 │ │ ├── services/ # API 서비스 │ │ ├── stores/ # 상태 관리 │ │ ├── types/ # 타입 정의 │ │ └── utils/ # 유틸리티 │ ├── fems-api/ # 백엔드 API 서버 │ ├── src/ │ │ ├── config/ # 설정 │ │ ├── controllers/ # 컨트롤러 │ │ │ ├── admin/ # 슈퍼 관리자 API │ │ │ │ ├── companies/ │ │ │ │ ├── contracts/ │ │ │ │ └── billing/ │ │ │ │ │ │ │ └── app/ # 기업용 API │ │ │ ├── auth/ │ │ │ ├── dashboard/ │ │ │ ├── monitoring/ │ │ │ └── ... │ │ │ │ │ ├── routes/ # 라우터 │ │ ├── utils/ # 유틸리티 │ │ ├── models/ # 데이터 모델 │ │ ├── services/ # 비즈니스 로직 │ │ └── middleware/ # 미들웨어 │ ├── shared/ # 공통 코드 ├── .env.development ├── .env.production ├── docker-compose.base.yml # 기본 설정 ├── docker-compose.dev.yml # 개발 환경 설정 ├── docker-compose.full.yml # 전체 시스템 설정 └── docker-compose.prod.yml # 개발 환경 설정 ``` ```mermaid flowchart TB subgraph Factory[공장 현장] E1[설비] --> NR E2[전력계] --> NR subgraph EDGE[엣지 서버] NR[Node-RED] --> |저장| LDB[(로컬 DB)] NR --> |실시간| MQTT[MQTT Client] NR --> |API 호출| REST[REST Client] end end subgraph Cloud[클라우드] subgraph MainService[기존 서비스] API[API Gateway] --> BE[Main Backend] BE --> PG[(PostgreSQL)] end subgraph RealtimeService[실시간 서비스] MB[MQTT Broker] --> RT[Realtime Backend] RT <--> |구독 확인| BE RT --> TSDB[(TimescaleDB)] RT --> REDIS[(Redis Cache)] end end MQTT --> |SSL/TLS| MB REST --> |HTTPS| API ``` ### 2.2 데이터베이스 모델 ## 데이터베이스 생성 ```bash createdb wacefems_database ``` ### 데이터베이스 마이그레이션 ```bash npx sequelize-cli db:migrate ``` ### 데이터베이스 ERD ```bash ### 2.3 기술 스택 #### Frontend - **Next.js App Router**: SSR, 라우팅, 코드 스플리팅 - **shadCN UI**: 재사용 가능한 UI 컴포넌트 - **TailwindCSS**: 유틸리티 퍼스트 CSS - **TypeScript**: 정적 타입 체크 - **NextAuth.js**: 인증 및 세션 관리 #### Backend - **Node.js**: 이벤트 기반 서버 - **PostgreSQL + TimescaleDB**: 시계열 데이터 관리 #### 데이터 수집 및 처리 1. **데이터 수집 계층** - Open PLC: PLC 통신 - Eclipse Milo: OPC UA 통신 - Eclipse Kura: IoT 게이트웨이 2. **데이터 전송 계층** - Eclipse Mosquitto: MQTT 브로커 - Node-RED: 데이터 흐름 관리 3. **데이터 처리 계층** - Apache Kafka: 메시지 스트리밍 - Apache Spark: 실시간 처리 4. **데이터 저장 계층** - TimescaleDB: 시계열 데이터 - Redis: 캐시 관리 5. **모니터링 도구** - Prometheus + Grafana - ELK Stack ## 3. 시스템 구성요소 ## 시스템 주요 기능 ### 3.1 FEMS Admin (공급업체용) - 주요 기능 - 기업 관리 - 계약 관리 - 과금/결제 관리 - 기술 지원 - 시스템 설정 ## 3. 시스템 구성요소 및 주요 기능 ### 3.1 FEMS Admin (공급업체용) #### 핵심 관리 기능 1. 기업 관리 2. 계약 관리 3. 과금/결제 관리 4. 기술 지원 5. 시스템 설정 ### 3.2 FEMS App (사용 기업용) #### 1. 대시보드 ##### 1.1 실시간 현황 ###### 에너지 사용량 모니터링 - 전력, 가스, 용수, 스팀 등 실시간 사용량 표시 - 설비별/구역별 사용량 분포 - 목표 대비 실적 현황 ###### 시각화 대시보드 - 그래프 및 차트를 통한 직관적 표시 - 실시간 업데이트되는 데이터 표현 - 사용자 정의 위젯 구성 가능 ##### 1.2 KPI 지표 ###### 핵심 성과 지표 - 에너지 효율성 지표 - 비용 절감률 - CO2 배출량 - 설비 가동률 ###### 목표 대비 실적 - 일간/주간/월간 목표 달성률 - 전년 동기 대비 비교 - 업계 평균 대비 비교 ##### 1.3 에너지 비용 ###### 비용 현황 - 에너지원별 사용 비용 - 실시간 요금 계산 - 예상 청구액 산정 ###### 비용 분석 - 시간대별 요금 분석 - 계절별 비용 변동 - 절감 기회 도출 #### 2. 에너지 모니터링 ##### 2.1 전력 모니터링 ###### 실시간 데이터 수집 - 전력 사용량 측정 - 피크 전력 관리 - 역률 모니터링 ###### 품질 관리 - 전압/전류 품질 - 고조파 분석 - 정전 관리 ##### 2.2 가스/용수/증기 모니터링 ###### 사용량 관리 - 실시간 유량 측정 - 압력/온도 모니터링 - 품질 데이터 수집 ###### 효율성 평가 - 손실률 계산 - 최적 운영점 도출 - 누수/누기 감지 #### 3. 설비 관리 ##### 3.1 설비 목록 ###### 기본 정보 관리 - 설비 마스터 데이터 - 설비 사양 정보 - 위치 정보 ###### 문서 관리 - 설비 매뉴얼 - 도면 관리 - 인증서 관리 ##### 3.2 설비 상태 모니터링 ###### 실시간 모니터링 - 가동 상태 확인 - 성능 지표 모니터링 - 이상징후 감지 ###### 데이터 로깅 - 운전 데이터 기록 - 상태 변화 이력 - 센서 데이터 저장 ##### 3.3 정비 관리 ###### 정비 계획 - 정기 점검 계획 - 예방 정비 일정 - 부품 교체 계획 ###### 이력 관리 - 정비 작업 기록 - 부품 교체 이력 - 비용 관리 #### 4. 분석/리포트 ##### 4.1 에너지 분석 ###### 사용량 분석 - 시계열 분석 - 패턴 분석 - 이상치 탐지 ###### 효율성 분석 - 설비별 효율 - 구역별 효율 - 개선점 도출 ##### 4.2 원단위 분석 ###### 생산성 분석 - 생산량 대비 에너지 사용량 - 제품별 에너지 원단위 - 공정별 에너지 효율 ###### 벤치마킹 - 업계 평균 비교 - 최적 사례 분석 - 개선 목표 설정 ##### 4.3 보고서 생성 ###### 정기 보고서 - 일일/주간/월간 보고서 - 분기/연간 보고서 - 관리 보고서 ###### 맞춤형 보고서 - 사용자 정의 보고서 - 규제 대응 보고서 - 경영 분석 보고서 #### 5. 알람/이벤트 ##### 5.1 실시간 알람 ###### 알람 유형 - 설비 이상 알람 - 에너지 사용량 초과 - 효율 저하 - 정비 필요 ###### 알람 우선순위 - 긴급 (Red) - 경고 (Yellow) - 주의 (Blue) - 정보 (Gray) ##### 5.2 알람 설정 ###### 조건 설정 - 임계값 설정 - 시간대별 조건 - 복합 조건 ###### 수신자 관리 - 담당자 설정 - 통보 방식 설정 - 에스컬레이션 규칙 #### 6. 에너지 계획/최적화 ##### 6.1 절감 계획 ###### 목표 설정 - 에너지원별 절감 목표 - 비용 절감 목표 - CO2 감축 목표 ###### 실행 계획 - 단기/중기/장기 계획 - 투자 계획 - 효과 분석 ##### 6.2 수요 예측 ###### 예측 모델 - 시계열 분석 - 머신러닝 기반 예측 - 시나리오 분석 ###### 최적화 - 운전 최적화 - 비용 최적화 - 효율 최적화 #### 7. 사용자/관리자 설정 ##### 7.1 기업 정보 ###### 기본 정보 - 회사 정보 - 사업장 정보 - 조직 구조 ###### 계약 정보 - 에너지 공급 계약 - 요금제 설정 - 목표 관리 ##### 7.2 사용자 관리 ###### 계정 관리 - 사용자 등록/수정/삭제 - 권한 그룹 설정 - 접근 이력 관리 ###### 조직 관리 - 부서 관리 - 직책 관리 - 업무 분장 #### 8. 시스템 설정 ##### 8.1 일반 설정 ###### 환경 설정 - 시스템 기본 설정 - 언어/시간대 설정 - 화면 설정 ###### 데이터 설정 - 데이터 수집 주기 - 보관 기간 설정 - 백업 설정 ##### 8.2 연동 설정 ###### 외부 시스템 연동 - ERP 연동 - MES 연동 - 센서 데이터 연동 ###### API 설정 - API 키 관리 - 접근 권한 설정 - 로그 관리 #### 9. 도움말/지원 ##### 9.1 사용자 가이드 ###### 매뉴얼 - 시스템 사용 설명서 - 기능별 가이드 - FAQ ###### 교육 자료 - 동영상 매뉴얼 - 실습 가이드 - 문제 해결 가이드 ##### 9.2 기술 지원 ###### 지원 센터 - 문의 접수 - 원격 지원 - 장애 처리 ###### 자료실 - 기술 문서 - 참고 자료 - 양식 다운로드 #### 10. 커뮤니티 ##### 10.1 게시판 - 공지사항 - 자유게시판 - 기술 토론 - 개선 제안 ##### 10.2 뉴스 - 에너지 뉴스 - 정책 동향 - 기술 동향 - 성공 사례 ```