Skip to content

fix/interview-response-persona - #109

Merged
danjee2009 merged 4 commits into
mainfrom
fix/interview-response-persona
Oct 19, 2026
Merged

danjee2009 merged 4 commits into
mainfrom
fix/interview-response-persona

Conversation

@danjee2009

@danjee2009 danjee2009 commented Oct 19, 2026 •

Copy link
Copy Markdown
Member

무엇을

  • InterviewResponse에 대표 면접관 persona를 추가합니다.
    • 형태: { id, personaName, personaRole, type, level, tone, imageUrl } (personaRole·type·level·tone은 enum 이름)
    • SOLO: interview.personaId의 면접관. MULTI: persona_order가 가장 앞선 면접관. 없거나 지워졌으면 null
    • 이름은 저장값 그대로 보냅니다. SOLO 이름 끝 -{uuid} 접미사는 Web이 떼어 냅니다.
  • GET 목록(getAllInterviewsByUserId)은 N:1 명단(findAllByInterviewIdIn…)과 면접관(findAllById)을 한 번씩만 읽습니다. 이전에는 MULTI 면접마다 명단을 따로 조회했습니다.
  • 단건(getInterviewById)과 생성 응답(SOLO·MULTI)에도 같은 규칙으로 persona를 넣습니다. 생성 응답은 이미 읽어 둔 엔티티를 쓰므로 쿼리가 늘지 않습니다.

왜

웹 피드백 목록·상세는 interview.persona에서 성향·난이도·면접관 이름을 읽는데, API 응답에 이 객체가 없었습니다. 그래서 난이도는 "미제공", 면접관은 "면접관 1명"으로 나왔고, 성향은 피드백이 있을 때만 보였습니다. (수정 계획 Doc/면접완료-피드백-수정계획-2026-10-19.md 2-5 API)

계약 변경

  • InterviewResponse에 persona 필드만 추가했습니다(하위 호환). 기존 personaId·personaIds는 그대로입니다.
  • 이 응답을 쓰는 곳은 Web뿐입니다. Chat·Analysis는 영향이 없습니다.
  • DB 변경 없음(마이그레이션 없음).
  • 머지 순서 주의: 지금 Web은 persona.personaName을 우선 표시하고 persona.career로 난이도를 읽습니다. 이 PR만 먼저 배포되면 MULTI 목록에 맨 앞 면접관의 원본 이름(TECH-<uuid> 등)이 보일 수 있습니다. 계획대로 Web PR(fix/interview-complete-feedback-display)과 함께 반영해 주세요.

테스트

  • ./gradlew test 통과 (830개, 실패 0, 로컬 Postgres)
  • InterviewServicePersonaTest: SOLO·MULTI(맨 앞 면접관)·면접관 없음(SOLO personaId 없음, MULTI 명단 비어 있음)·면접관 삭제 각각의 persona 값. 목록 조회에서 findAllById 1회, findById·면접별 명단 조회 0회. 대표 면접관이 없으면 조회하지 않음
  • InterviewResponseSerializationTest: JSON 키 7개와 값, 면접관이 없을 때 "persona": null

기준 커밋: origin/main be77bb4

🤖 Generated with Claude Code

2026-10-19 통합 검증

API #106 병합 후 main을 통합하고, 새 기업 계약 테스트의 InterviewResponse 생성자를 persona 필드에 맞췄습니다(d27e93f). 전체 884개 통과. 자동 운영 배포 워크플로는 기존 로컬 검증 방침에 따라 비활성화 상태입니다.

danjee2009 and others added 2 commits October 19, 2026 13:27
InterviewResponse에 persona { id, personaName, personaRole, type, level, tone, imageUrl }를 더한다.
1:1은 그 면접의 면접관, N:1은 진행 순서 맨 앞 면접관, 없으면 null. 이름은 저장값 그대로다.
목록 조회는 N:1 명단과 면접관을 면접마다 읽지 않고 한 번에 읽는다.

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

chatgpt-codex-connector Bot commented Oct 19, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-19T04:29:24.178095Z f712d19 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@danjee2009 danjee2009 changed the title fix: 면접 응답에 대표 면접관(persona) 추가 fix/interview-response-persona Oct 19, 2026

@danjee2009 danjee2009 left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

면접 생성·조회 응답의 대표 면접관 처리와 목록 조회의 일괄 로딩을 검토했습니다. 기존 응답 필드를 유지하면서 SOLO·MULTI 대표 면접관을 일관되게 추가하고, 삭제되거나 없는 면접관도 null로 처리합니다. 확인된 실질적 문제는 없습니다. PR 설명의 로컬 테스트 결과는 확인했으며, 게시 시점에 원격 CI는 아직 진행 중입니다.

@danjee2009
danjee2009 merged commit e2faf55 into main Oct 19, 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