NohDoyeon241104 3fc3789bfa 추가된 파일:
- 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는
  제거
2026-06-16 17:28:03 +09:00

211 lines
6.8 KiB
Markdown

---
name: analyze-ptop-architecture
description: ILSOS_PrismaticRD_PTOP의 3계층 아키텍처(UI → Machine Logic → Device)를 분석하고 검증. EquipDef.cs, EquipmentSetup.cs, Sequences/, Device/ 폴더의 관계를 맵핑하고 Rx.NET 이벤트 흐름을 추적. 디바이스 스택(PLC, Laser, OCT, CellTracker) 통합 여부 검증. PTOP 아키텍처를 이해하거나 설계해야 할 때, "PTOP 아키텍처 분석", "PTOP 구조 검토", "PTOP 전체 흐름 파악" 요청 시 반드시 이 스킬을 사용.
---
# Analyze PTOP Architecture Skill
## 목표
ILSOS_PrismaticRD_PTOP의 **3계층 아키텍처 전체 그림**을 명확히 파악하고 문서화한다.
## 분석 단계
### 1단계: EquipDef.cs & EquipmentSetup.cs 분석
**EquipDef.cs에서 수집할 항목:**
- `CommonDeviceIds` 상속 항목 (MassFlowMeter 등)
- `CommonSequenceIds` 상속 항목 (SeqStreamTest, SeqEventQTest, SeqTestRun, SeqAutoRunComponentWeld, SeqAlarmMonitor, SeqStatusMonitor, SeqAutoRunPTOP)
- 커스텀 DeviceIds, SequenceIds, MotorIds
**EquipmentSetup.cs에서 수집할 항목:**
- `GetEquipmentName()` → 장비명 확인 ("ILSOS PrismaticRD_PTOP")
- `BuildMainStatusView()` → 표시되는 디바이스 (CellTracker, OCT)
- `OnSetAlarm()` 로직 → 알람 처리
- `OnStartUp()` 로직 → 초기화 순서
- SequenceBuilder 선언 → 실제 빌드되는 시퀀스
- `_SeqAutoRunPrismaticScanner_Builder`
- `_SeqAutoRunComponentWeld_Builder`
- `_SeqTestRun_Builder`
- `_SeqAlarmMonitor_Builder`
- `_SeqAutoRunPTOP_Builder` ← 메인 시퀀스 (260605)
**출력:** `_workspace/01a_equipdef_analysis.md`
### 2단계: Sequences/ 폴더 구조 분석
**주요 파일들:**
```
Sequences/
├── SeqAutoRunPTOP.cs ← 메인 (분석 우선순위 1)
├── SeqAutoRunPrismaticScanner.cs
├── SeqAutoRunComponentWeld.cs
├── SeqTestRun.cs
├── SeqStreamTest.cs
├── SeqEventQTest.cs
├── SequenceContextEx.cs ← 컨텍스트 정의
├── SequenceManager.cs ← 시퀀스 관리
├── Monitoring/
│ ├── SeqAlarmMonitor.cs
│ └── SeqStatusMonitor.cs
└── Manual/
└── SeqComponentTeachingRun.cs
```
**각 시퀀스 분석 항목:**
- 용도 (주 시퀀스? 테스트? 모니터링?)
- 상태 머신 정의 (시작, 대기, 실행, 완료, 에러)
- 타이밍 (예상 소요시간)
- 호출하는 디바이스 목록
- 의존성 (다른 시퀀스에 의존하는가?)
**특히 SeqAutoRunPTOP.cs:**
- 상태 다이어그램 작성
- 각 상태에서 호출되는 디바이스/API 추적
- 타임아웃/재시도 로직
**출력:** `_workspace/01b_sequences_analysis.md`
### 3단계: Device/ 폴더 분석
**파일 구조:**
```
Device/
├── PLC/
│ ├── PLCController.Config.cs ← PLC 주소 맵핑
│ ├── PLCController.Logic.cs ← 읽기/쓰기 로직
│ └── PLCController.Address.cs ← 신호 상수
└── IO/
└── PAIX_PrismaticScanner.cs ← IO 제어
```
**PLC 분석:**
- 사용되는 주소 범위 (예: M0~M100, D0~D500)
- 주요 신호 목록 (Ready, Setup, Error, etc.)
- 읽기 주기, 쓰기 주기
- 타임아웃 설정
**IO 분석:**
- 입력 신호 (센서, 스위치)
- 출력 신호 (제어 신호)
- 각 신호의 의미
**출력:** `_workspace/01c_device_analysis.md`
### 4단계: Rx.NET 이벤트 흐름 분석
**수집할 정보:**
- System.Reactive 사용 패턴 (Observable, Subject, etc.)
- 메시지 타입 (String/Double/Int/JSON/LBAD)
- 구독자 목록 (누가 어떤 메시지를 구독?)
- 백프레셔/에러 처리
**파이프라인 예시:**
```
[PLC Status] Observable
├─→ Filter(Ready == true)
├─→ Select(x => new LaserCommand())
└─→ Subscribe(Laser.Execute())
```
**출력:** `_workspace/01d_rxnet_analysis.md`
### 5단계: 외부 디바이스 통합 검증
**검증 대상:**
- PLC (Mitsubishi)
- Laser (AuroraLaser)
- OCT Scanner (AuroraOCT)
- CellTracker (AuroraCellTracker)
- IO (PAIX)
**각 디바이스마다:**
- 초기화 시점
- 활성화 조건
- 사용 방식 (동기/비동기)
- 에러 처리
- 정상 종료 절차
**출력:** `_workspace/01e_device_integration.md`
## 통합 산출물
### 최종 보고서: `_workspace/01_ptop_architecture.md`
```markdown
# ILSOS_PrismaticRD_PTOP 아키텍처 검토 보고서
## 1. 3계층 아키텍처
```
┌──────────────────────────────┐
│ WPF UI Layer │
│ (Views/, ViewModels/) │
└──────────────┬───────────────┘
↓
┌──────────────────────────────┐
│ Machine Logic Layer │
│ (EquipmentSetup, Sequences) │
└──────────────┬───────────────┘
↓
┌──────────────────────────────┐
│ Device Abstraction │
│ (AuroraDevices) │
└──────────────┬───────────────┘
↓
┌──────────────────────────────┐
│ Hardware Layer │
│ (PLC, Laser, OCT, etc.) │
└──────────────────────────────┘
```
## 2. 핵심 컴포넌트
### EquipDef & EquipmentSetup
- [EquipDef 매핑 표]
- [빌드되는 시퀀스 목록]
### Sequences
- [시퀀스 관계도]
- [SeqAutoRunPTOP 상태 머신]
### Device
- [PLC 신호 맵핑]
- [IO 신호 맵핑]
## 3. Rx.NET 이벤트 흐름
[파이프라인 다이어그램]
## 4. 발견 사항 & 개선 사항
| 우선순위 | 항목 | 현황 | 개선안 |
|---------|------|------|--------|
| P0 | | | |
| P1 | | | |
```
## 입력 조건
사용자가 다음과 같이 요청할 때:
- "PTOP 아키텍처 분석해줘"
- "PTOP 전체 구조 파악"
- "SeqAutoRunPTOP이 어떻게 동작하는지 분석"
- "PTOP에서 PLC, Laser, OCT가 어떻게 연결되어있는지"
- "PTOP 3계층 아키텍처 검증"
## 출력 결과
- 5개 상세 분석 문서 (`_workspace/01a~01e_*.md`)
- 통합 보고서 (`_workspace/01_ptop_architecture.md`)
- 다이어그램 (3계층, 상태 머신, 이벤트 흐름)
## 주의사항
1. **코드 읽기 능력이 중요** — C#, WPF, Rx.NET 이해 필수
2. **불명확한 부분은 기록** — "이 부분은 왜 이렇게?"라는 질문을 명시
3. **Namespace 혼동 주의** — ILSOS_PrismaticRD_PTOP의 코드가 ILSOS_PrismaticScanner 네임스페이스 사용
4. **260605 변경 이후 상태 파악** — SeqAutoRunPTOP이 최신 메인 시퀀스
5. **한글 주석 인코딩** — CODING_RULES.md 확인