'use client' import { useState } from 'react' import { ProtectedRoute } from '@/components/ProtectedRoute' import { Navigation } from '@/components/Navigation' import { ClickableTextV2 } from '@/components/ClickableTextV2' import { flashcardsService } from '@/lib/services/flashcards' import Link from 'next/link' function GenerateContent() { const [mode, setMode] = useState<'manual' | 'screenshot'>('manual') const [textInput, setTextInput] = useState('') const [isAnalyzing, setIsAnalyzing] = useState(false) const [showAnalysisView, setShowAnalysisView] = useState(false) const [sentenceAnalysis, setSentenceAnalysis] = useState(null) const [sentenceMeaning, setSentenceMeaning] = useState('') const [grammarCorrection, setGrammarCorrection] = useState(null) const [finalText, setFinalText] = useState('') const [usageCount, setUsageCount] = useState(0) const [isPremium] = useState(true) // 處理句子分析 - 使用真實API const handleAnalyzeSentence = async () => { console.log('🚀 handleAnalyzeSentence 被調用 (真實API模式)') console.log('📝 輸入文本:', textInput) if (!textInput.trim()) { console.log('❌ 文本為空,退出') return } setIsAnalyzing(true) try { // 取得用戶設定的程度 const userLevel = localStorage.getItem('userEnglishLevel') || 'A2' console.log('🎯 使用用戶程度:', userLevel) const response = await fetch('http://localhost:5000/api/ai/analyze-sentence', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${localStorage.getItem('auth_token')}` }, body: JSON.stringify({ inputText: textInput, userLevel: userLevel, // 傳遞用戶程度 analysisMode: 'full' }) }) if (response.ok) { const result = await response.json() console.log('✅ API分析完成:', result) if (result.success) { console.log('🔍 [DEBUG] 完整API回應:', JSON.stringify(result.data, null, 2)); console.log('🔍 [DEBUG] bonus詞彙完整資料:', JSON.stringify(result.data.WordAnalysis?.bonus, null, 2)); if (result.data.WordAnalysis?.bonus) { console.log('🔍 [DEBUG] bonus例句檢查:'); console.log(' - example:', result.data.WordAnalysis.bonus.example); console.log(' - exampleTranslation:', result.data.WordAnalysis.bonus.exampleTranslation); console.log(' - 例句型別:', typeof result.data.WordAnalysis.bonus.example); console.log(' - 例句是否為null:', result.data.WordAnalysis.bonus.example === null); } setSentenceAnalysis(result.data.WordAnalysis || {}) setSentenceMeaning(result.data.SentenceMeaning?.Translation || '') setGrammarCorrection(result.data.GrammarCorrection || null) setFinalText(result.data.FinalAnalysisText || textInput) setShowAnalysisView(true) setUsageCount(prev => prev + 1) } else { throw new Error(result.error || '分析失敗') } } else { throw new Error(`API錯誤: ${response.status}`) } } catch (error) { console.error('Error in real API analysis:', error) alert(`分析句子時發生錯誤: ${error instanceof Error ? error.message : '未知錯誤'}`) } finally { setIsAnalyzing(false) } } const handleAcceptCorrection = () => { if (grammarCorrection?.correctedText) { setFinalText(grammarCorrection.correctedText) alert('✅ 已採用修正版本,後續學習將基於正確的句子進行!') } } const handleRejectCorrection = () => { setFinalText(grammarCorrection?.originalText || textInput) alert('📝 已保持原始版本,將基於您的原始輸入進行學習。') } // 保存單個詞彙 const handleSaveWord = async (word: string, analysis: any) => { try { const cardData = { word: word, translation: analysis.translation || analysis.Translation || '', definition: analysis.definition || analysis.Definition || '', pronunciation: analysis.pronunciation || analysis.Pronunciation || `/${word}/`, partOfSpeech: analysis.partOfSpeech || analysis.PartOfSpeech || 'unknown', example: `Example sentence with ${word}.` // 提供預設例句 } const response = await flashcardsService.createFlashcard(cardData) if (response.success) { alert(`✅ 已將「${word}」保存到詞卡!`) } else { throw new Error(response.error || '保存失敗') } } catch (error) { console.error('Save word error:', error) throw error // 重新拋出錯誤讓組件處理 } } return (
{!showAnalysisView ? (

AI 智能生成詞卡

{/* Input Mode Selection */}

原始例句類型

{/* Content Input */}

輸入英文文本