Skip to content

feat: 문항별 예상 꼬리질문 저장·조회와 기업 코멘트 진단 로그 - #119

Merged
kimwuju merged 2 commits into
mainfrom
feat/feedback-follow-up-question
Oct 20, 2026
Merged

kimwuju merged 2 commits into
mainfrom
feat/feedback-follow-up-question

Conversation

@kimwuju

@kimwuju kimwuju commented Oct 20, 2026

Copy link
Copy Markdown
Contributor

연관 이슈 없음 (부스 운영 전 수정안 — API 서버 담당분)

Task

  • 예상 꼬리질문 followUpQuestion 추가 (신규 계약)
    • V41__add_feedback_item_follow_up_question.sql: feedback_item.follow_up_question TEXT (nullable) 추가
    • 콜백 result.feedbacks[].followUpQuestion → FeedbackItemEntity → 단건·목록 조회 data.feedbacks[].followUpQuestion
    • 앞뒤 공백을 뺀 1~200 code point 문자열만 저장합니다. 비었거나, 200자를 넘거나, 문자열이 아니면 그 문항의 꼬리질문만 null로 두고 점수와 나머지 평가는 그대로 저장합니다. 긴 값을 잘라 넣지 않습니다.
    • 구버전 분석 서버가 필드를 보내지 않아도 정상 저장되고, 이전 피드백은 null로 나갑니다.
  • 기업 관점 코멘트 진단 로그 (검증 규칙은 바꾸지 않음)
    • 기업을 골랐는데 companyFit이 null로 오면 FIT_NOT_RECEIVED를 남깁니다. 지금까지는 이 경우 로그가 하나도 없어, 분석 서버 쪽 문제인지 API 검증에서 버린 것인지 가릴 수 없었습니다.
    • 채점 요청 시: interviewId, jobId, sessionId, 기업 여부, 기업 fact 수, 근거 문항 수
    • 결과 저장 시: 문항 수, 꼬리질문 수, 기업 코멘트 수신 여부, 저장 여부
    • 검증 탈락 로그에 대상 문항 수를 넣었습니다. 대상이 0건이라 모든 항목이 NO_ANSWERED_QUESTION으로 빠지는 경우를 가릴 수 있습니다.
    • 답변 내용, 기업 자료, 모델이 쓴 문장은 로그에 남기지 않습니다.

ETC

  • 리뷰 포인트: 콜백의 followUpQuestion은 String 대신 JsonNode로 받습니다. String이면 분석 서버가 객체를 보냈을 때 역직렬화가 실패해 콜백 전체가 400이 되고, 분석 서버는 재시도 뒤 채점 결과를 버립니다. 기존 axisScores·companyFit과 같은 방식입니다.
  • 배포 순서: 이 PR(nullable 칼럼 + 필드 누락 허용) → 분석 서버의 followUpQuestion 생성 → 웹 feedbackDisplay.ts의 고정 문구를 응답값으로 교체. 웹을 고치지 않으면 화면은 계속 "예상 꼬리질문이 아직 제공되지 않았습니다."로 나옵니다.
  • 범위 밖: Q62·Q63 번호 오류는 분석 서버의 생성 문장 문제라 API에서는 손대지 않았습니다(원문 정규식 치환 안 함). 기존에 SUCCEEDED된 면접은 재생성되지 않으므로, 부스 검수는 새 면접으로 해야 합니다.
  • 마이그레이션 번호: main에 V39·V40이 먼저 들어와 있어 V41을 썼습니다.
  • 테스트: 최신 main 기준 ./gradlew test 964개 통과
    • 역직렬화: camelCase, 필드 누락, 객체 값
    • 정규화: 공백, 201자, 이모지 200자, 숫자, 객체
    • 실제 DB: 저장 후 재조회, 중복 콜백, 필드 없는 콜백
    • 단건·목록 응답

🤖 Generated with Claude Code

kimwuju and others added 2 commits October 20, 2026 20:38
분석 콜백의 feedbacks[].followUpQuestion을 받아 feedback_item에 저장하고
단건·목록 조회의 data.feedbacks[]로 돌려준다. 이전 피드백과 이 필드를
보내지 않는 분석 서버의 콜백은 null로 남는다.

- V41: feedback_item.follow_up_question TEXT 추가
- 콜백 필드는 JsonNode로 받아 문자열이 아닌 값이 와도 본문 전체가 400이 되지 않게 한다
- 앞뒤 공백을 뺀 1~200 code point 문자열만 저장하고, 그 밖은 그 문항만 비운다
- 기업을 골랐는데 companyFit이 오지 않으면 FIT_NOT_RECEIVED를 남긴다
- 채점 요청·결과 저장 시 기업 여부, fact 수, 근거 문항 수, 꼬리질문 수를 로그로 남긴다

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.

검토 결과: 확인된 수정 필요 결함은 없습니다. 콜백 역직렬화, 꼬리질문 정규화·길이 검증과 저장·조회 경로, 기업 관점 진단 로그를 검토했습니다. 테스트는 직접 재실행하지 않았습니다.

@kimwuju
kimwuju merged commit 040ee7e into main Oct 20, 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