# v0.1.528 — 매핑 에디터 모듈 분리 critic SoC fix (Assigner 순수화)

- 버전: v0.1.528
- 날짜: 2026-06-03
- 다운로드: [factory00-windows-x64-v0.1.528.zip](../../downloads/factory00-windows-x64-v0.1.528.zip) (170 MB)
- 캡처: [qa-screenshots/v0.1.528/](../../qa-screenshots/v0.1.528/)

---

## 핵심 변경 (거동 0 변경)
- `PlcAddressAssigner` UnityEngine 무참조화 — `Time.realtimeSinceStartupAsDouble`를 뷰(Panel)가 주입 (AssignAuto/AssignManual/Write에 double ts 인자)
  - 서비스 계층이 Factory00 + System 만 의존 → UI/엔진 결합 제거, SoC 완성 (사용자 "객체지향 분리" 지시 부합)
- 죽은 필드 `_modeBtn` 제거 (지역 modeBtn 클로저로 충분)
- critic 중대#2(Cancel ReleasePointer 가드)는 오판 — PortDragController Cancel 핸들러에 HasPointerCapture 가드 이미 존재
## 모듈 격리 최종 (v0.1.527~528)
- `PlcTabClassifier`(분류 SSOT) / `PlcAddressAssigner`(할당 write — UI·엔진 무참조 순수 서비스) / `PortDragController`(드래그) / `PlcAddressMappingPanel`(뷰)
- 의존방향 단방향, 순환 없음. 한 모듈 버그 = 모듈 단위 격리·revert
## 영향 파일
- `Assets/Scripts/Plc/PlcAddressAssigner.cs` (ts 주입 + UnityEngine using 제거)
- `Assets/Scripts/Plc/PlcAddressMappingPanel.cs` (ts 전달 + _modeBtn 제거)
## 체크포인트
- 빌드 archive 보존(518~527 롤백 가능). 본 빌드 = C6 에디터 모듈화 + SoC 마감
- 거동 보존 리팩토링 (C6a~C6c-a 동작 동일). 드래그·수동 UI = Stage 2 사용자 PC
