재연결하면 발화 번호가 1부터 다시 매겨져 저장된 전사를 덮어쓴다 — 화자도 틀린 채 남는다

정성윤이 09-22 수동 QA(w5-manual-qa-full-stack Q-46) 중 만든 티켓이다. 담당은 «제안»이다 — 미디에이터·서버 두 곳에 걸려 있다(decisions/302, 누구나 고친다).

무엇을 봤나

운영 QA 통화 test-qa-05:

  1. 17:36 채널 둘(상담원·고객)로 여섯 줄 → segment 1~6 저장. 1번은 상담원 「안녕하세요 다산콜센터입니다」
  2. 채널 둘을 닫고 17:44 같은 call_id 로 다시 열어 고객 한 줄 「서류 준비해서 오늘 안에 다 끝내고 싶어서요」
  3. 결과: GET /hub/calls/test-qa-05/transcript 가 여전히 6건이고 segment 1 = 상담원 · 「서류 준비해서…」 — 인사가 사라지고 고객 말이 상담원 말로 남았다. 화면도 첫 줄이 바뀌었다

왜

언제 실제로 나나

콜 미디에이터 파드가 통화 중에 다시 뜰 때 — 09-22 에만 릴리스로 세 번(PR #131·#132·#135) 떴고 그때마다 진행 중 연결이 1006 으로 끊겼다. 재연결한 통화는 앞 대화를 뒤 대화로 덮는다. 장애 표시는 없다.

고치는 방향 (제안)

완료 조건

근거: 진행 기록 2026-09-22-18-seongyun (데이터) 행.

2026-09-22 — 정성윤이 넘겨받아 고쳤다 (운영 확인 전)

담당 이관 장민석 → 정성윤. todo 라 보존할 수행 기록이 없다(CLAUDE.md §4). 원인의 절반이 콜 미디에이터(정성윤 주 담당)이고 decisions/302 로 server/ 도 고칠 수 있다. 장민석 님 브랜치에 같은 파일 변경이 없음을 확인하고 시작했다.

안 고친 것 — 다시 연 통화의 utterance_end_ms 는 여전히 새로 연 시각 기준이다(통화 객체의 startedAtMs 가 메모리라 같이 버려진다). 순서가 뒤섞이지는 않지만 시각이 앞 발화보다 작아질 수 있다 — 화면은 번호순이라 보이지 않는다. 필요하면 started_at 을 응답에서 받아 쓰면 된다(별도).

남은 것 → done 조건 — 배포 뒤 운영에서 티켓 위 「무엇을 봤나」 1~3 을 그대로 재현해 7건이 되는지(수동 QA 「(데이터)」 행 재확인).

2026-09-22 (밤) — 운영 확인 → done

PR #139 머지 → 릴리스 성공(server 0.1.37 · call-mediator 0.2.7). 운영에서 QA 때와 같은 순서로 재현: test-qa-reuse 에 여섯 줄 → 채널 닫기 → 같은 통화 다시 열어 고객 한 줄 → 저장 7건, 새 줄은 segment 7, 1번 상담원 인사 그대로. 오후 QA 에서는 같은 순서에서 1번이 덮였다.