diff --git a/backend/DramaLing.Api/Extensions/ServiceCollectionExtensions.cs b/backend/DramaLing.Api/Extensions/ServiceCollectionExtensions.cs index 6e8cd2f..7fa62b5 100644 --- a/backend/DramaLing.Api/Extensions/ServiceCollectionExtensions.cs +++ b/backend/DramaLing.Api/Extensions/ServiceCollectionExtensions.cs @@ -89,7 +89,7 @@ public static class ServiceCollectionExtensions }); // 主要快取服務 - services.AddScoped(); + services.AddScoped(); return services; } diff --git a/backend/DramaLing.Api/README.md b/backend/DramaLing.Api/README.md index d056bd7..f51e6bb 100644 --- a/backend/DramaLing.Api/README.md +++ b/backend/DramaLing.Api/README.md @@ -138,7 +138,7 @@ DramaLing.Api/ - ImageSaveManager → 圖片儲存管理 ### 快取服務群組 -- **RefactoredHybridCacheService** (Facade) → 混合快取服務 +- **HybridCacheService** (Facade) → 混合快取服務 - MemoryCacheProvider → 記憶體快取 - DistributedCacheProvider → 分散式快取 - CacheStrategyManager → 快取策略管理 diff --git a/backend/DramaLing.Api/Services/AI/Generation/IGeminiDescriptionGenerator.cs b/backend/DramaLing.Api/Services/AI/Generation/IGeminiDescriptionGenerator.cs deleted file mode 100644 index 7fe2077..0000000 --- a/backend/DramaLing.Api/Services/AI/Generation/IGeminiDescriptionGenerator.cs +++ /dev/null @@ -1,9 +0,0 @@ -using DramaLing.Api.Models.DTOs; -using DramaLing.Api.Models.Entities; - -namespace DramaLing.Api.Services.AI.Generation; - -public interface IGeminiDescriptionGenerator -{ - Task GenerateImageDescriptionAsync(Flashcard flashcard, GenerationOptionsDto options); -} \ No newline at end of file diff --git a/backend/DramaLing.Api/Services/Infrastructure/Caching/RefactoredHybridCacheService.cs b/backend/DramaLing.Api/Services/Infrastructure/Caching/HybridCacheService.cs similarity index 92% rename from backend/DramaLing.Api/Services/Infrastructure/Caching/RefactoredHybridCacheService.cs rename to backend/DramaLing.Api/Services/Infrastructure/Caching/HybridCacheService.cs index 36734b5..77f8f37 100644 --- a/backend/DramaLing.Api/Services/Infrastructure/Caching/RefactoredHybridCacheService.cs +++ b/backend/DramaLing.Api/Services/Infrastructure/Caching/HybridCacheService.cs @@ -3,23 +3,23 @@ using DramaLing.Api.Services.Infrastructure.Caching; namespace DramaLing.Api.Services.Caching; /// -/// 重構後的混合快取服務,使用組合模式 +/// 混合快取服務,使用組合模式結合記憶體和分散式快取 /// -public class RefactoredHybridCacheService : ICacheService +public class HybridCacheService : ICacheService { private readonly ICacheProvider _memoryProvider; private readonly ICacheProvider? _distributedProvider; private readonly IDatabaseCacheManager _databaseCacheManager; private readonly ICacheStrategyManager _strategyManager; - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly CacheStats _stats; - public RefactoredHybridCacheService( + public HybridCacheService( ICacheProvider memoryProvider, ICacheProvider? distributedProvider, IDatabaseCacheManager databaseCacheManager, ICacheStrategyManager strategyManager, - ILogger logger) + ILogger logger) { _memoryProvider = memoryProvider ?? throw new ArgumentNullException(nameof(memoryProvider)); _distributedProvider = distributedProvider; @@ -28,7 +28,7 @@ public class RefactoredHybridCacheService : ICacheService _logger = logger ?? throw new ArgumentNullException(nameof(logger)); _stats = new CacheStats { LastUpdated = DateTime.UtcNow }; - _logger.LogInformation("RefactoredHybridCacheService initialized with {MemoryProvider} and {DistributedProvider}", + _logger.LogInformation("HybridCacheService initialized with {MemoryProvider} and {DistributedProvider}", _memoryProvider.ProviderName, _distributedProvider?.ProviderName ?? "No Distributed Cache"); } diff --git a/backend/DramaLing.Api/Services/README.md b/backend/DramaLing.Api/Services/README.md index aea23b9..07c82c7 100644 --- a/backend/DramaLing.Api/Services/README.md +++ b/backend/DramaLing.Api/Services/README.md @@ -9,27 +9,32 @@ Services 層實作業務邏輯,採用領域驅動設計 (DDD) 原則,按功 Services/ ├── README.md # 本文檔 - Services 層總覽 ├── AI/ # AI 相關服務 +│ ├── Analysis/ # AI 分析服務 │ ├── Gemini/ # Gemini AI 服務 │ └── Generation/ # 圖片生成服務 ├── Core/ # 核心業務服務 │ └── Auth/ # 認證服務 ├── Infrastructure/ # 基礎設施服務 │ ├── Caching/ # 快取服務 -│ ├── Messaging/ # 訊息服務 │ └── Monitoring/ # 監控服務 ├── Media/ # 多媒體服務 │ ├── Audio/ # 音訊處理服務 -│ └── Image/ # 圖片處理服務 -├── Storage/ # 儲存服務 -├── Vocabulary/ # 詞彙相關服務 -│ └── Options/ # 選項詞彙服務 -└── Analysis/ # 分析服務 +│ ├── Image/ # 圖片處理服務 +│ └── Storage/ # 多媒體儲存服務 +└── Vocabulary/ # 詞彙相關服務 + └── Options/ # 選項詞彙服務 ``` --- ## 🤖 AI 服務 (Services/AI/) +### AI 分析服務組 (AI/Analysis/) +| 服務名稱 | 功能說明 | 檔案位置 | +|---------|---------|----------| +| `AnalysisService` | 綜合分析服務 (帶快取) | `AnalysisService.cs` | +| `IGeminiAnalyzer` | Gemini 分析器介面 | `IGeminiAnalyzer.cs` | + ### Gemini 服務組 (AI/Gemini/) **主要 Facade 服務**: `GeminiService` - 統一的 Gemini AI 功能入口 @@ -75,7 +80,7 @@ var description = await _geminiService.GenerateImageDescriptionAsync(flashcard, ## 🏗️ 基礎設施服務 (Services/Infrastructure/) ### 快取服務組 (Infrastructure/Caching/) -**主要 Facade 服務**: `RefactoredHybridCacheService` - 混合快取服務 +**主要 Facade 服務**: `HybridCacheService` - 混合快取服務 | 服務名稱 | 功能說明 | 檔案位置 | |---------|---------|----------| @@ -91,6 +96,12 @@ var description = await _geminiService.GenerateImageDescriptionAsync(flashcard, - **序列化支援**: JSON 格式序列化 - **資料庫整合**: 支援資料庫層快取 +### 監控服務組 (Infrastructure/Monitoring/) +| 服務名稱 | 功能說明 | 檔案位置 | +|---------|---------|----------| +| `UsageTrackingService` | 使用追蹤服務 | `UsageTrackingService.cs` | +| `OptionsVocabularyMetrics` | 選項詞彙指標服務 | `OptionsVocabularyMetrics.cs` | + --- ## 📁 媒體服務 (Services/Media/) @@ -106,9 +117,7 @@ var description = await _geminiService.GenerateImageDescriptionAsync(flashcard, |---------|---------|----------| | `ImageProcessingService` | 圖片處理服務 | `ImageProcessingService.cs` | ---- - -## 💾 儲存服務 (Services/Storage/) +### 儲存服務 (Media/Storage/) | 服務名稱 | 功能說明 | 檔案位置 | |---------|---------|----------| | `LocalImageStorageService` | 本地圖片儲存服務 | `LocalImageStorageService.cs` | @@ -124,14 +133,6 @@ var description = await _geminiService.GenerateImageDescriptionAsync(flashcard, --- -## 📊 分析服務 (Services/) -| 服務名稱 | 功能說明 | 檔案位置 | -|---------|---------|----------| -| `AnalysisService` | 綜合分析服務 (帶快取) | `AnalysisService.cs` | -| `UsageTrackingService` | 使用追蹤服務 | `UsageTrackingService.cs` | - ---- - ## 🌐 外部服務整合 ### Replicate 服務 @@ -201,7 +202,8 @@ services.AddRepositoryServices(); --- -**版本**: 1.0 +**版本**: 1.1 **最後更新**: 2025-09-30 **維護者**: DramaLing 開發團隊 -**重構日期**: 2025-09-29 ~ 2025-09-30 \ No newline at end of file +**重構日期**: 2025-09-29 ~ 2025-09-30 +**索引完善**: 2025-09-30 (階段三完成) \ No newline at end of file