- docs/project-overview.md — 프로젝트 개요 - docs/solution-structure.md — 솔루션 구조 - docs/ptop-architecture.md — PTOP 아키텍처 - docs/aurora-devices.md — Aurora 디바이스 목록 - docs/build-output.md — 빌드 출력 경로 - docs/harness-ptop.md — PTOP 하네스 구성 수정된 파일: → CLAUDE.md — 기존 내용을 6개 문서로 분리, @import 방식으로 변경 → .gitignore — .claude/ 추가 삭제된 파일: - _기존md파일/ 디렉토리 (원본) 제안 커밋 메시지: docs: CLAUDE.md를 주제별 문서로 분리 및 @import 방식으로 재구성 - 프로젝트 개요, 솔루션 구조, PTOP 아키텍처, 디바이스 목록, 빌드 경로, 하네스 구성을 별도 문서로 분리 - 각 문서는 200줄 이하로 규칙 5번 준수 - CLAUDE.md에서 @import로 참조하는 라이브러리 형태로 변경 (규칙 6번 준수) 형태로 변경 (규칙 6번 준수) - .gitignore에 .claude/ 추가, .ubisam_agent는 제거
116 lines
3.4 KiB
Markdown
116 lines
3.4 KiB
Markdown
# 코딩 규칙 — ILSOS 프로젝트
|
|
|
|
## 1. 파일 인코딩 규칙 (필수)
|
|
|
|
### 규칙: 모든 C# / XAML / 텍스트 파일은 UTF-8 with BOM + CRLF
|
|
|
|
이 프로젝트의 모든 소스 파일은 **UTF-8 with BOM** 인코딩과 **CRLF** 줄바꿈을 사용한다.
|
|
Visual Studio 2022가 기본으로 생성하는 방식이며, 한글이 포함된 주석/문자열이 깨지지 않으려면 반드시 이를 지켜야 한다.
|
|
|
|
```
|
|
인코딩: UTF-8 with BOM (BOM = EF BB BF)
|
|
줄바꿈: CRLF (\r\n)
|
|
```
|
|
|
|
### Claude가 파일을 생성/수정할 때 지켜야 할 사항
|
|
|
|
#### 파일 신규 생성 시
|
|
- `Write` 도구로 파일을 생성한 뒤, **반드시** 아래 Python 명령으로 BOM을 추가하고 CRLF로 변환한다.
|
|
|
|
```bash
|
|
python3 -c "
|
|
import sys
|
|
path = r'생성한_파일_경로.cs'
|
|
with open(path, 'r', encoding='utf-8') as f:
|
|
content = f.read()
|
|
content = content.replace('\r\n', '\n').replace('\n', '\r\n')
|
|
with open(path, 'wb') as f:
|
|
f.write(b'\xef\xbb\xbf') # UTF-8 BOM
|
|
f.write(content.encode('utf-8'))
|
|
"
|
|
```
|
|
|
|
#### 기존 파일 수정 시
|
|
- `Edit` 도구로 파일을 수정한 경우, BOM과 CRLF는 기존 파일에 유지된다.
|
|
단, Edit 도구가 BOM을 제거하거나 LF로 변경한 경우에는 위 Python 명령으로 복구한다.
|
|
|
|
#### 수정 후 인코딩 검증
|
|
```bash
|
|
python3 -c "
|
|
with open(r'파일경로.cs', 'rb') as f:
|
|
raw = f.read(3)
|
|
print('BOM 존재:', raw == b'\xef\xbb\xbf') # True여야 함
|
|
"
|
|
|
|
file 파일경로.cs
|
|
# 출력에 'UTF-8 (with BOM)' 및 'CRLF' 포함되어야 함
|
|
```
|
|
|
|
---
|
|
|
|
## 2. 한글 깨짐 방지 체크리스트
|
|
|
|
파일을 생성하거나 수정한 후 아래를 확인한다.
|
|
|
|
- [ ] `file` 명령 출력에 `UTF-8 (with BOM)` 포함
|
|
- [ ] `file` 명령 출력에 `CRLF` 포함
|
|
- [ ] 파일 첫 3바이트가 `EF BB BF` (BOM)
|
|
- [ ] 한글 주석/문자열이 포함된 경우 Visual Studio에서 열어 깨짐 여부 확인
|
|
|
|
---
|
|
|
|
## 3. 네이밍 컨벤션
|
|
|
|
### 클래스/메서드
|
|
- **PascalCase**: `SequenceManager`, `ProcessManager`, `SeqAutoRunPrismaticGunStageA`
|
|
|
|
### 필드/변수
|
|
- **private 필드**: `_camelCase` (언더스코어 접두사)
|
|
예) `_acs`, `_plc`, `_ajin`
|
|
- **지역 변수**: `camelCase`
|
|
|
|
### 파일명
|
|
- 클래스명과 동일하게 유지
|
|
- Stage 구분: `StageA` / `StageB` 접미사
|
|
|
|
---
|
|
|
|
## 4. 시퀀스 작성 규칙
|
|
|
|
### ID 등록
|
|
- 새 시퀀스/디바이스/레시피/뷰 추가 시 **반드시** `EquipDef.cs`의 해당 ID 클래스에 상수를 먼저 등록한다.
|
|
|
|
---
|
|
|
|
## 5. 디바이스 추가 규칙
|
|
|
|
1. `EquipDef.cs` → `DeviceIds` 상수 추가
|
|
2. `EquipmentSetup.cs` → 디바이스 인스턴스 생성 및 이벤트 구독
|
|
3. `EquipmentSetup.cs` → `BuildMainStatusView()`에 상태 항목 추가
|
|
4. 필요 시 `AuroraDevices/` 하위에 새 디바이스 프로젝트 생성
|
|
|
|
---
|
|
|
|
## 6. 주석 작성
|
|
|
|
- 한글 주석 사용 권장 (팀 내부 프로젝트)
|
|
- 주석에 한글이 포함되는 파일은 인코딩 규칙(섹션 1) 필수 적용
|
|
- 복잡한 시퀀스 흐름은 단계별 번호 주석 사용:
|
|
```csharp
|
|
// 1. 로드 완료 대기
|
|
// 2. 높이 측정
|
|
// 3. 용접 위치 이동
|
|
// 4. 용접 실행
|
|
```
|
|
|
|
---
|
|
|
|
## 7. 빠른 참조
|
|
|
|
| 작업 | 규칙 |
|
|
|------|------|
|
|
| 새 C# 파일 생성 | UTF-8 BOM + CRLF 적용 필수 |
|
|
| 새 시퀀스 추가 | EquipDef.cs ID 등록 → 파일 생성 |
|
|
| 새 디바이스 추가 | EquipDef.cs → EquipmentSetup.cs → BuildMainStatusView |
|
|
| 한글 포함 수정 | 수정 후 BOM/CRLF 검증 |
|