# 7-5 · 아이스브레이킹 · 질문 5 마무리 · 내 재료

> **보는 사람**: 팀원  
> **파일**: [index.html](index.html) (화면) · [screen.js](screen.js) (이 화면 동작) · [../../assets/js/icebreak-chat.js](../../assets/js/icebreak-chat.js) (채팅 공통)

## 이 화면은

마지막 질문(해보고 싶은 것·피하고 싶은 것) 후 인터뷰 끝. 내 답에서 AI가 뽑은 재료를 나에게만 보여준다.

## 프론트엔드

**이미 구현한 것**

- ✅ 인터뷰가 끝난 상태(입력칸 비활성)
- ✅ 실서버 모드: 내 재료를 ice.myMaterials로 다시 그림(피할 것만 회색 태그)
- ✅ 진행자가 발산으로 넘기면 자동 이동
- ✅ 진행자면 "진행자 화면으로 가서 팀 재료 보기 →" 링크(7-6) 표시

## 백엔드가 해야 할 일 (쉽게)

- <b>재료 뽑기</b>: 인터뷰가 끝나면 AI가 이 사람의 모든 답에서 짧은 "재료" 문장을 뽑는다. 종류 라벨은 화면에 보이지 않고, <b>"피할 것"만</b> 표시한다(avoid=true).
- 재료는 <b>이름 없이</b> 발산 단계로 넘어가고, 삭제·빼기 기능은 없다(디자인 결정).
- "끝! 수고했어요" 초록 말풍선은 인터뷰 전체에서 이 마지막 한 번만 쓴다(style="good").

## 이 화면이 쓰는 API

| 언제 | API | 요약 |
|---|---|---|
| 화면 열 때 | `GET /sessions/{sessionId}/icebreak/me` | 내 인터뷰 상태 |
| 화면 열 때 | `GET /sessions/{sessionId}/icebreak/materials/me` | 내 답에서 뽑힌 재료 (나만 보임) |

## 실시간 이벤트 (웹소켓으로 받는 것)

| 이벤트 | 받으면 |
|---|---|
| `stage.changed` | 해당 단계 화면으로 이동, 상단바 갱신 |

형식은 [docs/02-API-공통-규칙.md](../../docs/02-API-공통-규칙.md#실시간-이벤트) 참고.

## API 상세

모든 경로 앞에 `/api/v1`가 붙어요. 공통 규칙(인증·에러 형식)은 [docs/02-API-공통-규칙.md](../../docs/02-API-공통-규칙.md).

### `GET /api/v1/sessions/{sessionId}/icebreak/me` — 내 인터뷰 상태

- **API id**: `ice.state` (프론트: `api.call('ice.state', …)`)
- **누가 부를 수 있나**: 세션 참가자 (회원)
- **하는 일**: 새로고침·재접속 시 내 대화 내용과 몇 번째 질문인지 복구한다. 이 대화는 본인만 볼 수 있다.

**응답** `200`

```json
{
  "step": 1,
  "done": false,
  "topics": [
    "최근 불편했던 순간",
    "요즘 이 주제 주변에서 바뀐 것",
    "그 변화와 내 경험",
    "요즘 쓰는 서비스와 아쉬운 점",
    "해보고 싶은 것 · 피하고 싶은 것"
  ],
  "messages": [
    {
      "id": "m1",
      "role": "ai",
      "label": null,
      "style": null,
      "text": "안녕하세요 노형원님. 저와 1:1로 짧게 이야기해요. …"
    },
    {
      "id": "m2",
      "role": "ai",
      "label": "질문 1 · 불편했던 순간",
      "style": null,
      "text": "최근 일주일, 가장 불편했던 순간은 언제였어요? 사소한 것도 좋아요."
    }
  ]
}
```

**백엔드 메모**

- 메시지 style: null(기본) · "fq"(꼬리질문, 연보라) · "explain"(뜻풀이, 하늘색) · "good"(인터뷰 끝 안내, 초록 — 마지막 1번만).

### `GET /api/v1/sessions/{sessionId}/icebreak/materials/me` — 내 답에서 뽑힌 재료 (나만 보임)

- **API id**: `ice.myMaterials` (프론트: `api.call('ice.myMaterials', …)`)
- **누가 부를 수 있나**: 세션 참가자 (회원)
- **하는 일**: 인터뷰가 끝나면 AI가 내 답에서 뽑은 재료 목록. "피할 것"만 따로 표시한다.

**응답** `200`

```json
{
  "items": [
    {
      "text": "교양 과제 공지가 메일로만 와서 마감을 놓침",
      "avoid": false
    },
    {
      "text": "단톡방 공동구매가 늘며 정산을 한 사람이 떠안음",
      "avoid": false
    },
    {
      "text": "피그마 수정 내역 추적이 어렵고, 노션엔 팀원이 잘 안 들어옴",
      "avoid": false
    },
    {
      "text": "AI 기능을 직접 넣어보고 싶음",
      "avoid": false
    },
    {
      "text": "학교 앞 카페 콘센트 자리 경쟁",
      "avoid": false
    },
    {
      "text": "앱 개발",
      "avoid": true
    }
  ]
}
```

**백엔드 메모**

- 재료는 이름 없이 발산 단계로 넘어간다. 삭제·빼기 기능은 없다(디자인 결정).
