12 KiB
CLAUDE.md
이 파일은 Claude Code (claude.ai/code)가 이 저장소에서 작업할 때 참고할 가이드를 제공합니다.
프로젝트 개요
**ECO2 (Energy Calculation Optimization 2)**는 한국 건축물 에너지효율등급 인증 기준(녹색건축인증)에 따라 건물의 1차 에너지 소요량, CO2 배출량, 신재생에너지 생산량을 계산하는 VB.NET 및 WinForms 기반 응용 프로그램입니다.
주 언어: Visual Basic .NET (VB.NET) with .NET Framework 4.0 추가 언어: C# (유틸리티 라이브러리만) 플랫폼: Windows 데스크톱 응용 프로그램 (x86 타겟)
솔루션 구조
솔루션 ArinWareT4.sln은 모듈화된 아키텍처로 구성된 6개의 프로젝트를 포함합니다:
메인 응용 프로그램
- ECO2_2025V1 (
ArinWarev1/) - 주 WinForms 응용 프로그램- 진입점:
MdiMain.vb- 메뉴 시스템을 갖춘 MDI 부모 폼 Calculator/하위 디렉토리의 핵심 계산 엔진- 기능별 폼 구성:
Forms/,Forms_Input/,Forms_Report/,Forms_Basic/ Data/의 기상 데이터 (XML 형식)- 타입 데이터셋:
eco2DataSet.xsd(데이터 모델링용)
- 진입점:
지원 라이브러리 (SubProject 폴더 그룹)
-
CEnergy (
CEnergy/ArinClassV2/) - 핵심 비즈니스 로직 라이브러리- 공통 유틸리티, 데이터베이스 액세스, INI 파일 처리
- 여러 프로젝트에서 공유
-
ArinNet - 네트워크 통신 유틸리티
-
ArinLogin - 인증 및 사용자 관리
- 라이선스 검증, 암호화/복호화
-
ArinLog - 로깅 기능
-
Utility (C#) - 압축 유틸리티
- 데이터 압축을 위한 MiniLZO 구현
배포
- Setup1 - 설치 프로그램 프로젝트 (
.vdproj)
빌드 및 실행
솔루션 빌드
# Visual Studio에서 솔루션 열기
start ArinWareT4.sln
# 명령줄에서 빌드 (Visual Studio 필요)
msbuild ArinWareT4.sln /p:Configuration=Debug /p:Platform="Any CPU"
msbuild ArinWareT4.sln /p:Configuration=Release /p:Platform="Any CPU"
출력 경로
- Debug:
..\..\..\..\..\eco2\debug_2016\(프로젝트 기준 상대 경로) - Release:
c:\eco2\debug_2016\
플랫폼 설정
- 타겟 플랫폼: x86 (32비트)
- 프레임워크: .NET Framework 4.0
- Option Strict: Off (VB.NET 특성)
빌드 구성
- Debug / Release (표준)
- CD_ROM / DVD-5 / SingleImage (배포 구성)
아키텍처 개요
계산 엔진 (ArinWarev1/Calculator/)
계산 엔진은 건물 에너지 계산을 수행하는 전문 모듈로 구성됩니다:
핵심 계산기 클래스:
Calculator.vb- 모든 계산 모듈을 조율하는 메인 오케스트레이터CZone.vb- 존 레벨 계산 (열존, 난방/냉방 부하)CAirHandling.vb- 공조 시스템 계산CHeating.vb- 난방 시스템 계산 (기기, 분배, 공급)CCooling.vb- 냉방 시스템 계산 (기기, 분배)CRenewable.vb- 신재생에너지 생산량 계산CSummary.vb- 결과 집계 및 요약 생성CShared.vb- 공유 계산 변수 및 유틸리티
결과 처리 (Calculator/Result/):
CResult.vb- 결과 데이터 구조C1차소요량.vb- 1차 에너지 소요량 계산CCo2발생량.vb- CO2 배출량 계산C생산에너지.vb- 에너지 생산량 계산C사용면적.vb- 사용 면적 계산CZones.vb- 존 결과 집계
데이터 흐름
사용자 입력 폼 (Forms_Input/)
↓
DataSet (eco2DataSet - DS, DSR)
↓
계산 엔진 (Calculator)
↓
결과 클래스 (CResult, DSR)
↓
리포트 폼 (Forms_Report/)
주요 데이터셋
DS(DSET) - 입력 데이터 (사용자 입력 건물 정보)DSR(DSETR) - 결과 데이터 (계산된 에너지 값)CResult- 구조화된 계산 결과
폼 구성
Forms_Input/ - 데이터 입력 폼
Frm_Desc.vb- 건물 개요Frm_kongjo.vb- 공조 처리 입력Frm_Bunbae.vb- 분배 시스템 입력Frm_custom_profile.vb- 커스텀 사용 프로파일
Forms_Report/ - 출력 및 보고
Frm_Upload.vb- 인증 서버 업로드Frm_Macro.vb,Frm_Macro2.vb- Excel 리포트 생성Frm_Export.vb- 데이터 내보내기 기능
Forms_Basic/ - 유틸리티 폼
Frm_Calc.vb- 계산 트리거Frm_Filter.vb- 데이터 필터링Frm_FileInfo.vb- 파일 메타데이터
Forms/ - 일반 응용 프로그램 폼
Frm_About.vb- About 대화상자Frm_Common.vb- 공통 대화상자
메뉴 시스템 (MdiMain.vb)
E_MenuIdx 열거형에 정의된 메뉴 인덱스:
- 입력존
- 입력면
- 공조처리
- 난방기기/공급/분배
- 냉방기기/분배
- 신재생및열병합
- 열관류율
- 건물개요
- 월별에너지사용량
사용자 권한
Prj.UserAuthType을 통해 제어되는 사용자 유형:
ADMIN- 전체 액세스BOTH- 전문 사용자 (계산 + 인증)BOTH0- 일반 사용자 (제한된 액세스)BOTH1- 확장 전문 사용자 액세스
외부 종속성
FarPoint Spread (v5.0.3505.2008)
- 데이터 입력을 위한 Excel 형식의 스프레드시트 컨트롤
- 구성 요소: CalcEngine, Excel, PDF, Win, Chart
- 입력 폼에서 광범위하게 사용
Microsoft ReportViewer
Microsoft.ReportViewer.Common.dllMicrosoft.ReportViewer.WinForms.dll- 형식화된 보고서 생성에 사용
Excel Interop
Interop.Excel.dll- Excel 자동화를 위한 COM interop- 매크로/내보내기 기능에 사용
LOV 구성 요소
Lov.dll- 값 목록 컨트롤 라이브러리
파일 형식 및 데이터 저장
프로젝트 파일 (.tpl 파일)
- LZO 압축 바이너리 형식 (Utility 프로젝트 사용)
- 건물 데이터, 계산 입력값, 결과 포함
- 사용자 지정 위치에 저장
- 최근 파일은 응용 프로그램 설정에서 추적
기상 데이터 (Data/*.xml)
weather_temp.xml- 온도 데이터weather_supdo.xml- 습도 데이터weather_ilsa.xml- 일사량 데이터weather_group.xml- 기상 관측소 그룹tbl_weather.xml- 기상 위치 테이블
구성 파일
Frm_Setting.ini- UI 상태 지속성 (창 크기, 위치)login.dat- 사용자 자격 증명 (암호화됨)app.config- 응용 프로그램 설정
한국 건축물 에너지 기준
이 응용 프로그램은 한국 건축물 에너지효율등급 인증 기준을 구현합니다:
주요 용어
- 건물개요
- 1차 에너지 소요량
- CO2 발생량
- 난방 / 냉방
- 급탕
- 조명 / 환기
- 신재생에너지
- 열관류율
- 공조
- 용도지역
계산 버전 관리
StartVersion 상수를 통한 버전 제어:
- 규제 준수를 위한 계산 엔진 버전 관리
Calculator.New()생성자에서 버전 확인- 기준 버전 "2009123100"
개발 가이드라인
VB.NET 규칙
- Option Strict는 OFF - 암시적 형식 변환 허용
- 한글 주석 및 변수명은 표준 관행
- 명명: 클래스, 메서드는 PascalCase; 로컬 변수는 엄격한 규칙 없음
DataSet 사용
- 항상 타입 데이터셋 (
DS,DSR) 사용 - 모듈 수준 변수
DSET1,DSETR1을 통해 액세스 - 타입 안전 액세스를 위해 DataRow 객체 사용
폼 관리
MdiMain을 통한 MDI 자식 폼 관리OpenedForm속성을 통해 열린 폼 추적Prj.Opened를 사용하여 프로젝트 파일 로드 여부 확인
계산 흐름
- 프로젝트 파일 로드 →
DSET채우기 - 사용자가 입력 폼 수정 →
DSET업데이트 - 계산 트리거 →
Calculator클래스가DSET처리 →DSETR및CResult채우기 - 리포트 폼에 결과 표시
파일 작업
- 항상 MdiMain의
Save_File()/Load_File()메서드 사용 - Utility 라이브러리를 통한 파일 압축 처리
PrjChanged플래그를 통한 파일 변경 추적
일반 작업
계산 실행
계산은 메뉴 또는 폼 버튼에서 트리거되고 Calculator 클래스를 통해 처리됩니다:
' 데이터셋 및 결과 객체로 계산기 초기화
Dim calc As New Calculator(version, DSET1, DSETR1, Result2, isSimulation)
' 초기화 오류 확인
If calc.IsError Then
' 오류 처리
Return
End If
' DSETR1 및 Result2에서 계산 결과 사용 가능
새 입력 필드 추가
- 적절한 테이블에 열을 추가하도록
eco2DataSet.xsd수정 - 해당 입력 폼(
Forms_Input/*.vb) 업데이트 - 관련
Calculator/*.vb클래스의 계산 로직 업데이트 - 필요한 경우 리포트 폼 업데이트
새 계산 모듈 추가
Calculator/디렉토리에 새 클래스 생성- 기존 모듈의 계산 패턴 상속
- 생성자에서
DS,DSR,CResult수락 Calculator.vb오케스트레이터에 연결CSummary.vb의 요약 집계 업데이트
FarPoint Spread 컨트롤 작업
FarPoint 컨트롤은 그리드 기반 입력에 광범위하게 사용됩니다:
' Spread 컨트롤 액세스
Dim spread As FarPoint.Win.Spread.FpSpread = Me.FpSpread1
' 셀 값 설정
spread.ActiveSheet.Cells(row, col).Value = value
' 셀 값 읽기
Dim value = spread.ActiveSheet.Cells(row, col).Value
' 셀 속성 설정
spread.ActiveSheet.Cells(row, col).BackColor = Color.Yellow
알려진 패턴 및 규칙
전역 모듈 변수
DSET1- 전역 입력 데이터셋 (DS 타입)DSETR1- 전역 결과 데이터셋 (DSR 타입)Result2- 전역 결과 객체 (CResult 타입)Prj- 전역 프로젝트 상태 객체CLang- 언어/지역화 문자열
오류 처리
- 계산 클래스의
IsError속성 패턴 - 사용자 대면 오류에 대한 메시지 박스
On Error Resume Next를 사용한 VB.NET 오류 처리 (레거시 패턴)
이벤트 처리
- 클래스 수준 이벤트 핸들러를 위한 WithEvents 패턴
Handles키워드를 통한 폼 이벤트 처리
INI 파일 액세스
Dim ini As New MyINI(filePath)
Dim value = ini.Read(section, key, defaultValue)
ini.Write(section, key, value)
테스트 및 디버깅
디버그 모드
- Debug 구성으로 빌드
- 로컬 디버그 폴더로 출력
- 전체 심볼 정보 사용 가능
테스트 데이터
사용 가능한 샘플 프로젝트 파일:
sample.tpl- 표준 샘플 건물sample_0307.tpl- 대체 샘플sample_200.tpl- 대형 건물 샘플
로깅
응용 프로그램 로깅에 ArinLog 라이브러리 사용:
pLog.Add("이벤트 설명", includeStackTrace)
언어 관련 참고사항
응용 프로그램은 한국 사용자를 위해 설계되었습니다:
- 모든 UI 텍스트는 한글
- 사용자 문서는 한글
- 한국 건축 기준 및 용어
- 날짜/시간 형식: 한국 표준
- 인코딩: 소스 파일은 UTF-8
주석 및 변수명은 한글과 영어를 혼용합니다 - 이는 의도적이며 이 코드베이스의 표준입니다.
배포 참고사항
설치
- 설치 프로그램 프로젝트:
Setup1/Setup1.vdproj - 메인 프로젝트에 구성된 ClickOnce 배포
- 게시 URL:
ftp://tindevil.com/www/mynetapp/t4/ - 설치 URL:
http://tindevil.com/mynetapp/t4/
버전 관리
- AssemblyInfo의 버전 정보
- ArinLogin 라이브러리를 통한 버전 확인
- 서버 측 버전 검증
업데이트
- 시작 시 업데이트 확인
- Foreground 업데이트 모드 (실행 전 업데이트)
- 7일 업데이트 간격 구성
보안 참고사항
인증
- ArinLogin 라이브러리를 통한 사용자 인증
- MAC 주소 검증 (상태 표시줄의
lbl_mac) - 라이선스 관리 시스템
login.dat의 암호화된 자격 증명
데이터 보호
- 데이터 보호를 위한 파일 압축
- ArinLogin.EnDec 클래스를 통한 암호화/복호화
- 라이선스 준수를 위한 네트워크 검증