- 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는 제거
211 lines
6.8 KiB
Markdown
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 확인
|