diff --git a/.env.example b/.env.example deleted file mode 100644 index da04a0b..0000000 --- a/.env.example +++ /dev/null @@ -1,46 +0,0 @@ -# ============================================== -# DramaLing 環境變數配置範本 -# 前後端分離架構 (Next.js + .NET Core) -# ============================================== - -# ================ -# 前端配置 (Next.js) -# ================ - -# Supabase 前端配置 (認證用) -NEXT_PUBLIC_SUPABASE_URL=your_supabase_project_url -NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key - -# API 服務配置 -NEXT_PUBLIC_API_URL=http://localhost:5000 -NEXT_PUBLIC_API_URL_PROD=https://your-dotnet-api.com - -# 應用程式配置 -NEXT_PUBLIC_APP_URL=http://localhost:3001 - -# ================ -# 後端配置 (.NET Core) -# ================ -# 注意:以下配置應複製到 backend/DramaLing.Api/appsettings.Development.json - -# 資料庫連接 -# ConnectionStrings__DefaultConnection=Host=db.supabase.co;Database=postgres;Username=postgres;Password=your-password;Port=5432;SSL Mode=Require; - -# Supabase 後端配置 -# Supabase__Url=your_supabase_project_url -# Supabase__ServiceRoleKey=your_supabase_service_role_key -# Supabase__JwtSecret=your_supabase_jwt_secret - -# Google Gemini AI -# AI__GeminiApiKey=your_gemini_api_key - -# ================ -# 部署配置 -# ================ - -# 前端部署 (Vercel) -# VERCEL_URL=your-vercel-deployment-url - -# 後端部署 (Azure/Railway) -# AZURE_APP_URL=your-azure-app-url -# RAILWAY_APP_URL=your-railway-app-url \ No newline at end of file diff --git a/backend/DramaLing.Api/Data/DramaLingDbContext.cs b/backend/DramaLing.Api/Data/DramaLingDbContext.cs index de7bf38..5b17b46 100644 --- a/backend/DramaLing.Api/Data/DramaLingDbContext.cs +++ b/backend/DramaLing.Api/Data/DramaLingDbContext.cs @@ -74,6 +74,13 @@ public class DramaLingDbContext : DbContext .HasConversion( v => System.Text.Json.JsonSerializer.Serialize(v, (System.Text.Json.JsonSerializerOptions)null), v => System.Text.Json.JsonSerializer.Deserialize>(v, (System.Text.Json.JsonSerializerOptions)null) ?? new Dictionary()); + + // 新增個人化欄位映射 + userEntity.Property(u => u.EnglishLevel).HasColumnName("english_level"); + userEntity.Property(u => u.LevelUpdatedAt).HasColumnName("level_updated_at"); + userEntity.Property(u => u.IsLevelVerified).HasColumnName("is_level_verified"); + userEntity.Property(u => u.LevelNotes).HasColumnName("level_notes"); + userEntity.Property(u => u.CreatedAt).HasColumnName("created_at"); userEntity.Property(u => u.UpdatedAt).HasColumnName("updated_at"); diff --git a/backend/DramaLing.Api/Services/GeminiService.cs b/backend/DramaLing.Api/Services/GeminiService.cs index 1ce3041..25b926f 100644 --- a/backend/DramaLing.Api/Services/GeminiService.cs +++ b/backend/DramaLing.Api/Services/GeminiService.cs @@ -94,14 +94,14 @@ public class GeminiService : IGeminiService 要求: 1. 翻譯要自然流暢,符合中文語法 -2. **基於學習者程度({userLevel}),標記 {targetRange} 等級的詞彙為高價值** +2. **基於學習者程度({userLevel}),標記 {targetRange} 等級的詞彙為重點學習** 3. 如有語法錯誤請指出並修正 4. 確保JSON格式正確 -高價值判定邏輯: +重點學習判定邏輯: - 學習者程度: {userLevel} -- 高價值範圍: {targetRange} -- 太簡單的詞彙(≤{userLevel})不要標記為高價值 +- 重點學習範圍: {targetRange} +- 太簡單的詞彙(≤{userLevel})不要標記為重點學習 - 太難的詞彙謹慎標記 - 重點關注適合學習者程度的詞彙 "; diff --git a/frontend/app/generate/page.tsx b/frontend/app/generate/page.tsx index 7ee898a..335a30e 100644 --- a/frontend/app/generate/page.tsx +++ b/frontend/app/generate/page.tsx @@ -314,7 +314,7 @@ function GenerateContent() {
🎯 您的程度: {userLevel} | - 💎 高價值範圍: {getTargetRange(userLevel)} + 📈 重點學習範圍: {getTargetRange(userLevel)}
-

高價值詞彙範圍

+

重點學習範圍

- 系統將重點標記 {getHighValueRange(userLevel)} 等級的詞彙 + 系統將為您標記 {getHighValueRange(userLevel)} 等級的重點學習詞彙

diff --git a/frontend/components/ClickableTextV2.tsx b/frontend/components/ClickableTextV2.tsx index 0f5cd9e..39f68b1 100644 --- a/frontend/components/ClickableTextV2.tsx +++ b/frontend/components/ClickableTextV2.tsx @@ -282,13 +282,13 @@ export function ClickableTextV2({
- {/* 高價值標記 */} + {/* 重點學習標記 */} {getWordProperty(analysis[selectedWord], 'isHighValue') && (
-
+
🎯
- 高價值詞彙(免費查詢) + 重點學習詞彙
學習價值:{getWordProperty(analysis[selectedWord], 'learningPriority') === 'high' ? '⭐⭐⭐⭐⭐' :