feat(#126): create LLM Manager Service
Implemented centralized service for managing multiple LLM provider instances. Architecture: - LlmManagerService manages provider lifecycle and selection - Loads provider instances from Prisma database on startup - Maintains in-memory registry of active providers - Factory pattern for provider instantiation Core Features: - Database integration via PrismaService - Provider initialization on module startup (OnModuleInit) - Get provider by ID - Get all active providers - Get system default provider - Get user-specific provider with fallback to system default - Health check all registered providers - Dynamic registration/unregistration (hot reload) - Reload from database without restart Provider Selection Logic: - User-level providers: userId matches, is enabled - System-level providers: userId is NULL, is enabled - Fallback: system default if no user provider found - Graceful error handling with detailed logging Integration: - Added to LlmModule providers and exports - Uses PrismaService for database queries - Factory creates OllamaProvider from config - Extensible for future providers (Claude, OpenAI) Testing: - 31 comprehensive unit tests - 93.05% code coverage (exceeds 85% requirement) - All error scenarios covered - Proper mocking of dependencies Quality Gates: - ✅ All 31 tests passing - ✅ 93.05% coverage - ✅ Linting clean - ✅ Type checking passed - ✅ Code review approved Fixes #126 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,11 @@
|
||||
import { Module } from "@nestjs/common";
|
||||
import { LlmController } from "./llm.controller";
|
||||
import { LlmService } from "./llm.service";
|
||||
@Module({ controllers: [LlmController], providers: [LlmService], exports: [LlmService] })
|
||||
import { LlmManagerService } from "./llm-manager.service";
|
||||
|
||||
@Module({
|
||||
controllers: [LlmController],
|
||||
providers: [LlmService, LlmManagerService],
|
||||
exports: [LlmService, LlmManagerService],
|
||||
})
|
||||
export class LlmModule {}
|
||||
|
||||
Reference in New Issue
Block a user