# ADR-0020 — 결제·자동발급 시스템 일체 폐기 + 아카이빙

상태: **Accepted (2026-05-08, 사용자 명시 결정)**

---

## 결정

**결제는 직접 송금받는다. 자동 결제·자동 라이선스 키 발급 백엔드 시스템 일체 폐기 + 아카이빙. 관련 코드·테스트·문서 유지보수 비용 차단.**

## 사용자 명시

- 2026-05-08: "결제는 직접 송금받는다. 연관 시스템은 일체 폐기하고 아카이빙하라. 관련 요소로 불필요한 개발코스트 발생하지 않도록 하라"

## 결정 배경

- B12 (법인 구조) 결정 보류 — Founding Team 신뢰관계 기반 운영
- B11 (결제 게이트웨이 비용) 검토 결과 사업자등록증 + PG 계약 + Lean Team 부담 증가
- 첫 매출 5~10건은 송금 + 수동 키 발급(OfflineKeyVerifier CLI)으로 충분
- 자동화는 매출 규모 확대 시점(20+ seat 도달 후) 재검토

## 폐기 (archive 처리)

위치: `archive/2026-05-08-payment-system-discard/`

### 코드 5종 (Assets/Scripts/License/)

| 파일 | 사이클 | 사유 |
|---|---|---|
| IKeyIssuanceBackend.cs | 14 | 백엔드 발급 인터페이스 — 자동 발급 폐기 |
| MockKeyIssuanceBackend.cs | 14 | 메모리 백엔드 mock — 자동 발급 의존 |
| LicenseKeyManager.cs | 14 | PurchaseAndApply 흐름 — 자동 결제 의존 |
| RestKeyIssuanceBackend.cs | 18 | REST 어댑터 — 결제 게이트웨이 통합 의존 |
| ProPlusPricingCalculator.cs | 14 | 가격 시뮬 — 단가 협상은 사용자 직접 |

### 통합 테스트 1종 (Assets/Editor/)

| 파일 | 사유 |
|---|---|
| Phase6IntegrationTest.cs (16/16 PASS) | 위 5 코드 의존, 누적 통합 테스트에서 분리 |

### 단위 테스트 19종 (UnitTests.cs 내 메서드)

- Test_KeyBackend_issueAndRevoke / disconnected / listByCustomer (3)
- Test_LicenseKeyManager_purchaseFlow / offlineFallback (2)
- Test_ProPlusPricing_lowUsage / heavyUsage / seatScaling (3)
- Test_RestBackend_invalidUrlThrows / disconnectedRejects / implementsInterface (3)
- Test_Pricing_payPerUseBoundary / annualMidRange / perpetualThreshold / intensityBoundary / seatClampToOne / zeroPartsHalfIntensity / rationaleNotEmpty / nullInputFallback (8)

### ADR 3건 (wiki/topics/architecture/archive/)

| ADR | 사유 |
|---|---|
| 0016 Phase 6 범위 | 라이선스 키 백엔드 추상 + 가격 시뮬 범위 — 폐기 결정 무효화 |
| 0017 Phase 6 MVP 완성 | 통합 16/16 + Pro Plus pricing 봉인 — 폐기 |
| 0018 Phase 7 범위 | REST 어댑터 + Pricing sensitivity + 시연 ja/de + 보안 강화 → 시연 ja/de + 보안 강화만 살림, 결제 부분 폐기 |

## 보존 (사용자 직접 송금 모델 호환)

| 파일 | 보존 사유 |
|---|---|
| LicenseTier.cs (Free/Pro/Enterprise enum) | tier 구조 자체는 유지 — 사용자가 송금 받고 수동 SetTier |
| LicenseManager.cs (PlayerPrefs 영속) | tier 활성화 인터페이스 |
| FeatureGate.cs (16 FeatureId + RequireTier) | 기능 게이트 — 결제 시스템과 무관 |
| OfflineKeyVerifier.cs (HMAC-SHA256) | **CLI 키 발급 도구로 활용** — 송금 확인 후 사용자가 직접 키 발급 후 고객에게 전달 |
| ILicenseKeyVerifier.cs (인터페이스) | OfflineKeyVerifier가 구현 |

## 새 운영 흐름 (수동 송금 모델)

```
1. BD Lead가 고객과 단가 협상 (시연 시나리오 ko/en/ja/de 가격표 참고)
2. 고객이 사용자 계좌로 송금 (한국 KRW · 일본 JPY · 독일 EUR)
3. 사용자가 송금 확인
4. 사용자가 OfflineKeyVerifier CLI로 라이선스 키 발급:
   - tier (Free/Pro/Enterprise)
   - expiresUtc (구독 기간)
   - holderEmail (고객 이메일)
   - HMAC secret (.factory00-license-secret)
   → TIER|EXPIRES|HOLDER|HMAC 형식 키 출력
5. 사용자가 이메일로 키 전달
6. 고객이 Inspector → License 메뉴에 키 입력 → LicenseManager.ApplyKey() 활성화
```

## 메트릭 영향

| 지표 | 폐기 전 | 폐기 후 |
|---|---|---|
| Unit Tests | 177/177 | **158/158** (-19) |
| 통합 테스트 누적 | 94/94 | **78/78** (-16, Phase 6 통합 폐기) |
| Phase 진행 | Phase 7-A 진행 중 (3/4 자율) | **Phase 5 봉인 + 송금 모델 채택** |
| ADR 활성 | 18건 | **17건** (0016/0017/0018 archive, 0019 Open-Core, 0020 본 ADR 추가) |

## 후속 작업 (자율 진행)

- [x] 코드 + 테스트 + 통합 테스트 + ADR archive 이동 완료
- [x] UnitTests.cs 19 메서드 호출 + 정의 제거
- [ ] Unity batch 컴파일 검증 (사이클 22 진행 중)
- [ ] OfflineKeyVerifier CLI 발급 도구 추가 (wiki/cli/issue-license-key.cs 또는 별도 EditorWindow)
- [ ] index.html R2 박스 + 4 home 페이지 Phase 6/7-A milestone 제거
- [ ] INDEX.md 메트릭 갱신 + Phase 6/7 archive 표기
- [ ] PDF 재생성

## Phase 5 이후 활성 자율 영역 (남은 영역)

- Phase 7-C (시연 시나리오 ja/de) — **유지**, BD 자료 그대로 사용
- Phase 7-D (보안 강화: server.py rate limit + HMAC env var) — **유지**, 결제와 무관
- A2 (가격 카드 KRW 환산) — **유지**, 송금 단가 표기용
- A3 (README 4언어) — **유지**
- A5 (단위 테스트 추가, 단 결제 관련 제외) — **부분 유지**
- A6 (통합 테스트 결과 외부 노출) — **유지**
- B9 (WebGL 빌드 시도) — **유지**, 영업 데모용

## 참고

- LICENSE (Open-Core 모델 — Pro/Enterprise 상용 라이선스 운영 방식만 변경, 모델 자체는 유지)
- ADR-0019 Open-Core 라이선스
- archive/2026-05-08-payment-system-discard/README.md (archive 디렉토리 안내)
