auto commit

This commit is contained in:
bangdk 2024-11-01 12:05:23 +09:00
parent 616fac2f89
commit a2cfadfba6
3 changed files with 243 additions and 6 deletions

View File

@ -1,17 +1,18 @@
# FEMS(Factory Energy Management System) # FEMS(Factory Energy Management System)
## 1. 개요 ## 1. 개요
FEMS는 공장 내에 공급, 소비되는 에너지를 최적화 시켜주는 에너지관리시스템입니다. FEMS는 공장 내에 공급, 소비되는 에너지를 최적화 시켜주는 에너지관리시스템입니다.
## 2. 프로젝트 아키텍처 ## 2. 프로젝트 아키텍처
### 2.1 시스템 구조 ### 2.1 시스템 구조
``` ```bash
wacefems/ wacefems/
├── fems-admin/ # 공급업체 슈퍼 관리자 시스템 ├── fems-admin/ # 공급업체 슈퍼 관리자 시스템
│ ├── src/ │ ├── src/
│ │ ├── app/ │ │ ├── app/
│ │ │ ├── (auth)/ # 관리자 인증 │ │ │ ├── (auth)/ # 관리자 인증
│ │ │ ├── dashboard/ # 전체 현황 대시보드 │ │ │ ├── dashboard/ # 전체 현황 대시보드
│ │ │ ├── companies/ # 기업 관리 │ │ │ ├── companies/ # 기업 관리
@ -122,6 +123,7 @@ wacefems/
### 2.2 기술 스택 ### 2.2 기술 스택
#### Frontend #### Frontend
- **Next.js App Router**: SSR, 라우팅, 코드 스플리팅 - **Next.js App Router**: SSR, 라우팅, 코드 스플리팅
- **shadCN UI**: 재사용 가능한 UI 컴포넌트 - **shadCN UI**: 재사용 가능한 UI 컴포넌트
- **TailwindCSS**: 유틸리티 퍼스트 CSS - **TailwindCSS**: 유틸리티 퍼스트 CSS
@ -129,24 +131,30 @@ wacefems/
- **NextAuth.js**: 인증 및 세션 관리 - **NextAuth.js**: 인증 및 세션 관리
#### Backend #### Backend
- **Node.js**: 이벤트 기반 서버 - **Node.js**: 이벤트 기반 서버
- **PostgreSQL + TimescaleDB**: 시계열 데이터 관리 - **PostgreSQL + TimescaleDB**: 시계열 데이터 관리
#### 데이터 수집 및 처리 #### 데이터 수집 및 처리
1. **데이터 수집 계층** 1. **데이터 수집 계층**
- Open PLC: PLC 통신 - Open PLC: PLC 통신
- Eclipse Milo: OPC UA 통신 - Eclipse Milo: OPC UA 통신
- Eclipse Kura: IoT 게이트웨이 - Eclipse Kura: IoT 게이트웨이
2. **데이터 전송 계층** 2. **데이터 전송 계층**
- Eclipse Mosquitto: MQTT 브로커 - Eclipse Mosquitto: MQTT 브로커
- Node-RED: 데이터 흐름 관리 - Node-RED: 데이터 흐름 관리
3. **데이터 처리 계층** 3. **데이터 처리 계층**
- Apache Kafka: 메시지 스트리밍 - Apache Kafka: 메시지 스트리밍
- Apache Spark: 실시간 처리 - Apache Spark: 실시간 처리
4. **데이터 저장 계층** 4. **데이터 저장 계층**
- TimescaleDB: 시계열 데이터 - TimescaleDB: 시계열 데이터
- Redis: 캐시 관리 - Redis: 캐시 관리
@ -154,13 +162,12 @@ wacefems/
- Prometheus + Grafana - Prometheus + Grafana
- ELK Stack - ELK Stack
## 3. 시스템 구성요소 ## 3. 시스템 구성요소
## 시스템 주요 기능 ## 시스템 주요 기능
### 3.1 FEMS Admin (공급업체용) ### 3.1 FEMS Admin (공급업체용) - 주요 기능
- 기업 관리 - 기업 관리
- 계약 관리 - 계약 관리
- 과금/결제 관리 - 과금/결제 관리
@ -172,6 +179,7 @@ wacefems/
### 3.1 FEMS Admin (공급업체용) ### 3.1 FEMS Admin (공급업체용)
#### 핵심 관리 기능 #### 핵심 관리 기능
1. 기업 관리 1. 기업 관리
2. 계약 관리 2. 계약 관리
3. 과금/결제 관리 3. 과금/결제 관리
@ -183,35 +191,44 @@ wacefems/
#### 1. 대시보드 #### 1. 대시보드
##### 1.1 실시간 현황 ##### 1.1 실시간 현황
###### 에너지 사용량 모니터링 ###### 에너지 사용량 모니터링
- 전력, 가스, 용수, 스팀 등 실시간 사용량 표시 - 전력, 가스, 용수, 스팀 등 실시간 사용량 표시
- 설비별/구역별 사용량 분포 - 설비별/구역별 사용량 분포
- 목표 대비 실적 현황 - 목표 대비 실적 현황
###### 시각화 대시보드 ###### 시각화 대시보드
- 그래프 및 차트를 통한 직관적 표시 - 그래프 및 차트를 통한 직관적 표시
- 실시간 업데이트되는 데이터 표현 - 실시간 업데이트되는 데이터 표현
- 사용자 정의 위젯 구성 가능 - 사용자 정의 위젯 구성 가능
##### 1.2 KPI 지표 ##### 1.2 KPI 지표
###### 핵심 성과 지표 ###### 핵심 성과 지표
- 에너지 효율성 지표 - 에너지 효율성 지표
- 비용 절감률 - 비용 절감률
- CO2 배출량 - CO2 배출량
- 설비 가동률 - 설비 가동률
###### 목표 대비 실적 ###### 목표 대비 실적
- 일간/주간/월간 목표 달성률 - 일간/주간/월간 목표 달성률
- 전년 동기 대비 비교 - 전년 동기 대비 비교
- 업계 평균 대비 비교 - 업계 평균 대비 비교
##### 1.3 에너지 비용 ##### 1.3 에너지 비용
###### 비용 현황 ###### 비용 현황
- 에너지원별 사용 비용 - 에너지원별 사용 비용
- 실시간 요금 계산 - 실시간 요금 계산
- 예상 청구액 산정 - 예상 청구액 산정
###### 비용 분석 ###### 비용 분석
- 시간대별 요금 분석 - 시간대별 요금 분석
- 계절별 비용 변동 - 계절별 비용 변동
- 절감 기회 도출 - 절감 기회 도출
@ -219,23 +236,29 @@ wacefems/
#### 2. 에너지 모니터링 #### 2. 에너지 모니터링
##### 2.1 전력 모니터링 ##### 2.1 전력 모니터링
###### 실시간 데이터 수집 ###### 실시간 데이터 수집
- 전력 사용량 측정 - 전력 사용량 측정
- 피크 전력 관리 - 피크 전력 관리
- 역률 모니터링 - 역률 모니터링
###### 품질 관리 ###### 품질 관리
- 전압/전류 품질 - 전압/전류 품질
- 고조파 분석 - 고조파 분석
- 정전 관리 - 정전 관리
##### 2.2 가스/용수/증기 모니터링 ##### 2.2 가스/용수/증기 모니터링
###### 사용량 관리 ###### 사용량 관리
- 실시간 유량 측정 - 실시간 유량 측정
- 압력/온도 모니터링 - 압력/온도 모니터링
- 품질 데이터 수집 - 품질 데이터 수집
###### 효율성 분석 ###### 효율성 평가
- 손실률 계산 - 손실률 계산
- 최적 운영점 도출 - 최적 운영점 도출
- 누수/누기 감지 - 누수/누기 감지
@ -243,34 +266,43 @@ wacefems/
#### 3. 설비 관리 #### 3. 설비 관리
##### 3.1 설비 목록 ##### 3.1 설비 목록
###### 기본 정보 관리 ###### 기본 정보 관리
- 설비 마스터 데이터 - 설비 마스터 데이터
- 설비 사양 정보 - 설비 사양 정보
- 위치 정보 - 위치 정보
###### 문서 관리 ###### 문서 관리
- 설비 매뉴얼 - 설비 매뉴얼
- 도면 관리 - 도면 관리
- 인증서 관리 - 인증서 관리
##### 3.2 설비 상태 모니터링 ##### 3.2 설비 상태 모니터링
###### 실시간 모니터링 ###### 실시간 모니터링
- 가동 상태 확인 - 가동 상태 확인
- 성능 지표 모니터링 - 성능 지표 모니터링
- 이상징후 감지 - 이상징후 감지
###### 데이터 로깅 ###### 데이터 로깅
- 운전 데이터 기록 - 운전 데이터 기록
- 상태 변화 이력 - 상태 변화 이력
- 센서 데이터 저장 - 센서 데이터 저장
##### 3.3 정비 관리 ##### 3.3 정비 관리
###### 정비 계획 ###### 정비 계획
- 정기 점검 계획 - 정기 점검 계획
- 예방 정비 일정 - 예방 정비 일정
- 부품 교체 계획 - 부품 교체 계획
###### 이력 관리 ###### 이력 관리
- 정비 작업 기록 - 정비 작업 기록
- 부품 교체 이력 - 부품 교체 이력
- 비용 관리 - 비용 관리
@ -278,34 +310,43 @@ wacefems/
#### 4. 분석/리포트 #### 4. 분석/리포트
##### 4.1 에너지 분석 ##### 4.1 에너지 분석
###### 사용량 분석 ###### 사용량 분석
- 시계열 분석 - 시계열 분석
- 패턴 분석 - 패턴 분석
- 이상치 탐지 - 이상치 탐지
###### 효율성 분석 ###### 효율성 분석
- 설비별 효율 - 설비별 효율
- 구역별 효율 - 구역별 효율
- 개선점 도출 - 개선점 도출
##### 4.2 원단위 분석 ##### 4.2 원단위 분석
###### 생산성 분석 ###### 생산성 분석
- 생산량 대비 에너지 사용량 - 생산량 대비 에너지 사용량
- 제품별 에너지 원단위 - 제품별 에너지 원단위
- 공정별 에너지 효율 - 공정별 에너지 효율
###### 벤치마킹 ###### 벤치마킹
- 업계 평균 비교 - 업계 평균 비교
- 최적 사례 분석 - 최적 사례 분석
- 개선 목표 설정 - 개선 목표 설정
##### 4.3 보고서 생성 ##### 4.3 보고서 생성
###### 정기 보고서 ###### 정기 보고서
- 일일/주간/월간 보고서 - 일일/주간/월간 보고서
- 분기/연간 보고서 - 분기/연간 보고서
- 관리 보고서 - 관리 보고서
###### 맞춤형 보고서 ###### 맞춤형 보고서
- 사용자 정의 보고서 - 사용자 정의 보고서
- 규제 대응 보고서 - 규제 대응 보고서
- 경영 분석 보고서 - 경영 분석 보고서
@ -313,25 +354,31 @@ wacefems/
#### 5. 알람/이벤트 #### 5. 알람/이벤트
##### 5.1 실시간 알람 ##### 5.1 실시간 알람
###### 알람 유형 ###### 알람 유형
- 설비 이상 알람 - 설비 이상 알람
- 에너지 사용량 초과 - 에너지 사용량 초과
- 효율 저하 - 효율 저하
- 정비 필요 - 정비 필요
###### 알람 우선순위 ###### 알람 우선순위
- 긴급 (Red) - 긴급 (Red)
- 경고 (Yellow) - 경고 (Yellow)
- 주의 (Blue) - 주의 (Blue)
- 정보 (Gray) - 정보 (Gray)
##### 5.2 알람 설정 ##### 5.2 알람 설정
###### 조건 설정 ###### 조건 설정
- 임계값 설정 - 임계값 설정
- 시간대별 조건 - 시간대별 조건
- 복합 조건 - 복합 조건
###### 수신자 관리 ###### 수신자 관리
- 담당자 설정 - 담당자 설정
- 통보 방식 설정 - 통보 방식 설정
- 에스컬레이션 규칙 - 에스컬레이션 규칙
@ -339,23 +386,29 @@ wacefems/
#### 6. 에너지 계획/최적화 #### 6. 에너지 계획/최적화
##### 6.1 절감 계획 ##### 6.1 절감 계획
###### 목표 설정 ###### 목표 설정
- 에너지원별 절감 목표 - 에너지원별 절감 목표
- 비용 절감 목표 - 비용 절감 목표
- CO2 감축 목표 - CO2 감축 목표
###### 실행 계획 ###### 실행 계획
- 단기/중기/장기 계획 - 단기/중기/장기 계획
- 투자 계획 - 투자 계획
- 효과 분석 - 효과 분석
##### 6.2 수요 예측 ##### 6.2 수요 예측
###### 예측 모델 ###### 예측 모델
- 시계열 분석 - 시계열 분석
- 머신러닝 기반 예측 - 머신러닝 기반 예측
- 시나리오 분석 - 시나리오 분석
###### 최적화 ###### 최적화
- 운전 최적화 - 운전 최적화
- 비용 최적화 - 비용 최적화
- 효율 최적화 - 효율 최적화
@ -363,23 +416,29 @@ wacefems/
#### 7. 사용자/관리자 설정 #### 7. 사용자/관리자 설정
##### 7.1 기업 정보 ##### 7.1 기업 정보
###### 기본 정보 ###### 기본 정보
- 회사 정보 - 회사 정보
- 사업장 정보 - 사업장 정보
- 조직 구조 - 조직 구조
###### 계약 정보 ###### 계약 정보
- 에너지 공급 계약 - 에너지 공급 계약
- 요금제 설정 - 요금제 설정
- 목표 관리 - 목표 관리
##### 7.2 사용자 관리 ##### 7.2 사용자 관리
###### 계정 관리 ###### 계정 관리
- 사용자 등록/수정/삭제 - 사용자 등록/수정/삭제
- 권한 그룹 설정 - 권한 그룹 설정
- 접근 이력 관리 - 접근 이력 관리
###### 조직 관리 ###### 조직 관리
- 부서 관리 - 부서 관리
- 직책 관리 - 직책 관리
- 업무 분장 - 업무 분장
@ -387,23 +446,29 @@ wacefems/
#### 8. 시스템 설정 #### 8. 시스템 설정
##### 8.1 일반 설정 ##### 8.1 일반 설정
###### 환경 설정 ###### 환경 설정
- 시스템 기본 설정 - 시스템 기본 설정
- 언어/시간대 설정 - 언어/시간대 설정
- 화면 설정 - 화면 설정
###### 데이터 설정 ###### 데이터 설정
- 데이터 수집 주기 - 데이터 수집 주기
- 보관 기간 설정 - 보관 기간 설정
- 백업 설정 - 백업 설정
##### 8.2 연동 설정 ##### 8.2 연동 설정
###### 외부 시스템 연동 ###### 외부 시스템 연동
- ERP 연동 - ERP 연동
- MES 연동 - MES 연동
- 센서 데이터 연동 - 센서 데이터 연동
###### API 설정 ###### API 설정
- API 키 관리 - API 키 관리
- 접근 권한 설정 - 접근 권한 설정
- 로그 관리 - 로그 관리
@ -411,23 +476,29 @@ wacefems/
#### 9. 도움말/지원 #### 9. 도움말/지원
##### 9.1 사용자 가이드 ##### 9.1 사용자 가이드
###### 매뉴얼 ###### 매뉴얼
- 시스템 사용 설명서 - 시스템 사용 설명서
- 기능별 가이드 - 기능별 가이드
- FAQ - FAQ
###### 교육 자료 ###### 교육 자료
- 동영상 매뉴얼 - 동영상 매뉴얼
- 실습 가이드 - 실습 가이드
- 문제 해결 가이드 - 문제 해결 가이드
##### 9.2 기술 지원 ##### 9.2 기술 지원
###### 지원 센터 ###### 지원 센터
- 문의 접수 - 문의 접수
- 원격 지원 - 원격 지원
- 장애 처리 - 장애 처리
###### 자료실 ###### 자료실
- 기술 문서 - 기술 문서
- 참고 자료 - 참고 자료
- 양식 다운로드 - 양식 다운로드
@ -435,12 +506,14 @@ wacefems/
#### 10. 커뮤니티 #### 10. 커뮤니티
##### 10.1 게시판 ##### 10.1 게시판
- 공지사항 - 공지사항
- 자유게시판 - 자유게시판
- 기술 토론 - 기술 토론
- 개선 제안 - 개선 제안
##### 10.2 뉴스 ##### 10.2 뉴스
- 에너지 뉴스 - 에너지 뉴스
- 정책 동향 - 정책 동향
- 기술 동향 - 기술 동향

85
dev_full_docke.sh Executable file
View File

@ -0,0 +1,85 @@
#!/bin/bash
# Docker 컨테이너 정리
docker-compose -f docker-compose-dev.yml down
docker system prune -af
docker image prune -af
docker volume prune -af
docker network prune -f
# 환경 설정 파일 복사
cp .env-ser .env
# Git 변경사항 커밋 및 푸시
git add .
git commit -am "auto commit"
current_branch=$(git branch --show-current)
git push origin $current_branch
# 마스터 브랜치와 병합 여부 확인
echo "You are currently on branch: $current_branch"
echo "Would you like to merge the current branch with master? (Y/N) [Y]"
read proceed_merge
proceed_merge=${proceed_merge:-Y}
if [ "$proceed_merge" == "Y" ] || [ "$proceed_merge" == "y" ]; then
# 마스터 브랜치로 전환 및 업데이트
git checkout master
git pull origin master
# 현재 브랜치를 마스터에 병합
git merge --no-edit $current_branch
# 병합 결과 푸시
git push origin master
# 원래 브랜치로 돌아가기
git checkout $current_branch
fi
# 새로운 브랜치 생성
# 현재 날짜를 YYYYMMDD 형식으로 가져오기
current_date=$(date +'%Y%m%d')
# 브랜치 이름에서 날짜 부분 추출
branch_date=${current_branch:1:8}
# 현재 날짜와 브랜치 날짜가 같으면 뒤의 2자리 숫자를 증가시킴
if [ "$branch_date" == "$current_date" ]; then
# 브랜치 이름에서 뒤의 2자리 숫자 추출
branch_number=${current_branch:9:2}
# 숫자를 10진수로 변환하고 1 증가시킴
branch_number=$((10#$branch_number + 1))
else
# 날짜가 다르면 01부터 시작
branch_number=1
fi
# 사용 가능한 브랜치 이름 찾기
while true; do
# 2자리 숫자로 포맷팅
formatted_number=$(printf "%02d" $branch_number)
new_branch="V${current_date}${formatted_number}"
# 로컬과 원격에 해당 이름의 브랜치가 존재하는지 확인
if ! git show-ref --quiet refs/heads/$new_branch &&
! git ls-remote --exit-code --heads origin $new_branch > /dev/null 2>&1; then
break
fi
# 존재한다면 숫자 증가
branch_number=$((branch_number + 1))
done
# 새로운 브랜치 생성
git checkout -b $new_branch
# 새로운 브랜치 푸시 (원격 브랜치로 푸시하려면 git push origin $new_branch 실행)
git push origin $new_branch
# 변경 사항 확인
git status
# .env-dev 파일을 .env로 복사하여 원래 상태로 복원
cp .env-dev .env
# Docker 컨테이너 재시작
docker-compose -f docker-compose-dev.yml up -d --build

79
dev_git_only.sh Executable file
View File

@ -0,0 +1,79 @@
#!/bin/bash
# 환경 설정 파일 복사
cp .env-ser .env
# Git 변경사항 커밋 및 푸시
git add .
git commit -am "auto commit"
current_branch=$(git branch --show-current)
git push origin $current_branch
# 마스터 브랜치와 병합 여부 확인
echo "You are currently on branch: $current_branch"
echo "Would you like to merge the current branch with master? (Y/N) [Y]"
read proceed_merge
proceed_merge=${proceed_merge:-Y}
if [ "$proceed_merge" == "Y" ] || [ "$proceed_merge" == "y" ]; then
# 마스터 브랜치로 전환 및 업데이트
git checkout master
git pull origin master
# 현재 브랜치를 마스터에 병합
git merge --no-edit $current_branch
# 병합 결과 푸시
git push origin master
# 원래 브랜치로 돌아가기
git checkout $current_branch
fi
# 새로운 브랜치 생성
# 현재 날짜를 YYYYMMDD 형식으로 가져오기
current_date=$(date +'%Y%m%d')
# 브랜치 이름에서 날짜 부분 추출
branch_date=${current_branch:1:8}
# 현재 날짜와 브랜치 날짜가 같으면 뒤의 2자리 숫자를 증가시킴
if [ "$branch_date" == "$current_date" ]; then
# 브랜치 이름에서 뒤의 2자리 숫자 추출
branch_number=${current_branch:9:2}
# 숫자를 10진수로 변환하고 1 증가시킴
branch_number=$((10#$branch_number + 1))
else
# 날짜가 다르면 01부터 시작
branch_number=1
fi
# 사용 가능한 브랜치 이름 찾기
while true; do
# 2자리 숫자로 포맷팅
formatted_number=$(printf "%02d" $branch_number)
new_branch="V${current_date}${formatted_number}"
# 로컬과 원격에 해당 이름의 브랜치가 존재하는지 확인
if ! git show-ref --quiet refs/heads/$new_branch &&
! git ls-remote --exit-code --heads origin $new_branch > /dev/null 2>&1; then
break
fi
# 존재한다면 숫자 증가
branch_number=$((branch_number + 1))
done
# 새로운 브랜치 생성
git checkout -b $new_branch
# 새로운 브랜치 푸시 (원격 브랜치로 푸시하려면 git push origin $new_branch 실행)
git push origin $new_branch
# 변경 사항 확인
git status
# .env-dev 파일을 .env로 복사하여 원래 상태로 복원
cp .env-dev .env
# docker-compose -f docker-compose-dev.yml up -d --build