Skip to content

[Fix] 프로젝트 쿼터 응답 DTO가 통일되지 않는 문제 해결 #27 - #43

Merged
jjjjjk12 merged 3 commits into
mainfrom
fix/#27/project-quota-dto-unification
Jun 22, 2026
Merged

[Fix] 프로젝트 쿼터 응답 DTO가 통일되지 않는 문제 해결 #27#43
jjjjjk12 merged 3 commits into
mainfrom
fix/#27/project-quota-dto-unification

Conversation

@callme-waffle

Copy link
Copy Markdown
Member

📌 변경 요약 (Summary)

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

  • 프로젝트 목록 응답에서 하위 호환용으로 남아있던 projectBrief 필드를 제거하고 quota만 응답하도록 정리했습니다.
  • 프로젝트 생성요청 목록 응답의 쿼터 필드를 projectBrief에서 quota로 통일했습니다.
  • 사용자/관리자 프로젝트 및 프로젝트 생성요청 Swagger 예시와 스키마가 실제 응답과 일치하도록 수정했습니다.

🔗 관련 이슈 (Related Issue)

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

Closes #27


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

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

  1. [Refactor] 프로젝트 쿼터 및 프로젝트 생성 요청 쿼터 응답 DTO 통일 #27 이슈 본문과 코멘트 맥락 확인
  2. FE 반영 완료 코멘트에 따라 ProjectResponse.projectBrief 제거
  3. ProjectRequestDto, ProjectRequestResponse, ProjectQuotaRequest의 생성요청 쿼터 필드명을 quota로 통일
  4. 사용자/관리자 프로젝트 목록 및 생성요청 목록 Swagger 예시 갱신
  5. DTO 직렬화 테스트와 관련 서비스 테스트 추가/보정
  6. 로컬 전체 자동 테스트 및 실제 API/Swagger 응답 검증
  7. 테스트용 DB/Redis 리소스 정리

✨ 주요 변경 사항 (Key Changes)

  • ProjectResponse에서 deprecated projectBrief record component와 builder 할당을 제거했습니다.
  • ProjectRequestResponse가 생성요청 쿼터를 quota 필드로 직렬화하도록 변경했습니다.
  • ProjectRequestDto 내부 필드와 승인 시 생성 DTO 변환 로직이 quota 명명으로 동작하도록 정리했습니다.
  • Swagger/OpenAPI 문서에서 관련 프로젝트 응답 예시가 모두 quota를 사용하고 projectBrief를 노출하지 않도록 수정했습니다.
  • DTO 직렬화 테스트에서 projectBrief 미노출과 quota 노출을 명시적으로 검증했습니다.

🧪 테스트 결과 (Test Results)

테스트 환경

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

테스트 방법

  1. 전체 자동 테스트 실행

    • ./gradlew test
    • 결과: BUILD SUCCESSFUL
  2. Swagger/OpenAPI 문서 검증

    • /v3/api-docs 호출
    • 전체 문서 내 projectBrief_count=0 확인
    • /api/v1/projects, /api/v1/projects/request, /api/v1/admin/projects, /api/v1/admin/projects/request 200 응답 예시에 quota 포함 및 projectBrief 미포함 확인
  3. 실제 프로젝트 목록 API 호출

    • GET /api/v1/projects
    • GET /api/v1/admin/projects?limit=1
    • 결과: 200 응답, 첫 항목에 quota 존재 및 projectBrief 없음 확인
  4. 실제 프로젝트 생성요청 목록 API 호출

    • 테스트용 프로젝트 생성요청 생성
    • GET /api/v1/projects/request?keyword=issue27-quota-request-20260619-001&limit=1
    • GET /api/v1/admin/projects/request?keyword=issue27-quota-request-20260619-001&limit=1
    • 결과: 200 응답, 첫 항목에 quota 존재 및 projectBrief 없음 확인
  5. 테스트 리소스 정리 검증

    • DB project_requests, outbox_events 테스트 데이터 삭제
    • Redis 테스트 세션 삭제
    • 최종 잔여물 0건 확인

테스트 결과

  • 정상 동작 확인
  • 예외 상황 테스트
  • 기존 기능 영향 없음

검증 결과 요약:

./gradlew test: BUILD SUCCESSFUL

OpenAPI:
projectBrief_count=0
/api/v1/projects: quota=true, projectBrief=false
/api/v1/projects/request: quota=true, projectBrief=false
/api/v1/admin/projects: quota=true, projectBrief=false
/api/v1/admin/projects/request: quota=true, projectBrief=false

실제 API:
GET /api/v1/projects -> 200, quota=true, projectBrief=false
GET /api/v1/admin/projects?limit=1 -> 200, quota=true, projectBrief=false
GET /api/v1/projects/request?keyword=issue27-quota-request-20260619-001&limit=1 -> 200, quota=true, projectBrief=false
GET /api/v1/admin/projects/request?keyword=issue27-quota-request-20260619-001&limit=1 -> 200, quota=true, projectBrief=false

정리 후 확인:
db_project_requests=0
db_outbox_events=0
redis_session_exists=0

@jjjjjk12

Copy link
Copy Markdown
Member

작업이 다 완료되었다면 드래프트 풀어주세요

@callme-waffle
callme-waffle marked this pull request as ready for review June 21, 2026 23:05
@jjjjjk12

Copy link
Copy Markdown
Member

LGTM

@jjjjjk12
jjjjjk12 merged commit 1a8ac57 into main Jun 22, 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.

[Refactor] 프로젝트 쿼터 및 프로젝트 생성 요청 쿼터 응답 DTO 통일

2 participants