Skip to content

Feat: 경험정리 목록/개별 조회 API 구현 (#38)#80

Merged
IISweetHeartII merged 2 commits intodevfrom
feat/experience-read-#38
Feb 12, 2026
Merged

Feat: 경험정리 목록/개별 조회 API 구현 (#38)#80
IISweetHeartII merged 2 commits intodevfrom
feat/experience-read-#38

Conversation

@IISweetHeartII
Copy link
Contributor

@IISweetHeartII IISweetHeartII commented Feb 12, 2026

Summary

경험정리 도메인의 목록 조회 및 개별 조회 API를 구현했습니다. 스텁 처리되어 있던 조회 엔드포인트를 서비스/리포지토리 로직과 연결하고, 상태 응답을 위한 DTO 변환을 추가했습니다.

Changes

  • GET /experiences 엔드포인트 구현 (키워드 검색 지원)
  • GET /experiences/:experienceId 엔드포인트 구현
  • ExperienceStatus enum 추가 (ON_CHAT, GENERATE, DONE)
  • ExperienceEntity에 status 컬럼 추가 및 기본값 설정
  • ExperienceRepository에 findAllByUserId, findByIdAndUserId 추가
  • ExperienceService에 getExperiences/getExperience/findByIdOrThrow 추가
  • ExperienceStateResDTO 응답 매핑 로직 추가

Type of Change

  • Bug fix (기존 기능을 수정하는 변경)
  • New feature (새로운 기능 추가)
  • Breaking change (기존 기능에 영향을 주는 변경)
  • Refactoring (기능 변경 없이 코드 개선)
  • Documentation (문서 변경)
  • Chore (빌드, 설정 등)

Target Environment

  • Dev (dev)
  • Prod (main)

Related Issues

Testing

  • Postman/Swagger로 API 호출 확인
  • 단위 테스트 통과
  • E2E 테스트 통과

실행 결과:

  • pnpm run lint: 통과
  • pnpm run build: 통과 (TSC 0 issues)
  • pnpm exec jest --passWithNoTests: No tests found, code 0

Checklist

  • 코드 컨벤션을 준수했습니다 (docs/development/CODE_STYLE.md)
  • Git 컨벤션을 준수했습니다 (docs/development/GIT_CONVENTIONS.md)
  • 네이밍 컨벤션을 준수했습니다 (docs/development/NAMING_CONVENTIONS.md)
  • 로컬에서 빌드가 성공합니다 (pnpm run build)
  • 로컬에서 린트가 통과합니다 (pnpm run lint)
  • (API 변경 시) Swagger 문서가 업데이트되었습니다
  • (필요 시) 테스트 코드를 작성했습니다

Screenshots (Optional)

N/A

Additional Notes

@gemini-code-assist
Copy link

Summary of Changes

Hello @IISweetHeartII, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

이 PR은 경험 정리 도메인에 대한 핵심 조회 기능을 도입합니다. 사용자들은 이제 자신의 경험 정리 목록을 조회하거나 특정 경험 정리의 상세 상태를 확인할 수 있습니다. 이를 위해 경험 정리의 상태를 관리하는 새로운 enum과 엔티티 필드가 추가되었으며, 서비스 및 데이터 접근 계층에 필요한 비즈니스 로직과 쿼리 메서드가 구현되었습니다. 컨트롤러는 이 새로운 서비스 로직을 활용하여 API 엔드포인트를 제공합니다.

Highlights

  • 경험 정리 조회 API 구현: 경험 정리 목록(GET /experiences) 및 개별 조회(GET /experiences/:experienceId) API가 새롭게 구현되었습니다.
  • ExperienceStatus Enum 추가: 경험 정리의 현재 상태를 나타내는 ExperienceStatus enum(ON_CHAT, GENERATE, DONE)이 추가되었습니다.
  • Experience 엔티티 및 DTO 업데이트: Experience 엔티티에 status 필드가 추가되었고, ExperienceStateResDTO가 상세 상태 정보를 포함하도록 확장되었습니다.
  • 서비스 및 리포지토리 계층 로직 추가: ExperienceService에 조회 로직이, ExperienceRepository에 사용자 ID 기반 조회 및 키워드 검색 쿼리 메서드가 추가되었습니다.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • src/modules/experience/application/dtos/experience.dto.ts
    • ExperienceStatus enum을 임포트했습니다.
    • ExperienceStateResDTO에 id, name, hopeJob, status, createdAt 필드를 추가하고 Experience 엔티티로부터 DTO를 생성하는 from 정적 메서드를 구현했습니다.
  • src/modules/experience/application/services/experience.service.ts
    • ExperienceStateResDTO를 임포트했습니다.
    • ID와 사용자 ID로 경험 정리를 찾아 반환하거나 예외를 발생시키는 findByIdOrThrow 메서드를 추가했습니다.
    • 사용자 ID와 키워드로 경험 정리 목록을 조회하는 getExperiences 메서드를 추가했습니다.
    • 특정 경험 정리를 조회하는 getExperience 메서드를 추가했습니다.
  • src/modules/experience/domain/enums/experience-status.enum.ts
    • ON_CHAT, GENERATE, DONE 상태를 포함하는 ExperienceStatus enum을 새로 생성했습니다.
  • src/modules/experience/domain/experience.entity.ts
    • ExperienceStatus enum을 임포트했습니다.
    • Experience 엔티티에 status 컬럼을 추가하고 기본값을 ExperienceStatus.ON_CHAT으로 설정했습니다.
    • create 정적 메서드에서 status 필드를 ExperienceStatus.ON_CHAT으로 초기화하도록 수정했습니다.
  • src/modules/experience/infrastructure/repositories/experience.repository.ts
    • ILike 연산자를 임포트했습니다.
    • ID와 사용자 ID로 경험 정리를 조회하는 findByIdAndUserId 메서드를 추가했습니다.
    • 사용자 ID와 키워드로 경험 정리 목록을 조회하고 생성일 기준으로 내림차순 정렬하는 findAllByUserId 메서드를 추가했습니다.
  • src/modules/experience/presentation/experience.controller.ts
    • Param 데코레이터와 ExperienceService를 임포트했습니다.
    • ExperienceService를 컨트롤러 생성자에 주입했습니다.
    • getExperiences 엔드포인트가 ExperienceService를 사용하여 경험 정리 목록을 조회하도록 구현했습니다.
    • getExperience 엔드포인트가 ExperienceService를 사용하여 특정 경험 정리를 조회하도록 구현했습니다.
    • BusinessException 임포트를 제거했습니다.
Activity
  • Postman/Swagger를 통해 API 호출을 확인했습니다.
  • 로컬 빌드(pnpm run build)가 성공적으로 완료되었습니다.
  • 로컬 린트(pnpm run lint)가 metadata.ts 파일을 제외하고 통과했습니다.
  • Jest 테스트(pnpm exec jest --passWithNoTests)가 실행되었으나, 현재 작성된 테스트가 없어 'No tests found'로 종료되었습니다.
  • 코드 컨벤션, Git 컨벤션, 네이밍 컨벤션을 준수했습니다.
  • API 변경에 따라 Swagger 문서가 업데이트되었습니다.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This PR implements the experience list and individual lookup APIs. A critical security oversight was identified: the ExperienceController lacks an authentication guard, allowing unauthenticated access to endpoints that rely on user identification for access control. This could lead to Insecure Direct Object Reference (IDOR) vulnerabilities where data ownership checks are bypassed. Additionally, to improve architectural consistency, it is suggested to route all calls through ExperienceFacade.

@IISweetHeartII IISweetHeartII merged commit cb5df91 into dev Feb 12, 2026
2 checks passed
@IISweetHeartII IISweetHeartII deleted the feat/experience-read-#38 branch February 12, 2026 05:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✨ feature New feature or request 덕환

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feat] 경험정리 목록/개별 조회 API 구현

1 participant