Repository navigation
feat/company-dataset-api - #106
Merged
Merged
Conversation
- 면접 생성: 선택 Idempotency-Key(UUID) 헤더. 같은 사용자·키·설정이면 처음 만든 면접을 돌려주고, 설정이 다르면 409 IDEMPOTENCY_KEY_REUSED. 면접·면접관·키를 한 트랜잭션에 저장한다. 헤더·companyId 형식 오류는 422 INVALID_INTERVIEW_REQUEST. - 스냅샷: 기업 행을 FOR SHARE로 읽고 가져오기는 FOR UPDATE로 고쳐 섞인 스냅샷을 막는다. 없는·숨긴 기업은 404 COMPANY_UNAVAILABLE, 실행 입력을 만들 수 없으면 500 대신 503 COMPANY_CONTEXT_UNAVAILABLE. - 가져오기: 파일이 빠져도 숨기지 않고 app.company.hidden-codes로만 숨긴다. app.company.allow-sample(기본 false)이 꺼진 환경은 SAMPLE을 가져오지도 내보내지도 않는다. 자기 참조·순환 모회사는 관계만 빼고 반영한다. 로그에서 원문 값을 뺐다. - 목록: 검수 기록이 있거나 허용된 SAMPLE만 내보내고, 이름이 같으면 companyId 순. - companyFit: 스냅샷 factId와 그 면접의 답변 있는 문항만 근거로 남기고 kind·focus는 스냅샷에서 채운다. 항목이 모두 빠지면 null. 기업 미선택 면접은 조회에서도 null. - 오류 응답에 선택 code 필드, 준비 응답에 company 배지 추가. - V35: company.sample, fact의 자기 기업 출처 복합 FK, interview_create_request. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
danjee2009
reviewed
Oct 19, 2026
danjee2009
left a comment
Member
There was a problem hiding this comment.
API 서버의 기업 데이터 가져오기·공개 조건, 면접 생성 멱등성, 스냅샷 기반 기업 적합도 검증을 검토했습니다. ./gradlew test CI가 통과했습니다. 아래 항목은 콜백 처리 시점의 답변 상태가 채점 요청 시점과 달라질 수 있는 데이터 일관성 문제입니다.
- 콜백 때 면접 기록에서 답변 있는 문항을 다시 뽑으면, 요청 뒤 답변 API로 더해진 답변의 문항까지 근거로 통과했다. 요청에 실은 답변 있는 문항 id를 남기고 그 목록만 인정한다. - 접수 행(feedback.requested_question_ids)에 작업별 목록을 넣는다. 콜백이 접수 응답보다 먼저 오는 경우를 위해 보내기 직전 interview.last_feedback_question_ids에도 남긴다. - 둘 다 없는 콜백(목록을 남기기 전에 보낸 요청)은 어느 문항도 근거로 인정하지 않는다. - V36 마이그레이션. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
연관 이슈 없음 (기업 데이터셋 구현 명세 00·02·05의 API 담당분 P-1~P-3)
Task
POST /api/interviews/create에 선택 헤더Idempotency-Key(UUID)를 추가했습니다.IDEMPOTENCY_KEY_REUSED입니다.UNIQUE(user_id, idempotency_key)가 하나만 남깁니다.FOR SHARE로 읽고, 가져오기는FOR UPDATE로 잡고 고칩니다. 이름·요약·facts가 섞인 스냅샷이 생기지 않습니다.code를 추가했습니다. 값이 없으면 키를 내보내지 않아 기존 본문은 그대로입니다.COMPANY_UNAVAILABLECOMPANY_CONTEXT_UNAVAILABLE(이전에는 500)companyId형식 오류: 422INVALID_INTERVIEW_REQUEST(companyId는 1 이상 2^53−1 이하)app.company.hidden-codes설정으로만 합니다.app.company.allow-sample이 false면 SAMPLE 패키지를 가져오지 않습니다. 비워 두면prod프로필이 아닐 때만 허용합니다.GET /api/questions/tailor응답에 면접 스냅샷 기준company배지를 추가했습니다.company.sample컬럼 (기존 행은 출처로 계산해 채움)interview_create_request테이블feedback.requested_question_ids,interview.last_feedback_question_ids(리뷰 반영)검증
./gradlew test883개 통과, 실패·오류·건너뜀 0.postgres:16-alpine임시 컨테이너.InterviewCreateIdempotencyTest는 실제 DB에서 다음을 확인합니다.ETC (리뷰·배포 때 확인 부탁)
COMPANY_HIDDEN_CODES=code1,code2로 바꿔야 합니다.COMPANY_ALLOW_SAMPLE을 비우면prod프로필이 아닐 때만 샘플을 허용합니다. 운영이prod프로필로 뜨지 않는다면COMPANY_ALLOW_SAMPLE=false를 직접 넣어 주세요. 기동 로그에 판정 결과(SAMPLE 기업 허용=)가 남습니다.🤖 Generated with Claude Code