--- 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 확인