99import com .finsight .finsight .domain .ai .persistence .entity .AiArticleInsightEntity ;
1010
1111import java .util .*;
12+ import java .time .LocalDateTime ;
13+ import java .time .format .DateTimeFormatter ;
14+ import java .util .Locale ;
1215
1316import com .fasterxml .jackson .databind .JsonNode ;
1417import com .fasterxml .jackson .databind .ObjectMapper ;
@@ -21,6 +24,10 @@ public class LearningConverter {
2124
2225 private final ObjectMapper objectMapper ;
2326
27+ // 한국어 날짜 포맷터: "2026.01.01. 오후 4:51"
28+ private static final DateTimeFormatter KOREAN_DATE_FORMATTER = DateTimeFormatter .ofPattern ("yyyy.MM.dd. a h:mm" ,
29+ Locale .KOREAN );
30+
2431 // 단일 엔티티 -> NewsItem DTO
2532 public static LearningResponseDTO .NewsItem toNewsItem (NaverArticleEntity entity , List <AiTermCardEntity > terms ) {
2633 return LearningResponseDTO .NewsItem .builder ()
@@ -111,13 +118,23 @@ public LearningResponseDTO.NewsDetailResponse toNewsDetailResponse(
111118 .build ())
112119 .toList ())
113120 .title (article .getTitle ())
114- .date (article .getPublishedAt ().toString ())
121+ .date (formatKoreanDate (article .getPublishedAt ()))
122+ .thumbnailUrl (article .getThumbnailUrl ())
123+ .originalUrl (article .getUrl ())
115124 .summary3Lines (parseSummary3Lines (summary .getSummary3Lines ()))
116125 .bodySummary (summary .getSummaryFull ())
117126 .insights (parseInsights (insight .getInsightJson ()))
118127 .build ();
119128 }
120129
130+ // LocalDateTime을 한국어 형식 날짜로 변환
131+ private String formatKoreanDate (LocalDateTime dateTime ) {
132+ if (dateTime == null ) {
133+ return "" ;
134+ }
135+ return dateTime .format (KOREAN_DATE_FORMATTER );
136+ }
137+
121138 private LearningResponseDTO .Summary3Lines parseSummary3Lines (String rawText ) {
122139 if (rawText == null || rawText .isBlank ()) {
123140 return LearningResponseDTO .Summary3Lines .builder ().build ();
0 commit comments