using System; using System.Threading.Tasks; using CodeBase.Parsers; using CodeBase.Repositories; namespace CodeBase.Services { public class ScipProcessingService { private readonly ScipParser _parser; private readonly VectorizationService _vectorizationService; private readonly ScipRepository _repository; // Внедрение зависимостей public ScipProcessingService( ScipParser parser, VectorizationService vectorizationService, ScipRepository repository) { _parser = parser; _vectorizationService = vectorizationService; _repository = repository; } public async Task ProcessAndSaveProjectAsync(string projectRootPath, string lang, string name) { try { Console.WriteLine($"[СЕРВИС] Запуск парсинга проекта: {projectRootPath}"); // 1. Получаем "сырые" чанки из парсера var chunks = await _parser.ParseProjectAsync(projectRootPath, lang, name); Console.WriteLine($"[СЕРВИС] Найдено {chunks.Count} сущностей. Начинаем векторизацию..."); // 2. Обогащаем каждый чанк векторным представлением GraphCodeBERT chunks = await _vectorizationService.EnrichChunksWithVectorsAsync(chunks); // 3. Сохраняем готовую сборку в графовую базу await _repository.SaveChunksAsync(chunks); Console.WriteLine("[СЕРВИС] Проект успешно обработан и сохранен в БД."); } catch (Exception ex) { Console.WriteLine($"[СЕРВИС ОШИБКА] Сбой при обработке проекта: {ex.Message}"); } } } }