LGES-OC5-PtoP-Welder/docs/architecture.md
NohDoyeon241104 de0c1c20df docs: Git 커밋 규칙 문서화 및 architecture.md 연결
External/Aurora/bin 커밋 예외, .gitignore 자체 커밋(-f) 규칙을 GIT_RULES.md로 정리하고 architecture.md에 @import 연결

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 09:26:51 +09:00

238 lines
8.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ILSOS 프로젝트 아키텍처
> CLAUDE.md의 "프로젝트 문서" 섹션에서 import하던 개별 문서들을 통합한 아키텍처 문서입니다.
> 세부 내용은 각 원본 문서를 참고하세요.
## 목차
1. [프로젝트 개요](#1-프로젝트-개요)
2. [솔루션 구조](#2-솔루션-구조)
3. [ILSOS_PrismaticPTOP 핵심 구조](#3-ilsos_prismaticptop-핵심-구조)
4. [AuroraDevices 모듈](#4-auroradevices-모듈)
5. [빌드 출력 경로](#5-빌드-출력-경로)
6. [PTOP 분석 하네스](#6-ptop-분석-하네스)
7. [Git 커밋 규칙](#7-git-커밋-규칙)
---
## 1. 프로젝트 개요
> 원본: [`project-overview.md`](./project-overview.md)
### ILSOS - OC5 PilotLine RectangleTypeWelder
**목표:** 각형 배터리 용접 자동화 시스템
**플랫폼 및 기술:**
- OS: Windows 10 / Windows 11
- 프레임워크: .NET Framework 4.8.1
- IDE: Visual Studio 2022
- UI 프레임워크: WPF (Aurora 프레임워크 기반)
- 솔루션 파일: `ILSOS_All.sln`
**빌드 구성:**
- Debug | x64
- Release | x64
- Simulation | x64
- UserDefineUnit | x64
**주요 머신 모듈:**
- **ILSOS_PrismaticPTOP**: 현재 활성 모듈 (주요 개발 대상)
- **ILSOS_PrismaticScanner**: 참고 용도의 레거시 소스
- ILSOS_PrismaticGun: 미사용
- ILSOS_PrismaticCleanLaser: 미사용
**주의사항:**
- WeldingComponents와 Aurora 관련 코드 수정 시 반드시 사전 승인 필요
- 소스의 `config/` 디렉토리는 분석 시 참고할 것
- 모든 파일 수정 시 `docs/CODING_RULES.md` 확인 필수
- 한글 포함 파일 작성/수정 시 UTF-8 인코딩 준수
---
## 2. 솔루션 구조
> 원본: [`solution-structure.md`](./solution-structure.md)
### ILSOS_All.sln 구성
```
ILSOS_All.sln
├── Machines/
│ ├── ILSOS_PrismaticPTOP/ ← 현재 활성 모듈 (3계층 아키텍처)
│ ├── ILSOS_PrismaticScanner/ ← 참고 대상 (레거시)
│ ├── ILSOS_PrismaticGun/ ← 미사용
│ └── ILSOS_PrismaticCleanLaser/ ← 미사용
├── AuroraDevices/ ← 하드웨어 디바이스 드라이버 (22개 프로젝트)
├── AuroraComponents/ ← WPF UI 공통 컴포넌트
├── AuroraVision/ ← 비전 시스템 (MIL 기반)
├── WeldingComponents/ ← 용접 공통 기능
│ ├── WeldingCommon
│ └── LASAGUI
└── External/ ← Aurora 프레임워크 바이너리
```
### 주요 특징
- **모듈화:** 각 머신 모듈은 독립적인 디바이스 제어 및 시퀀스 구현
- **공유 레이어:** AuroraDevices, AuroraComponents 등으로 코드 재사용
- **표준 규칙:** WeldingComponents는 수정 불가 (승인 필수)
- **설정 참고:** 각 머신의 `config/` 디렉토리에서 설정 확인 가능
---
## 3. ILSOS_PrismaticPTOP 핵심 구조
> 원본: [`ptop-architecture.md`](./ptop-architecture.md)
### 폴더 구조 및 주요 컴포넌트
```
ILSOS_PrismaticPTOP/
├── EquipDef.cs ← ID 상수 정의 (Device/Motor/Sequence/Recipe)
├── EquipmentSetup.cs ← 통합 제어 (초기화, 이벤트 구독, 시퀀스 시작)
├── Alarm/ ← 알람 코드 및 매니저
├── Device/
│ ├── ACS/ ← ACS 모션 제어 (X/Y축)
│ └── PLC/ ← PLC 통신 로직
├── Models/ ← 장비 특화 모델
├── Process/ ← ProcessManager, CellInfo, WeldingData
├── Recipes/ ← MainRecipe, RMSHandler
├── Sequences/
│ ├── Monitoring/ ← 알람/상태 모니터링 시퀀스
│ ├── SeqAutoRunPrismaticGunStageA/B.cs
│ └── SubSequence/
│ ├── StageA/ ← Load, Weld, Unload, HeightMeas
│ └── StageB/ ← Load, Weld, Unload, HeightMeas
├── settings/ ← 세팅 정의 클래스
├── Tools/ ← 공통 유틸리티
└── Views/ ← WPF View/ViewModel
```
### 주요 ID 정의 (EquipDef.cs)
| 카테고리 | 예시 |
|---------|------|
| **DeviceIds** | ACS, MassFlowMeterStageA/B, HeightSensor, AJIN |
| **MotorIds** | ALineX/Y/Z, BLineX/Y/Z |
| **RecipeIds** | StageAMainRecipe, StageBMainRecipe |
| **SequenceIds** | SeqLoad/Weld/Unload/HeightMeas × StageA/B |
### 아키텍처 패턴 (3계층)
```
WPF UI Layer (Views/ + ViewModels)
↓
Machine Logic Layer (EquipmentSetup + Sequences + Process)
↓
Device Abstraction (AuroraDevices — 디바이스별 독립 모듈)
↓
Hardware Layer (ACS.SPiiPlusNET, Melsec, Serial/USB)
```
**기술 스택:**
- **이벤트 기반:** System.Reactive (Rx.NET)
- **의존성 주입:** AuroraEnv 글로벌 환경
- **메시지 큐:** String / Double / Int / JSON / LBAD 타입
---
## 4. AuroraDevices 모듈
> 원본: [`aurora-devices.md`](./aurora-devices.md)
AuroraDevices는 하드웨어 디바이스 제어를 담당하는 22개 프로젝트 모음입니다.
| 프로젝트 | 역할 | 비고 |
|---------|------|------|
| AuroraDeviceCommon | 디바이스 공통 기본 클래스 | 모든 디바이스 상속 |
| AuroraACS | ACS SPiiPlus 모션 컨트롤러 | X/Y축 모션 제어 |
| AuroraMotionBoard | Ajin 모션 보드 | Z축 모션 제어 |
| AuroraLaser | 레이저 제어 (Gun 타입) | 고정 레이저 |
| AuroraLaserScanner | 레이저 스캐너 제어 | 동적 스캐닝 |
| AuroraPLC | Mitsubishi Melsec PLC 통신 | 외부 신호 제어 |
| AuroraIO | 디지털 I/O | 입출력 신호 |
| AuroraHeightSensor | Keyence 높이 센서 | 높이 측정 |
| AuroraCellTracker | 팰릿/셀 추적 시스템 | 셀 인식 및 위치 추적 |
| AuroraChiller | 냉각 장치 | 온도 제어 |
| AuroraOCT | Trumpf OCT 스캐너 | 옵티컬 측정 |
**설계 원칙:**
- 각 디바이스는 독립적인 제어 로직 구현
- 통합 제어는 머신 모듈의 EquipmentSetup에서 담당
- 의존성 주입(DI) 패턴으로 느슨한 결합 유지
---
## 5. 빌드 출력 경로
> 원본: [`build-output.md`](./build-output.md)
### 머신별 빌드 디렉토리
| 머신 모듈 | 출력 경로 | 상태 |
|---------|---------|------|
| ILSOS_PrismaticPTOP | `_out_prismatic_ptop/` | 활성 |
| ILSOS_PrismaticScanner | `_out_prismatic_scanner/` | 참고 |
| ILSOS_PrismaticGun | `_out_prismatic_gun/` | 미사용 |
| ILSOS_PrismaticCleanLaser | `_out_prismatic_cleanlaser/` | 미사용 |
### 빌드 구성별 출력
각 빌드 구성(Debug, Release, Simulation, UserDefineUnit)은 플랫폼(x64)별로 독립적인 출력 디렉토리 생성.
예: `_out_prismatic_ptop/Debug/x64/`, `_out_prismatic_ptop/Release/x64/`
### 주의사항
- 빌드 출력 디렉토리는 `.gitignore`에 포함
- 빌드 전 이전 출력물이 있으면 자동 정리
- 각 머신 모듈은 독립적으로 빌드 가능
---
## 6. PTOP 분석 하네스
> 원본: [`harness-ptop.md`](./harness-ptop.md)
### 목표
ILSOS_PrismaticRD_PTOP(PtoP)의 3계층 아키텍처, 구현 상세, 빌드 최적화를 종합 분석하고 개선안 제시
### 팀 구성
- **PTOP Lead**: 아키텍처 리더
- **PTOP Developer**: 구현 전문가
- **Build/DevOps Engineer**: 빌드 최적화 담당
### 호출 방법
다음 요청 시 `/orchestrate-ptop-harness` 스킬 사용:
- "PTOP 프로젝트 전체 분석"
- "PTOP 아키텍처와 구현 분석"
- "PTOP 상태 점검"
- "PTOP 빌드 최적화"
- "PTOP 팀 조율"
### 구성 요소
**Agents:**
- `.ubisam_agent/agents/ptop-lead.md`
- `.ubisam_agent/agents/ptop-developer.md`
- `.ubisam_agent/agents/build-devops-engineer.md`
**Skills:**
- `.ubisam_agent/skills/analyze-ptop-architecture/SKILL.md`
- `.ubisam_agent/skills/analyze-ptop-implementation/SKILL.md`
- `.ubisam_agent/skills/optimize-ptop-build/SKILL.md`
- `.ubisam_agent/skills/orchestrate-ptop-harness/SKILL.md`
**Workspace:**
- `_workspace/0X_*.md` (분석 결과 저장)
---
## 7. Git 커밋 규칙
@import ./GIT_RULES.md — bin 무시/예외(External/Aurora/bin), .gitignore 자체 커밋 규칙