-
Notifications
You must be signed in to change notification settings - Fork 2
[BE] SISC1-56 [DOCS] 스웨거 관련 코드 추가 #75
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
The head ref may contain hidden characters: "SISC1-56-BE-\uBC31\uD14C\uC2A4\uD305-\uC2E4\uD589-API-\uAD6C\uD604"
Conversation
Walkthrough백엔드에서 OpenAPI 주석을 추가하고 몇몇 DTO에 스키마 기본값을 명시했으며, H2 런타임 의존성을 제거, 저장소 쿼드 확장 및 TemplateService에 BacktestRun 통합과 소유권 검증을 추가하고 JPA 속성을 설정에 적용했습니다. Changes
Sequence Diagram(s)sequenceDiagram
participant Client
participant TemplateController
participant TemplateService
participant TemplateRepository
participant BacktestRunRepository
Client->>TemplateController: GET /templates/{templateId}
TemplateController->>TemplateService: findById(templateId, userId)
TemplateService->>TemplateService: authorizeTemplateOwner(templateId, userId)
alt 소유권 검증 성공
TemplateService->>TemplateRepository: findById(templateId)
TemplateRepository-->>TemplateService: Template
TemplateService->>BacktestRunRepository: findByTemplate_TemplateIdWithTemplate(templateId)
BacktestRunRepository-->>TemplateService: List<BacktestRun>
TemplateService-->>TemplateController: TemplateResponse (backtestRuns 포함)
TemplateController-->>Client: HTTP 200 + TemplateResponse
else 소유권 검증 실패
TemplateService-->>TemplateController: 권한/예외 전달
TemplateController-->>Client: HTTP 403/404
end
Estimated code review effort🎯 3 (중간) | ⏱️ ~20분
Possibly related PRs
Poem
Pre-merge checks and finishing touches❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 3
🧹 Nitpick comments (1)
backend/src/main/java/org/sejongisc/backend/stock/repository/PriceDataRepository.java (1)
14-14: 페이징 처리를 고려해 주세요.
findByTicker메서드는 특정 티커에 대한 모든 가격 데이터를 반환합니다. 주식 데이터는 수년간의 일별 데이터가 축적될 수 있어 결과 세트가 상당히 클 수 있습니다.프로덕션 환경에서 사용할 경우 페이징 또는 날짜 범위 제한을 추가하는 것을 권장합니다:
Page<PriceData> findByTicker(String ticker, Pageable pageable);또는
List<PriceData> findByTickerOrderByDateDesc(String ticker, Pageable pageable);
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (14)
backend/build.gradle(0 hunks)backend/src/main/java/org/sejongisc/backend/backtest/controller/BacktestController.java(5 hunks)backend/src/main/java/org/sejongisc/backend/backtest/dto/BacktestRunRequest.java(2 hunks)backend/src/main/java/org/sejongisc/backend/backtest/dto/StrategyCondition.java(2 hunks)backend/src/main/java/org/sejongisc/backend/backtest/dto/StrategyOperand.java(2 hunks)backend/src/main/java/org/sejongisc/backend/backtest/repository/BacktestRunRepository.java(1 hunks)backend/src/main/java/org/sejongisc/backend/common/config/PrimaryDataSourceConfig.java(3 hunks)backend/src/main/java/org/sejongisc/backend/common/config/StockDataSourceConfig.java(1 hunks)backend/src/main/java/org/sejongisc/backend/point/controller/PointHistoryController.java(2 hunks)backend/src/main/java/org/sejongisc/backend/stock/TestController.java(1 hunks)backend/src/main/java/org/sejongisc/backend/stock/repository/PriceDataRepository.java(1 hunks)backend/src/main/java/org/sejongisc/backend/template/controller/TemplateController.java(3 hunks)backend/src/main/java/org/sejongisc/backend/template/dto/TemplateResponse.java(2 hunks)backend/src/main/java/org/sejongisc/backend/template/service/TemplateService.java(3 hunks)
💤 Files with no reviewable changes (1)
- backend/build.gradle
🧰 Additional context used
🧬 Code graph analysis (1)
backend/src/main/java/org/sejongisc/backend/backtest/controller/BacktestController.java (1)
backend/src/main/java/org/sejongisc/backend/common/auth/springsecurity/CustomUserDetailsService.java (1)
RequiredArgsConstructor(16-38)
🔇 Additional comments (8)
backend/src/main/java/org/sejongisc/backend/common/config/StockDataSourceConfig.java (1)
48-57: JPA 설정이 적절하게 구성되었습니다.Stock 데이터 소스에 대한 JPA 속성 설정이 올바르게 추가되었습니다.
hibernate.hbm2ddl.auto=none설정은 주식 데이터와 같은 읽기 전용 데이터 소스에 적합합니다.backend/src/main/java/org/sejongisc/backend/common/config/PrimaryDataSourceConfig.java (1)
55-73: Primary 데이터 소스 JPA 설정이 올바릅니다.Hibernate 속성이 적절하게 추가되었으며,
hbm2ddl.auto=update는 애플리케이션이 관리하는 Primary 데이터베이스에 적합한 설정입니다.backend/src/main/java/org/sejongisc/backend/point/controller/PointHistoryController.java (1)
21-45: Swagger 문서화가 잘 추가되었습니다.API 문서화를 위한
@Tag및@Operation어노테이션이 명확하고 적절하게 추가되었습니다.backend/src/main/java/org/sejongisc/backend/template/dto/TemplateResponse.java (1)
16-16: Entity를 DTO에서 직접 노출하는 것을 검토해 주세요.
BacktestRun엔티티가 응답 DTO에 직접 포함되어 있습니다. 일반적으로 API 응답에서는 엔티티를 직접 노출하지 않고 별도의 DTO로 변환하여 사용하는 것이 권장됩니다. 이는 엔티티의 모든 필드가 노출되거나 순환 참조 문제가 발생할 수 있기 때문입니다.별도의
BacktestRunDto를 생성하거나, 현재 설계가 의도된 것인지 확인해 주세요.backend/src/main/java/org/sejongisc/backend/backtest/dto/StrategyCondition.java (1)
17-27: Swagger 스키마 문서화가 적절합니다.필드에 대한
@Schema어노테이션이 명확하게 추가되어 API 문서의 가독성을 향상시킵니다.backend/src/main/java/org/sejongisc/backend/template/controller/TemplateController.java (1)
21-43: Swagger 문서화 및 보안 개선이 잘 되었습니다.API 문서화를 위한 어노테이션이 적절하게 추가되었으며, Line 46에서 템플릿 조회 시
userId를 전달하여 소유권 검증을 수행하는 것은 보안 측면에서 좋은 개선입니다.backend/src/main/java/org/sejongisc/backend/backtest/dto/BacktestRunRequest.java (2)
24-25: ticker의 defaultValue는 적절합니다.
ticker필드의 기본값이 올바르게 설정되었습니다.
33-34: note의 defaultValue는 적절합니다.
note필드의 기본값이 명확하고 적절하게 설정되었습니다.
backend/src/main/java/org/sejongisc/backend/backtest/dto/BacktestRunRequest.java
Outdated
Show resolved
Hide resolved
backend/src/main/java/org/sejongisc/backend/backtest/repository/BacktestRunRepository.java
Outdated
Show resolved
Hide resolved
backend/src/main/java/org/sejongisc/backend/stock/TestController.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (1)
backend/src/main/java/org/sejongisc/backend/backtest/repository/BacktestRunRepository.java (1)
14-18: 이전 리뷰의 @param 누락 문제가 해결됨Line 18에
@Param("templateTemplateId")어노테이션이 명시적으로 추가되어 이전 리뷰에서 지적된 런타임 오류 가능성이 해소되었습니다. JPQL의 명명 파라미터와 메서드 파라미터가 올바르게 매핑되었으며,JOIN FETCH를 사용하여 N+1 쿼리 문제를 방지한 것도 좋습니다.선택적 개선: 파라미터 이름 단순화 고려
파라미터 이름
templateTemplateId가 다소 중복적입니다. 컨텍스트상 명확하므로templateId로 단순화할 수 있습니다.- List<BacktestRun> findByTemplate_TemplateIdWithTemplate(@Param("templateTemplateId") UUID templateTemplateId); + List<BacktestRun> findByTemplate_TemplateIdWithTemplate(@Param("templateId") UUID templateId);JPQL 쿼리도 함께 수정:
@Query("SELECT br FROM BacktestRun br " + "JOIN FETCH br.template t " + - "WHERE t.templateId = :templateTemplateId " + + "WHERE t.templateId = :templateId " + "ORDER BY br.startedAt DESC")
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
backend/src/main/java/org/sejongisc/backend/backtest/repository/BacktestRunRepository.java(1 hunks)
🔇 Additional comments (1)
backend/src/main/java/org/sejongisc/backend/backtest/repository/BacktestRunRepository.java (1)
5-12: 필요한 임포트가 올바르게 추가됨커스텀 쿼리 구현을 위한
@Query,@Param임포트와@Repository어노테이션이 적절히 추가되었습니다. 이전 리뷰에서 지적된@Param누락 문제를 해결하기 위한 준비가 완료되었습니다.
Summary by CodeRabbit
새로운 기능
문서화
개선 사항