# Release Notes — v0.1.151 (21st Stable Seal · Photosensor P3)

> **봉인일**: 2026-05-12
> **사이클 범위**: v0.1.149 ~ v0.1.151 (3 사이클)
> **봉인 zip**: `downloads/stable/factory00-windows-x64-v0.1.151-photosensor-p3-stable.zip` (51 MB)
> **이전 stable**: v0.1.148 (20th — Photosensor P1+P2)

## 한 줄 요약

직접반사형 포토센서 P3 단계 완성 — JSON Save/Load + Modbus 코일 sync + 메이커 프리셋 3종. 포토센서 모듈 P1+P2+P3 전체 spec 구현 완료.

## 사이클별

| 사이클 | 단계 | 핵심 |
|---|---|---|
| v0.1.149 | P3.1 SensorPersistence | Part.Sensors `[NonSerialized]` 해제 (JsonUtility 자동) + LoadProject Sensors 복원 + RegisterSensor 재호출 + "(저장 불가)" UX 안내 제거 |
| v0.1.150 | P3.2 Modbus 코일 | PhotoSensorComponent.ModbusCoil int + SensorStateChangedEvent.ModbusCoil + SensorPlcBridge 신규 (Subscribe -> WriteBit) + Inspector "Modbus 코일" row |
| v0.1.151 | P3.3 메이커 프리셋 | PhotoSensorPresets static (OMRON E3Z / SICK GR / Keyence FU) + Inspector "프리셋" 드롭다운 (적용 시 거리·각도·딜레이 일괄 갱신) |

## 신규 산출물

### 신규 파일
- `Assets/Scripts/PLC/SensorPlcBridge.cs` (~50 라인)
- `Assets/Scripts/Sensors/PhotoSensorPresets.cs` (~80 라인)

### 수정 파일
- `Assets/Scripts/Core/Part.cs` — Sensors `[NonSerialized]` 해제
- `Assets/Scripts/Events/SensorStateChangedEvent.cs` — ModbusCoil 필드 추가
- `Assets/Scripts/Sensors/PhotoSensorComponent.cs` — ModbusCoil 필드 + Publish ModbusCoil 전달
- `Assets/Scripts/Game/Factory00Bootstrap.cs` — _sensorPlcBridge 멤버 + SensorPlcBridge 부착 + LoadProject Sensors 복원 + SensorPresetDropdown / "Modbus 코일" row + 저장 안내 제거

## 사용자 영향

| 영역 | 변경 | 효과 |
|---|---|---|
| 프로젝트 저장/로드 | Part.Sensors 자동 직렬화 + 로드 시 SensorPollingDriver 재등록 | 센서 영구 보존 (이전 "(저장 불가 P3 예정)" 제거) |
| PLC 연동 | ModbusCoil 설정 시 ContactType 변화 -> Modbus.WriteBit(COIL:N) 자동 | 모터-센서-PLC 통합 시뮬 가능 |
| 메이커 프리셋 | Inspector 드롭다운 1 click 으로 거리·각도·딜레이 일괄 적용 | 비코딩 사용자가 사양서 참고치 즉시 적용 |

## 알려진 한계

- 메이커 프리셋 3종 (OMRON E3Z / SICK GR / Keyence FU) — 일반적 사양서 참고치이며, 모델별 1:1 정확도는 미흡. 후속 polish 사이클에서 메이커별 모델 세분화 가능.
- Modbus 연결 안 됨 상태에서 WriteBit 시도 시 LogWarning (Modbus.IsConnected 가드).
- 드래그 핸들 (spec §6 뷰포트 LocalPosition 조정) — P3+ polish 또는 후속.

## critic 자체 검토

| 등급 | 건수 |
|---|---|
| 치명 | 0 |
| 중대 | 0 |
| 중간 | 2 — 메이커 프리셋 모델별 정확도 / 드래그 핸들 부재 |
| 사소 | 3 — PhotoSensorComponent.ModbusCoil 라벨 "Modbus 코일" 단위 (m/mm 정책처럼 협업자 요청 시 spec §11 추가) |

판정: **PASS** — 21st stable seal 봉인.

## 외부 URL

- 캡처: `os-file-server.tail2b816d.ts.net/qa-screenshots/v0.1.151/presets.png`
- 빌드 zip: `os-file-server.tail2b816d.ts.net/downloads/factory00-windows-x64-v0.1.151.zip`
- 봉인 zip: `os-file-server.tail2b816d.ts.net/downloads/stable/factory00-windows-x64-v0.1.151-photosensor-p3-stable.zip`
- 빌드 다운로드 SSOT: `os-file-server.tail2b816d.ts.net/build-downloads.html`

## 포토센서 모듈 전체 (v0.1.143~v0.1.151 · 9 사이클) 종합

P1.1 (데이터) -> P1.2 (폴러) -> P1.3 (Inspector) -> critic fix -> P2 (시각화) -> P2 cleanup -> P3.1 (Save/Load) -> P3.2 (Modbus) -> P3.3 (프리셋)

spec `wiki/topics/specs/2026-05-12-photosensor-direct-reflection.md` (362라인) 의 §1~§11 모두 구현.

## 다음 사이클 후보

- 서보 구동 축 spec (별도 354라인) 진입 — 회전형/직선형 서보 모터 + RPM·정격토크·리턴값
- 또는 polish: 드래그 핸들 / NC 색 반전 별도 캡처 검증 / 메이커 모델 세분화 / spec §11 메이커 프리셋 항목 wiki 갱신
