Skip to content

AI Portfolio#111

Merged
Paley-Z merged 6 commits into
publishfrom
main
Jun 24, 2026
Merged

AI Portfolio#111
Paley-Z merged 6 commits into
publishfrom
main

Conversation

@Paley-Z

@Paley-Z Paley-Z commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

merging main to publish

yongseong123 and others added 6 commits June 24, 2026 12:38
- portfolio_draft_history 테이블 추가 (V5 Flyway 마이그레이션)
- PortfolioDraftHistory 엔티티, 레포지토리 추가
- 포트폴리오 생성 시 입력 정보와 초안 내용을 이력 테이블에 저장
- GET /api/ai/portfolio-drafts/history: 생성 이력 목록 조회 (페이징)
- GET /api/ai/portfolio-drafts/history/{historyId}: 이력 단건 상세 조회
- CourseListResponse에 trprDegr(기수) 필드 추가 및 from() 팩토리 개선

Closes #108
- DELETE /api/ai/portfolio-drafts/history/{historyId}
- 본인 이력만 삭제 가능, 타인 이력 접근 시 404 반환
- [Fix 1] 이력 저장 실패가 AI 응답 반환을 막지 않도록 save() 예외 흡수 처리
- [Fix 2·4·5] PortfolioDraftHistory의 자체 ObjectMapper 제거 → @convert 패턴으로 교체
  - List<String> 필드: 기존 StringListConverter 재사용
  - projects 필드: PortfolioProjectExperienceRequestListConverter 신규 추가
  - projectDescriptions 필드: PortfolioDraftProjectListConverter 신규 추가
- [Fix 3] 이력 저장 호출 누락 시 감지하도록 테스트에 verify(save) 추가
- [Fix 4] PortfolioDraftHistoryDetailResponse.projects 타입을 List<Object>에서
  List<PortfolioProjectExperienceRequest>로 변경하여 타입 안전성 복원
- [Fix 6] 컨트롤러의 중복 Sort 제거 — 정렬은 레포지토리 메서드명으로 단일 관리
- [Fix 7] CourseListResponse.from(Course, CourseSession)에 reviewRating 파라미터 추가
  하여 null 고정 문제 해소
- [Fix 8] CourseListResponse.from(Course, CourseSession)에서 id와 courseId 불일치 수정
  — id는 세션이 있으면 세션 PK, 없으면 과정 PK로 from(CourseSession, BigDecimal)와 일관성 유지
- PortfolioDraftHistoryWriter(@transactional REQUIRES_NEW) 추출로 이력 저장
  실패 시 외부 트랜잭션이 rollback-only로 오염되던 문제 해결
- AbstractJsonListConverter<T> 도입으로 세 Converter 중복 제거 및
  ObjectMapper 인스턴스 단일화
- CourseListResponse 12-arg 편의 생성자 삭제 (테스트 전용 dead code) 및
  CourseControllerTest를 정식 생성자 사용으로 전환
feat: AI 포트폴리오 생성 이력 조회 및 과정 목록 기수 필드 추가
@Paley-Z
Paley-Z merged commit b3622b7 into publish Jun 24, 2026
2 checks 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