88import org .springframework .ai .document .Document ;
99
1010import java .time .LocalDateTime ;
11- import java .util .ArrayList ;
12- import java .util .List ;
1311
1412@ Schema (description = "채팅 관련 DTO" )
1513public class ChatDto {
@@ -42,11 +40,10 @@ public static class ChatResponse {
4240 @ Schema (description = "AI 챗봇의 응답 메시지" , example = "네, 관련 법령과 판례를 바탕으로 답변해 드리겠습니다." )
4341 private String message ;
4442
45- @ Schema (description = "응답 생성에 참고한 유사 판례 정보 목록" )
46- private List <Document > similarCases ;
43+ private ChatPrecedentDto precedent ;
44+
45+ private ChatLawDto law ;
4746
48- @ Schema (description = "응답 생성에 참고한 유사 법령 정보 목록" )
49- private List <Document > similarLaws ;
5047 }
5148
5249 @ Getter
@@ -73,6 +70,14 @@ public static ChatPrecedentDto from(ChatPrecedent cp) {
7370 .caseName (cp .getCaseName ())
7471 .build ();
7572 }
73+
74+ public static ChatPrecedentDto from (Document doc ) {
75+ return ChatPrecedentDto .builder ()
76+ .precedentContent (doc .getText ())
77+ .caseNumber (doc .getMetadata ().get ("caseNumber" ).toString ())
78+ .caseName (doc .getMetadata ().get ("caseName" ).toString ())
79+ .build ();
80+ }
7681 }
7782
7883 @ Data
@@ -93,6 +98,13 @@ public static ChatLawDto from(ChatLaw cl) {
9398 .lawName (cl .getLawName ())
9499 .build ();
95100 }
101+
102+ public static ChatLawDto from (Document doc ) {
103+ return ChatLawDto .builder ()
104+ .content (doc .getText ())
105+ .lawName (doc .getMetadata ().get ("lawName" ).toString ())
106+ .build ();
107+ }
96108 }
97109
98110 @ Getter
@@ -109,31 +121,31 @@ public static class ChatHistoryDto {
109121 @ Schema (description = "메시지 내용" , example = "안녕하세요~~" )
110122 private String message ;
111123
112- private List < ChatPrecedentDto > precedents ;
124+ private ChatPrecedentDto precedent ;
113125
114- private List < ChatLawDto > laws ;
126+ private ChatLawDto law ;
115127
116128 @ Schema (description = "생성 시간" )
117129 private LocalDateTime createdAt ;
118130
119131 public static ChatHistoryDto from (Chat chat ) {
120132
121- List < ChatPrecedentDto > precedentDtos = new ArrayList <>() ;
122- for ( ChatPrecedent cp : chat .getChatPrecedents ()) {
123- precedentDtos . add ( ChatPrecedentDto .from (cp ));
133+ ChatPrecedentDto precedentDto = null ;
134+ if ( chat . getChatPrecedents () != null && ! chat .getChatPrecedents (). isEmpty ()) {
135+ precedentDto = ChatPrecedentDto .from (chat . getChatPrecedents (). get ( 0 ));
124136 }
125137
126- List < ChatLawDto > lawDtos = new ArrayList <>() ;
127- for ( ChatLaw cl : chat .getChatLaws ()) {
128- lawDtos . add ( ChatLawDto .from (cl ));
138+ ChatLawDto lawDto = null ;
139+ if ( chat . getChatLaws () != null && ! chat .getChatLaws (). isEmpty ()) {
140+ lawDto = ChatLawDto .from (chat . getChatLaws (). get ( 0 ));
129141 }
130142
131143 return ChatHistoryDto .builder ()
132144 .type (chat .getType ().toString ())
133145 .message (chat .getMessage ())
134146 .createdAt (chat .getCreatedAt ())
135- .precedents ( precedentDtos )
136- .laws ( lawDtos )
147+ .precedent ( precedentDto )
148+ .law ( lawDto )
137149 .build ();
138150 }
139151 }
0 commit comments