목표
사용자가 자기소개서 등록 step2에서 입력한 채용 우대사항을 임시저장할 수 있도록 API-010 PUT /cover-letters/{coverLetterId}/preferences를 구현한다.
이 작업은 step1 기본 정보 저장 API에서 확정한 owner 검증, deletedAt 제외, DRAFT 상태 검증, trim 후 validation, field별 validation details 응답 패턴을 동일하게 적용한다.
작업 범위
-
관련 요구사항/API:
- REQ-004 자기소개서 등록 step 저장
- API-010
PUT /cover-letters/{coverLetterId}/preferences
-
포함할 것:
preferences 요청 DTO 추가
- 채용 우대사항 저장 응답 DTO 추가
- 현재 사용자 소유이면서 삭제되지 않은 자기소개서만 수정 가능하도록 검증
- 존재하지 않거나, 다른 사용자 소유이거나, 삭제된 자기소개서는
NOT_FOUND
DRAFT 상태에서만 수정 가능하도록 검증
DRAFT가 아니면 COVER_LETTER_NOT_DRAFT 반환
preferences trim 후 저장
preferences trim 후 1~3000 Unicode code point validation
- validation 실패 시
VALIDATION_ERROR와 field별 details 반환
- 저장 시
updatedAt 갱신
- controller/service 테스트 추가 또는 갱신
docs/api/README.md, docs/status.md 상태 갱신
- 필요 시
docs/api/cover-letters.md의 에러 응답 형식 보강
-
제외할 것:
- API-009 기본 정보 저장 변경
- API-011 질문과 답변 저장
- API-012 자기소개서 상세 조회
cover_letter_questions entity/repository 추가
- 제출 API 및 LLM Job 생성
완료 기준
참고
- 등록 step 저장 API는
docs/decisions/cover-letters.md의 Decision 023에 따라 DRAFT 상태에서만 허용한다.
- 이번 이슈는
cover_letters.preferences 컬럼만 사용한다.
목표
사용자가 자기소개서 등록 step2에서 입력한 채용 우대사항을 임시저장할 수 있도록
API-010 PUT /cover-letters/{coverLetterId}/preferences를 구현한다.이 작업은 step1 기본 정보 저장 API에서 확정한 owner 검증, deletedAt 제외, DRAFT 상태 검증, trim 후 validation, field별 validation details 응답 패턴을 동일하게 적용한다.
작업 범위
관련 요구사항/API:
PUT /cover-letters/{coverLetterId}/preferences포함할 것:
preferences요청 DTO 추가NOT_FOUNDDRAFT상태에서만 수정 가능하도록 검증DRAFT가 아니면COVER_LETTER_NOT_DRAFT반환preferencestrim 후 저장preferencestrim 후 1~3000 Unicode code point validationVALIDATION_ERROR와 field별details반환updatedAt갱신docs/api/README.md,docs/status.md상태 갱신docs/api/cover-letters.md의 에러 응답 형식 보강제외할 것:
cover_letter_questionsentity/repository 추가완료 기준
PUT /cover-letters/{coverLetterId}/preferences성공 시 문서 계약의 응답을 반환한다.preferences값이다.preferences는 trim 후 1~3000자만 허용한다.VALIDATION_ERROR와 field별details를 반환한다.NOT_FOUND를 반환한다.DRAFT가 아닌 자기소개서는COVER_LETTER_NOT_DRAFT를 반환한다.updatedAt이 갱신된다.docs/api/README.md에서 API-010 상태가Implemented로 갱신된다.docs/status.md에 관련 이슈와 검증 근거가 반영된다.git diff --check,./gradlew test,./gradlew check가 통과한다.참고
docs/decisions/cover-letters.md의 Decision 023에 따라DRAFT상태에서만 허용한다.cover_letters.preferences컬럼만 사용한다.