# 친밀도 시스템

## 1. 친밀도 시스템이란?

**한 줄 정의**:
유저와 Tobu 가 **얼마나 친해졌는지** 를 5단계로 표현하고, 그 단계에 맞춰 **Tobu 가 꺼내는 대화 주제의 깊이** 가 달라지는 엔진.

```
Lv1 처음 만남 → Lv2 관심 공유 → Lv3 가치관 대화 → Lv4 성장 파트너 → Lv5 깊은 신뢰
```

### 규칙 3가지

1. **말투는 변하지 않음** (존댓말 · 친근체 유지) → 일본 문화상 말투 전환은 어색함
2. **달라지는 건 대화 주제** → 표면적 이야기 ~ 깊은 가치관 이야기
3. **유저에게 레벨을 보여주지 않음** → 게이미피케이션 X. 자연스럽게 깊어지도록 하기

---

## 2. 왜 필요한가?

### 현재 유저의 경험

**주꾸가 아닌 학원 느낌**. 컨디션 체크 -> 커리큘럼으로 넘어감.

### 결과

- 유저가 **"기능적인 앱"** 으로 인식 → 친구감 없음
- **재방문율 낮음**
- 커리큘럼 품질만으로는 **차별화 한계** (Duolingo · Khan 이미 강함)

### 친밀도 시스템이 만드는 것

- 유저가 **"매일 Tobu 랑 얘기하고 싶다"** 고 느낌
- 관계 깊어질수록 **자기노출 · 재방문 · 성장 속도** 증가
- 포지션: **"Character AI 의 친구감 + Goalskill 의 성장 목적"** — 경쟁자 없음

---

## 3. 점수가 어떻게 오르내리는가?

유저는 **아무것도 안 함**. 시스템이 대화에서 자동 판정.

### 점수 오름 (+)

| 행동                                               | 점수 |
| -------------------------------------------------- | ---- |
| 답변이 길어짐 (자기 이야기 많이 함)                | +2   |
| "사실은…", "솔직히…" 같은**자기노출 표현** | +5   |
| 유저가 먼저 화제를 꺼냄                            | +3   |
| 매일 꾸준히 접속 (3일 연속)                        | +5   |
| 7일 연속 접속                                      | +10  |
| "고마워", "도움 됐어" 같은**긍정 반응**      | +3   |
| 감정 어휘 다양                                     | +2   |

### 점수 내림 (−)

| 행동                                     | 점수                   |
| ---------------------------------------- | ---------------------- |
| 짧은 단답 반복 ("네", "아니오")          | -3                     |
| 질문 회피                                | -2                     |
| "그만", "이상해" 같은**부정 반응** | -10                    |
| 2주 이상 미접속                          | -30 (레벨 하강 트리거) |

### 레벨 전이

점수가 **누적**되어 구간을 넘으면 자동으로 다음 레벨로.

| Lv  | 누적 점수 |
| --- | --------- |
| Lv1 | 0 - 20    |
| Lv2 | 21 - 60   |
| Lv3 | 61 - 150  |
| Lv4 | 151 - 300 |
| Lv5 | 301+      |

유저에게는 **알리지 않음**. Tobu 의 대화 주제가 조용히 깊어질 뿐.

---

## 4. 주제 DB — 레벨별 어떤 대화가 들어가나

Tobu 가 **매일 반복 접점 3곳** (컨디션 · 열정도 · 이해도) 에서 꺼낼 수 있는 화제 .

**※ 중요**: 컨디션 · 열정도 · 이해도는 "매일 묻는 **접점**"이고, Lv1~5 는 "질문의 **깊이**" 입니다.
같은 컨디션 체크라도 Lv1 유저에겐 가볍게, Lv5 유저에겐 세밀한 관찰과 함께 묻습니다.

### Lv1 「오늘」 — 거리감 있는 편안함

**특징**: 과거 참조 없음 · 자기노출 없음 · 선택권 자주 제시

**주제 예시**:

- 지금 기분 · 가벼운 오늘 일상
- 오늘 일정 · 날씨
- 간단한 안부 · 방금 있었던 일

**대화 예시**:

```
今日はどうですか？
なんか話したいこと、ありますか？
今日このあと何か予定あります？
```

### Lv2 「취향」 — 알아가는 중

**주제 예시**:

- 좋아하는 음식 · 음악 · 장소
- 주말 · 휴일 보낸 방식
- 요즘 자주 하는 것 · 새로 시작한 것

**대화 예시**:

```
週末、何か楽しいことありました？
最近ハマってるもの、あります？
今日一番テンション上がった瞬間、どこでした？
```

### Lv3 「생각」 — 편한 사이, 「왜?」 질문 가능

**주제 예시**:

- 자기 스타일 · 루틴의 **이유**
- 최근의 가벼운 고민
- 닮고 싶은 사람 · 존경하는 사람
- 작은 실패와 거기서 배운 것

**대화 예시**:

```
最近、頭から離れないこと、ありますか？
田中さんって、なんでそのやり方選んでるんです？
誰か、「この人のここが好き」っていう人、います？
```

### Lv4 「한계」 — 신뢰 관계, 약속 · 회고 가능

**주제 예시**:

- 성장에 대한 자기 생각
- 이전 약속 · 다짐의 이행 여부
- 막히는 지점 · 한계
- "진짜로 하고 싶은 것"

**대화 예시**:

```
前に話してた {약속}、どうなってます？
正直、今一番しんどい部分って、どこです？
「本当は」って感じで、何かあります？
```

### Lv5 「본질」 — 깊은 친구, 삶의 방향

**특이점**: **Tobu 가 먼저 파고들지 않음**. 유저가 자발적으로 꺼낼 때만 받음.

**주제 예시**:

- 삶의 방향 · 정체성 · 의미
- 깊은 고민 (번아웃 · 회의 · 권태)
- 과거의 의미 있는 실패
- 10년 뒤 비전

**대화 예시**:

```
最近、「これって意味あるのかな」って思うこと、あります？
10年後の田中さん、どんな人になってたいですか？
```

---

## 5. 질문 DB — 어떻게 설계하나?

### 기존 48 테이블에 넣을 수 있나?

**아니오. 새로 만들어야 합니다.**

### 왜 새로 만들어야 하나?

**용도가 완전히 다르기 때문** 입니다.

| 구분      | 기존 48 테이블                         | 새 질문 DB                                   |
| --------- | -------------------------------------- | -------------------------------------------- |
| 성격      | **대화 아카이브** (이미 나눈 것) | **앞으로의 질문 카탈로그** (꺼낼 후보) |
| 용도      | 대화 로그 자동 저장 · 분석 원본       | Tobu 가 꺼낼 질문 의도 관리                  |
| 편집 주체 | 시스템 자동 (사람 손 안 댐)            | **엔지니어가 직접 편집집**             |
| 크기      | 수백만 건 (계속 쌓임)                  | 100~200 건 (고정적)                          |
| 접근 패턴 | 쓰기 중심                              | 매 응답마다 읽어서 필터링                    |
| 스키마    | 대화 내용 · 세션 ID · 타임스탬프     | 의도 · 시드 · 레벨 · 쿨다운               |

**"과거의 대화 기록" 과 "앞으로 할 질문 목록" 은 같은 성격의 데이터가 아니라 한 테이블에 섞을 수 없음.**
섞으면 쓰기 트래픽이 편집 작업을 방해하고, 스키마가 맞지 않으며, 기획자 편집이 대규모 로그와 충돌함.

### 그럼 새 테이블 몇 개가 필요한가?

**신규 3개 + 기존 1개 컬럼 추가**. 모두 `Goalskill_DB` 에 배치 (새 DB 서버 불필요).

| # | 테이블                | 역할                                 | 크기 감각   |
| - | --------------------- | ------------------------------------ | ----------- |
| 1 | `question_bank`       | 질문 풀 (마스터 카탈로그)            | ~200 행     |
| 2 | `relationship`        | 유저별 현재 친밀도 상태 (1유저 1행)  | 유저 수만큼 |
| 3 | `question_history`    | 질문 사용 이력 (쿨다운 관리)         | 자동 누적   |
| - | `result` (기존 확장)  | `daily_intimacy_delta` 컬럼 추가    | 변화 없음   |

### 확정 스키마

```sql
-- 1. 질문 풀 (마스터 데이터)
CREATE TABLE question_bank (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    Lv TINYINT NOT NULL,               -- 1~5
    content TEXT NOT NULL,             -- 질문 문장
    category VARCHAR(64),              -- 대분류 (예: 오늘·취향·생각)
    topic VARCHAR(64),                 -- 소분류 (예: 기분·수면·음식)
    INDEX idx_lv_topic (Lv, topic)
);

-- 2. 유저별 친밀도 상태 (1유저 1행, UPSERT)
CREATE TABLE relationship (
    user_id VARCHAR(64) PRIMARY KEY,
    relationship_level TINYINT DEFAULT 1,
    relationship_score INT DEFAULT 0,
    topic_interest JSON,               -- {"食事": 5, "家族": -2, ...}
    last_session_id VARCHAR(64),
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

-- 3. 질문 사용 이력 (쿨다운용)
CREATE TABLE question_history (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    session_id VARCHAR(64),
    user_id VARCHAR(64),
    use_question_id BIGINT,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    INDEX idx_user_time (user_id, created_at DESC),
    INDEX idx_user_question (user_id, use_question_id)
);

-- 4. 기존 result 테이블 확장
ALTER TABLE result ADD COLUMN daily_intimacy_delta INT DEFAULT 0;
```

### 테이블별 역할 · 갱신 주기

| 테이블 | 용도 | 갱신 주기 | 비고 |
|---|---|---|---|
| `question_bank` | 질문 풀 (기획자 편집) | 드물게 | 마스터 데이터 |
| `relationship` | **현재 상태** (UPSERT) | 매 상호작용 | PK=user_id, 1유저 1행 |
| `question_history` | 질문 사용 이력 | 매 질문 INSERT | 쿨다운 체크용 |
| `result` | 일일 친밀도 변화량 | 매일 1행 | 시계열 분석 |

### 기존 48 테이블은 어떻게 되나?

**그대로 재활용합니다. 건드리지 않음.**

- 48 테이블은 계속 대화 로그 자동 저장 (변경 없음)
- 분포 분석으로 **유저 성향 파생** 가능 (H/S 비율, T/P/R 분포 등)
- 새 자산이 아닌 **"기존 자산을 스마트하게 활용"**

### Phase 분리 — 친밀도 엔진 먼저, 유저 이해 엔진은 Phase 2

**현재 Phase 1 (친밀도 엔진)**:
- 위 4개 테이블 변경
- `topic_interest` 로 최소한의 "관심 주제" 까지는 담음

**Phase 2 (유저 이해 엔진) — 나중에**:
- 별도 엔진으로 구축
- 구체 기억 (에피소드·약속·인명·자주 쓰는 표현 등) 저장
- 친밀도 엔진 효과 증명 후 확장

→ **단계적 구축 전략**. 한 번에 다 만들지 않음.

### 한 문장 정리

> **신규 3개 테이블 + 기존 `result` 컬럼 1개 추가. 모두 `Goalskill_DB` 에 배치. `user_profile_summary` · 48 테이블은 건드리지 않음. 유저 이해 엔진은 Phase 2 로 분리.**

---

## 6. 5개 단어 요약

머릿속에 이것만 남기시면 됩니다:

```
Lv1   Lv2   Lv3   Lv4   Lv5
오늘  취향  생각  한계  본질
```

| Lv  | 키워드         | 대화 성격                  |
| --- | -------------- | -------------------------- |
| Lv1 | **오늘** | 가벼운 안부 (거리감 있음)  |
| Lv2 | **취향** | 일상 공유 (알아가는 중)    |
| Lv3 | **생각** | "왜?" 질문 가능            |
| Lv4 | **한계** | 막힘 · 약속 공유          |
| Lv5 | **본질** | 삶의 방향 (유저 자발 시만) |

---

## 7. 핵심 메시지

> **유저는 Tobu 와 매일 자연스럽게 대화하면서,**
> **자기도 모르는 사이에 점점 더 편하게 · 깊은 이야기를 나누게 됩니다.**
> **그게 친구가 되는 과정입니다.**

---

## 8. 오늘 결정 요청

| # | 결정 요청                         | 체크 |
| - | --------------------------------- | ---- |
| 1 | 친밀도 시스템 도입 방향 승인      | ☐   |
| 2 | A' 자유 대화 파트를 첫 파일럿으로 | ☐   |
| 3 | 4주 파일럿 착수                   | ☐   |

---

## 참고

- 기존 커리큘럼은 **전혀 건드리지 않음**
- `Goalskill_DB` 에 신규 테이블 **3개** + `result` 컬럼 1개 추가 (새 서버 불필요)
- `user_profile_summary` (A 파트 → 커리큘럼 전용) 건드리지 않음
- 기존 48 테이블 (대화 로그) 그대로 활용 (유저 성향 파생에도 활용)
- 유저 이해 엔진은 Phase 2 로 분리 (친밀도 엔진 검증 후 확장)
- 실패 시 즉시 롤백 가능

---

## 문서 이력

- **v0.1** (2026-04-23): 친밀도 시스템 · 신호 · 주제 DB · DB 설계 근거 포함 CEO 프레젠 간략 버전
