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