Skip to content

종목 조회 및 시세 API 구현 - #17

Merged
cfcromn merged 3 commits into
developfrom
feat/16-symbols-market-data
Aug 3, 2026
Merged

종목 조회 및 시세 API 구현#17
cfcromn merged 3 commits into
developfrom
feat/16-symbols-market-data

Conversation

@cfcromn

@cfcromn cfcromn commented Aug 3, 2026

Copy link
Copy Markdown
Collaborator

✨ 작업 내용

Twelve Data 기반 종목 메타데이터 동기화와 시세 조회 API를 구현했습니다.

  • GET /symbols, GET /symbols/search 페이지네이션 조회
  • GET /symbols/{symbolId}/price Redis cache-aside 현재가 조회
  • GET /symbols/{symbolId}/price-history UTC 1시간봉·최대 7일 조회
  • 미국 보통주와 USD 암호화폐 최초·일일 동기화
  • KR 비활성 시장 및 외부 시세 오류 처리
  • market 도메인 계층·파일 구조 정리
  • Springdoc 및 Notion API 명세 갱신

🔍 리뷰 시 참고사항

  • 현재가 TTL은 US 60초, COIN 15초이며 히스토리 TTL은 15분입니다.
  • 종목 동기화는 US와 COIN 응답을 모두 받은 뒤 DB 갱신을 시작하므로 일부 호출 실패 시 기존 데이터를 유지합니다.
  • 운영 환경에서 TWELVE_DATA_ENABLED=true, TWELVE_DATA_API_KEY 설정이 필요합니다.
  • PriceSnapshot 적재와 별도 실시간 가격 수집기는 이번 범위에 포함하지 않았습니다.

✅ 체크리스트

  • 문서(README, .env.example 등) 변경이 필요한 경우 작성 또는 수정했나요?
  • 작업한 코드가 정상적으로 동작하는 것을 직접 확인했나요?
  • 필요한 경우 테스트 코드를 작성하거나 수정했나요?
  • Merge 대상 브랜치를 올바르게 설정했나요?
  • PR에 관련 없는 작업이 포함되지 않았나요?
  • 적절한 라벨과 리뷰어를 설정했나요?

검증

  • 전체 75개 테스트 통과
  • ./gradlew build
  • ./gradlew ktlintCheck
  • git diff --check

📎 관련 이슈(선택)

@cfcromn cfcromn added ✅ Test Test관련사항 ✨ Feature 신규 기능 labels Aug 3, 2026

@hej090224 hej090224 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

코드 리뷰 요약

Twelve Data 연동 및 market 도메인 계층화 전반적으로 구조가 깔끔하고 테스트 커버리지도 좋습니다. 아래 인라인 코멘트로 버그 가능성, 성능, 개선 제안, 컨벤션 관련 의견을 남겼습니다.

🔴 버그 가능성

  • SymbolRepository.searchActive의 LIKE 검색에서 %/_ 와일드카드 미이스케이프

🟠 성능

  • GetCurrentPriceServiceImpl / GetPriceHistoryServiceImpl에서 읽기 전용 트랜잭션 내부에 외부 HTTP 호출이 포함되어 DB 커넥션 점유 시간이 길어짐

🟡 개선 제안

  • SyncSymbolsServiceImpl의 안전장치가 '빈 응답'만 막고, '부분 응답'으로 인한 대량 비활성화는 막지 못함
  • 심볼/시장 활성 검증 로직이 여러 서비스 구현체에 중복

🔵 컨벤션/구조 (nit)

  • PriceSnapshot / PriceSnapshotRepository가 이번 PR에서 실제로 사용되지 않음
  • @ConfigurationProperties 배치(domain-local vs global.property) 컨벤션 정리 필요
  • 리포지토리 최초의 REST 엔드포인트라 URL 버전 프리픽스 유무를 미리 정해두면 좋을 것 같음

세부 내용은 각 인라인 코멘트를 참고해주세요.

@hej090224
hej090224 self-requested a review August 3, 2026 15:16

@hej090224 hej090224 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

수고하셨습니다

@cfcromn
cfcromn merged commit 12adbff into develop Aug 3, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✨ Feature 신규 기능 ✅ Test Test관련사항

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants