# component-scene-inspector-ux 사전 영향도 분석 (구현 대기)

날짜: 2026-05-22 (v0.1.290 시점)
spec: 협업자 r072 `4344939` — handoff-pm-action 발췌
상태: **사용자 명시 후 P1 진입** (큰 구조 변경, ~300라인)

## 1. spec 의도

handoff-pm-action.html 발췌:
> 컴포넌트 씬 Gizmo + 부품 리스트 자식 노드 + Inspector 전환 UX (~300라인, 4종세트 완비)

3가지 핵심:
1. **컴포넌트 씬 Gizmo** — 각 Sensor/Actuator/등에 씬 Gizmo (PhotoSensorVisualizer 패턴 일반화)
2. **부품 리스트 자식 노드** — Part 안 컴포넌트가 PartList 트리에 자식 노드로 표시
3. **Inspector 전환 UX** — 자식 노드 클릭 시 그 컴포넌트만 Inspector 카드 표시

## 2. codebase 현재 구조

### 2.1 Part 안 컴포넌트 (8 종)

`Assets/Scripts/Core/Part.cs:67-88`:

```csharp
List<PhotoSensorComponent>      Sensors            // 광센서
List<ServoAxisActuator>          Actuators          // 서보축
List<RotaryActuatorActuator>     RotaryActuators    // 회전 액추에이터
List<PneumaticCylinderActuator>  PneumaticActuators // 공압
List<VacuumEjectorActuator>      VacuumEjectors     // 진공 이젝터
List<VacuumUnitActuator>         VacuumUnits        // 진공 유닛
List<AirBlowerActuator>          AirBlowers         // 에어 블로어
List<TowerLampComponent>         TowerLamps         // 타워램프 (v0.1.279)
```

총 8 종. spec "4종세트 완비" 의도가 무엇인지 모호 — Sensor 4 + Actuator 4? 또는 4 종만 우선?

### 2.2 PartList 현재 패턴

- `_visibleParts: List<Part>` (flat 리스트, 자식 hierarchy 표시 X)
- `_partList: ListView` (Unity UI Toolkit, flat itemsSource)
- 자식 부품 (parentId 있는 Part) 은 v0.1.001 hierarchy 패턴으로 들여쓰기 표시 가능
- 컴포넌트는 PartList 에 표시 안 됨 (Inspector 카드 안 에만 표시)

### 2.3 Inspector RenderInspector 현재 패턴

`RenderInspector(Part p)` — Part 1개 받아 카드 8 종 + Transform + Gizmo 모드 등 전부 한 화면에 표시. 약 200라인 분기.

### 2.4 Visualizer 현재 패턴

- `PhotoSensorVisualizer.cs` — 광센서 와이어프레임 cone 표시
- 다른 7 종은 별도 Visualizer 없음 (Inspector 카드만)

## 3. spec ↔ codebase mismatch 표

| spec 가정 | codebase 실제 | 처리 |
|---|---|---|
| 컴포넌트별 씬 Gizmo (8 종) | PhotoSensorVisualizer 1종만 | 7 신규 Visualizer 작성 또는 공통 ComponentGizmo 추상화 |
| PartList 자식 노드 | flat _visibleParts | hierarchy ListView 또는 다른 widget (TreeView) — 큰 변경 |
| Inspector 전환 | Part 단위 1 카드 | Part vs 컴포넌트 selection 분기 + 컴포넌트별 카드 — selection SSOT 변경 |
| "4종세트 완비" 의미 | 8 컴포넌트 종류 | spec brief 명확화 필요 |

## 4. 위험 분석

### 치명 위험

1. **Selection SSOT 변경** — 현재 `_selectedPart: Part` + `_selectedParts: List<Part>`. 컴포넌트 selection 추가 시:
   - 옵션 A: `_selectedComponent: object` (Part 외 컴포넌트 단일 선택 추가) — 회귀 적음
   - 옵션 B: Part / Component 통합 selection — 회귀 큼
   - **권장 A**

2. **PartList Tree 변환** — flat ListView → Tree 변환은 Unity UI Toolkit ListView 한계. TreeView 또는 펼치기/접기 hierarchy 구현 큰 변경 (~150라인).

### 중대 위험

3. **컴포넌트 Visualizer 신규 7종** — 각 컴포넌트별 시각 표시 (서보 축 / 공압 실린더 / 진공 컵 / 회전 / 타워램프 / 등). PhotoSensorVisualizer 패턴 재사용 가능 — ~100라인.

4. **Inspector 분기** — Part 선택 vs Component 선택 시 카드 다르게 표시. RenderInspector 분기 추가 — ~50라인.

5. **selection 전환 UX** — 부품 리스트 자식 노드 click → 컴포넌트 선택 → Inspector 갱신. 기존 ListView SelectionChanged + 자식 노드 클릭 path 필요.

## 5. 예상 사이클 분할

| 사이클 | 범위 | 라인 |
|---|---|---|
| P1.1 | spec brief import + 의도 확정 | docs |
| P1.2 | `_selectedComponent` SSOT 추가 + Bootstrap selection 분기 | ~50 |
| P1.3 | PartList 자식 노드 표시 (펼치기/접기 hierarchy) | ~80 |
| P1.4 | 자식 노드 click → component selection 갱신 | ~30 |
| P1.5 | RenderInspector 분기 (Part vs Component) | ~50 |
| P1.6 | 컴포넌트 Gizmo 7 종 신규 Visualizer (또는 공통 ComponentGizmo) | ~100 |
| P1.7 | critic 회고 + 회귀 fix | ~30 |

**합계 ~340라인 / 6 사이클** — cycle-critic-review.md 1000라인 한도 안. 단일 사이클 X — 사이클 분할 의무.

## 6. 협업자 brief 부재 처리

spec brief.md 가 factory00 워크스페이스에 미반영. 사용자/협업자 진행 필요:

- 협업자 repo `component-scene-inspector-ux-brief.md` 를 factory00 wiki/topics/specs/ 에 import
- 또는 handoff PM action 추가 발췌 (spec 의도 4종세트 완비 의미 명확화)

## 7. 사전 검토 결정

- ✅ codebase 8 컴포넌트 SSOT 확인
- ✅ PhotoSensorVisualizer 재사용 가능 패턴
- ⚠ Selection SSOT 옵션 A 권장 — 사용자 확정 필요
- ⚠ "4종세트" 의도 — 협업자/사용자 명확화 필요
- ❌ spec brief 부재 → 진입 차단

**판정: 사용자 명시 대기**. 명시 시 P1.1 spec import 부터 시작.

---

본 분석은 자율 모드에서 구현 진입 차단된 마지막 큰 spec 사전 영향도 평가. studio-hamburger-lnb 와 함께 사용자 명시 시 즉시 활용 가능.

## 자율 모드 진행 산출물 요약

| 항목 | 상태 |
|---|---|
| panel-resize / tower-lamp / edit-copy-cut-paste | ✅ 100% |
| studio-hamburger-lnb | 사전 분석 ✅ (~460라인 / 6 사이클) |
| **component-scene-inspector-ux** | **사전 분석 ✅ (~340라인 / 6 사이클)** |
| MX Component | SDK 도착 대기 |

자율 모드에서 자율 구현 가능 큐 완전 소진. 다음 사이클 = 사용자 명시 대기 또는 polling.
