통화에 담당 상담원을 기록하고 상담기록을 요청자 기준으로 거른다 — 지금은 로그인만 하면 남의 통화가 보인다
수동 QA Q-14 의 남은 절반이다. 2026-09-23 에
READ_AUTH_REQUIRED=true로 바깥문은 닫았다 (w6-read-path-auth— 토큰 없는 읽기는 401). 안에서 서로의 통화가 보이는 것은 그대로다.
무엇을
GET /hub/calls(상담원 화면의 「최근 상담기록」)가 요청한 상담원의 통화만 돌려주게 한다.
왜 — 두 겹이라 한쪽만으로는 안 된다
- 목록이 요청자를 안 본다.
call_list_interactor.py는customer_id로만 거른다. 토큰이 맞는지만 보고 누구인지는 안 본다. - 누구의 통화인지가 기록되지 않는다.
call.agent_id컬럼은 있는데 통화를 만드는 경로가 안 채운다 —call_repository.py머리말에 “agent_id는 넣지 않는다 — 이 경로에는 아직 상담원 정보가 없다” 고 적혀 있다. 통화를 여는 것은 콜 미디에이터이고, 미디에이터는 입력 토큰 하나로 붙어서 상담원이 누구인지 모른다.
2026-09-23 운영 화면에서 새로 로그인한 상담원에게 09-22 QA 통화 다섯 건이 그대로 보였다(캡처).
어떻게 (착수할 때 이 순서로)
- 상담원 화면이 통화를 열 때 자기 상담원 토큰을 콜 미디에이터에 넘긴다 — 입력 토큰과 별개다(
apps/, 조서희) - 미디에이터가
POST /hub/calls에 그 상담원을 실어 보낸다 — 계약(CallStartCommand)에 한 칸 추가 - 서버가
call.agent_id를 채운다 - 목록이 요청자 기준으로 거른다. 관리자·서비스 토큰은 전체를 본다(지금 감사·집계가 그 경로다)
왜 지금 하지 않나 (2026-09-23 판단)
- 시연 시나리오와 충돌한다 — 데모는 한 화면에서 합성 통화를 틀고 다른 화면이 이어받는 식이다. 내 통화만 보이면 그 진행이 막힌다. 4번을 넣을 때 시연 계정 예외를 같이 정해야 한다
- 사슬이 프론트·미디에이터·서버 셋에 걸친다 — 발표 전 남은 시간에 넣기엔 크다
- 지금 운영에 있는 통화는 전부 우리가 만든 테스트·합성 통화다. 실제 시민 상담이 아니다
- 실질 위험(주소만 알면 누구나 열람)은 09-23 에 닫혔다
완료 조건
- 통화를 열면
call.agent_id가 채워진다(콜 미디에이터 경로 · 운영에서 1건 확인) - 상담원 A 의 토큰으로
GET /hub/calls를 부르면 B 의 통화가 안 나온다(테스트 + 운영 확인) - 관리자·서비스 토큰은 전체를 본다 — 감사·집계·
e2e_check.py가 안 깨진다 - 시연 계정 예외를 정하고 적는다(결정 기록 또는 이 티켓 본문)
- 착수할 때 프론트 몫(1번)은 별도 티켓으로 쪼갠다 — 담당이 갈리면 티켓도 갈린다(
CLAUDE.md§4)
근거: 진행 기록 2026-09-22-18-seongyun Q-14 · 2026-09-23-06-seongyun · _project/decisions/322