# ADR-0010 — Phase 3 MVP 완성 선언

상태: **Accepted (2026-05-08, 야간 자율 사이클 4)**

---

## 결정

Phase 3 MVP의 **라이선스/기능 플래그 + Modbus TCP 스켈레톤 + 시퀀스 편집기 + 보안 검수 + 60fps/WebGL 평가 ADR + 자동 검증**을 완성으로 선언한다.

ADR-0006에서 정의한 자율 진행 가능 영역(A·B·C·E·F·D) 모두 충족.
사용자 PC GUI에서만 가능한 시각 시연·UX 평가는 Phase 3 외 (사용자 검증 영역).

## 완성 기준 충족 (체크리스트)

### A. 라이선스 기능 플래그

- [x] `LicenseTier` enum (Free=0, Pro=1, Enterprise=2)
- [x] `LicenseManager` PlayerPrefs 영속 + InjectForTest + OnTierChanged 콜백
- [x] `FeatureGate` static API: `IsEnabled`, `Require(out reason)`, `Check(callSite)`
- [x] FeatureId 16종 분류 (Free 4 / Pro 6 / Enterprise 6)
- [x] 단위 테스트 12 PASS

### B. Modbus TCP 어댑터 스켈레톤

- [x] `ModbusTcpAdapter` IPlcAdapter 구현 (라이브러리 의존 없음)
- [x] `ModbusAddress` parse: C/I/HR/IR + ToString
- [x] coil/discrete input/holding register/input register R/W
- [x] OnBitChanged 콜백 + 같은 값 차단
- [x] `ModbusMappingTable` JSON 직렬화 (bits + words + adapter 설정)
- [x] 단위 테스트 14 PASS

### C. 시퀀스 편집기 EditorWindow

- [x] `SequenceEditorWindow` (`Tools → factory00 → Sequence Editor (Pro)`)
- [x] 좌 시퀀스 목록 + 우 Step 편집 split
- [x] Step add/remove + action change (StartMotor/StopMotor/SetSpeed)
- [x] 시간 막대 시각화 + 그리드 라인 + 액션별 색상 marker
- [x] License gate notice (Pro 필수 알림)
- [x] Load/Save .sequence.json

### D. WebGL 빌드 평가 (Proposed → Phase 4 보류)

- [x] ADR-0009 작성: glTFast WebGL 호환 / 메모리 한도 / 정체성 충돌 분석
- [x] Phase 4 영업 데모 모드 후보 등록

### E. 보안 검수

- [x] ADR-0007: 6영역 검수 결과
- [x] BasicAuth + path traversal 5곳 + size limit + timing-safe 모두 보호
- [x] S1~S4 미확보 항목 Phase 4 입력 등록

### F. 60fps 성능 예산

- [x] ADR-0008: 16.67ms 1프레임 분배표 + SimulationLoop 추정 부하
- [x] 옵션 A/B/D 자율 적용 후보 식별
- [x] DOTS C 임계점 결정 (Phase 4)

### G. 자동 검증

- [x] **Phase 3 통합 테스트 21/21 PASS** (`Phase3IntegrationTest.cs`)
- [x] **Unit Tests 82/82 PASS** (Phase 1 20 + Phase 2 20 + Phase 3 26)
- [x] Unity batch -quit 컴파일 9차 누적 클린 (error CS 0 / warning CS 0)
- [x] 누적 통합 테스트 **42/42 PASS** (Phase 1 11 + Phase 2 10 + Phase 3 21)

### H. 협업자 자료

- [x] ADR-0006 Phase 3 범위
- [x] ADR-0007 보안 검수
- [x] ADR-0008 60fps 성능 예산
- [x] ADR-0009 WebGL 평가
- [x] **ADR-0010 Phase 3 완성 (이 문서)**
- [ ] README Phase 3 섹션 (다음 사이클)
- [ ] 보고 페이지 + /home 랜딩 Phase 3 행 (다음 사이클)
- [ ] PDF v3 재생성 (다음 사이클)
- [ ] 영어 시연 시나리오 (다음 사이클)

## 메트릭 누적 비교

| 지표 | Phase 1 | Phase 2 | **Phase 3** |
|---|---|---|---|
| 총 코드 라인 (MVP 추가분) | ~1500 | +800 | **+1100** |
| 컴파일 검증 차수 | 6차 | 7차 | **9차** (누적 클린) |
| Unit Tests | 20/20 | 40/40 | **82/82** |
| 통합 테스트 | 11/11 | 10/10 | **21/21** |
| 통합 누적 | 11/11 | 21/21 | **42/42** |
| 신규 시스템 | 5종 | 6종 | **6종** (License/FeatureGate/ModbusTcp/Mapping/SequenceEditor/Performance) |
| ADR | 0001~0003+0001cad+0002cad+0001ui | +0004+0005 | **+0006~0010** (5건) |

## Phase 3 외 (사용자 PC GUI 검증)

- 시퀀스 편집기 사용성 (드래그·다중 선택은 Phase 4)
- 실 PLC 장비 연결 (NModbus / Easy-Modbus 라이브러리 통합 — Phase 4)
- WebGL 실 빌드 검증 (Phase 4)
- 60fps 실 측정 (Profiler — 사용자 PC)
- 라이선스 키 발급 시스템 (서버 백엔드 — Phase 4)
- DOTS 마이그레이션 (Phase 4 측정 결과 의존)

## Phase 4 입력 (Phase 3 사용자 검증 통과 후)

1. **실 라이브러리 통합** — NModbus / Easy-Modbus 평가 + 라이선스 검토
2. **라이선스 키 백엔드** — 자체 호스팅 또는 LemonSqueezy / Paddle
3. **시퀀스 편집기 UX** — 드래그 + 다중 선택 + Undo/Redo
4. **노드 그래프 편집** — 양방향 sync (PoC → 실용)
5. **첫 유료 고객 + 매출** — 파일럿 5사 → 유료 전환 1~3사
6. **영어 마케팅 페이지** — 영어권 BD 채널 활성화
7. **산업별 케이스 패키지** — 스마트팩토리 / 자동차 / 반도체

## 사용자 야간 자율 진행 흐름

- 2026-05-08 00:42 사용자: "phase 3 자율 진행. 나는 이제 잔다... 밤새 자율진행 가능하도록"
- 사이클 1 (~25분): ADR-0006 + License/FeatureGate + Unit 66 PASS
- 사이클 2 (~25분): ModbusTcp + 보안/성능/WebGL ADR + Unit 82 PASS
- 사이클 3 (~25분): SequenceEditorWindow + 컴파일 9차 클린 (warning 2→0)
- **사이클 4 (현재)**: Phase 3 통합 21/21 + ADR-0010 봉인
- 사이클 5+ (예정): README + /home Phase 3 행 + PDF v3 + 영어 시연

## 참고

- ADR-0001~0009 — 기존 + Phase 3 신규 5건
- `wiki/journal/2026-05-08.md` — 야간 자율 진행 기록
