Skip to content

[Fix] 프로젝트 조회 응답 사용자 이메일 필드 누락 문제 해결 #8 - #45

Closed
callme-waffle wants to merge 2 commits into
mainfrom
fix/#8/project-participant-email
Closed

[Fix] 프로젝트 조회 응답 사용자 이메일 필드 누락 문제 해결 #8#45
callme-waffle wants to merge 2 commits into
mainfrom
fix/#8/project-participant-email

Conversation

@callme-waffle

Copy link
Copy Markdown
Member

📌 변경 요약 (Summary)

이 PR에서 무엇을 변경했는지 간단히 설명해주세요.

  • 프로젝트 목록/상세 조회 응답에서 참여자 userEmail이 null로 내려오던 문제를 수정했습니다.
  • 프로젝트 참여자 이메일을 UserIdentityEntity.userEmail 기준으로 조회해 ProjectParticipantDto에 포함하도록 변경했습니다.
  • 프로젝트 요청 기반 응답 생성 시 요청자 이메일이 owner/participant 응답에 포함되도록 보완했습니다.

🔗 관련 이슈 (Related Issue)

이 PR과 관련된 이슈를 작성해주세요.

Closes #8


🛠 작업 내용 / 작업 순서 (Implementation Details)

이번 작업에서 수행한 내용이나 작업 순서를 작성해주세요.

  1. [Bug] 프로젝트 조회 응답 사용자 이메일 필드 누락 문제 #8 이슈 및 관련 코멘트 맥락 확인
  2. 프로젝트 목록/상세 조회 API에서 participants[].userEmail 누락 증상 확인
  3. ProjectParticipantDto가 UserDbExtraEntity만 참조하여 이메일을 채우지 못하던 원인 확인
  4. 프로젝트 참여자 ID 목록 기준으로 UserRepositoryPort.findUserDBsByUserIds를 일괄 조회하여 UserIdentityEntity.userEmail 매핑
  5. 프로젝트 상세 조회에서도 동일한 참여자 조회 경로를 사용하도록 수정
  6. 프로젝트 요청 응답 생성 시 요청자 이메일을 owner/participant에 반영
  7. 단위 테스트 및 실제 API 호출 기반 동작 테스트 수행
  8. OpenStack Keystone/Nova/Cinder 백엔드 통신 성공 로그 확인

✨ 주요 변경 사항 (Key Changes)

  • ProjectParticipantDto.from(ProjectParticipantEntity, String userEmail) 오버로드를 추가했습니다.
  • ProjectModule.getProjectParticipantList에서 참여자별 이메일을 UserIdentityEntity.userEmail 기준으로 채워 반환하도록 수정했습니다.
  • ProjectModule.getProjectDetail이 상세 응답의 participants도 동일한 참여자 조회 로직을 사용하도록 변경했습니다.
  • ProjectOwnerDto에 userEmail 필드를 추가하고, 프로젝트 요청 응답 생성 시 Keystone 사용자 이메일을 포함하도록 수정했습니다.
  • Swagger 예시 문서의 userEmail null 예시를 실제 이메일 값 예시로 갱신했습니다.

🧪 테스트 결과 (Test Results)

테스트 환경

  • 로컬 Spring Boot 애플리케이션
  • 테스트 DB 및 테스트 Redis 컨테이너
  • OpenStack 테스트 환경 연동
  • 인증 방식: Redis에 테스트용 SessionData를 직접 생성하고 acc-session-id 쿠키로 API 호출

테스트 방법

  1. 관련 단위 테스트 실행

    • ./gradlew test --tests com.acc.local.service.modules.auth.ProjectModuleTest --tests com.acc.local.dto.project.ProjectResponseTest --tests com.acc.local.dto.project.GetProjectResponseTest
    • 결과: BUILD SUCCESSFUL
  2. 전체 자동 테스트 실행

    • ./gradlew test
    • 결과: BUILD SUCCESSFUL
  3. 테스트 환경 기동 확인

    • Spring Boot 애플리케이션 bootRun 실행
    • /actuator/health 호출로 UP 확인
  4. 프로젝트 목록 API 실제 호출

    • GET /api/v1/projects
    • 결과: 200
    • participants[].userEmail에 non-null 값 반환 확인
  5. 프로젝트 상세 API 실제 호출

    • GET /api/v1/projects?projectId={test-project-id}
    • 결과: 200
    • participants[0].userEmail non-null 확인
  6. OpenStack 실제 통신 확인

    • Keystone scoped token 발급 성공
    • Keystone project 상세 조회 성공
    • Nova quota 상세 조회 성공
    • Cinder quota usage 조회 성공
  7. 테스트 리소스 정리

    • Redis 테스트 세션 삭제
    • 로컬 Spring Boot 애플리케이션 종료

테스트 결과

  • 정상 동작 확인
  • 예외 상황 테스트
  • 기존 기능 영향 없음
  • OpenStack 백엔드 실제 통신 확인

검증 결과 요약:

./gradlew test: BUILD SUCCESSFUL

프로젝트 목록 API:
status=200
participants[].userEmail non-null 확인

프로젝트 상세 API:
status=200
participants[0].userEmail non-null 확인

OpenStack 호출 확인:
Keystone issueScopedToken 성공
Keystone getProjectDetail 성공
Nova showQuotaDetail 성공
Cinder getQuotaUsage 성공

정리 후 확인:
redis_test_session_deleted=true
local_server_stopped=true

@jjjjjk12

Copy link
Copy Markdown
Member

Conflict 해결해주세요

…ipant-email

# Conflicts:
#	src/main/java/com/acc/local/controller/docs/ProjectDocs.java
#	src/test/java/com/acc/local/dto/project/ProjectResponseTest.java
@jjjjjk12

Copy link
Copy Markdown
Member

LGTM

@jjjjjk12 jjjjjk12 closed this Jun 27, 2026
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.

[Bug] 프로젝트 조회 응답 사용자 이메일 필드 누락 문제

2 participants