@@ -47,6 +47,7 @@ export default {
const selectedCategory = ref('')
const selectedTags = ref([])
const isWaitingPosting = ref(false)
+ const isAiLoading = ref(false)
const loadDraft = async () => {
const token = getToken()
@@ -154,6 +155,31 @@ export default {
}
}
}
+
+ const aiGenerate = async () => {
+ if (!content.value.trim()) {
+ toast.error('内容为空,无法优化')
+ return
+ }
+ isAiLoading.value = true
+ try {
+ const res = await fetch(`${API_BASE_URL}/api/ai/format`, {
+ method: 'POST',
+ headers: { 'Content-Type': 'application/json' },
+ body: JSON.stringify({ text: content.value })
+ })
+ if (res.ok) {
+ const data = await res.json()
+ content.value = data.content || ''
+ } else {
+ toast.error('AI 优化失败')
+ }
+ } catch (e) {
+ toast.error('AI 优化失败')
+ } finally {
+ isAiLoading.value = false
+ }
+ }
const submitPost = async () => {
if (!title.value.trim()) {
toast.error('标题不能为空')
@@ -203,7 +229,7 @@ export default {
isWaitingPosting.value = false
}
}
- return { title, content, selectedCategory, selectedTags, submitPost, saveDraft, clearPost, isWaitingPosting }
+ return { title, content, selectedCategory, selectedTags, submitPost, saveDraft, clearPost, isWaitingPosting, aiGenerate, isAiLoading }
}
}
diff --git a/src/main/java/com/openisle/controller/AiController.java b/src/main/java/com/openisle/controller/AiController.java
new file mode 100644
index 000000000..ddffc8d35
--- /dev/null
+++ b/src/main/java/com/openisle/controller/AiController.java
@@ -0,0 +1,30 @@
+package com.openisle.controller;
+
+import com.openisle.service.OpenAiService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+@RestController
+@RequestMapping("/api/ai")
+@RequiredArgsConstructor
+public class AiController {
+
+ private final OpenAiService openAiService;
+
+ @PostMapping("/format")
+ public ResponseEntity