Files
CodeAnalizer/CodeBase/Services/ScipProcessingService.cs

49 lines
2.0 KiB
C#

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}");
}
}
}
}