Skip to content

fix: 채팅 서버의 UTC 답변 시각을 이 서버 시간대로 옮겨 저장함 - #94

Merged
kimwuju merged 1 commit into
mainfrom
fix/answer-created-at-timezone
Oct 14, 2026
Merged

kimwuju merged 1 commit into
mainfrom
fix/answer-created-at-timezone

Conversation

@kimwuju

@kimwuju kimwuju commented Oct 14, 2026

Copy link
Copy Markdown
Contributor

연관 이슈 없음 (채팅 서버 연결 테스트 중 발견)

Task

  • 답변 시각을 UTC → 이 서버 시간대로 옮겨 저장: 채팅 서버는 UTC 컨테이너(eclipse-temurin:21-jre-alpine, TZ 미설정)에서 시간대 없는 LocalDateTime.now()를 answerCreatedAt으로 보냅니다. 지금은 이 값을 그대로 저장해서, API 서버가 KST로 도는 로컬에서는 답변만 질문보다 9시간 이른 시각으로 남았습니다. 면접 819~822에서 질문은 17:54, 답변은 08:54로 저장된 것을 확인했습니다. 받은 값을 UTC로 읽어 ZoneId.systemDefault() 기준으로 옮겨 저장하며, VideoAnalysisService와 같은 변환 방식입니다.
  • 테스트: 테스트 안에서만 기본 시간대를 KST로 바꿔, UTC 01:01:30이 10:01:30으로 저장되는지 확인합니다. CI는 UTC에서 돌기 때문에, 이렇게 해야 변환이 빠졌을 때 CI에서도 실패합니다. 변환을 빼고 돌려 실제로 실패하는 것까지 확인했습니다. 면접 패키지 테스트는 KST와 UTC 양쪽에서 모두 통과합니다.

ETC

  • 운영처럼 두 서버가 모두 UTC로 돌면 값은 바뀌지 않습니다. 문제는 서버 간 시간대가 다를 때만 드러납니다.
  • 리뷰해 주세요: 채팅 서버가 UTC로 돈다고 가정합니다. 채팅 서버를 다른 시간대에서 돌리면 다시 어긋나므로, 근본 해결은 채팅 서버가 오프셋을 붙여 보내는 것입니다(코드에 ponytail: 주석으로 남김).
  • 이 PR에서 다루지 않은 것:
    • 진행 중인 면접의 다시보기는 채팅 서버 응답을 그대로 넘기므로 그때는 여전히 UTC 시각입니다.
    • 이미 저장된 답변 시각은 고치지 않았습니다.

🤖 Generated with Claude Code

채팅 서버는 UTC 컨테이너에서 시간대 없이 LocalDateTime.now()를 answerCreatedAt으로 보낸다. 그대로 저장해,
이 서버가 UTC가 아닐 때(로컬 KST) 답변만 이 서버가 찍은 질문 시각보다 9시간 이르게 남았다(면접 819~822).
받은 값을 UTC로 읽어 ZoneId.systemDefault()로 옮긴다. 둘 다 UTC인 운영에서는 값이 그대로다.

채팅 서버가 UTC라고 가정한다. 다른 시간대에서 돌리면 다시 어긋나므로, 채팅 서버가 오프셋을 실어 보내는 것이 근본 해결이다.
테스트는 기본 시간대를 KST로 바꿔 돌려, UTC인 CI에서도 변환이 빠지면 실패한다.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@danjee2009 danjee2009 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

UTC로 수신한 답변 시각을 API 서버 시간대로 변환하는 경로와 면접 저장 동작, 시간대 변경 테스트를 검토했습니다. 확인한 범위에서 수정이 필요한 정확성·데이터 일관성 문제는 찾지 못했습니다. GitHub Actions 테스트가 통과했습니다. 테스트를 별도로 로컬 실행하지는 않았습니다.

@kimwuju
kimwuju merged commit da6abbe into main Oct 14, 2026
1 check passed
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.

2 participants