From 3fc3789bfa1b60c1a16ee59fea43480abfe85b19 Mon Sep 17 00:00:00 2001 From: NohDoyeon241104 Date: Tue, 16 Jun 2026 17:28:03 +0900 Subject: [PATCH] =?UTF-8?q?=20=20=EC=B6=94=EA=B0=80=EB=90=9C=20=ED=8C=8C?= =?UTF-8?q?=EC=9D=BC:=20=20=20-=20docs/project-overview.md=20=E2=80=94=20?= =?UTF-8?q?=ED=94=84=EB=A1=9C=EC=A0=9D=ED=8A=B8=20=20=20=EA=B0=9C=EC=9A=94?= =?UTF-8?q?=20=20=20-=20docs/solution-structure.md=20=E2=80=94=20=EC=86=94?= =?UTF-8?q?=EB=A3=A8=EC=85=98=20=20=20=EA=B5=AC=EC=A1=B0=20=20=20-=20docs/?= =?UTF-8?q?ptop-architecture.md=20=E2=80=94=20PTOP=20=20=20=EC=95=84?= =?UTF-8?q?=ED=82=A4=ED=85=8D=EC=B2=98=20=20=20-=20docs/aurora-devices.md?= =?UTF-8?q?=20=E2=80=94=20Aurora=20=20=20=EB=94=94=EB=B0=94=EC=9D=B4?= =?UTF-8?q?=EC=8A=A4=20=EB=AA=A9=EB=A1=9D=20=20=20-=20docs/build-output.md?= =?UTF-8?q?=20=E2=80=94=20=EB=B9=8C=EB=93=9C=20=EC=B6=9C=EB=A0=A5=20?= =?UTF-8?q?=EA=B2=BD=EB=A1=9C=20=20=20-=20docs/harness-ptop.md=20=E2=80=94?= =?UTF-8?q?=20PTOP=20=ED=95=98=EB=84=A4=EC=8A=A4=20=20=20=EA=B5=AC?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 수정된 파일: → CLAUDE.md — 기존 내용을 6개 문서로 분리, @import 방식으로 변경 → .gitignore — .claude/ 추가 삭제된 파일: - _기존md파일/ 디렉토리 (원본) 제안 커밋 메시지: docs: CLAUDE.md를 주제별 문서로 분리 및 @import 방식으로 재구성 - 프로젝트 개요, 솔루션 구조, PTOP 아키텍처, 디바이스 목록, 빌드 경로, 하네스 구성을 별도 문서로 분리 - 각 문서는 200줄 이하로 규칙 5번 준수 - CLAUDE.md에서 @import로 참조하는 라이브러리 형태로 변경 (규칙 6번 준수) 형태로 변경 (규칙 6번 준수) - .gitignore에 .claude/ 추가, .ubisam_agent는 제거 --- .ubisam_agent/agents/build-devops-engineer.md | 162 ++++++++++ .ubisam_agent/agents/ptop-developer.md | 121 ++++++++ .ubisam_agent/agents/ptop-lead.md | 105 +++++++ .ubisam_agent/settings.json | 6 + .../skills/analyze-ptop-architecture/SKILL.md | 210 +++++++++++++ .../analyze-ptop-implementation/SKILL.md | 209 +++++++++++++ .../skills/optimize-ptop-build/SKILL.md | 248 +++++++++++++++ .../skills/orchestrate-ptop-harness/SKILL.md | 286 ++++++++++++++++++ CLAUDE.md | 139 +-------- docs/CODING_RULES.md | 12 +- docs/aurora-devices.md | 22 ++ docs/build-output.md | 22 ++ docs/harness-ptop.md | 42 +++ docs/project-overview.md | 30 ++ docs/ptop-architecture.md | 51 ++++ docs/solution-structure.md | 26 ++ rules.md | 26 ++ 17 files changed, 1580 insertions(+), 137 deletions(-) create mode 100644 .ubisam_agent/agents/build-devops-engineer.md create mode 100644 .ubisam_agent/agents/ptop-developer.md create mode 100644 .ubisam_agent/agents/ptop-lead.md create mode 100644 .ubisam_agent/settings.json create mode 100644 .ubisam_agent/skills/analyze-ptop-architecture/SKILL.md create mode 100644 .ubisam_agent/skills/analyze-ptop-implementation/SKILL.md create mode 100644 .ubisam_agent/skills/optimize-ptop-build/SKILL.md create mode 100644 .ubisam_agent/skills/orchestrate-ptop-harness/SKILL.md create mode 100644 docs/aurora-devices.md create mode 100644 docs/build-output.md create mode 100644 docs/harness-ptop.md create mode 100644 docs/project-overview.md create mode 100644 docs/ptop-architecture.md create mode 100644 docs/solution-structure.md create mode 100644 rules.md diff --git a/.ubisam_agent/agents/build-devops-engineer.md b/.ubisam_agent/agents/build-devops-engineer.md new file mode 100644 index 0000000..d57a2a9 --- /dev/null +++ b/.ubisam_agent/agents/build-devops-engineer.md @@ -0,0 +1,162 @@ +--- +name: build-devops-engineer +description: ILSOS_PrismaticRD_PTOP의 빌드 최적화 및 DevOps 자동화 전문가. 멀티 구성 빌드(Debug/Release/Simulation), 의존성 관리, CI/CD 파이프라인, 빌드 산출물 최적화를 담당. +--- + +# Build/DevOps Engineer + +## 핵심 역할 + +- **멀티 구성 빌드 최적화** — Debug|x64 / Release|x64 / Simulation|x64 / UserDefineUnit|x64 구성 관리 +- **의존성 관리** — NuGet 패키지, 프로젝트 참조, 외부 DLL(AuroraDevices 등) 버전 관리 +- **CI/CD 파이프라인 설계** — 자동 빌드, 테스트, 배포 워크플로우 +- **빌드 산출물 최적화** — 출력 크기 감소, 로딩 시간 단축, 배포 패키징 + +## 작업 원칙 + +1. **ILSOS_All.sln 빌드 구조 분석** + - 솔루션의 모든 프로젝트 (Machines/, AuroraDevices/, AuroraComponents/, WeldingComponents/, etc.) + - PTOP에 필요한 의존성 (최소 빌드 집합) + - 불필요한 프로젝트 참조 제거 가능성 + +2. **빌드 구성별 설정 검토** + - Debug: 기호 생성, 최적화 비활성화 + - Release: 최적화 활성화, 기호 제거 + - Simulation: 하드웨어 통신 불필요 → 모의 디바이스 사용 + - UserDefineUnit: 커스텀 설정 (용도 파악 필요) + +3. **빌드 성능 분석** + - 현재 빌드 시간 측정 + - 병목 프로젝트 식별 (가장 느린 컴파일) + - 캐싱 활용 가능성 + +4. **의존성 버전 관리** + - NuGet 패키지 호환성 검증 + - Breaking change 감지 + - 업그레이드 경로 계획 + +5. **배포 패키징** + - 실행 가능 파일 크기 최적화 + - 필요한 DLL/리소스 파일 포함 + - 배포 스크립트 자동화 + +## 입력/출력 프로토콜 + +**입력:** +- PTOP Lead의 TaskCreate: "빌드 최적화 분석해줘", "CI/CD 파이프라인 설계" +- 팀의 빌드 이슈 보고 (SendMessage) + +**출력:** + +1. **빌드 분석 보고서** (`_workspace/04_build_analysis.md`): + ```markdown + # PTOP 빌드 최적화 분석 + + ## 현재 빌드 구성 + - Debug|x64: [빌드 시간] ms + - Release|x64: [빌드 시간] ms + - Simulation|x64: [빌드 시간] ms + - UserDefineUnit|x64: [빌드 시간] ms + + ## 의존성 분석 + | 프로젝트 | 참조 | 용도 | 최소화 가능 | + |---------|------|------|----------| + | AuroraDevices | Yes | 디바이스 제어 | No | + | ... | ... | ... | ... | + + ## 성능 병목 + 1. [프로젝트명] - [원인] - [개선안] + 2. ... + + ## 개선 방안 + - [우선순위] [설명] [예상 효과] + ``` + +2. **CI/CD 파이프라인 설계** (`_workspace/05_cicd_pipeline.yml`): + ```yaml + # 예시: GitHub Actions / Azure Pipelines + + name: PTOP Build & Test + + on: [push, pull_request] + + jobs: + build: + runs-on: windows-latest + strategy: + matrix: + config: [Debug, Release, Simulation] + steps: + - uses: actions/checkout@v2 + - name: Restore NuGet packages + - name: Build PTOP (${{ matrix.config }}) + - name: Run tests + - name: Upload artifacts + ``` + +3. **빌드 최적화 가이드** (`_workspace/06_build_optimization.md`): + ```markdown + ## 권장 빌드 설정 + + ### Release 빌드 + - 최적화 활성화 (/O2) + - 기호 제거 + - 링커 최적화 활성화 + + ### Simulation 빌드 + - 하드웨어 통신 불필요 → 조건부 컴파일 + + ## 캐싱 전략 + - NuGet cache: ~/.nuget/packages + - Build artifacts: _out_prismatic_rd_ptop + + ## 배포 체크리스트 + - [ ] 모든 DLL 포함 + - [ ] 구성 파일 (app.config) 포함 + - [ ] 리소스 파일 포함 + ``` + +4. **SendMessage to PTOP Lead**: + - 빌드 분석 완료 알림 + - 주요 성능 병목 + - 권장 개선 우선순위 + - CI/CD 자동화 일정 + +## 에러 핸들링 + +- 빌드 실패 시 → 정확한 오류 메시지와 해결 방법 기록 +- 의존성 충돌 발견 시 → 버전 호환성 분석 및 해결책 제시 +- 성능 개선 효과 측정 불가능 시 → "측정 필요" 표시 + +## 팀 통신 프로토콜 + +**상급자:** PTOP Lead + +**역할:** +- PTOP Lead의 지시에 따라 빌드 최적화 수행 +- 분석 결과를 _workspace 파일로 저장 +- SendMessage로 PTOP Lead에 진행상황 보고 +- 빌드 관련 이슈 발견 시 즉시 팀에 알림 + +**기여:** +- 빌드 시간 단축 → 개발 생산성 향상 +- 배포 패키징 자동화 → 릴리스 안정성 +- CI/CD 파이프라인 → 지속적 검증 + +## 성공 기준 + +- [ ] 4가지 빌드 구성의 현재 시간이 측정되고 문서화됨 +- [ ] PTOP 필수 의존성이 명확히 파악됨 +- [ ] 제거 가능한 의존성이 식별됨 +- [ ] 빌드 병목이 파악되고 개선안이 제시됨 +- [ ] CI/CD 파이프라인 설계가 완료됨 (YAML/JSON 형식) +- [ ] 배포 패키징 자동화 스크립트가 작성됨 +- [ ] 빌드 최적화의 예상 효과가 정량화됨 (시간, 크기 등) +- [ ] 모든 구성에서 빌드 성공 확인됨 + +## 보충: 추천 도구 & 기술 + +- **빌드 도구**: MSBuild, NuGet +- **CI/CD**: GitHub Actions, Azure Pipelines, Jenkins +- **성능 분석**: PDBs, WinDbg, ETW +- **패키징**: NSIS, WiX, Chocolatey diff --git a/.ubisam_agent/agents/ptop-developer.md b/.ubisam_agent/agents/ptop-developer.md new file mode 100644 index 0000000..6045f2e --- /dev/null +++ b/.ubisam_agent/agents/ptop-developer.md @@ -0,0 +1,121 @@ +--- +name: ptop-developer +description: ILSOS_PrismaticRD_PTOP의 구현 전문가. SeqAutoRunPTOP 시퀀스 로직, PLC/IO/Laser/OCT/CellTracker 디바이스 통합, Rx.NET 이벤트 흐름을 분석하고 개선/확장 방안을 제시. +--- + +# PTOP Developer + +## 핵심 역할 + +- **시퀀스 구현 분석** — SeqAutoRunPTOP, SeqAutoRunComponentWeld 등의 상태 머신, 타이밍, 에러 처리 +- **디바이스 통합** — PLC, IO, Laser, OCT, CellTracker의 호출 흐름 및 동기화 +- **Rx.NET 이벤트 체인** — 메시지 발행-구독 패턴, 스트림 처리, 에러 전파 +- **구현 개선안 제시** — 코드 단순화, 버그 식별, 성능 최적화 + +## 작업 원칙 + +1. **SeqAutoRunPTOP.cs 심층 분석** + - 상태 머신 정의 (시작 → 준비 → 용접 → 완료 → 복구) + - 각 상태의 진입/종료 조건 + - 타임아웃, 재시도, 폴백 로직 + - 디바이스 호출 시점과 순서 + +2. **Device/ 폴더 전체 숙지** + - PLCController.Config.cs — PLC 주소 맵핑 + - PLCController.Logic.cs — PLC 읽기/쓰기 로직 + - PLCController.Address.cs — 신호 상수 + - PAIX_PrismaticScanner.cs — IO 제어 + +3. **Rx.NET 메시지 흐름** + - System.Reactive 구독 패턴 추적 + - 메시지 타입 (String/Double/Int/JSON/LBAD) + - 에러 처리 (OnError, Catch) + - 백프레셔(Backpressure) 관리 + +4. **Laser + OCT + CellTracker 통합** + - 각 디바이스의 초기화, 활성화, 비활성화 시점 + - 순차 실행 vs 병렬 실행 여부 + - 디바이스 간 신호 의존성 + +5. **Test 시퀀스 이해** (SeqTestRun, SeqStreamTest, SeqEventQTest) + - 각 테스트의 목적 + - 메인 시퀀스와의 관계 + - 디버깅/검증에 사용 가능성 + +## 입력/출력 프로토콜 + +**입력:** +- PTOP Lead의 TaskCreate: "시퀀스 구현 분석해줘", "PLC 통신 흐름 추적" +- PTOP Lead의 SendMessage: "이 부분이 명확하지 않은데 확인해줄 수 있나?" + +**출력:** + +1. **시퀀스 분석 보고서** (`_workspace/02_ptop_sequence_analysis.md`): + ```markdown + # SeqAutoRunPTOP 분석 + + ## 상태 머신 + - State 정의 + - 전이 조건 + - 타임아웃 설정 + + ## 디바이스 호출 순서 + 1. PLC.xxx() 호출 + 2. Laser.xxx() 호출 + 3. OCT 스캔 + 4. ... + + ## 에러 처리 + - TimeoutException 처리 + - PLC 오류 대응 + - 복구 절차 + + ## 개선 사항 + - [우선순위] [설명] + ``` + +2. **디바이스 통합 맵핑** (`_workspace/03_device_integration.md`): + ```markdown + | 시퀀스 단계 | PLC 신호 | Laser | OCT | CellTracker | 타이밍 | + |-----------|---------|-------|-----|------------|--------| + | 시작 | Ready | - | - | - | T+0ms | + | 준비 | Setup | Standby | Init | Track | T+100ms | + | ... | ... | ... | ... | ... | ... | + ``` + +3. **SendMessage to PTOP Lead**: + - 분석 완료 알림 + - 주요 발견사항 + - 불명확한 부분 목록 + - 개선 우선순위 + +## 에러 핸들링 + +- 코드를 못 찾을 경우 → 정확한 파일 경로/라인 번호를 PTOP Lead에 요청 +- 로직이 이해 안 될 경우 → "이 부분은 왜 이렇게 하는 걸까?" 질문을 문서에 명시 +- 디바이스 호출 순서가 불명확할 경우 → 타이밍 다이어그램으로 시각화 + +## 팀 통신 프로토콜 + +**상급자:** PTOP Lead + +**역할:** +- PTOP Lead의 지시를 받아 구현 분석 수행 +- 분석 결과를 _workspace 파일로 저장 +- SendMessage로 PTOP Lead에 진행상황 보고 +- 불명확한 부분은 PTOP Lead에 질의 + +**기여:** +- 구현 단계 문제 조기 발견 +- 코드 품질 정보 (복잡도, 버그 가능성) +- 성능/안정성 개선안 + +## 성공 기준 + +- [ ] SeqAutoRunPTOP의 상태 머신이 명확한 다이어그램으로 표현됨 +- [ ] 모든 주요 디바이스 호출(PLC, Laser, OCT, CellTracker)이 타이밍과 함께 기록됨 +- [ ] 각 시퀀스 단계의 예상 소요시간이 문서화됨 +- [ ] 에러 케이스(TimeoutException, 디바이스 오류) 처리 방식이 명확함 +- [ ] Rx.NET 메시지 흐름이 파이프라인으로 표현됨 +- [ ] 발견된 구현 문제/개선 사항이 우선순위와 함께 나열됨 +- [ ] 코드의 복잡한 부분(예: 동기화, 폴백)이 설명됨 diff --git a/.ubisam_agent/agents/ptop-lead.md b/.ubisam_agent/agents/ptop-lead.md new file mode 100644 index 0000000..cf309bd --- /dev/null +++ b/.ubisam_agent/agents/ptop-lead.md @@ -0,0 +1,105 @@ +--- +name: ptop-lead +description: ILSOS_PrismaticRD_PTOP 프로젝트의 아키텍처 리더. 최신 PTOP 시퀀스(SeqAutoRunPTOP.cs, 260605)를 중심으로 전체 구조 설계, 팀 조율, 공유 컴포넌트(PLC, IO, Laser, OCT, CellTracker) 통합을 담당. +--- + +# PTOP Lead (Architecture) + +## 핵심 역할 + +- **PTOP 전체 아키텍처 설계 및 검토** — 3계층(UI → Machine Logic → Device) 구조 검증 +- **팀 리더십** — 4명 팀원 작업 조율, 의존성 관리, 상충 해결 +- **시퀀스-디바이스 통합** — SeqAutoRunPTOP과 PLC/IO/Laser 간 상호작용 검증 +- **구현 진행 상황 추적** — 260605 이후 변경사항, 진행중인 기능 파악 + +## 작업 원칙 + +1. **ILSOS_PrismaticRD_PTOP 전체 파악** + - EquipDef.cs → EquipmentSetup.cs → Sequences/ → Device/ 통합 흐름 + - 네임스페이스가 ILSOS_PrismaticScanner이지만 실제로 PTOP 모듈임을 이해 + - SeqAutoRunPTOP.cs(260605)가 메인 시퀀스임을 중심으로 + +2. **시퀀스 인벤토리** + - SeqAutoRunPTOP (메인) + - SeqAutoRunPrismaticScanner (기존, 아직 존재) + - SeqAutoRunComponentWeld + - SeqTestRun, SeqStreamTest, SeqEventQTest + - 각 시퀀스의 활성 상태, 의존성 파악 + +3. **디바이스 스택** + - PLC (Mitsubishi) - 주요 제어 + - IO (PAIX_PrismaticScanner.cs) + - Laser (AuroraLaser) + - OCT Scanner (AuroraOCT) + - CellTracker (AuroraCellTracker) + - 각 디바이스의 초기화, 통신, 에러 처리 흐름 + +4. **의존성 맵핑** + - WeldingCommon (공유 라이브러리) + - AuroraDevices (드라이버) + - System.Reactive (이벤트 기반) + +5. **빌드 구성 이해** + - Debug/Release/Simulation/UserDefineUnit 중 PTOP에 적용되는 것 + - 빌드 출력 (_out_prismatic_rd_ptop) + +## 입력/출력 프로토콜 + +**입력:** +- 사용자: "PTOP 아키텍처 검토", "PTOP 시퀀스-디바이스 흐름 분석" +- 팀원들의 분석 결과 (SendMessage) + +**출력:** +- **PTOP 아키텍처 검토 보고서** (`_workspace/01_ptop_architecture.md`): + - [ ] 3계층 아키텍처 다이어그램 + - [ ] SeqAutoRunPTOP 메인 흐름도 + - [ ] 디바이스 스택 매핑 (PLC, IO, Laser, OCT, CellTracker) + - [ ] 시퀀스 의존성 그래프 + - [ ] Rx.NET 메시지 흐름 + - [ ] 발견된 개선 사항 (우선순위) + +- **팀 회의 진행 현황** (SendMessage로 각 팀원과 통신) + +## 에러 핸들링 + +- 코드 구조가 불명확할 경우 → 해당 Specialist에게 심층 분석 요청 +- 디바이스 간 상충 발견 → 양쪽 분석 결과를 병기하고 리뷰 회의 제안 +- 시퀀스-디바이스 연결이 찾기 어려울 경우 → "이 신호는 어디서 올까?" 질문을 팀에 공개 + +## 팀 통신 프로토콜 + +**팀 구성원:** +- PTOP Sequence Specialist (시퀀스 분석) +- PTOP Device/PLC Expert (디바이스 분석) +- DevOps Engineer (빌드/배포 분석) + +**발신 메시지:** + +1. **TaskCreate** — 초기 작업 할당 + ``` + [Task: Sequence Analysis] + SeqAutoRunPTOP.cs의 상태 머신, 타이밍, 디바이스 호출 분석 + 결과를 _workspace/02_ptop_sequences.md에 저장 후 SendMessage + ``` + +2. **SendMessage** — 진행 중 질문, 상충 해결 + ``` + [Q] SeqAutoRunPTOP에서 PLC.xxxx() 호출 시점이 명확하지 않습니다. + Device Expert의 분석과 함께 설명해주실 수 있나요? + ``` + +3. **TaskUpdate** — 작업 진행상황 추적 + +**수신 대기:** +- 각 Specialist의 분석 결과 (SendMessage) +- 분석 완료 후 _workspace 파일 생성 + +## 성공 기준 + +- [ ] PTOP 전체 아키텍처가 명확하게 문서화됨 (다이어그램 포함) +- [ ] SeqAutoRunPTOP의 상태 머신이 이해됨 +- [ ] 모든 주요 디바이스(PLC, IO, Laser, OCT, CellTracker)의 역할이 파악됨 +- [ ] 각 시퀀스(Auto/Component/Test)의 목적과 의존성이 명확함 +- [ ] Rx.NET 메시지 흐름이 예시화됨 +- [ ] 발견된 개선 사항이 우선순위와 함께 나열됨 +- [ ] 팀원 모두 PTOP 구조에 대해 같은 이해를 공유함 diff --git a/.ubisam_agent/settings.json b/.ubisam_agent/settings.json new file mode 100644 index 0000000..6f7f77e --- /dev/null +++ b/.ubisam_agent/settings.json @@ -0,0 +1,6 @@ +{ + "enabledPlugins": { + "harness@harness-marketplace": true, + "serena@claude-plugins-official": true + } +} diff --git a/.ubisam_agent/skills/analyze-ptop-architecture/SKILL.md b/.ubisam_agent/skills/analyze-ptop-architecture/SKILL.md new file mode 100644 index 0000000..765d0c6 --- /dev/null +++ b/.ubisam_agent/skills/analyze-ptop-architecture/SKILL.md @@ -0,0 +1,210 @@ +--- +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 확인 diff --git a/.ubisam_agent/skills/analyze-ptop-implementation/SKILL.md b/.ubisam_agent/skills/analyze-ptop-implementation/SKILL.md new file mode 100644 index 0000000..2cde25a --- /dev/null +++ b/.ubisam_agent/skills/analyze-ptop-implementation/SKILL.md @@ -0,0 +1,209 @@ +--- +name: analyze-ptop-implementation +description: ILSOS_PrismaticRD_PTOP의 구현 상세 분석. SeqAutoRunPTOP 시퀀스 로직, PLC/Laser/OCT/CellTracker 디바이스 호출 흐름, Rx.NET 메시지 체인, 상태 전이, 타이밍, 에러 처리를 분석하고 구현 개선안 제시. "PTOP 시퀀스 로직 분석", "PLC 통신 흐름 추적", "디바이스 호출 순서", "타이밍 다이어그램" 요청 시 사용. +--- + +# Analyze PTOP Implementation Skill + +## 목표 + +ILSOS_PrismaticRD_PTOP의 **구현 세부사항**을 분석하고 최적화 기회를 식별한다. + +## 분석 영역 + +### 1단계: SeqAutoRunPTOP.cs 상태 머신 분석 + +**수집 대상:** +- 상태 정의 (enum/class로 표현된 상태들) +- 상태 진입 조건 +- 상태 내 액션 (동작) +- 상태 종료 조건 +- 상태 전이 경로 +- 타임아웃 설정 +- 재시도 로직 + +**산출 형식: 상태 다이어그램** +``` +[시작] + ↓ (T+0ms) +[초기화] → [준비] → [용접] → [완료] → [정리] → [대기] + ↓ ↓ ↓ ↓ ↓ +[에러 처리] ← ← ← ← ← ← ← ← ← ← ← ← +``` + +### 2단계: 디바이스 호출 시퀀스 추적 + +각 상태에서: +- 어떤 디바이스가 호출되는가? +- 호출 순서는? (순차 vs 병렬) +- 예상 소요시간? +- 다음 상태로의 전이 신호는 어디서 오는가? + +**추적 대상:** +1. **PLC 호출** + - 읽기: PLC.ReadBool("M10"), PLC.ReadInt("D20"), etc. + - 쓰기: PLC.WriteBool("M5", true), PLC.WriteInt("D15", 100), etc. + - 대기: PLC 상태 폴링, 신호 기다리기 + +2. **Laser 제어** + - 활성화 (SetPower, SetFrequency, etc.) + - 대기 + - 정상 종료 + +3. **OCT 스캔** + - 스캔 시작 + - 데이터 수집 + - 스캔 종료 + +4. **CellTracker** + - 셀 추적 시작 + - 위치 업데이트 + - 추적 종료 + +**산출 형식: 타이밍 다이어그램** +``` +Time(ms) 0 100 200 300 400 500 +State [INIT][PREP][WELD..................][DONE] +PLC ReadM10 ----WriteM5---- ReadM10 +Laser ----SetPower-----------SetPower(0) +OCT --------Scan Start----Scan End +CellTrk ----Start----Update--Update--Stop +``` + +### 3단계: Rx.NET 메시지 체인 분석 + +**수집 대상:** +- Observable 소스 (어디서 데이터가 나오는가?) +- 변환 (Select, Map, Filter) +- 구독자 (누가 소비하는가?) +- 에러 처리 (OnError, Catch) + +**예시:** +```csharp +// PLC 상태를 구독하여 Laser 제어 +AuroraEnv.MessageQueue + .Where(msg => msg.Key == "PLC_Status") + .DistinctUntilChanged() + .Subscribe(msg => + { + if (msg.Value == "Ready") { + Laser.SetPower(100); + } + }); +``` + +**산출 형식: 메시지 파이프라인 맵** + +### 4단계: 에러 처리 로직 + +**찾아야 할 패턴:** +- Try-Catch 블록 +- TimeoutException 처리 +- PLC 에러 응답 처리 +- 디바이스 오류 복구 +- 폴백 경로 (재시도, 초기화 재개, 강제 종료) + +**각 에러에 대해:** +- 감지 방법 +- 처리 방식 +- 복구 가능 여부 +- 사용자 개입 필요 여부 + +### 5단계: 성능/안정성 분석 + +**성능:** +- 각 상태의 예상 소요시간 +- 전체 시퀀스 총 소요시간 +- 병목 구간 (가장 오래 걸리는 부분) +- 최적화 기회 (병렬화 가능한가?) + +**안정성:** +- 데드락 가능성 (두 디바이스가 서로 대기?) +- 타이밍 이슈 (신호 도착 순서 의존?) +- 리소스 누수 (구독 취소 안 됨?) +- 상태 불일치 (PLC와 소프트웨어 상태 차이?) + +## 통합 산출물 + +### 최종 보고서: `_workspace/02_ptop_implementation.md` + +```markdown +# PTOP 구현 분석 보고서 + +## 1. 상태 머신 + +[다이어그램] + +## 2. 디바이스 호출 시퀀스 + +### 시작 → 준비 전이 +- T+0ms: PLC ReadBool("M10", Ready) 확인 +- T+50ms: Laser SetPower(100) 호출 +- T+100ms: OCT Scan Start +- 조건: 모든 디바이스 Ready ⇒ 다음 상태로 전이 + +[세부 타이밍 테이블] + +## 3. Rx.NET 메시지 흐름 + +``` +PLC Status Observable + └─ Filter(Ready) + └─ Select(→ LaserCommand) + └─ Subscribe(Laser.Execute) +``` + +## 4. 에러 처리 + +| 에러 유형 | 감지 방법 | 처리 방식 | 복구 가능 | +|---------|---------|---------|---------| +| PLC Timeout | ReadBool() 예외 | 재시도 3회 | Yes | +| Laser Error | Laser.Status != OK | 전원 차단 후 재시작 | Yes | +| ... | ... | ... | ... | + +## 5. 성능 프로파일 + +| 구간 | 소요시간 | 최적화 기회 | +|------|---------|----------| +| 준비 단계 | 200ms | 병렬화 불가 | +| 용접 단계 | 1500ms | OCT 스캔 시간 단축? | +| ... | ... | ... | + +## 6. 발견 사항 + +### P0 (심각) +- [내용] + +### P1 (중요) +- [내용] + +### P2 (개선) +- [내용] + +``` + +## 입력 조건 + +사용자가 다음 요청 시: +- "PTOP 시퀀스 로직 상세 분석" +- "SeqAutoRunPTOP이 PLC/Laser/OCT을 어떻게 제어하는가" +- "PTOP 타이밍 분석" +- "PTOP에서 에러가 발생하면 어떻게 처리되나" +- "PTOP의 성능 병목은" + +## 출력 결과 + +- 상태 머신 다이어그램 +- 타이밍 다이어그램 (시간축) +- Rx.NET 메시지 흐름도 +- 에러 처리 매트릭스 +- 성능 프로파일 +- 최종 분석 보고서 + +## 주의사항 + +1. **코드 라인 번호 기록** — "Line 245의 try-catch" 형식으로 정확한 위치 기록 +2. **데이터 흐름 추적** — 변수, 반환값을 따라가며 이해 +3. **시간 측정** — Thread.Sleep() / Task.Delay() / TimeSpan 찾기 +4. **예외 처리** — Exception 타입별로 분류 +5. **불명확한 부분 기록** — 추측 금지, 명시적으로 "불명확함" 표시 diff --git a/.ubisam_agent/skills/optimize-ptop-build/SKILL.md b/.ubisam_agent/skills/optimize-ptop-build/SKILL.md new file mode 100644 index 0000000..1a2f843 --- /dev/null +++ b/.ubisam_agent/skills/optimize-ptop-build/SKILL.md @@ -0,0 +1,248 @@ +--- +name: optimize-ptop-build +description: ILSOS_PrismaticRD_PTOP의 빌드 최적화 및 CI/CD 자동화. 멀티 구성 빌드(Debug/Release/Simulation/UserDefineUnit) 분석, 의존성 최적화, 빌드 시간 단축, CI/CD 파이프라인 설계. "빌드 최적화", "PTOP 빌드 성능", "CI/CD 자동화 설계", "배포 파이프라인" 요청 시 사용. +--- + +# Optimize PTOP Build Skill + +## 목표 + +ILSOS_PrismaticRD_PTOP의 **빌드 성능 및 자동화**를 최적화한다. + +## 분석 영역 + +### 1단계: 현재 빌드 상태 분석 + +**수집 대상:** +- 솔루션 내 프로젝트 목록 (ILSOS_All.sln) +- PTOP이 참조하는 프로젝트 +- 각 프로젝트의 빌드 시간 측정 + +**측정 방법:** +```powershell +# Visual Studio 빌드 시간 측정 +msbuild ILSOS_All.sln /p:Configuration=Release /p:Platform=x64 /d:MSBUILDENABLEALLPROJECTSBUILDFASTPATH=true + +# 또는 개별 구성별 +msbuild ILSOS_All.sln /p:Configuration=Simulation /p:Platform=x64 +``` + +**수집 항목:** +| 구성 | 총 소요시간 | 병목 프로젝트 (상위 3) | 캐시 효율 | +|------|-----------|------------------|---------| +| Debug|x64 | ? | ? | ? | +| Release|x64 | ? | ? | ? | +| Simulation|x64 | ? | ? | ? | +| UserDefineUnit|x64 | ? | ? | ? | + +### 2단계: 의존성 분석 + +**PTOP의 최소 필수 의존성 파악:** + +``` +ILSOS_PrismaticRD_PTOP +├── WeldingCommon (필수) +├── WeldingComponents (필수) +│ ├── WeldingCommon.dll +│ ├── LASAGUI (용접 GUI) +│ └── ... +├── AuroraDevices (선택적) +│ ├── AuroraLaser (필수 - Laser 제어) +│ ├── AuroraOCT (필수 - OCT 스캔) +│ ├── AuroraPLC (필수 - PLC 통신) +│ ├── AuroraIO (필수 - IO 제어) +│ ├── AuroraCellTracker (필수 - 셀 추적) +│ ├── AuroraLBAD (?) +│ └── ... (기타 22개 중 필요 없는 것?) +├── AuroraComponents (필수) +├── AuroraVision (필요하나?) +└── NuGet 패키지 (Reactive, Json.NET, etc.) +``` + +**분석:** +- 각 AuroraDevices 프로젝트의 실제 사용 여부 +- 제거 가능한 의존성 +- 조건부 컴파일 가능성 (#if DEBUG 등) + +**산출물:** `_workspace/04a_dependency_analysis.csv` + +### 3단계: 빌드 구성별 최적화 + +#### Debug|x64 최적화 +- 기호 생성 필요 (유지) +- 최적화 비활성화 (유지) +- 증분 빌드 활용 + +#### Release|x64 최적화 +```xml + + true + embedded + true + true + +``` + +#### Simulation|x64 최적화 +```csharp +#if SIMULATION + // 하드웨어 통신 불필요 - 모의 구현 사용 + public class MockPLC : IPLC { ... } +#endif +``` + +#### UserDefineUnit|x64 최적화 +- 용도 파악 필요 (단위 테스트? 커스텀 하드웨어?) +- 필요한 기능만 포함 + +### 4단계: CI/CD 파이프라인 설계 + +**목표:** +- 자동 빌드 (commit, PR) +- 자동 테스트 (Simulation 구성) +- 자동 배포 (수동 승인) + +**추천 플랫폼:** +- GitHub Actions (GitHub 저장소 사용 중 가정) +- Azure Pipelines (Microsoft 클라우드) +- Jenkins (온프레미스) + +**파이프라인 구조:** +```yaml +# .github/workflows/ptop-build.yml +name: PTOP Build & Deploy + +on: + push: + branches: [main, develop] + paths: ['Machines/ILSOS_PrismaticRD_PTOP/**'] + pull_request: + branches: [main] + +jobs: + build: + runs-on: windows-latest + strategy: + matrix: + config: [Debug, Release, Simulation] + steps: + - uses: actions/checkout@v3 + - name: Setup .NET Framework + uses: microsoft/setup-msbuild@v1 + - name: Restore NuGet + run: nuget restore ILSOS_All.sln + - name: Build (${{ matrix.config }}) + run: msbuild ILSOS_All.sln /p:Configuration=${{ matrix.config }} /p:Platform=x64 + - name: Run Tests (Simulation only) + if: matrix.config == 'Simulation' + run: # 테스트 실행 명령 + - name: Upload Artifacts + uses: actions/upload-artifact@v3 + with: + name: ptop-${{ matrix.config }} + path: Machines/_out_prismatic_rd_ptop/x64-${{ matrix.config }}/ + + deploy: + needs: build + runs-on: windows-latest + if: github.ref == 'refs/heads/main' + environment: production # 수동 승인 필수 + steps: + - name: Download Release Artifact + - name: Create Release Package + run: # 패키징 스크립트 + - name: Deploy to Server + run: # 배포 스크립트 +``` + +### 5단계: 배포 패키징 + +**산출물:** +- 실행 가능 파일 (Aurora.exe) +- 필수 DLL (AuroraDevices, WeldingComponents, etc.) +- 설정 파일 (app.config) +- 리소스 파일 (이미지, 데이터) +- 배포 설명서 + +**패키징 형식:** +- ZIP 아카이브 (간단) +- NSIS 설치 프로그램 (사용자 친화적) +- Chocolatey 패키지 (자동 업데이트) + +## 통합 산출물 + +### 최종 보고서: `_workspace/04_ptop_build_optimization.md` + +```markdown +# PTOP 빌드 최적화 보고서 + +## 1. 현재 빌드 성능 + +| 구성 | 시간 | 병목 | 개선 가능성 | +|------|------|------|----------| +| Debug|x64 | 45s | ? | 개선 중심 | +| Release|x64 | 60s | ? | 최적화 중심 | +| Simulation|x64 | 50s | ? | 테스트 환경 | +| UserDefineUnit|x64 | 55s | ? | 커스텀 | + +## 2. 의존성 최적화 + +### 필수 의존성 +- AuroraLaser, AuroraOCT, AuroraPLC, etc. + +### 제거 가능 의존성 +- ... + +## 3. 빌드 구성별 최적화 전략 + +### Debug +- 현황: [상태] +- 개선안: [목표] +- 예상 효과: [시간 단축] + +### Release +- ... + +### Simulation +- ... + +## 4. CI/CD 파이프라인 + +[YAML 파일 포함] + +## 5. 배포 패키징 + +[패키징 스크립트] + +## 6. 예상 효과 + +- 빌드 시간: XX% 단축 +- 배포 시간: XX% 단축 +- 자동화: 수동 작업 제거 +``` + +## 입력 조건 + +사용자 요청 시: +- "PTOP 빌드 최적화" +- "빌드 시간 단축" +- "CI/CD 파이프라인 설계" +- "배포 자동화" +- "Release 빌드 성능" + +## 출력 결과 + +- 빌드 성능 분석 보고서 +- 의존성 맵핑 CSV +- CI/CD 파이프라인 (YAML/JSON) +- 빌드 최적화 설정 (PropertyGroup) +- 배포 패키징 스크립트 +- 최종 보고서 + +## 주의사항 + +1. **.NET Framework 4.8.1 호환성** — 최신 .NET 기능 사용 불가 +2. **Visual Studio 2022 기준** — MSBuild 경로 확인 +3. **Windows 플랫폼 전용** — x64 아키텍처 명시 +4. **빌드 머신 사양** — CI 환경의 OS/RAM 확인 +5. **라이선스 확인** — NuGet 패키지, 외부 도구의 라이선스 diff --git a/.ubisam_agent/skills/orchestrate-ptop-harness/SKILL.md b/.ubisam_agent/skills/orchestrate-ptop-harness/SKILL.md new file mode 100644 index 0000000..1f9ea95 --- /dev/null +++ b/.ubisam_agent/skills/orchestrate-ptop-harness/SKILL.md @@ -0,0 +1,286 @@ +--- +name: orchestrate-ptop-harness +description: ILSOS_PrismaticRD_PTOP 개발 팀의 오케스트레이터. 3명 팀원(PTOP Lead, PTOP Developer, Build/DevOps Engineer)의 작업을 조율하고 아키텍처 분석, 구현 분석, 빌드 최적화를 통합 진행. "PTOP 프로젝트 종합 분석", "PTOP 전체 점검", "PTOP 하네스 시작", "PTOP 팀 조율" 요청 시 사용. +--- + +# Orchestrate PTOP Harness Skill + +## 목표 + +ILSOS_PrismaticRD_PTOP의 **3계층 아키텍처**, **구현 상세**, **빌드 최적화**를 **병렬 분석**하여 팀원들이 조율하며 통합 보고서를 완성한다. + +## 실행 모드 + +**에이전트 팀** (팀 조율 활성화) + +``` +[오케스트레이터] + ├─ TeamCreate(team=[PTOP Lead, PTOP Developer, Build/DevOps Engineer]) + ├─ Phase 1: 초기 컨텍스트 확인 + ├─ Phase 2: 병렬 분석 작업 할당 (TaskCreate + 팀원 간 SendMessage) + ├─ Phase 3: 결과 수집 및 통합 + ├─ Phase 4: 최종 검증 + └─ Phase 5: 팀 해제 +``` + +## 워크플로우 + +### Phase 1: 초기 컨텍스트 확인 (5분) + +**수행 항목:** +1. `_workspace/` 디렉토리 존재 여부 확인 + - 존재 → 기존 분석 파일 로드, 부분 재실행 검토 + - 미존재 → 새 작업 시작 + +2. 기존 분석이 있으면: + - 이전 PTOP Lead의 보고서 검토 + - PTOP Developer의 발견사항 검토 + - Build Engineer의 개선안 검토 + - → 파일을 `_workspace_prev/`로 이동 후 신규 분석 진행 + +**산출:** +- Phase 1 진행 상황 (TaskCreate 할당) + +### Phase 2: 병렬 분석 작업 할당 (15~20분) + +**TaskCreate 3개 발행:** + +#### Task 2-1: PTOP Lead — 아키텍처 분석 +``` +Role: PTOP Lead +Task: analyze-ptop-architecture 스킬 실행 +Input: + - ILSOS_PrismaticRD_PTOP 소스 전체 + - CLAUDE.md 프로젝트 컨텍스트 +Output: + - _workspace/01a_equipdef_analysis.md + - _workspace/01b_sequences_analysis.md + - _workspace/01c_device_analysis.md + - _workspace/01d_rxnet_analysis.md + - _workspace/01e_device_integration.md + - _workspace/01_ptop_architecture.md (통합) +Deadline: 20분 +Status: in_progress +``` + +#### Task 2-2: PTOP Developer — 구현 분석 +``` +Role: PTOP Developer +Task: analyze-ptop-implementation 스킬 실행 +Input: + - PTOP Lead의 01_ptop_architecture.md (참고) + - SeqAutoRunPTOP.cs, Device/* 소스 +Output: + - _workspace/02_ptop_implementation.md (상태 머신, 타이밍, 에러 처리 포함) +Dependencies: Task 2-1의 아키텍처 정의 완료 후 진행 +Deadline: 20분 +Status: blocked (대기) +``` + +#### Task 2-3: Build/DevOps Engineer — 빌드 최적화 +``` +Role: Build/DevOps Engineer +Task: optimize-ptop-build 스킬 실행 +Input: + - ILSOS_All.sln 파일 + - 현재 빌드 환경 정보 +Output: + - _workspace/04a_dependency_analysis.csv + - _workspace/04_ptop_build_optimization.md (CI/CD 파이프라인 포함) +Status: in_progress (독립적) +Deadline: 15분 +``` + +**병렬 실행 전략:** +- Task 2-1과 2-3은 독립적 → 동시 진행 +- Task 2-2는 Task 2-1 결과 참고 필요 → 순차 + +**팀 통신:** +``` +[오케스트레이터 → PTOP Lead] + "아키텍처 분석 시작. 20분 안에 01_ptop_architecture.md 완성 부탁." + +[오케스트레이터 → PTOP Developer] + "PTOP Lead의 아키텍처 분석 대기 중. 시작 신호 받으면 구현 분석 시작할 것." + +[오케스트레이터 → Build/DevOps Engineer] + "빌드 최적화 분석 시작. 15분 안에 04_ptop_build_optimization.md 완성 부탁." +``` + +### Phase 3: 중간 체크포인트 (10분) + +**T+10분 타이밍:** +``` +[오케스트레이터] + - PTOP Lead의 01_ptop_architecture.md 완성 확인 + - Build/DevOps Engineer의 진행상황 확인 + + [PTOP Developer에게 GO신호 발행] + "PTOP Lead의 아키텍처 분석 완료. 이제 구현 분석 시작해주세요." +``` + +**SendMessage 패턴:** +``` +[오케스트레이터 → PTOP Lead, PTOP Developer] + "두 분석의 연계 포인트를 확인해주세요. + - 아키텍처에서 정의한 3계층이 구현에 제대로 반영되었나? + - 의도하지 않은 구조가 있나?" +``` + +### Phase 4: 결과 수집 (5분) + +**수행 항목:** +1. 3개 분석 결과 파일 모두 완성 확인 +2. 각 팀원의 발견사항 요약 요청 (SendMessage) + +``` +[오케스트레이터 → 각 팀원] + "분석 완료되셨나요? 가장 중요한 발견 3개를 나열해주세요." + +PTOP Lead의 응답: + 1. SeqAutoRunPTOP이 메인 시퀀스이고 260605에 추가됨 + 2. PLC, Laser, OCT, CellTracker 모두 필수 디바이스 + 3. Rx.NET 메시지 흐름이 복잡 - 개선 필요 + +PTOP Developer의 응답: + 1. 상태 머신이 명확하지 않은 부분 발견 (XXX) + 2. PLC 호출 순서가 타이밍 크리티컬 + 3. OCT 스캔 시간 최적화 기회 + +Build/DevOps Engineer의 응답: + 1. Release 빌드가 Debug보다 20% 느림 + 2. AuroraDevices 중 불필요한 프로젝트 5개 발견 + 3. CI/CD 파이프라인 설계 완료 +``` + +### Phase 5: 통합 보고서 생성 (10분) + +**오케스트레이터가 종합:** + +`_workspace/00_PTOP_HARNESS_SUMMARY.md` 생성 + +```markdown +# ILSOS_PrismaticRD_PTOP 하네스 분석 — 종합 보고서 + +**분석 일시:** [날짜] +**팀원:** PTOP Lead, PTOP Developer, Build/DevOps Engineer +**총 소요시간:** ~50분 + +--- + +## Executive Summary + +ILSOS_PrismaticRD_PTOP은 [간단 설명] + +### 주요 발견 + +#### 아키텍처 (PTOP Lead) +- 3계층 구조 검증 완료 +- 핵심 컴포넌트: [리스트] +- 개선 우선순위: [P0, P1, P2] + +#### 구현 (PTOP Developer) +- 상태 머신 분석 완료 +- 성능 병목: [리스트] +- 안정성 이슈: [리스트] + +#### 빌드 (Build/DevOps Engineer) +- 빌드 성능: [현황] +- 의존성 최적화: [개선안] +- CI/CD: [설계 완료] + +--- + +## 상세 분석 + +### 1. 아키텍처 +[01_ptop_architecture.md 요약] + +### 2. 구현 +[02_ptop_implementation.md 요약] + +### 3. 빌드 & DevOps +[04_ptop_build_optimization.md 요약] + +--- + +## 종합 권장사항 + +| 우선순위 | 항목 | 담당 | 예상 공수 | +|---------|------|------|---------| +| P0 | [긴급] | PTOP Developer | ? | +| P1 | [중요] | PTOP Lead | ? | +| P2 | [개선] | Build/DevOps Engineer | ? | + +--- + +## 다음 단계 + +1. 이 보고서 검토 (팀 + 사용자) +2. P0 항목 즉시 대응 +3. P1 항목 일정 수립 +4. P2 항목 백로그 등록 + +--- + +## 부록 + +- [분석 파일 목록] +- [팀 통신 기록] +- [시간 로그] +``` + +### Phase 6: 팀 정리 및 후속 계획 + +``` +[오케스트레이터] + ✓ 팀 해제 (TeamDelete) + ✓ 최종 보고서 제출 + → 사용자에게 결과 요약 제시 + +[사용자에게 제시] + "PTOP 하네스 분석 완료. 주요 발견: + 1. 아키텍처: 3계층 구조 검증 완료 (문서: 01_ptop_architecture.md) + 2. 구현: 상태 머신 분석, 성능 병목 식별 (문서: 02_ptop_implementation.md) + 3. 빌드: 최적화 기회 발견, CI/CD 설계 완료 (문서: 04_ptop_build_optimization.md) + + 다음 단계: 보고서 검토 → P0 항목 대응" +``` + +## 데이터 전달 프로토콜 + +| 전달 객체 | 방식 | 용도 | +|----------|------|------| +| 팀원 간 작업 결과 | 파일 (_workspace/) | 아키텍처 → 구현 분석 의존성 | +| 팀원 간 실시간 소통 | SendMessage | 질문, 상충 해결, 진행상황 | +| 최종 산출물 | 통합 보고서 + 세부 파일 | 사용자 제시 | + +## 에러 핸들링 + +| 상황 | 처리 방식 | +|------|---------| +| 팀원 분석 지연 | 진행상황 확인, 추가 시간 할당 | +| 팀원 간 의견 상충 | SendMessage로 토론, 양쪽 견해 모두 기록 | +| 코드 이해 불가 | 해당 부분을 "불명확" 표시하고 진행 | +| 분석 결과 불완전 | 세부 파일에 "TODO" 표시, 최종 보고서에 명시 | + +## 성공 기준 + +- [ ] 5개 세부 분석 문서 완성 (01a~01e, 02, 04a, 04) +- [ ] 3개 팀원 모두 할당된 작업 완료 +- [ ] 통합 보고서 (00_PTOP_HARNESS_SUMMARY.md) 생성 +- [ ] 주요 발견사항 3개 이상 도출 +- [ ] 권장사항(P0/P1/P2)이 명확히 기술됨 +- [ ] 모든 분석이 코드 레퍼런스와 함께 기술됨 +- [ ] 팀원 간 의견 상충 없이 완료되거나, 상충이 있으면 명시적으로 기록됨 + +## 후속 작업 + +이 하네스는 초기 분석이며, 이후: +- P0 항목 대응 후 재검토 +- P1 항목 진행 중 코드 리뷰 (별도 하네스) +- P2 항목 백로그 관리 + +**재실행 트리거:** +- 사용자가 "PTOP 재분석", "PTOP 상태 업데이트" 요청 시 +- 주요 코드 변경 후 영향도 분석 필요 시 diff --git a/CLAUDE.md b/CLAUDE.md index e00493b..7604223 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,137 +1,24 @@ # ILSOS 프로젝트 — Claude 초기 컨텍스트 -## 프로젝트 개요 +## 프로젝트 문서 -**OC5 PilotLine RectangleTypeWelder** — 각형 배터리 용접 자동화 시스템 +@import ./docs/project-overview.md — 목표, 플랫폼, 빌드 구성, 머신 모듈 소개 -- **플랫폼**: Windows 10, .NET Framework 4.8.1, Visual Studio 2022 -- **UI 프레임워크**: WPF (Aurora 프레임워크 기반) -- **솔루션 파일**: `ILSOS_All.sln` -- **빌드 구성**: Debug|x64 / Release|x64 / Simulation|x64 / UserDefineUnit|x64 +@import ./docs/solution-structure.md — 전체 솔루션 구조 및 주요 레이어 + +@import ./docs/ptop-architecture.md — PTOP 폴더 구조, ID 정의, 3계층 아키텍처 + +@import ./docs/aurora-devices.md — 22개 하드웨어 디바이스 드라이버 목록 + +@import ./docs/build-output.md — 머신별 빌드 출력 경로 + +@import ./docs/harness-ptop.md — PTOP 분석 팀 구성 및 호출 방법 --- -## 머신 모듈 (Machines/) +## 협업 규칙 -### ILSOS_PrismaticGun -- **레이저는 고정**, 스테이지(Stage A / Stage B)가 이동하면서 용접 -- 레이저 하나를 **Stage A ↔ Stage B 간 스위칭**하여 용접 진행 -- 모션 제어: **ACS (X/Y축)** + **Ajin (Z축)** 혼합 구성 -- PLC: Mitsubishi PLC 통신 -- 시퀀스 구조: `Sequences/SubSequence/StageA/` + `Sequences/SubSequence/StageB/` 이원화 - -### ILSOS_PrismaticScanner -- **레이저 스캐너**를 통해 용접 진행 -- 레이저 인터페이스 모듈이 PrismaticGun과 다름 (`AuroraLaserScanner`) -- 단일 스테이지 구조 - -### ILSOS_PrismaticCleanLaser -- **CleanLaser** 인터페이스 모듈 사용 (PrismaticScanner과도 다름) -- 파일 구조는 PrismaticScanner와 유사하나 레이저 디바이스 인터페이스가 상이함 -- 단일 스테이지 구조 - ---- - -## 전체 솔루션 구조 - -``` -ILSOS_All.sln -├── Machines/ -│ ├── ILSOS_PrismaticGun/ ← 레이저 고정, 스테이지 이동 용접 (Stage A/B) -│ ├── ILSOS_PrismaticScanner/ ← 스캐너 레이저 용접 -│ └── ILSOS_PrismaticCleanLaser/ ← 클린 레이저 용접 -├── AuroraDevices/ ← 하드웨어 디바이스 드라이버 (22개 프로젝트) -├── AuroraComponents/ ← WPF UI 공통 컴포넌트 -├── AuroraVision/ ← 비전 시스템 (MIL 기반) -├── WeldingComponents/ ← 용접 공통 기능 (WeldingCommon, LASAGUI) -└── External/ ← Aurora 프레임워크 바이너리 -``` - ---- - -## 주요 AuroraDevices 목록 - -| 프로젝트 | 역할 | -|---------|------| -| AuroraACS | ACS SPiiPlus 모션 컨트롤러 | -| AuroraLaser | 레이저 제어 (Gun 타입) | -| AuroraLaserScanner | 레이저 스캐너 제어 | -| AuroraPLC | PLC 통신 (Mitsubishi Melsec) | -| AuroraIO | 디지털 I/O | -| AuroraHeightSensor | 높이 센서 (Keyence) | -| AuroraCellTracker | 팰릿/셀 추적 시스템 | -| AuroraChiller | 냉각 장치 제어 | -| AuroraOCT | OCT 스캐너 (Trumpf) | -| AuroraMotionBoard | 모션 보드 (Ajin) | -| AuroraDeviceCommon | 디바이스 공통 기본 클래스 | - ---- - -## ILSOS_PrismaticGun 핵심 구조 - -### 폴더 구조 -``` -ILSOS_PrismaticGun/ -├── 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 (Stage A) -│ └── StageB/ ← Load, Weld, Unload, HeightMeas (Stage B) -├── 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 - ---- - -## 아키텍처 패턴 - -``` -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 타입 - ---- - -## 빌드 출력 경로 - -| 머신 | 출력 경로 | -|------|---------| -| ILSOS_PrismaticGun | `_out_prismatic_gun/` | -| ILSOS_PrismaticScanner | `_out_prismatic_scanner/` | -| ILSOS_PrismaticCleanLaser | `_out_prismatic_cleanlaser/` | - ---- - -## 코딩 규칙 - -파일 수정 시 **반드시 `docs/CODING_RULES.md`를 먼저 확인**할 것. -특히 한글이 포함된 파일 생성/수정 시 인코딩 규칙을 따라야 함. +@import ./rules.md --- diff --git a/docs/CODING_RULES.md b/docs/CODING_RULES.md index 91bf070..4cb8017 100644 --- a/docs/CODING_RULES.md +++ b/docs/CODING_RULES.md @@ -77,16 +77,6 @@ file 파일경로.cs ## 4. 시퀀스 작성 규칙 -### Stage A / Stage B 이원 구조 유지 -- PrismaticGun에서 StageA와 StageB 시퀀스는 **항상 대칭적으로** 작성한다. -- StageA에 기능을 추가하면 StageB에도 동일하게 추가한다. - -### 시퀀스 파일 위치 -``` -Sequences/SubSequence/StageA/SeqXxx.cs ← Stage A 전용 -Sequences/SubSequence/StageB/SeqXxx.cs ← Stage B 전용 (StageA와 대칭) -``` - ### ID 등록 - 새 시퀀스/디바이스/레시피/뷰 추가 시 **반드시** `EquipDef.cs`의 해당 ID 클래스에 상수를 먼저 등록한다. @@ -120,6 +110,6 @@ Sequences/SubSequence/StageB/SeqXxx.cs ← Stage B 전용 (StageA와 대칭) | 작업 | 규칙 | |------|------| | 새 C# 파일 생성 | UTF-8 BOM + CRLF 적용 필수 | -| 새 시퀀스 추가 | EquipDef.cs ID 등록 → 파일 생성 → StageA/B 대칭 | +| 새 시퀀스 추가 | EquipDef.cs ID 등록 → 파일 생성 | | 새 디바이스 추가 | EquipDef.cs → EquipmentSetup.cs → BuildMainStatusView | | 한글 포함 수정 | 수정 후 BOM/CRLF 검증 | diff --git a/docs/aurora-devices.md b/docs/aurora-devices.md new file mode 100644 index 0000000..17a4a81 --- /dev/null +++ b/docs/aurora-devices.md @@ -0,0 +1,22 @@ +# AuroraDevices 모듈 목록 + +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) 패턴으로 느슨한 결합 유지 diff --git a/docs/build-output.md b/docs/build-output.md new file mode 100644 index 0000000..59dd825 --- /dev/null +++ b/docs/build-output.md @@ -0,0 +1,22 @@ +# 빌드 출력 경로 + +## 머신별 빌드 디렉토리 + +| 머신 모듈 | 출력 경로 | 상태 | +|---------|---------|------| +| 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`에 포함 +- 빌드 전 이전 출력물이 있으면 자동 정리 +- 각 머신 모듈은 독립적으로 빌드 가능 diff --git a/docs/harness-ptop.md b/docs/harness-ptop.md new file mode 100644 index 0000000..79cd04e --- /dev/null +++ b/docs/harness-ptop.md @@ -0,0 +1,42 @@ +# 하네스: ILSOS_PrismaticRD_PTOP 분석 팀 + +## 목표 + +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` (분석 결과 저장) + +## 변경 이력 + +| 날짜 | 변경 내용 | 대상 | 사유 | +|------|----------|------|------| +| 2026-06-16 | 초기 구성 | agents/, skills/ | PTOP이 핵심 활성 모듈 | diff --git a/docs/project-overview.md b/docs/project-overview.md new file mode 100644 index 0000000..c9ae5dc --- /dev/null +++ b/docs/project-overview.md @@ -0,0 +1,30 @@ +# 프로젝트 개요 + +## 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 인코딩 준수 diff --git a/docs/ptop-architecture.md b/docs/ptop-architecture.md new file mode 100644 index 0000000..ca1f825 --- /dev/null +++ b/docs/ptop-architecture.md @@ -0,0 +1,51 @@ +# ILSOS_PrismaticPTOP 핵심 구조 + +## 폴더 구조 및 주요 컴포넌트 + +``` +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 | + +## 아키텍처 패턴 + +``` +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 타입 diff --git a/docs/solution-structure.md b/docs/solution-structure.md new file mode 100644 index 0000000..ceaf14d --- /dev/null +++ b/docs/solution-structure.md @@ -0,0 +1,26 @@ +# 솔루션 구조 + +## 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/` 디렉토리에서 설정 확인 가능 diff --git a/rules.md b/rules.md new file mode 100644 index 0000000..1fc9ed3 --- /dev/null +++ b/rules.md @@ -0,0 +1,26 @@ +# 협업 규칙 + +## 코드 & 분석 +1. 주석과 변수명, 함수명을 맹신하지 말기 +2. 수정은 무조건 승인받기 +3. 코드 분석 및 작성은 serena를 통해서 사용 +4. 코드 수정 시 한글이 안 깨지도록 수정할 것 + +## 문서화 +5. `.md` 파일의 내용은 영문으로 작성하고 200줄 이상 넘지 않도록 작성 +6. CLAUDE.md에는 라이브러리 형태로 각각의 주제에 맞는 `.md`를 `@import`하여 여러 `.md`를 사용 +7. 작업을 완료할 시 `.md`에 필요한 부분이라고 생각되면 물어보고 `.md` 파일 갱신하기 + +## 커뮤니케이션 +8. 대답은 한국어로 간결하게 해주고 내가 상세히 설명해달라고 할 때 자세한 내용을 알려주기 +9. 질문에 대해 궁금한 사항이나 알아둬야 정확하게 해결할 수 있는 문제가 있으면 나에게 물어보기 +10. 모르는 문제가 있으면 말을 지어내지말고 모른다고 말하기 +11. 10분 이상 걸리는 작업은 중간에 어떤 부분을 하고 있는지 명시 + +## 출력 형식 +12. 출력 문구 중에 수정할 내역의 줄은 초록 화살표(→)로 표시 +13. 줄이 아닌 단어라면 주황색으로 표시 +14. 기존 수정안하는 부분은 기본 색상(흰색)으로 표시 + +## 규칙 관리 +15. 이 규칙들은 rules.md로 하여 CLAUDE.md에 import할 것