Files
ECO2/CLAUDE.md
2025-10-04 22:13:51 +09:00

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.dll
  • Microsoft.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를 사용하여 프로젝트 파일 로드 여부 확인

계산 흐름

  1. 프로젝트 파일 로드 → DSET 채우기
  2. 사용자가 입력 폼 수정 → DSET 업데이트
  3. 계산 트리거 → Calculator 클래스가 DSET 처리 → DSETRCResult 채우기
  4. 리포트 폼에 결과 표시

파일 작업

  • 항상 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에서 계산 결과 사용 가능

새 입력 필드 추가

  1. 적절한 테이블에 열을 추가하도록 eco2DataSet.xsd 수정
  2. 해당 입력 폼(Forms_Input/*.vb) 업데이트
  3. 관련 Calculator/*.vb 클래스의 계산 로직 업데이트
  4. 필요한 경우 리포트 폼 업데이트

새 계산 모듈 추가

  1. Calculator/ 디렉토리에 새 클래스 생성
  2. 기존 모듈의 계산 패턴 상속
  3. 생성자에서 DS, DSR, CResult 수락
  4. Calculator.vb 오케스트레이터에 연결
  5. 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 클래스를 통한 암호화/복호화
  • 라이선스 준수를 위한 네트워크 검증