목표
현재 로그인한 사용자가 본인이 작성한 자기소개서 목록을 페이지 단위로 조회할 수 있게 한다.
DB/JPA 전환 이후 첫 CRUD 확장 slice로, API-007 GET /cover-letters를 구현해 owner filter, status filter, pagination, 정렬, soft delete 제외 정책을 실제 repository query 기준으로 검증한다.
작업 범위
- 관련 요구사항/API:
- 포함할 것:
GET /cover-letters?page=1&size=9&status=DRAFT
- 현재 사용자
ownerId 기준 목록 조회
deletedAt == null인 자기소개서만 조회
status query parameter optional filter
createdAt desc 정렬
- API의
page는 1-base, 내부 Pageable은 0-base로 변환
size 기본값 9, 최대 9
- 응답 필드:
items, page, size, totalItems, totalPages
- item 필드:
id, title, companyName, positionTitle, status, createdAt, latestReviewVersionId
- controller/service/repository 테스트
- 구현 상태에 맞춰
docs/status.md, docs/api/README.md 갱신
- 제외할 것:
- API-012 자기소개서 상세 조회
- API-013 자기소개서 soft delete
- API-009~011 등록 step 저장
cover_letter_questions 구현
- LLM Job 요약 또는 첨삭 버전 상세 조회
완료 기준
참고
docs/status.md의 Next Issue Slice Candidates에서 API-007이 DB/JPA 전환 이후 첫 후보로 정리되어 있다.
docs/decisions/persistence.md의 후속 작업 순서도 API-007 목록 조회를 DB/JPA repository 기반 구현의 다음 단계로 둔다.
- #27이 merge된 뒤
dev에서 새 브랜치를 생성해 진행한다.
목표
현재 로그인한 사용자가 본인이 작성한 자기소개서 목록을 페이지 단위로 조회할 수 있게 한다.
DB/JPA 전환 이후 첫 CRUD 확장 slice로, API-007
GET /cover-letters를 구현해 owner filter, status filter, pagination, 정렬, soft delete 제외 정책을 실제 repository query 기준으로 검증한다.작업 범위
GET /cover-lettersGET /cover-letters?page=1&size=9&status=DRAFTownerId기준 목록 조회deletedAt == null인 자기소개서만 조회statusquery parameter optional filtercreatedAt desc정렬page는 1-base, 내부Pageable은 0-base로 변환size기본값 9, 최대 9items,page,size,totalItems,totalPagesid,title,companyName,positionTitle,status,createdAt,latestReviewVersionIddocs/status.md,docs/api/README.md갱신cover_letter_questions구현완료 기준
GET /cover-letters가 문서 계약대로 동작한다.statusquery parameter가 있으면 해당 상태만 조회된다.createdAt desc정렬이 적용된다../gradlew test가 통과한다../gradlew check가 통과한다.참고
docs/status.md의 Next Issue Slice Candidates에서 API-007이 DB/JPA 전환 이후 첫 후보로 정리되어 있다.docs/decisions/persistence.md의 후속 작업 순서도 API-007 목록 조회를 DB/JPA repository 기반 구현의 다음 단계로 둔다.dev에서 새 브랜치를 생성해 진행한다.