'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) // 處理句子分析 - 使用假數據進行快速測試 const handleAnalyzeSentence = async () => { console.log('🚀 handleAnalyzeSentence 被調用 (假數據模式)') console.log('📝 輸入文本:', textInput) if (!textInput.trim()) { console.log('❌ 文本為空,退出') return } setIsAnalyzing(true) try { // 模擬API延遲 await new Promise(resolve => setTimeout(resolve, 1500)) // 生成假的分析數據 const mockAnalysis = generateMockAnalysis(textInput) setSentenceAnalysis(mockAnalysis.wordAnalysis) setSentenceMeaning(mockAnalysis.sentenceTranslation) setGrammarCorrection(mockAnalysis.grammarCorrection) setFinalText(mockAnalysis.finalText) setShowAnalysisView(true) setUsageCount(prev => prev + 1) console.log('✅ 假數據分析完成:', mockAnalysis) } catch (error) { console.error('Error in mock analysis:', error) alert(`分析句子時發生錯誤: ${error instanceof Error ? error.message : '未知錯誤'}`) } finally { setIsAnalyzing(false) } } // 生成假的分析數據 const generateMockAnalysis = (inputText: string) => { const words = inputText.toLowerCase().split(/\s+/).filter(word => word.length > 2 && /^[a-z]+$/.test(word.replace(/[.,!?;:]/g, '')) ) const wordAnalysis: any = {} words.forEach((word, index) => { const cleanWord = word.replace(/[.,!?;:]/g, '') const isHighValue = index % 3 === 0 // 每3個詞中有1個高價值 const isPhrase = cleanWord.length > 6 // 長詞視為片語 wordAnalysis[cleanWord] = { word: cleanWord, translation: getRandomTranslation(cleanWord), definition: `Definition of ${cleanWord} - a common English word`, partOfSpeech: getRandomPartOfSpeech(), pronunciation: `/${cleanWord}/`, isHighValue: isHighValue, isPhrase: isPhrase, difficultyLevel: getRandomDifficulty(), synonyms: [getRandomSynonym(cleanWord), getRandomSynonym(cleanWord)], learningPriority: isHighValue ? 'high' : 'medium' } }) return { wordAnalysis, sentenceTranslation: `這是「${inputText}」的中文翻譯。`, grammarCorrection: { hasErrors: Math.random() > 0.7, // 30%機率有語法錯誤 correctedText: inputText, originalText: inputText }, finalText: inputText } } // 輔助函數 - 改進翻譯生成 const getRandomTranslation = (word: string) => { // 常見英文單字的實際翻譯 const commonTranslations: {[key: string]: string} = { 'hello': '你好', 'how': '如何', 'are': '是', 'you': '你', 'today': '今天', 'good': '好的', 'morning': '早晨', 'evening': '晚上', 'thank': '謝謝', 'please': '請', 'sorry': '抱歉', 'love': '愛', 'like': '喜歡', 'want': '想要', 'need': '需要', 'think': '思考', 'know': '知道', 'see': '看見', 'go': '去', 'come': '來', 'get': '得到', 'make': '製作', 'take': '拿取', 'give': '給予', 'find': '找到', 'work': '工作', 'feel': '感覺', 'become': '成為', 'leave': '離開', 'put': '放置', 'mean': '意思', 'keep': '保持', 'let': '讓', 'begin': '開始', 'seem': '似乎', 'help': '幫助', 'talk': '談話', 'turn': '轉向', 'start': '開始', 'show': '顯示', 'hear': '聽見', 'play': '玩耍', 'run': '跑步', 'move': '移動', 'live': '生活', 'believe': '相信', 'bring': '帶來', 'happen': '發生', 'write': '寫作', 'provide': '提供', 'sit': '坐下', 'stand': '站立', 'lose': '失去', 'pay': '付費', 'meet': '遇見', 'include': '包含', 'continue': '繼續', 'set': '設置', 'learn': '學習', 'change': '改變', 'lead': '領導', 'understand': '理解', 'watch': '觀看', 'follow': '跟隨', 'stop': '停止', 'create': '創造', 'speak': '說話', 'read': '閱讀', 'allow': '允許', 'add': '添加', 'spend': '花費', 'grow': '成長', 'open': '打開', 'walk': '走路', 'win': '獲勝', 'offer': '提供', 'remember': '記住', 'consider': '考慮', 'appear': '出現', 'buy': '購買', 'wait': '等待', 'serve': '服務', 'die': '死亡', 'send': '發送', 'expect': '期待', 'build': '建造', 'stay': '停留', 'fall': '跌倒', 'cut': '切割', 'reach': '到達', 'kill': '殺死', 'remain': '保持' } return commonTranslations[word.toLowerCase()] || `${word}的翻譯` } const getRandomPartOfSpeech = () => { const parts = ['noun', 'verb', 'adjective', 'adverb', 'preposition'] return parts[Math.floor(Math.random() * parts.length)] } const getRandomDifficulty = () => { const levels = ['A1', 'A2', 'B1', 'B2', 'C1', 'C2'] return levels[Math.floor(Math.random() * levels.length)] } const getRandomSynonym = (word: string) => { return `synonym_${word}_${Math.floor(Math.random() * 10)}` } 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 = { english: word, // 修正API欄位名稱 chinese: analysis.translation || analysis.Translation || '', 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 */}

輸入英文文本