# DSN-05 · Fair Value 산정 흐름 (F2/F3) — 디자인 명세

> 본 문서는 `design/05_fair_value.html`의 명세이다. F2(Fair Value 산정) + F3(협상 조정 → 권고 인수가) 두 알고리즘의 시각화 화면.

## 1. 목적

| 항목 | 값 |
|---|---|
| 화면 ID | DSN-05 / fair-value |
| 연계 알고리즘 | F2 (확률가중 NPV → Fair Value), F3 (위험차감/Earn-out → 권고 인수가) |
| 1차 사용자 | Bobot 인수팀 리드, CFO |
| 2차 사용자 | 보험계리사 (방법론 검증), 법무 (LOI 초안 검토) |
| 핵심 결정 | "Fair Value(38.4억)에서 어떤 협상 변수로 어떻게 권고 인수가(34.2억)에 도달했는가?" |
| 첫 0.5초 인지 목표 | 4단계 stepper의 마지막 "권고 인수가" 값 |

## 2. 화면 영역

| 영역 | 컴포넌트 | 비고 |
|---|---|---|
| Sidebar | DSN-01과 동일 ("Fair Value 산정 흐름" active) | |
| Topbar | breadcrumb + ← Dashboard / 방법론 부속서 / LOI 초안 생성 | "방법론 부속서"는 04_FairValue_방법론_부속서.md로 이동 |
| Stage stepper | 4단계 가로 스테퍼: 6L NPV → Fair Value → 조정 → 최종 | |
| Waterfall card | 6 Layer 6행 + 합계 + 확률가중 + Fair Value + 위험차감 3행 + 최종 | Layer 6 spotlight (Bobot 고유) |
| Negotiation panel | 6 인풋 (슬라이더 2 + 셀렉트 + 숫자 + 텍스트 2) | 즉시 재계산 |
| Recommendation band | 가격 범위 트랙 + Walk-away/Top-up/Hard Floor·Ceiling | |
| 7 보호장치 | 체크리스트 7행 | Fair Value 공시는 v0 단계에서 ⚠ |
| Final card | 권고 인수가 + 범위 + LOI 생성 버튼 | gold gradient hero |
| Doc note | 시안 안내 |

## 3. 데이터 계약

```jsonc
// GET /api/v1/evaluation/:book_id/fair_value
{
  "book_id": "BK-2026-014",
  "model_version": "v0.4",

  "f2_breakdown": {
    "layers": [
      {"id":1,"label":"Layer 1 — 유지율 NPV",            "value_kr": 2_680_000_000, "tone":"pos","spotlight":false},
      {"id":2,"label":"Layer 2 — 부당승환 차감",           "value_kr": -240_000_000,  "tone":"neg","spotlight":false},
      {"id":3,"label":"Layer 3 — 설계사 의존도 (분산 가산)","value_kr": 320_000_000,   "tone":"pos","spotlight":false},
      {"id":4,"label":"Layer 4 — 운영효율 Lift",            "value_kr": 340_000_000,   "tone":"pos","spotlight":false},
      {"id":5,"label":"Layer 5 — 통합비용",                 "value_kr": -580_000_000,  "tone":"neg","spotlight":false},
      {"id":6,"label":"Layer 6 — 부활 풀 NPV",              "value_kr": 970_000_000,   "tone":"pos","spotlight":true}
    ],
    "subtotal_npv_kr": 4_250_000_000,         // 42.5억
    "scenario_prob_weight_kr": -410_000_000,  // 시나리오 확률가중 차감
    "fair_value_kr": 3_840_000_000            // 38.4억
  },

  "f3_adjustments": [
    {"key":"data_confidence_discount","label":"위험 차감 — 데이터 신뢰도 (5%)","value_kr": -190_000_000},
    {"key":"rule_1200_uncertainty",   "label":"위험 차감 — 1200% 룰 시점 불확실성","value_kr": -80_000_000},
    {"key":"earn_out_split",          "label":"Earn-out 분리 (조건부)","value_kr": -150_000_000}
  ],
  "recommended_price_kr": 3_420_000_000,        // 34.2억
  "recommended_price_band_kr": [2_820_000_000, 4_200_000_000],

  "negotiation_inputs": {
    "risk_discount_pct": 0.05,
    "earn_out_pct": 0.15,
    "deal_structure": "stock",     // stock | asset | hybrid
    "installment_months": 12,
    "walk_away_kr": 2_200_000_000, // 22억
    "top_up_kr": 4_200_000_000,    // 42억
    "hard_floor_kr": 1_800_000_000,
    "hard_ceiling_kr": 5_000_000_000  // Stage 0 한도
  },

  "consumer_protection_checklist": [
    {"id":1,"label":"가입자 통지 (30일)","status":"done","note":"공시 + 개별 통지 자동화"},
    {"id":2,"label":"설계사 권리 보호","status":"done","note":"분급수당 승계 약관"},
    {"id":3,"label":"부당승환 모니터링","status":"done","note":"Layer 2 자동 + 분기 리포트"},
    {"id":4,"label":"Fair Value 공시","status":"warn","note":"v0 모델 — 외부 검증 후 공시"},
    {"id":5,"label":"분쟁조정 약정","status":"done"},
    {"id":6,"label":"데이터 보호","status":"done"},
    {"id":7,"label":"단계적 운영","status":"done","note":"Stage A/B/C"}
  ],
  "checklist_passed": 6, "checklist_total": 7
}
```

## 4. 워터폴 시각 룰

- 양 (pos) → 그린 / 가운데 축 오른쪽으로 늘어남
- 음 (neg) → 오렌지 / 가운데 축 왼쪽으로 늘어남
- 합계 (subtotal/Fair Value/Final) → 블루 (가운데부터 우측으로) + 색상 박스 강조
- Layer 6 → gold (Bobot 고유) + 별표 + 노란 텍스트 강조
- bar 폭 = abs(value) / max_abs_value × 50% (반쪽 기준)

## 5. 협상 인풋 → 재계산 룰

| 인풋 | 영향 |
|---|---|
| `risk_discount_pct` | Fair Value × (1 − pct) 의 차감 |
| `earn_out_pct` | 권고 인수가의 일부를 Earn-out으로 분리 (선지급 감소) |
| `deal_structure` | Stock(기본)/Asset(분리, +위험)/Hybrid(가중) |
| `installment_months` | 0 = 일시불 / 12+ = 분급. 분급 시 WACC 할인 추가 |
| `walk_away_kr`, `top_up_kr` | 권고 범위 시각화에만 사용 — 알림 임계값 |

슬라이더·인풋 변경 → debounce 300ms → POST `/api/v1/evaluation/:book_id/fair_value/recompute` → 워터폴/Final 카드 갱신.

## 6. 권고 가격 범위 띠

- 0~50억 가로 트랙
- 28~42억 = 녹색 OK 영역 (즉시 진행 가능)
- 22억(Walk-away) / 42억(Top-up) = 노란 경계
- 18억(Hard Floor) / 50억(Hard Ceiling Stage 0) = 빨간 경계
- 권고 마커 = 블루 핀 위치 = recommended_price_kr

## 7. 7 소비자 보호 장치

마스터 보고서 §3.3 Track B 정의. 모두 done 또는 warn까지 허용 (warn은 v0 단계). 1개라도 fail이면 LOI 생성 버튼 비활성.

| 상태 | 색상 | LOI 영향 |
|---|---|---|
| done | 그린 체크 | 진행 가능 |
| warn | 노란 체크 | 조건부 진행 (방법론 부속서 첨부 필수) |
| fail | 빨간 X | LOI 생성 차단 |

## 8. 상호작용

| 트리거 | 동작 |
|---|---|
| 슬라이더 드래그 | debounce 300ms → 재계산 fetch |
| Walk-away/Top-up 입력 | 가격 띠의 빨간/노란 경계 즉시 갱신 |
| 워터폴 행 hover | 해당 행 강조 + 우측 툴팁 (산출 공식·가정) |
| 보호장치 행 클릭 | 모달 → 해당 항목 상세 약관·증빙 |
| LOI 초안 생성 클릭 | 1) 모달: 권고 인수가 확정 / 2) 03_보험사_TermSheet 자동 생성 / 3) 법무 검토 워크플로 |
| "방법론 부속서" 버튼 | 04_FairValue_방법론_부속서.md 새 탭 열기 |
| 체크리스트 1개라도 fail | LOI 생성 버튼 비활성 + 빨간 경고 배너 |

## 9. 가독성·접근성

- ✅ Stepper: 단계명 + 값 + 색상 (3중 표기)
- ✅ 워터폴: bar 색상 + 부호 + 숫자 폰트 굵기 (3중 표기)
- ✅ 슬라이더 옆에 숫자 + hint 동시 (값 가독성)
- ✅ 권고 가격 띠: 색상 + 라벨 + threshold-tag 3중
- ✅ 체크리스트: 체크 모양 + 텍스트 + small 메모 3중

## 10. 디자인 토큰 (DSN-01 공유 + 신규 1개)

```css
--gold:      #F08A3E;   /* 최종 권고가 강조색 */
--gold-soft: #FFF4E5;
```

향후 brand-dna에 `attention.gold` 추가 권장.

## 11. 핸드오프 체크리스트

- [ ] §3 응답 스키마 OpenAPI
- [ ] 재계산 API는 idempotent (`POST /recompute` 같은 입력 → 같은 출력)
- [ ] LOI 초안 생성은 별도 비동기 잡 (PDF 템플릿 + 권고가 변수 치환)
- [ ] Fair Value v0 → v1 승격 시 #4 보호장치 자동 ✓ 전환
- [ ] 협상 인풋은 사용자별 프로필에 저장 (다음 평가 시 default)
- [ ] LOI 초안 다운로드는 워터마크 + audit log
- [ ] Hard Floor/Ceiling 경계는 환경변수 기반 (Stage 0/1/2 별 다름)
