Skip to content

feat(frontend): 면접 '잠시 중단' — 이어하기를 실제로 도달 가능하게 - #190

Merged
i3months merged 1 commit into
devfrom
feature/pause-interview
Aug 20, 2026
Merged

feat(frontend): 면접 '잠시 중단' — 이어하기를 실제로 도달 가능하게#190
i3months merged 1 commit into
devfrom
feature/pause-interview

Conversation

@i3months

Copy link
Copy Markdown
Member

점검에서 나온 것

useSessionLifecycleinterrupt 뮤테이션이 정의돼 있는데 어디서도 호출되지 않는다. 라이브 화면의 유일한 이탈 경로는 '종료'(COMPLETED, 되돌릴 수 없음, 즉시 피드백 생성)뿐이었다.

왜 중요한가 — 어제 만든 #180 이 사실상 닿지 않았다

SessionTimeoutService 의 방치 세션 처리:

SessionStatus target = hasAnswer ? SessionStatus.COMPLETED : SessionStatus.INTERRUPTED;

즉 INTERRUPTED 는 답변이 하나도 없는 세션에만 붙는다. UI 에서 중단할 방법도 없으니, 어제 만든 '이어서 진행하기'(#180)가 닿는 범위는 아무것도 답하지 않고 떠난 면접뿐이었다.

정작 이어하고 싶은 상황 — 2개 답하고 전화를 받아 자리를 비운 경우 — 는 hasAnswer=trueCOMPLETED 로 굳고 부분 면접에 대한 피드백까지 만들어진다. 되돌릴 수 없다.

수정

헤더에 '잠시 중단' 을 추가하고 확인 후 interrupt 를 호출한다. 직후 화면이 종료 패널로 바뀌고, 거기 이미 있는 '이어서 진행하기'(#180) 로 바로 복귀할 수 있다. 히스토리 카드도 이미 '이어하기 →' 로 되어 있다(#175).

즉 새 화면을 만들지 않고 이미 만들어 둔 경로에 진입점만 열었다.

확인 문구에서 종료와의 차이를 분명히 한다:

지금까지 주고받은 대화는 그대로 남습니다. 바로 다음 화면에서 이어서 진행할 수 있고, 나중에 히스토리에서도 다시 들어올 수 있어요. 피드백은 아직 만들어지지 않습니다.

테스트

InterviewStage.pause.test.tsx (3) — 확인 없이는 중단되지 않음, '계속 진행' 시 미실행, 중단과 종료가 서로 다른 콜백을 부름.

마지막 테스트에서 다이얼로그 확인 버튼과 헤더 버튼의 이름이 둘 다 '종료' 라 조회가 모호해진다. within(dialog) 로 한정했다.

vitest 124/124 · eslint 0 · tsc · build 통과.

남는 제품 결정 (이 PR 범위 밖)

탭을 그냥 닫은 경우는 여전히 hasAnswer 기준으로 COMPLETED 가 된다. 현실의 이탈은 버튼 클릭보다 탭 닫기가 많으므로, 이어하기가 정말 유용하려면 스위퍼 정책을 바꿔야 한다:

  • 지금: 답변 있으면 COMPLETED(부분 피드백 생성) — 방치된 면접에서 뭐라도 건지려는 의도된 선택
  • 대안: 답변이 있어도 INTERRUPTED(이어하기 가능) — 대신 자동 피드백은 사라진다

기존의 의도적 동작을 없애는 변경이라 임의로 하지 않았다. 판단 부탁드린다.

영향 범위

점검 중 발견: `useSessionLifecycle` 의 `interrupt` 뮤테이션이 **어디서도 호출되지 않는다.**
라이브 화면의 유일한 이탈 경로는 '종료'(COMPLETED, 되돌릴 수 없음, 즉시 피드백)뿐이었다.

그 결과 어제 만든 이어하기(#180)가 사실상 도달 불가였다. INTERRUPTED 는 스위퍼가
**답변이 하나도 없는** 방치 세션에만 붙이기 때문이다(`hasAnswer ? COMPLETED : INTERRUPTED`).
즉 '이어하기' 가 닿는 건 아무것도 답하지 않고 떠난 경우뿐 — 정작 이어하고 싶은
"2개 답하고 자리를 비운" 경우는 COMPLETED 로 굳어 피드백까지 만들어진다.

- 헤더에 '잠시 중단' 추가 → 확인 후 `interrupt` → INTERRUPTED
- 그 직후 화면이 종료 패널로 바뀌고, 거기 이미 있는 '이어서 진행하기'(#180)로 바로 복귀 가능
- 확인 문구에서 종료와의 차이를 분명히 한다(대화 보존 / 피드백 미생성 / 나중에 재진입)

테스트 `InterviewStage.pause.test.tsx` (3) — 확인 없이는 중단되지 않음, '계속 진행' 시 미실행,
중단과 종료가 서로 다른 콜백을 부름(다이얼로그 확인 버튼과 헤더 버튼의 이름이 같아
다이얼로그 범위로 한정해 조회).
@i3months
i3months merged commit ef4c54c into dev Aug 20, 2026
4 of 5 checks passed
@i3months
i3months deleted the feature/pause-interview branch August 20, 2026 05:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant