Actions
새기능 #526
open[백엔드/리팩토링] 대형 구조 개선 — ChartController 분리 · Map→DTO · curl→RestTemplate
Status:
해결
Priority:
보통
Assignee:
-
Start date:
06/27/2026
Due date:
% Done:
80%
Estimated time:
Description
#520에서 분리(대형/구조 리팩토링, 별도 진행).
항목¶
- ChartController(614줄) god-class 분리: Chart/Media(youtube·karaoke)/Lyrics/Visitor/CacheAdmin 컨트롤러로 분할(라우트 동일 유지). 로직은 서비스로 이동.
- Map<String,Object> 전면 사용 + CLOB 병렬배열 매핑 → DTO/MyBatis resultMap/typeHandler.
- 외부 HTTP를 curl ProcessBuilder로 호출(youtube/invidious/karaoke, ChartController:307/371/444) → RestTemplate/WebClient(연결풀·타임아웃) + Jsoup/objectMapper 파싱. (외부 의존이라 라이브 검증 필요.)
라우트/응답 형태는 불변 유지가 인수조건. Design-First 권장. [AI 등록]
Updated by joungmin ko about 2 months ago
- Status changed from 신규 to 해결
- % Done changed from 0 to 80
구현 완료(커밋 1045098). 설계 리뷰 APPROVE-WITH-CHANGES must-fix 반영.
[x] CacheService 추출(key/read/write/collectionTtl/clearByPrefix).
[x] ChartController(653줄) 5분할: Chart/Media/Lyrics/Visitor/CacheAdmin, 라우트 불변.
[x] curl ProcessBuilder → RestTemplate: 별도 scrapingRestTemplate 빈(공유 OAuth 빈 보존), karaoke UTF-8 byte[] 디코딩, UA/try-catch 동등.
[ ] Map→DTO 전환: 위험·대규모(프론트 계약)로 분리 → #529.
검증: BUILD SUCCESS, 클린 부팅(DI/매핑), 이동 엔드포인트+차트 회귀 200, /youtube-id 15 videoId 정상(RestTemplate 검증). 참고: /karaoke found:false는 tjmedia JS검색 전환 기존결함(#530), 리팩토링 회귀 아님. [AI 조치]
Actions