추세검색 설정 수정

This commit is contained in:
Macbook
2026-05-27 02:10:00 +09:00
parent 2e08c6b16f
commit fc06a16184
27 changed files with 1262 additions and 147 deletions
@@ -2,7 +2,9 @@ package com.goldenchart.controller;
import com.goldenchart.dto.TrendSearchRequest;
import com.goldenchart.dto.TrendSearchResultDto;
import com.goldenchart.dto.TrendSearchResultsResponse;
import com.goldenchart.service.TrendSearchService;
import com.goldenchart.service.TrendSearchSnapshotService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
@@ -13,8 +15,9 @@ import java.util.List;
/**
* 암호화폐 추세검색 API.
*
* POST /api/trend-search/scan — 조건 스캔
* GET /api/trend-search/detail?market=KRW-BTC — 단일 종목 상세
* POST /api/trend-search/scan — 조건 스캔 후 DB 스냅샷 갱신
* GET /api/trend-search/results — DB 스냅샷 조회 (자동 갱신 화면용)
* GET /api/trend-search/detail — 단일 종목 상세
*/
@RestController
@RequestMapping("/trend-search")
@@ -23,11 +26,24 @@ import java.util.List;
public class TrendSearchController {
private final TrendSearchService trendSearchService;
private final TrendSearchSnapshotService snapshotService;
@PostMapping("/scan")
public ResponseEntity<List<TrendSearchResultDto>> scan(@RequestBody TrendSearchRequest request) {
public ResponseEntity<List<TrendSearchResultDto>> scan(
@RequestHeader(value = "X-User-Id", required = false) String userIdHeader,
@RequestHeader(value = "X-Device-Id", required = false) String deviceId,
@RequestBody TrendSearchRequest request) {
log.info("[TrendSearch] scan tf={} limit={}", request.getTimeframe(), request.getLimit());
return ResponseEntity.ok(trendSearchService.scan(request));
Long userId = parseUserId(userIdHeader);
return ResponseEntity.ok(snapshotService.scanAndPersist(userId, deviceId, request));
}
@GetMapping("/results")
public ResponseEntity<TrendSearchResultsResponse> results(
@RequestHeader(value = "X-User-Id", required = false) String userIdHeader,
@RequestHeader(value = "X-Device-Id", required = false) String deviceId) {
Long userId = parseUserId(userIdHeader);
return ResponseEntity.ok(snapshotService.getResults(userId, deviceId));
}
@GetMapping("/detail")
@@ -38,4 +54,13 @@ public class TrendSearchController {
if (timeframe != null) req.setTimeframe(timeframe);
return ResponseEntity.ok(trendSearchService.detail(market, req));
}
private Long parseUserId(String header) {
if (header == null || header.isBlank()) return null;
try {
return Long.parseLong(header);
} catch (NumberFormatException e) {
return null;
}
}
}