1+ package com .intellidev .ai .controller ;
2+
3+ import com .intellidev .ai .service .AIService ;
4+ import lombok .RequiredArgsConstructor ;
5+ import lombok .extern .slf4j .Slf4j ;
6+ import org .springframework .http .ResponseEntity ;
7+ import org .springframework .web .bind .annotation .*;
8+
9+ import java .util .HashMap ;
10+ import java .util .Map ;
11+
12+ @ RestController
13+ @ RequestMapping ("/api/ai" )
14+ @ RequiredArgsConstructor
15+ @ Slf4j
16+ public class AIController {
17+
18+ private final AIService aiService ;
19+
20+ /**
21+ * AI对话接口
22+ */
23+ @ PostMapping ("/chat" )
24+ public ResponseEntity <Map <String , Object >> chat (@ RequestBody ChatRequest request ) {
25+ log .info ("收到AI对话请求: {}" , request .getMessage ());
26+
27+ Map <String , Object > response = new HashMap <>();
28+
29+ if (!aiService .isAvailable ()) {
30+ response .put ("success" , false );
31+ response .put ("error" , "AI服务未配置,请设置OPENAI_API_KEY" );
32+ return ResponseEntity .badRequest ().body (response );
33+ }
34+
35+ try {
36+ String answer = aiService .chat (request .getMessage ());
37+
38+ response .put ("success" , true );
39+ response .put ("message" , request .getMessage ());
40+ response .put ("answer" , answer );
41+ response .put ("model" , aiService .getModel ());
42+
43+ return ResponseEntity .ok (response );
44+
45+ } catch (Exception e ) {
46+ log .error ("AI对话失败" , e );
47+ response .put ("success" , false );
48+ response .put ("error" , e .getMessage ());
49+ return ResponseEntity .internalServerError ().body (response );
50+ }
51+ }
52+
53+ /**
54+ * 代码审查接口
55+ */
56+ @ PostMapping ("/review-code" )
57+ public ResponseEntity <Map <String , Object >> reviewCode (@ RequestBody CodeReviewRequest request ) {
58+ log .info ("收到代码审查请求,语言: {}" , request .getLanguage ());
59+
60+ Map <String , Object > response = new HashMap <>();
61+
62+ if (!aiService .isAvailable ()) {
63+ response .put ("success" , false );
64+ response .put ("error" , "AI服务未配置" );
65+ return ResponseEntity .badRequest ().body (response );
66+ }
67+
68+ try {
69+ String review = aiService .reviewCode (request .getCode (), request .getLanguage ());
70+
71+ response .put ("success" , true );
72+ response .put ("language" , request .getLanguage ());
73+ response .put ("code" , request .getCode ());
74+ response .put ("review" , review );
75+ response .put ("model" , aiService .getModel ());
76+
77+ return ResponseEntity .ok (response );
78+
79+ } catch (Exception e ) {
80+ log .error ("代码审查失败" , e );
81+ response .put ("success" , false );
82+ response .put ("error" , e .getMessage ());
83+ return ResponseEntity .internalServerError ().body (response );
84+ }
85+ }
86+
87+ /**
88+ * 生成代码文档接口
89+ */
90+ @ PostMapping ("/generate-docs" )
91+ public ResponseEntity <Map <String , Object >> generateDocumentation (@ RequestBody CodeDocRequest request ) {
92+ log .info ("收到生成文档请求,语言: {}" , request .getLanguage ());
93+
94+ Map <String , Object > response = new HashMap <>();
95+
96+ if (!aiService .isAvailable ()) {
97+ response .put ("success" , false );
98+ response .put ("error" , "AI服务未配置" );
99+ return ResponseEntity .badRequest ().body (response );
100+ }
101+
102+ try {
103+ String documentation = aiService .generateDocumentation (request .getCode (), request .getLanguage ());
104+
105+ response .put ("success" , true );
106+ response .put ("language" , request .getLanguage ());
107+ response .put ("code" , request .getCode ());
108+ response .put ("documentation" , documentation );
109+ response .put ("model" , aiService .getModel ());
110+
111+ return ResponseEntity .ok (response );
112+
113+ } catch (Exception e ) {
114+ log .error ("生成文档失败" , e );
115+ response .put ("success" , false );
116+ response .put ("error" , e .getMessage ());
117+ return ResponseEntity .internalServerError ().body (response );
118+ }
119+ }
120+
121+ /**
122+ * 检查AI服务状态
123+ */
124+ @ GetMapping ("/status" )
125+ public ResponseEntity <Map <String , Object >> getStatus () {
126+ Map <String , Object > response = new HashMap <>();
127+ response .put ("service" , "Java AI Starter" );
128+ response .put ("version" , "0.0.1" );
129+ response .put ("ai_available" , aiService .isAvailable ());
130+ response .put ("ai_model" , aiService .isAvailable () ? aiService .getModel () : "未配置" );
131+ response .put ("timestamp" , System .currentTimeMillis ());
132+ return ResponseEntity .ok (response );
133+ }
134+
135+ // 请求DTO类
136+ public static class ChatRequest {
137+ private String message ;
138+
139+ public String getMessage () {
140+ return message ;
141+ }
142+
143+ public void setMessage (String message ) {
144+ this .message = message ;
145+ }
146+ }
147+
148+ public static class CodeReviewRequest {
149+ private String code ;
150+ private String language ;
151+
152+ public String getCode () {
153+ return code ;
154+ }
155+
156+ public void setCode (String code ) {
157+ this .code = code ;
158+ }
159+
160+ public String getLanguage () {
161+ return language ;
162+ }
163+
164+ public void setLanguage (String language ) {
165+ this .language = language ;
166+ }
167+ }
168+
169+ public static class CodeDocRequest {
170+ private String code ;
171+ private String language ;
172+
173+ public String getCode () {
174+ return code ;
175+ }
176+
177+ public void setCode (String code ) {
178+ this .code = code ;
179+ }
180+
181+ public String getLanguage () {
182+ return language ;
183+ }
184+
185+ public void setLanguage (String language ) {
186+ this .language = language ;
187+ }
188+ }
189+ }
0 commit comments